#!/usr/bin/perl

use strict;
use warnings;

use Time::HiRes qw( sleep );
use Getopt::Long;

use Future::AsyncAwait 0.47;

use Device::Chip::Adapter;

GetOptions(
   'adapter|A=s' => \( my $ADAPTER ),
) or exit 1;

my $adapter = Device::Chip::Adapter->new_from_description( $ADAPTER );
my $proto = await $adapter->make_protocol( "GPIO" );

my @gpios = $proto->list_gpios;

while(1) {
   foreach my $gpio ( @gpios ) {
      print "$gpio HI\n";
      await $proto->write_gpios( { $gpio => 1 } );

      sleep 0.5;

      print "$gpio LO\n";
      await $proto->write_gpios( { $gpio => 0 } );

      sleep 0.5;
   }
}