How to add usbd_hid_composite 52820

I use 52820 to do ble_usb+esb project, but I have encountered problems when adding USB.
I have added USBD_HID_COMPOSIT in the project of \ examples \ peripheral \ usbd_ble_uart,
Tune app_usbd_hid_kbd_modifier_state_set When sending data, return 0x08
How should I do to add USBD_HID_COMPOSITE?

void hid_kb_handle(void * p_context)
{
	static uint8_t hid_count;
	hid_count++;
	NRF_LOG_INFO("hid_kb_handle   hid_count:%x",hid_count);
 	uint32_t err;
	err = app_usbd_hid_kbd_modifier_state_set(&m_app_hid_kbd, APP_USBD_HID_KBD_MODIFIER_LEFT_SHIFT, true);
	NRF_LOG_INFO("true err:%x",err);
	err = app_usbd_hid_kbd_modifier_state_set(&m_app_hid_kbd, APP_USBD_HID_KBD_MODIFIER_LEFT_SHIFT, false);
	NRF_LOG_INFO("false err:%x",err);

}

static void timers_init(void)
{
    ret_code_t err_code = app_timer_init();
    APP_ERROR_CHECK(err_code);
    err_code = app_timer_create(&m_blink_ble, APP_TIMER_MODE_REPEATED, blink_handler);
    APP_ERROR_CHECK(err_code);
    err_code = app_timer_create(&m_blink_cdc, APP_TIMER_MODE_REPEATED, blink_handler);
    APP_ERROR_CHECK(err_code);
		err_code = app_timer_create(&m_hid_kb, APP_TIMER_MODE_REPEATED, hid_kb_handle);
    APP_ERROR_CHECK(err_code);
	
}

int main(void)
{
    ret_code_t ret;
    static const app_usbd_config_t usbd_config = {
        .ev_state_proc = usbd_user_ev_handler
    };
    // Initialize.
    log_init();
    timers_init();

    buttons_leds_init();

    app_usbd_serial_num_generate();

    ret = nrf_drv_clock_init();
    APP_ERROR_CHECK(ret);

    NRF_LOG_INFO("USBD BLE UART example started.");

    ret = app_usbd_init(&usbd_config);
    APP_ERROR_CHECK(ret);

    app_usbd_class_inst_t const * class_cdc_acm = app_usbd_cdc_acm_class_inst_get(&m_app_cdc_acm);
    ret = app_usbd_class_append(class_cdc_acm);
    APP_ERROR_CHECK(ret);

    app_usbd_class_inst_t const * class_inst_kbd;
#if CONFIG_HAS_KBD
    class_inst_kbd = app_usbd_hid_kbd_class_inst_get(&m_app_hid_kbd);
#else
    class_inst_kbd = app_usbd_dummy_class_inst_get(&m_app_kbd_dummy);
#endif

    ble_stack_init();
    gap_params_init();
    gatt_init();
    services_init();
    advertising_init();
    conn_params_init();

    // Start execution.
 //   advertising_start();

//    ret = app_usbd_power_events_enable();
//    APP_ERROR_CHECK(ret);

    ret = app_usbd_class_append(class_inst_kbd);
    APP_ERROR_CHECK(ret);
    if (USBD_POWER_DETECTION)
    {
        ret = app_usbd_power_events_enable();
        APP_ERROR_CHECK(ret);
    }
    else
    {
        NRF_LOG_INFO("No USB power detection enabled\r\nStarting USB now");

        app_usbd_enable();
        app_usbd_start();
    }
		ret_code_t err_code = app_timer_start(m_hid_kb,APP_TIMER_TICKS(HID_KB_INTERVAL),NULL);
    // Enter main loop.
    for (;;)
    {
        while (app_usbd_event_queue_process())
        {
            /* Nothing to do */
        }
        idle_state_handle();
    }
}

Parents Reply Children
Related