From 3751379f1e9a4c215fb6eb898b4ccc67659b9ace Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Tue, 10 May 2022 21:51:50 +0700 Subject: initial commit 2 --- .../iot_handlers/interfaces/USBInterface.py | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 addons/hw_drivers/iot_handlers/interfaces/USBInterface.py (limited to 'addons/hw_drivers/iot_handlers/interfaces/USBInterface.py') diff --git a/addons/hw_drivers/iot_handlers/interfaces/USBInterface.py b/addons/hw_drivers/iot_handlers/interfaces/USBInterface.py new file mode 100644 index 00000000..a40e82d6 --- /dev/null +++ b/addons/hw_drivers/iot_handlers/interfaces/USBInterface.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from usb import core + +from odoo.addons.hw_drivers.interface import Interface + + +class USBInterface(Interface): + connection_type = 'usb' + + def get_devices(self): + """ + USB devices are identified by a combination of their `idVendor` and + `idProduct`. We can't be sure this combination in unique per equipment. + To still allow connecting multiple similar equipments, we complete the + identifier by a counter. The drawbacks are we can't be sure the equipments + will get the same identifiers after a reboot or a disconnect/reconnect. + """ + usb_devices = {} + devs = core.find(find_all=True) + cpt = 2 + for dev in devs: + identifier = "usb_%04x:%04x" % (dev.idVendor, dev.idProduct) + if identifier in usb_devices: + identifier += '_%s' % cpt + cpt += 1 + usb_devices[identifier] = dev + return usb_devices -- cgit v1.2.3