+static int show_status(USBDEVHANDLE dev)
+{
+ int err;
+ char buffer[10];
+ static const char* on_off[] = {"OFF","ON"};
+
+#define onoff(n) on_off[!!(err & (1U << n))]
+
+ err = rel_read_status_raw(dev, buffer);
+ if ( err < 0 ){
+ fprintf(stderr, "error reading data: %s\n", usbErrorMessage(err));
+ err = 1;
+ } else {
+ //hexdump(buffer + 1, len - 1);
+ switch (g_max_relay_num) {
+ case 1:
+ printf("Board ID=[%5.5s] State: R1=%s\n", &buffer[1], onoff(0) );
+ break;
+ case 2:
+ printf("Board ID=[%5.5s] State: R1=%s R2=%s\n",
+ &buffer[1], onoff(0), onoff(1) );
+ break;
+ case 4:
+ printf("Board ID=[%5.5s] State: R1=%s R3=%s R1=%s R4=%s\n",
+ &buffer[1], onoff(0), onoff(1), onoff(2), onoff(3) );
+ break;
+ default:
+ printf("Board ID=[%5.5s] State: %2.2X (hex)\n", &buffer[1], (unsigned char)err );
+ break;
+ }
+ err = 0;
+ }
+ return err;
+#undef onoff
+}
+