/* Return pointer to indexed string from HID path (empty if not found) */ char *HIDGetItemString(hid_dev_handle_t udev, const char *hidpath, char *buf, size_t buflen, usage_tables_t *utab) { double Index; if (HIDGetDataValue(udev, HIDGetItemData(hidpath, utab), &Index, MAX_TS) != 1) { buf[0] = '\0'; return buf; } return HIDGetIndexString(udev, Index, buf, buflen); }
/* returns statically allocated string - must not use it again before done with result! */ static const char *tripplite_chemistry_fun(double value) { static char buf[20]; const char *model; model = dstate_getinfo("ups.productid"); /* Workaround for AVR 550U firmware bug */ if (!strcmp(model, "1003")) { return "unknown"; } /* Workaround for OMNI1000LCD firmware bug */ if (!strcmp(model, "2005")) { return "unknown"; } return HIDGetIndexString(udev, (int)value, buf, sizeof(buf)); }