// returns number of devices and list of PIDs (dynamically allocated) TIEXPORT1 int TICALL usb_probe_devices2(int **list) { int i; TRYC(dev_enum()); *list = (int *)calloc(MAX_CABLES+1, sizeof(int)); for(i = 0; i < MAX_CABLES; i++) (*list)[i] = devlist[i]; return 0; }
///////////////////////////////////////////////////////////////////////////// /// enumerate existing devices void DeviceMonitor::enumDevices_( ) { assert( dev_context_ ); // create udev enumeration interface std::tr1::shared_ptr< udev_enumerate > dev_enum( udev_enumerate_new( dev_context_ ), &udev_enumerate_unref ); // only interested in scsi_device's udev_enumerate_add_match_subsystem( dev_enum.get(), "block" ); udev_enumerate_add_match_property( dev_enum.get(), "ID_BUS", "ata" ); udev_enumerate_scan_devices( dev_enum.get() ); // start //- enumerate list udev_list_entry* list_entry = udev_enumerate_get_list_entry( dev_enum.get() ); for ( ; list_entry; list_entry = udev_list_entry_get_next( list_entry ) ) { // retrieve device std::tr1::shared_ptr< udev_device > device( udev_device_new_from_syspath( udev_enumerate_get_udev( dev_enum.get() ), udev_list_entry_get_name( list_entry ) ), &udev_device_unref ); if ( !device ) continue; if (!acceptDevice_(device.get())) continue; int led_idx = scsiHostIndex_(device.get()); if (led_idx < 0) continue; if (debug || verbose > 1) std::cout << " device: " << udev_device_get_syspath(device.get()) << "\n led: " << led_idx << "\n"; leds_idx_[num_disks_] = led_idx; stats_files_[num_disks_] = std::string( udev_device_get_syspath(device.get()) ); stats_files_[num_disks_].append( "/stat" ); // make sure it's there and we can open it std::ifstream stats; stats.open( stats_files_[num_disks_].c_str() ); if( !stats ) { std::cout << " Couldn't open stats " << stats_files_[num_disks_] << "\n"; continue; } else stats.close(); ++num_disks_; deviceAdded_( device.get() ); } }
static int dev_probe(CableHandle *h) { int i; TRYC(dev_enum()); for(i = 0; i < MAX_CABLES; i++) { if(devlist[i] == PID_TIGLUSB || devlist[i] == PID_TI89TM || devlist[i] == PID_TI84P || devlist[i] == PID_TI84P_SE) return 0; } return ERR_PROBE_FAILED; }