blob: c509b12bcb8e35bd1f594cafa71d07037b405889 [file] [log] [blame]
/* gobi-factory-reset.c - resets all Gobis to factory defaults */
#include <stdio.h>
#include <GobiConnectionMgmt/GobiConnectionMgmtAPI.h>
#define MAX_DEVICES 16
typedef struct device {
char node[256];
char key[16];
} device_t;
static int reset_device(device_t *dev, char *spc) {
ULONG ret = QCWWANConnect(dev->node, dev->key);
if (ret) {
printf("Connect path '%s' key '%s': %lu\n", dev->node, dev->key, ret);
return 1;
}
ret = ResetToFactoryDefaults(spc);
if (ret) {
printf("Reset path '%s' key '%s': %lu\n", dev->node, dev->key, ret);
QCWWANDisconnect();
return ret;
}
ret = QCWWANDisconnect();
if (ret) {
printf("Disconnect path '%s' key '%s': %lu\n", dev->node, dev->key, ret);
}
return ret;
}
int main(int argc, char *argv[]) {
device_t devices[MAX_DEVICES];
BYTE num_devices = MAX_DEVICES;
ULONG ret;
int i;
if (argc != 2) {
printf("Usage: %s <spc>\n", argv[0]);
return 1;
}
ret = QCWWANEnumerateDevices(&num_devices, (BYTE*)devices);
if (ret) {
printf("EnumerateDevices: %lu\n", ret);
return 2;
}
for (i = 0; i < num_devices; i++) {
ret = ret || reset_device(&devices[i], argv[1]);
}
return ret ? 3 : 0;
}