예제 #1
0
파일: hidd_kbd.c 프로젝트: alexeyk13/rexos
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;
}
예제 #2
0
// 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);
}
예제 #3
0
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
}