Allow filtering devices by serial number
parent
919bcccffc
commit
dcec89f2da
21
src/main.cpp
21
src/main.cpp
|
|
@ -49,6 +49,7 @@ int driverPatch = 0;
|
||||||
int maxInterfaces = 0; // From driver
|
int maxInterfaces = 0; // From driver
|
||||||
int sharedMemSize = 0; // From driver
|
int sharedMemSize = 0; // From driver
|
||||||
void* sharedMemory = nullptr;
|
void* sharedMemory = nullptr;
|
||||||
|
std::string serialFilter;
|
||||||
|
|
||||||
std::atomic<bool> stopRunning(false);
|
std::atomic<bool> stopRunning(false);
|
||||||
|
|
||||||
|
|
@ -193,6 +194,7 @@ void usage(std::string executableName) {
|
||||||
std::cerr << "\t-d, --daemon\t\tRun as a daemon in the background\n";
|
std::cerr << "\t-d, --daemon\t\tRun as a daemon in the background\n";
|
||||||
std::cerr << "\t-h, -?, --help, --usage\t\tShow this help page\n";
|
std::cerr << "\t-h, -?, --help, --usage\t\tShow this help page\n";
|
||||||
std::cerr << "\t --devices\t\tList supported devices\n";
|
std::cerr << "\t --devices\t\tList supported devices\n";
|
||||||
|
std::cerr << "\t --filter <serial>\tOnly connect to devices with serial\n\t\t\t\t\tnumbers starting with this filter\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
void terminateSignal(int signal) {
|
void terminateSignal(int signal) {
|
||||||
|
|
@ -215,9 +217,14 @@ void searchForDevices() {
|
||||||
if(alreadyOpen)
|
if(alreadyOpen)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
const std::string serial = dev->getSerial();
|
||||||
|
|
||||||
|
// If we have a serial filter, make sure our serial starts with the given filter
|
||||||
|
if(!serialFilter.empty() && serial.rfind(serialFilter, 0) != 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
// Now open the device
|
// Now open the device
|
||||||
OpenDevice newDevice(dev);
|
OpenDevice newDevice(dev);
|
||||||
const std::string serial = newDevice.device->getSerial();
|
|
||||||
Lazy<bool> firstTimeFailedToOpen([&serial]() {
|
Lazy<bool> firstTimeFailedToOpen([&serial]() {
|
||||||
return std::find(failedToOpen.begin(), failedToOpen.end(), serial) == failedToOpen.end();
|
return std::find(failedToOpen.begin(), failedToOpen.end(), serial) == failedToOpen.end();
|
||||||
});
|
});
|
||||||
|
|
@ -344,13 +351,8 @@ void deviceSearchThread() {
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
if(argc > 2) {
|
for(int i = 1; i != argc; i++) {
|
||||||
usage(argv[0]);
|
const std::string arg = argv[i];
|
||||||
return EX_USAGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(argc == 2) {
|
|
||||||
const std::string arg = argv[1];
|
|
||||||
if(arg == "-d" || arg == "--daemon") {
|
if(arg == "-d" || arg == "--daemon") {
|
||||||
runningAsDaemon = true;
|
runningAsDaemon = true;
|
||||||
} else if(arg == "-h" || arg == "--help" || arg == "-?" || arg == "--usage") {
|
} else if(arg == "-h" || arg == "--help" || arg == "-?" || arg == "--usage") {
|
||||||
|
|
@ -362,6 +364,9 @@ int main(int argc, char** argv) {
|
||||||
for(auto& dev : icsneo::GetSupportedDevices())
|
for(auto& dev : icsneo::GetSupportedDevices())
|
||||||
std::cout << '\t' << dev << std::endl;
|
std::cout << '\t' << dev << std::endl;
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
|
} else if(arg == "--filter" && i + 1 <= argc) {
|
||||||
|
serialFilter = argv[++i];
|
||||||
|
transform(serialFilter.begin(), serialFilter.end(), serialFilter.begin(), ::toupper);
|
||||||
} else {
|
} else {
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
return EX_USAGE;
|
return EX_USAGE;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue