scans for connected machines, updates internal list of machines based on scan results @param machineTypes. An individual MachineClass name, or a list of machine class names
(self, machineTypes=None)
| 93 | return machine_name |
| 94 | |
| 95 | def scan(self, machineTypes=None): |
| 96 | """ scans for connected machines, updates internal list of machines |
| 97 | based on scan results |
| 98 | @param machineTypes. An individual MachineClass name, or a list |
| 99 | of machine class names |
| 100 | """ |
| 101 | # scan for all machine types |
| 102 | scanNameList = [] |
| 103 | if machineTypes is None: |
| 104 | scanNameList.extend(gMachineClasses.keys()) |
| 105 | elif isinstance(machineTypes, str) or isinstance(machineTypes, unicode): |
| 106 | scanNameList.append(machineTypes) |
| 107 | else: |
| 108 | scanNameList.extend(machineTypes) |
| 109 | # Empty the machines just seen list. We are rescanning |
| 110 | # all machines connected to the system. |
| 111 | self.machines_just_seen = {} |
| 112 | for machineClass in scanNameList: |
| 113 | self._log.debug("scanning for MachineClass %s", str(machineClass)) |
| 114 | #Not all machine classes have a defined VID/PID |
| 115 | try: |
| 116 | vid = gMachineClasses[machineClass]['vid'] |
| 117 | pid_list = gMachineClasses[machineClass]['pid'] |
| 118 | |
| 119 | new_machines = [] |
| 120 | for pid in pid_list: |
| 121 | new_machines.extend(self.list_ports_by_vid_pid(vid, pid)) |
| 122 | |
| 123 | for machine in list(new_machines): |
| 124 | self.machines_just_seen[machine['port']] = machine |
| 125 | self.machines_recently_seen.update(self.machines_just_seen) |
| 126 | except KeyError: |
| 127 | continue # The machine doesnt have a VID/PID, so we cant scan for it |
| 128 | |
| 129 | def vid_pid_from_portname(self, portname): |
| 130 | """ return pid/vid based on a passed portname.""" |
no test coverage detected