#include "libusb.h" #include #define RNBO_USB_VENDOR_ID 0x04b9 #define USB_SPRO_PROD_ID 0x300 #define MAX_USB_PROD_ID 0x3ff #define SHK_PROD_ID 0x8000 //Sentinel Hardware Key #define SHK_T_PROD_ID 0x8001 //Sentinel Hardware Key/T #define SHK_M_PROD_ID 0x8002 //Sentinel Hardware Key/M #define SHK_MT_PROD_ID 0x8003 //Sentinel Hardware Key/MT #define SDHK_M_PROD_ID 0x8004 //Sentinel Dual Hardware Key #define SDHK_MT_PROD_ID 0x8005 //Sentinel Dual Hardware Key/T /*****************************************************************************/ int probe_devices() { libusb_device **devs; int iRetVal; ssize_t cnt; int count = 0; int i = 0 ; iRetVal = libusb_init(NULL); if (iRetVal != 0) { return iRetVal; } cnt = libusb_get_device_list(NULL, &devs); if (cnt < 0) { return (int) cnt; // return -1 incase of any error } else { libusb_device *dev; while ((dev = devs[i++]) != NULL) { struct libusb_device_descriptor desc; int r = libusb_get_device_descriptor(dev, &desc); if (r < 0) { printf("failed to get device descriptor"); libusb_free_device_list(devs, 0); return r; } #if !defined(_SHK_LINUX_) if((desc.idVendor== RNBO_USB_VENDOR_ID ) && (desc.idProduct== USB_SPRO_PROD_ID)) #else if((desc.idVendor== RNBO_USB_VENDOR_ID) && ((desc.idProduct == USB_SPRO_PROD_ID) || (desc.idProduct == SHK_PROD_ID) || (desc.idProduct == SHK_T_PROD_ID) || (desc.idProduct == SHK_M_PROD_ID) || (desc.idProduct == SHK_MT_PROD_ID) || (desc.idProduct == SDHK_M_PROD_ID) || (desc.idProduct == SDHK_MT_PROD_ID))) #endif { //arr[count] = libusb_ref_device(dev); count ++; } printf("\n%04x:%04x (bus %d, device %d) BY NAVDEEP \n", desc.idVendor, desc.idProduct, libusb_get_bus_number(dev), libusb_get_device_address(dev)); } libusb_free_device_list(devs, 0); } /*end of else */ return count; } int main() { probe_devices(); return 0; }