Skip to content

Commit 21e1862

Browse files
authored
Merge pull request #795 from jluebbe/client-driver-detect
remote/client: fix automatic driver selection
2 parents 265d5b9 + e65aaa9 commit 21e1862

1 file changed

Lines changed: 15 additions & 18 deletions

File tree

labgrid/remote/client.py

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -736,31 +736,29 @@ def power(self):
736736
drv = target.get_driver(NetworkPowerDriver)
737737
except NoDriverFoundError:
738738
drv = NetworkPowerDriver(target, name=None)
739-
break
740739
elif isinstance(resource, NetworkUSBPowerPort):
741740
try:
742741
drv = target.get_driver(USBPowerDriver)
743742
except NoDriverFoundError:
744743
drv = USBPowerDriver(target, name=None)
745-
break
746744
elif isinstance(resource, NetworkSiSPMPowerPort):
747745
try:
748746
drv = target.get_driver(SiSPMPowerDriver)
749747
except NoDriverFoundError:
750748
drv = SiSPMPowerDriver(target, name=None)
751-
break
752749
elif isinstance(resource, PDUDaemonPort):
753750
try:
754751
drv = target.get_driver(PDUDaemonDriver)
755752
except NoDriverFoundError:
756753
drv = PDUDaemonDriver(target, name=None)
757-
break
758754
elif isinstance(resource, TasmotaPowerPort):
759755
try:
760756
drv = target.get_driver(TasmotaPowerDriver)
761757
except NoDriverFoundError:
762758
drv = TasmotaPowerDriver(target, name=None)
763-
break
759+
if drv:
760+
break
761+
764762
if not drv:
765763
raise UserError("target has no compatible resource available")
766764
if delay is not None:
@@ -804,42 +802,38 @@ def digital_io(self):
804802
except NoDriverFoundError:
805803
target.set_binding_map({"coil": name})
806804
drv = ModbusCoilDriver(target, name=name)
807-
break
808805
elif isinstance(resource, OneWirePIO):
809806
try:
810807
drv = target.get_driver(OneWirePIODriver, name=name)
811808
except NoDriverFoundError:
812809
target.set_binding_map({"port": name})
813810
drv = OneWirePIODriver(target, name=name)
814-
break
815811
elif isinstance(resource, NetworkDeditecRelais8):
816812
try:
817813
drv = target.get_driver(DeditecRelaisDriver, name=name)
818814
except NoDriverFoundError:
819815
target.set_binding_map({"relais": name})
820816
drv = DeditecRelaisDriver(target, name=name)
821-
break
822817
elif isinstance(resource, NetworkSysfsGPIO):
823818
try:
824819
drv = target.get_driver(GpioDigitalOutputDriver, name=name)
825820
except NoDriverFoundError:
826821
target.set_binding_map({"gpio": name})
827822
drv = GpioDigitalOutputDriver(target, name=name)
828-
break
829823
elif isinstance(resource, NetworkLXAIOBusPIO):
830824
try:
831825
drv = target.get_driver(LXAIOBusPIODriver, name=name)
832826
except NoDriverFoundError:
833827
target.set_binding_map({"pio": name})
834828
drv = LXAIOBusPIODriver(target, name=name)
835-
break
836829
elif isinstance(resource, NetworkHIDRelay):
837830
try:
838831
drv = target.get_driver(HIDRelayDriver, name=name)
839832
except NoDriverFoundError:
840833
target.set_binding_map({"relay": name})
841834
drv = HIDRelayDriver(target, name=name)
842-
break
835+
if drv:
836+
break
843837

844838
if not drv:
845839
raise UserError("target has no compatible resource available")
@@ -974,29 +968,28 @@ def bootstrap(self):
974968
except NoDriverFoundError:
975969
drv = IMXUSBDriver(target, name=None)
976970
drv.loader.timeout = self.args.wait
977-
break
978971
elif isinstance(resource, NetworkMXSUSBLoader):
979972
try:
980973
drv = target.get_driver(MXSUSBDriver)
981974
except NoDriverFoundError:
982975
drv = MXSUSBDriver(target, name=None)
983976
drv.loader.timeout = self.args.wait
984-
break
985977
elif isinstance(resource, NetworkAlteraUSBBlaster):
986978
args = dict(arg.split('=', 1) for arg in self.args.bootstrap_args)
987979
try:
988980
drv = target.get_driver(OpenOCDDriver)
989981
except NoDriverFoundError:
990982
drv = OpenOCDDriver(target, name=None, **args)
991983
drv.interface.timeout = self.args.wait
992-
break
993984
elif isinstance(resource, NetworkRKUSBLoader):
994985
try:
995986
drv = target.get_driver(RKUSBDriver)
996987
except NoDriverFoundError:
997988
drv = RKUSBDriver(target, name=None)
998989
drv.loader.timeout = self.args.wait
990+
if drv:
999991
break
992+
1000993
if not drv:
1001994
raise UserError("target has no compatible resource available")
1002995
target.activate(drv)
@@ -1009,20 +1002,22 @@ def sd_mux(self):
10091002
from ..driver.usbsdmuxdriver import USBSDMuxDriver
10101003
from ..driver.usbsdwiredriver import USBSDWireDriver
10111004
from ..resource.remote import NetworkUSBSDMuxDevice, NetworkUSBSDWireDevice
1005+
10121006
drv = None
10131007
for resource in target.resources:
10141008
if isinstance(resource, NetworkUSBSDMuxDevice):
10151009
try:
10161010
drv = target.get_driver(USBSDMuxDriver)
10171011
except NoDriverFoundError:
10181012
drv = USBSDMuxDriver(target, name=None)
1019-
break
1020-
if isinstance(resource, NetworkUSBSDWireDevice):
1013+
elif isinstance(resource, NetworkUSBSDWireDevice):
10211014
try:
10221015
drv = target.get_driver(USBSDWireDriver)
10231016
except NoDriverFoundError:
10241017
drv = USBSDWireDriver(target, name=None)
1018+
if drv:
10251019
break
1020+
10261021
if not drv:
10271022
raise UserError("target has no compatible resource available")
10281023
target.activate(drv)
@@ -1046,6 +1041,7 @@ def usb_mux(self):
10461041
target = self._get_target(place)
10471042
from ..driver.lxausbmuxdriver import LXAUSBMuxDriver
10481043
from ..resource.remote import NetworkLXAUSBMux
1044+
10491045
drv = None
10501046
for resource in target.resources:
10511047
if isinstance(resource, NetworkLXAUSBMux):
@@ -1054,6 +1050,7 @@ def usb_mux(self):
10541050
except NoDriverFoundError:
10551051
drv = LXAUSBMuxDriver(target, name=None)
10561052
break
1053+
10571054
if not drv:
10581055
raise UserError("target has no compatible resource available")
10591056
target.activate(drv)
@@ -1178,13 +1175,13 @@ def video(self):
11781175
drv = target.get_driver(USBVideoDriver)
11791176
except NoDriverFoundError:
11801177
drv = USBVideoDriver(target, name=None)
1181-
break
11821178
elif isinstance(resource, HTTPVideoStream):
11831179
try:
11841180
drv = target.get_driver(HTTPVideoDriver)
11851181
except NoDriverFoundError:
11861182
drv = HTTPVideoDriver(target, name=None)
1187-
break
1183+
if drv:
1184+
break
11881185
if not drv:
11891186
raise UserError("target has no compatible resource available")
11901187

0 commit comments

Comments
 (0)