static inline int hidd_kbd_get_descriptor(HIDD_KBD* hidd, unsigned int value, unsigned int index, IO* io) { int res = -1; switch (value) { case HID_REPORT_DESCRIPTOR_TYPE: #if (USBD_HID_DEBUG_REQUESTS) printf("HIDD KBD: get REPORT DESCRIPTOR\n"); #endif io_data_write(io, &__KBD_REPORT, HID_BOOT_KEYBOARD_REPORT_SIZE); res = HID_BOOT_KEYBOARD_REPORT_SIZE; break; } return res; }
// int openservo_data_wr_8(servo_dev *sel_servo, unsigned char cmd, int value) int io_data_wr(servo_dev *sel_servo, unsigned char cmd, int value) { unsigned char value_arr[2]; unsigned char max_register; int length; io_get_bank_register(sel_servo, cmd, &max_register, &length); if (length == 2) { int_to_hexarr(value, value_arr); } else if (length == 1) { //put the value integer into the string value_arr[0] = (unsigned char) value; } else return -1; return io_data_write(sel_servo, max_register, value_arr, length); }
static inline void lpc_eep_read(CORE* core, IPC* ipc) { IO* io = (IO*)ipc->param2; #ifdef LPC18xx if (ipc->param1 + ipc->param3 > EEP_SIZE) { error(ERROR_OUT_OF_RANGE); return; } io_data_write(io, (void*)(ipc->param1 + EEP_BASE), ipc->param3); #else //LPC11Uxx LPC_IAP_TYPE iap; req[1] = ipc->param1; req[2] = (unsigned int)io_data(io); req[3] = ipc->param3; //EEPROM operates on M3 clock req[4] = lpc_power_get_core_clock_inside() / 1000; if (!lpc_iap(&iap, IAP_CMD_READ_EEPROM)) return; io->data_size = ipc->param3; #endif //LPC18xx }