Fix: handle stm32f-based serial interfaces (/dev/ttyACMx)
This commit is contained in:
parent
cf541fc0a6
commit
ecdbbaec9a
|
@ -257,9 +257,7 @@ endif #IAR
|
||||||
|
|
||||||
MOTELIST = $(CONTIKI)/tools/stm32w/motelist-linux
|
MOTELIST = $(CONTIKI)/tools/stm32w/motelist-linux
|
||||||
|
|
||||||
MOTES = $(shell $(MOTELIST) 2>&- | grep USB | \
|
MOTES = $(shell $(MOTELIST) 2>&- | awk '{print $$2}' | grep '\/')
|
||||||
cut -f 4 -d \ | \
|
|
||||||
perl -ne 'print $$1 . " " if(m-(/dev/\w+)-);')
|
|
||||||
|
|
||||||
motelist: stm-motelist
|
motelist: stm-motelist
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,9 @@ my %Opt = (
|
||||||
usb => 0,
|
usb => 0,
|
||||||
method => "auto",
|
method => "auto",
|
||||||
kernel => "auto",
|
kernel => "auto",
|
||||||
dev_prefix => [ "/dev/usb/tts/", "/dev/ttyUSB", "/dev/tts/USB" ],
|
usb_dev_prefix => [ "/dev/usb/tts/", "/dev/ttyUSB", "/dev/tts/USB" ],
|
||||||
|
acm_dev_prefix => [ "/dev/ttyACM" ],
|
||||||
|
dev_prefix => undef,
|
||||||
usbserial => "sudo cat /proc/tty/driver/usbserial |",
|
usbserial => "sudo cat /proc/tty/driver/usbserial |",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -61,7 +63,8 @@ sub scan_sysfs {
|
||||||
|
|
||||||
# Scan /sys/bus/usb/drivers/usb for FTDI devices
|
# Scan /sys/bus/usb/drivers/usb for FTDI devices
|
||||||
my @ftdidevs =
|
my @ftdidevs =
|
||||||
grep { ($_->{UsbVendor}||"") eq "0403" && ($_->{UsbProduct}||"") eq "6001" && ($_->{UsbBcdDevice}||"") eq "0600"}
|
grep { (($_->{UsbVendor}||"") eq "0403" && ($_->{UsbProduct}||"") eq "6001" && ($_->{UsbBcdDevice}||"") eq "0600") ||
|
||||||
|
(($_->{UsbVendor}||"") eq "0483" && ($_->{UsbProduct}||"") eq "5741")}
|
||||||
map { {
|
map { {
|
||||||
SysPath => $_,
|
SysPath => $_,
|
||||||
UsbVendor => snarf("$_/idVendor",1),
|
UsbVendor => snarf("$_/idVendor",1),
|
||||||
|
@ -90,9 +93,19 @@ sub scan_sysfs {
|
||||||
|
|
||||||
my $port = "$syspath/$f->{SysDev}:1.0";
|
my $port = "$syspath/$f->{SysDev}:1.0";
|
||||||
($f->{DriverName} = readlink("$port/driver")) =~ s{^.*/}{} if -l "$port/driver";
|
($f->{DriverName} = readlink("$port/driver")) =~ s{^.*/}{} if -l "$port/driver";
|
||||||
($f->{SerialDevName} = (glob("$port/tty*"),undef)[0]) =~ s{^.*/}{};
|
($f->{SerialDevName} = (glob("$port/tty/tty* $port/tty*"),undef)[0]) =~ s{^.*/}{};
|
||||||
$f->{SerialDevNum} = $1 if $f->{SerialDevName} =~ /(\d+)/;
|
$f->{SerialDevNum} = $1 if $f->{SerialDevName} =~ /(\d+)/;
|
||||||
$f->{SerialDevName} = getSerialDevName( $f->{SerialDevNum} ) || " (none)";
|
my $dev_prefix = $Opt{dev_prefix};
|
||||||
|
if (not defined $dev_prefix)
|
||||||
|
{
|
||||||
|
if ( $f->{SerialDevName} =~ ".*ACM.*" ) {
|
||||||
|
$dev_prefix = $Opt{acm_dev_prefix}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$dev_prefix = $Opt{usb_dev_prefix}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$f->{SerialDevName} = getSerialDevName($dev_prefix, $f->{SerialDevNum} ) || " (none)";
|
||||||
}
|
}
|
||||||
|
|
||||||
return @ftdidevs;
|
return @ftdidevs;
|
||||||
|
@ -115,6 +128,12 @@ sub scan_procfs {
|
||||||
$usbtree{usbkey($tts->{path})}{usbserial} = $tts if defined $tts->{path};
|
$usbtree{usbkey($tts->{path})}{usbserial} = $tts if defined $tts->{path};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $dev_prefix = $Opt{dev_prefix};
|
||||||
|
if (not defined $dev_prefix)
|
||||||
|
{
|
||||||
|
$dev_prefix = $Opt{usb_dev_prefix}
|
||||||
|
}
|
||||||
|
|
||||||
my @ftdidevs = map { {
|
my @ftdidevs = map { {
|
||||||
UsbVendor => $_->{Vendor},
|
UsbVendor => $_->{Vendor},
|
||||||
UsbProduct => $_->{ProdID},
|
UsbProduct => $_->{ProdID},
|
||||||
|
@ -127,7 +146,7 @@ sub scan_procfs {
|
||||||
UsbPath => (($Opt{kernel} eq "2.4") ? $_->{usbserial}{path} : $_->{usbpath}),
|
UsbPath => (($Opt{kernel} eq "2.4") ? $_->{usbserial}{path} : $_->{usbpath}),
|
||||||
DriverName => $_->{driver},
|
DriverName => $_->{driver},
|
||||||
SerialDevNum => $_->{usbserial}{tts},
|
SerialDevNum => $_->{usbserial}{tts},
|
||||||
SerialDevName => getSerialDevName($_->{usbserial}{tts}) || " (none)",
|
SerialDevName => getSerialDevName($dev_prefix, $_->{usbserial}{tts}) || " (none)",
|
||||||
} }
|
} }
|
||||||
grep { ($_->{Vendor}||"") eq "0403" && ($_->{ProdID}||"") eq "6001" && ($_->{BcdDevice}||"") eq "0600"}
|
grep { ($_->{Vendor}||"") eq "0403" && ($_->{ProdID}||"") eq "6001" && ($_->{BcdDevice}||"") eq "0600"}
|
||||||
values %usbtree;
|
values %usbtree;
|
||||||
|
@ -194,17 +213,18 @@ sub usbkey {
|
||||||
# first one that actually exists.
|
# first one that actually exists.
|
||||||
#
|
#
|
||||||
sub getSerialDevName {
|
sub getSerialDevName {
|
||||||
|
my $dev_prefix = shift;
|
||||||
my $devnum = shift;
|
my $devnum = shift;
|
||||||
my $devname = undef;
|
my $devname = undef;
|
||||||
if( defined $devnum ) {
|
if( defined $devnum ) {
|
||||||
if( ref($Opt{dev_prefix}) eq "ARRAY" ) {
|
if( ref($dev_prefix) eq "ARRAY" ) {
|
||||||
$devname = $devnum;
|
$devname = $devnum;
|
||||||
for my $prefix (@{$Opt{dev_prefix}}) {
|
for my $prefix (@{$dev_prefix}) {
|
||||||
my $file = $prefix . $devnum;
|
my $file = $prefix . $devnum;
|
||||||
if( -e $file ) { $devname = $file; last; }
|
if( -e $file ) { $devname = $file; last; }
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$devname = $Opt{dev_prefix} . $devnum;
|
$devname = $dev_prefix . $devnum;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $devname;
|
return $devname;
|
||||||
|
|
Loading…
Reference in a new issue