vector<TreehopperBoard>* TreehopperManager::ScanForDevices() { ssize_t cnt; cnt = libusb_get_device_list(NULL, &devs); if (cnt < 0) return &BoardList; libusb_device *dev; int i = 0; while ((dev = devs[i++]) != NULL) { struct libusb_device_descriptor desc; int r = libusb_get_device_descriptor(dev, &desc); if (r < 0) { return &BoardList; } if (desc.idProduct == TreehopperBoard::pid && desc.idVendor == TreehopperBoard::vid) { // Get the name and serial number libusb_device_handle* candidate; libusb_open(dev, &candidate); unsigned char buffer[64]; libusb_get_string_descriptor_ascii(candidate, 4, buffer, 128); string name = string((const char*)buffer); libusb_get_string_descriptor_ascii(candidate, 3, buffer, 128); string serialNumber = string((const char*)buffer); libusb_close(candidate); BoardList.push_back(TreehopperBoard(serialNumber)); } } return &BoardList; }
vector<TreehopperBoard>* TreehopperManager::ScanForDevices() { ssize_t cnt; cnt = libusb_get_device_list(NULL, &devs); if (cnt < 0) return &BoardList; libusb_device *dev; int i = 0; while ((dev = devs[i++]) != NULL) { struct libusb_device_descriptor desc; int r = libusb_get_device_descriptor(dev, &desc); if (r < 0) { return &BoardList; } if (desc.idProduct == TreehopperBoard::pid && desc.idVendor == TreehopperBoard::vid) { BoardList.push_back(TreehopperBoard(dev)); } } return &BoardList; }