cdc.ino 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "cdchost.h"
  2. #define DEVICE_ADDRESS 2
  3. USBHostCDC port(DEVICE_ADDRESS);
  4. void ctrl_pipe_cb(usb_host_even_t event, void *data)
  5. {
  6. Serial.printf("CTRL EVENT: 0x%x\n", event);
  7. }
  8. void port_cb(port_event_msg_t msg, USBHostPort* port)
  9. {
  10. Serial.printf("PORT EVENT: 0x%x\n", msg.port_event);
  11. }
  12. void cdc_datain_cb(usb_host_even_t event, void *data)
  13. {
  14. usb_irp_t *irp = (usb_irp_t *)data;
  15. Serial.printf("IN EVENT: 0x%x, buffer_len: %d, received: %d\n", event, irp->num_bytes, irp->actual_num_bytes);
  16. Serial.print("DATA: ");
  17. for (size_t i = 0; i < irp->actual_num_bytes; i++)
  18. {
  19. Serial.printf("%c", irp->data_buffer[i]);
  20. }
  21. Serial.println();
  22. }
  23. void cdc_dataout_cb(usb_host_even_t event, void *data)
  24. {
  25. usb_irp_t *irp = (usb_irp_t *)data;
  26. Serial.printf("OUT EVENT: 0x%x, buffer_len: %d, sent: %d\n", event, irp->num_bytes, irp->actual_num_bytes);
  27. Serial.print("DATA: ");
  28. for (size_t i = 0; i < irp->actual_num_bytes; i++)
  29. {
  30. Serial.printf("%c", irp->data_buffer[i]);
  31. }
  32. Serial.println();
  33. }
  34. void setup()
  35. {
  36. Serial.begin(115200);
  37. port.init();
  38. port.onPortEvent(port_cb);
  39. port.onControlEvent(ctrl_pipe_cb);
  40. port.onDataIn(cdc_datain_cb);
  41. port.onDataOut(cdc_dataout_cb);
  42. }
  43. void loop()
  44. {
  45. delay(10);
  46. while (Serial.available())
  47. {
  48. size_t l = Serial.available();
  49. uint8_t b[l];
  50. l = Serial.read(b, l);
  51. port.sendData(b, l);
  52. }
  53. }