3232
3333Adafruit_USBH_CDC::Adafruit_USBH_CDC (void ) { _idx = TUSB_INDEX_INVALID_8; }
3434
35- void Adafruit_USBH_CDC::begin (unsigned long baud) {
36-
35+ void Adafruit_USBH_CDC::begin (unsigned long baudrate) {
3736 // default to index 0 when begin
3837 if (_idx == TUSB_INDEX_INVALID_8) {
3938 _idx = 0 ;
4039 }
4140
42- _baud = baud ;
41+ _baud = baudrate ;
4342 if (_baud == 0 ) {
4443 _baud = 115200 ; // default, backward compatible with previous API begin(0)
4544 }
@@ -52,14 +51,65 @@ void Adafruit_USBH_CDC::begin(unsigned long baudrate, uint16_t config) {
5251
5352void Adafruit_USBH_CDC::end (void ) { _idx = TUSB_INDEX_INVALID_8; }
5453
55- bool Adafruit_USBH_CDC::connected (void ) {
56- return (_idx != TUSB_INDEX_INVALID_8) && tuh_cdc_connected (_idx);
54+ bool Adafruit_USBH_CDC::mount (uint8_t idx) {
55+ _idx = idx;
56+
57+ uint32_t local_baud = baud ();
58+ if (local_baud != _baud) {
59+ return setBaudrate (_baud);
60+ }
61+
62+ return true ;
63+ }
64+
65+ void Adafruit_USBH_CDC::umount (uint8_t idx) {
66+ if (_idx == idx) {
67+ _idx = TUSB_INDEX_INVALID_8;
68+ }
69+ }
70+
71+ bool Adafruit_USBH_CDC::connected (void ) { return tuh_cdc_connected (_idx); }
72+
73+ bool Adafruit_USBH_CDC::mounted (void ) { return tuh_cdc_mounted (_idx); }
74+ uint32_t Adafruit_USBH_CDC::baud () {
75+ cdc_line_coding_t line_coding;
76+ if (!tuh_cdc_get_local_line_coding (_idx, &line_coding)) {
77+ return 0 ;
78+ }
79+ return line_coding.bit_rate ;
80+ }
81+
82+ // --------------------------------------------------------------------+
83+ // Control API
84+ // --------------------------------------------------------------------+
85+
86+ bool Adafruit_USBH_CDC::setDtrRts (bool dtr, bool rts, tuh_xfer_cb_t complete_cb,
87+ uintptr_t user_data) {
88+ if (!tuh_cdc_mounted (_idx)) {
89+ return false ;
90+ }
91+
92+ uint16_t const line_state = (dtr ? CDC_CONTROL_LINE_STATE_DTR : 0 ) |
93+ (rts ? CDC_CONTROL_LINE_STATE_RTS : 0 );
94+
95+ return tuh_cdc_set_control_line_state (_idx, line_state, complete_cb,
96+ user_data);
5797}
5898
59- bool Adafruit_USBH_CDC::mounted (void ) {
60- return (_idx != TUSB_INDEX_INVALID_8) && tuh_cdc_mounted (_idx);
99+ bool Adafruit_USBH_CDC::setBaudrate (uint32_t baudrate,
100+ tuh_xfer_cb_t complete_cb,
101+ uintptr_t user_data) {
102+ if (!tuh_cdc_mounted (_idx)) {
103+ return false ;
104+ }
105+
106+ return tuh_cdc_set_baudrate (_idx, baudrate, complete_cb, user_data);
61107}
62108
109+ // --------------------------------------------------------------------+
110+ // Stream API
111+ // --------------------------------------------------------------------+
112+
63113int Adafruit_USBH_CDC::available (void ) {
64114 return (int )tuh_cdc_read_available (_idx);
65115}
0 commit comments