#!/usr/bin/perl use strict; use Data::Dumper qw(Dumper); # See Kenwood TKR Manual Page 53 Table 20-3 my %tkrchansel = ( '1' => { '1' => '0', '2' => '1', '3' => '1', '4' => '1' }, '2' => { '1' => '1', '2' => '0', '3' => '1', '4' => '1' }, '3' => { '1' => '0', '2' => '0', '3' => '1', '4' => '1' }, '4' => { '1' => '1', '2' => '1', '3' => '0', '4' => '1' }, '5' => { '1' => '0', '2' => '1', '3' => '0', '4' => '1' }, '6' => { '1' => '1', '2' => '0', '3' => '0', '4' => '1' }, '7' => { '1' => '0', '2' => '0', '3' => '0', '4' => '1' }, '8' => { '1' => '1', '2' => '1', '3' => '1', '4' => '0' }, '9' => { '1' => '0', '2' => '1', '3' => '1', '4' => '0' }, '10' => { '1' => '1', '2' => '0', '3' => '1', '4' => '0' }, '11' => { '1' => '0', '2' => '0', '3' => '1', '4' => '0' }, '12' => { '1' => '1', '2' => '1', '3' => '0', '4' => '0' }, '13' => { '1' => '0', '2' => '1', '3' => '0', '4' => '0' }, '14' => { '1' => '1', '2' => '0', '3' => '0', '4' => '0' }, '15' => { '1' => '0', '2' => '0', '3' => '0', '4' => '0' }, '16' => { '1' => '1', '2' => '1', '3' => '1', '4' => '1' }, ); my ($chan) = @ARGV; if( ! defined($chan) ){ print STDERR "Usage: tkr-chansel CHANNUM\n"; exit 1; } if($chan =~ m/\D/ || $chan < 1 || $chan > 16){ print STDERR "Usage: tkr-chansel CHANNUM\n"; print STDERR "CHANNUM must be between 1 and 16\n"; exit 1; } for( my $i = 3; $i <= 6; $i++ ){ `gpio mode $i output`; `gpio write $i 0`; } for( my $pin = 3; $pin <= 6; $pin++ ){ my $cmd = sprintf( "gpio write %i %i", $pin, $tkrchansel{$chan}{$pin - 2} ); system($cmd); } exit 0;