25 static std::list<int> connected_device_ids;
26 void callback(
int id,
int connected,
void *data)
28 std::cout<<
"Enter callback. Payload is "<<(
char *)data<<std::endl;;
32 std::cout<<
"device "<<
id<<
" is connected\n";
33 std::cout<<
"Product: "<<prop<<std::endl;
35 connected_device_ids.push_back(
id);
39 connected_device_ids.remove(
id);
40 std::cout<<
"device "<<
id<<
" was removed\n";
51 std::cout<<
"\n--- libusbctrl test application menu ---\n";
52 std::cout<<
"1. rusbbCtrl_init()\n";
53 std::cout<<
"2. rusbbCtrl_term()\n";
54 std::cout<<
"3. rusbCtrl_registerCallback()\n";
55 std::cout<<
"4. rusbCtrl_getProperty()\n";
56 std::cout<<
"5. List hot-plugged dev_ids (not thread-safe).\n";
57 std::cout<<
"9. Quit.\n";
60 static std::string callback_payload =
"Uninitialized";
61 void dump_connected_devices()
64 std::cout<<
"Hot-plugged device ids:\n";
65 if(0 == connected_device_ids.size())
67 std::cout<<
"No devices detected so far.\n";
71 std::list<int>::const_iterator iter;
72 for(iter = connected_device_ids.begin(); iter != connected_device_ids.end(); iter++)
74 std::cout<<
"["<<*iter<<
"] ";
81 bool keep_running =
true;
86 std::cout<<
"Enter command:\n";
87 if(!(std::cin >> choice))
91 std::cin.ignore(10000,
'\n');
101 connected_device_ids.clear();
104 std::cout<<
"Enter a string for callback_payload. This will be used to identify the callback you register.\n";
105 if(!(std::cin >> callback_payload))
107 std::cout<<
"Whoops! Bad input.\n";
109 std::cin.ignore(10000,
'\n');
113 int * device_list_ptr;
114 int device_list_size;
117 std::cout<<
"Failed to register callback.\n";
121 std::cout<<
"Registered callback with payload "<<callback_payload<<std::endl;
122 for(
int i = 0; i < device_list_size; i++)
124 connected_device_ids.push_back(device_list_ptr[i]);
126 free(device_list_ptr);
127 dump_connected_devices();
133 std::cout<<
"Enter devId(integer) and property(string) separated by a space.\n";
134 std::cout<<
"Some examples of properties: product serial manufacturer idProduct idVendor\n";
136 std::string property;
137 if(!(std::cin>>dev_id>>property))
139 std::cout<<
"Whoops! Bad input.\n";
141 std::cin.ignore(10000,
'\n');
145 std::cout<<
"Querying property "<<
property<<
" for dev_id "<<dev_id<<std::endl;
149 std::cout<<
"Query returned NULL!\n";
153 std::cout<<
"Query returned "<<result<<std::endl;
154 free((
void *)result);
161 dump_connected_devices();
165 keep_running =
false;
166 std::cout<<
"Quitting.\n";
170 std::cout<<
"Unknown input!\n";
175 int main(
int argc,
char *argv[])