Использование функции внутри обратного вызова в другой функции - PullRequest
0 голосов
/ 01 февраля 2019

Я работаю над USB CDC на ATSAMD21.Код, который я использую, является примером ATMEL START для USB CD Echo на D21.Я работаю в студии atmel.

Требование:

В моем приложении хост отправляет данные на устройство, и мне нужно прочитать эти данные и отправить обратно разные данные на хост из другой функции..

Здесь, в примере с эхом, для приема и передачи данных используется обратный вызов.Я не знаю, как использовать вызов записи внутри другой функции.Здесь я прилагаю код ниже

Чтение и отображение данных:

Здесь, в этой функции, это для чтения данных и передачи их обратно хосту.

  static bool usb_device_cb_state_c(usb_cdc_control_signal_t state)

   {

     if (state.rs232.DTR ) {

    /* Callbacks must be registered after endpoint allocation */
    cdcdf_acm_register_callback(CDCDF_ACM_CB_READ, (FUNC_PTR)usb_device_cb_bulk_out);

    cdcdf_acm_register_callback(CDCDF_ACM_CB_WRITE, (FUNC_PTR)usb_device_cb_bulk_in);
    /* Start Rx */
    cdcdf_acm_read((uint8_t *)usbd_cdc_buffer, sizeof(usbd_cdc_buffer));
}

/* No error. */
return false;

}

//////////////////////////////////////////

Считать данные с хоста:

   static bool usb_device_cb_bulk_out(const uint8_t ep, const enum  
   usb_xfer_code rc, const uint32_t count)
  {

   cdcdf_acm_write((uint8_t *)usbd_cdc_buffer, count);

 return false;  

}

Записать обратно данные:

  static bool usb_device_cb_bulk_in(const uint8_t ep, const enum usb_xfer_code rc, const uint32_t count)
{
/* Echo data. */
cdcdf_acm_read((uint8_t *)usbd_cdc_buffer, sizeof(usbd_cdc_buffer));

/* No error. */
return false;

}

Мне нужно использоватьэтот вызов чтения внутри другой функции снаружи.Я использовал вызов read непосредственно в другой функции, он не смог отправить данные.Как я могу использовать этот вызов в другой функции. Любая помощь будет оценена.

Здесь обратный вызов будет направлен на функции чтения и записи.

...