diff options
Diffstat (limited to 'lib/support/lib/comms_usb.lua')
-rw-r--r-- | lib/support/lib/comms_usb.lua | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/lib/support/lib/comms_usb.lua b/lib/support/lib/comms_usb.lua deleted file mode 100644 index 91d64b5..0000000 --- a/lib/support/lib/comms_usb.lua +++ /dev/null @@ -1,99 +0,0 @@ ---module(..., package.seeall); - -local bobot_baseboard = require("bobot_baseboard") -local bobot = require("bobot") - -local my_path = debug.getinfo(1, "S").source:match[[^@?(.*[\/])[^\/]-$]] -assert(package.loadlib(my_path .. "libluausb.so","luaopen_libusb"))() -local libusb=_G.libusb; _G.libusb=nil - -local usb_bulk_write = libusb.bulk_write -local usb_bulk_read = libusb.bulk_read - -local USB4ALL_VENDOR = 0x04d8 -local USB4ALL_PRODUCT = 0x000c -local USB4ALL_CONFIGURATION = 1 -local USB4ALL_INTERFACE = 0 - -local READ_HEADER_SIZE = 3 - -local libusb_handler - - -local comms_usb = {} - -function comms_usb.send(endpoint, data, timeout) - --parameters sanity check - assert(type(libusb_handler)=="userdata") - assert(type(endpoint)=="number") - assert(type(data)=="string") - assert(type(timeout)=="number") - - return usb_bulk_write(libusb_handler, endpoint, data, timeout) -end - -function comms_usb.read(endpoint, len, timeout) - --parameters sanity check - assert(type(libusb_handler)=="userdata") - assert(type(endpoint)=="number") - assert(type(len)=="number") - assert(type(timeout)=="number") - - return usb_bulk_read(libusb_handler, endpoint, len+READ_HEADER_SIZE, timeout) -end - - -function comms_usb.init(baseboards) - --parameters sanity check - assert(type(baseboards)=="table") - - - --refresh devices and buses - libusb.find_busses() - libusb.find_devices() - local n_boards = 0 - - local buses=libusb.get_busses() - for dirname, bus in pairs(buses) do --iterate buses - local devices=libusb.get_devices(bus) - for filename, device in pairs(devices) do --iterate devices - local descriptor = libusb.device_descriptor(device) - - --if device is baseboard... - if ((descriptor.idVendor == USB4ALL_VENDOR) and (descriptor.idProduct == USB4ALL_PRODUCT)) then - --try to intialize baseboard - bobot.debugprint("Initializing Baseboard:", descriptor.idVendor, descriptor.idProduct) - libusb_handler = libusb.open(device) - - if not libusb_handler then - bobot.debugprint("Error opening device") - break - end - if not libusb.set_configuration(libusb_handler, USB4ALL_CONFIGURATION) then - bobot.debugprint("Error configuring device, retrying after a reset") - libusb.reset(libusb_handler) - if not libusb.set_configuration(libusb_handler, USB4ALL_CONFIGURATION) then - bobot.debugprint("Error configuring device.") - break - end - end - if not libusb.claim_interface(libusb_handler, USB4ALL_INTERFACE) then - bobot.debugprint("Error seting device interface") - break - end - - --success initializing, instantiate BaseBoard object and register - local iSerial=descriptor.iSerialNumber - local bb = bobot_baseboard:new({idBoard=iSerial, comms=comms_usb}) - --bb:force_close_all() - --bobot.debugprint("Baseboard:", iSerial) - - baseboards[#baseboards+1]=bb - n_boards = n_boards + 1 - end - end - end - return n_boards -end - -return comms_usb |