32
32
33
33
Adafruit_USBH_CDC::Adafruit_USBH_CDC (void ) { _idx = TUSB_INDEX_INVALID_8; }
34
34
35
- void Adafruit_USBH_CDC::begin (unsigned long baud) {
36
-
35
+ void Adafruit_USBH_CDC::begin (unsigned long baudrate) {
37
36
// default to index 0 when begin
38
37
if (_idx == TUSB_INDEX_INVALID_8) {
39
38
_idx = 0 ;
40
39
}
41
40
42
- _baud = baud ;
41
+ _baud = baudrate ;
43
42
if (_baud == 0 ) {
44
43
_baud = 115200 ; // default, backward compatible with previous API begin(0)
45
44
}
@@ -52,14 +51,65 @@ void Adafruit_USBH_CDC::begin(unsigned long baudrate, uint16_t config) {
52
51
53
52
void Adafruit_USBH_CDC::end (void ) { _idx = TUSB_INDEX_INVALID_8; }
54
53
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);
57
97
}
58
98
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);
61
107
}
62
108
109
+ // --------------------------------------------------------------------+
110
+ // Stream API
111
+ // --------------------------------------------------------------------+
112
+
63
113
int Adafruit_USBH_CDC::available (void ) {
64
114
return (int )tuh_cdc_read_available (_idx);
65
115
}
0 commit comments