Improve handling of CDC ACM line state
- For the CC2538, simplify handling of USB_CDC_ACM_LINE_STATE events. Ignore the Carrier Control (RTS) bit when receiving a SET_CONTROL_LINE _STATE request, we are a full duplex device. - Improve behaviour of the CC2531 USB stick when there is no process on the host to read IN data. Basically, we adopt the CC2538 approach and we only send data when a DTE is present
This commit is contained in:
parent
260b004b7e
commit
007e113ea9
2 changed files with 12 additions and 13 deletions
|
@ -170,6 +170,16 @@ do_work(void)
|
|||
enabled = 0;
|
||||
}
|
||||
|
||||
events = usb_cdc_acm_get_events();
|
||||
if(events & USB_CDC_ACM_LINE_STATE) {
|
||||
uint8_t line_state = usb_cdc_acm_get_line_state();
|
||||
if(line_state & USB_CDC_ACM_DTE) {
|
||||
enabled = 1;
|
||||
} else {
|
||||
enabled = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(!enabled) {
|
||||
return;
|
||||
}
|
||||
|
@ -254,6 +264,7 @@ PROCESS_THREAD(usb_serial_process, ev, data)
|
|||
usb_setup();
|
||||
usb_cdc_acm_setup();
|
||||
usb_set_global_event_process(&usb_serial_process);
|
||||
usb_cdc_acm_set_event_process(&usb_serial_process);
|
||||
usb_set_ep_event_process(EPIN, &usb_serial_process);
|
||||
usb_set_ep_event_process(EPOUT, &usb_serial_process);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue