37
37
#define EPOUT 0x00
38
38
#define EPIN 0x80
39
39
40
- uint8_t _cdc_instance_count = 0 ;
41
-
40
+ // SerialTinyUSB can be macro expanding to "Serial" on supported cores
42
41
Adafruit_USBD_CDC SerialTinyUSB;
43
42
43
+ // ------------- Static member -------------//
44
+ uint8_t Adafruit_USBD_CDC::_instance_count = 0 ;
45
+
46
+ uint8_t Adafruit_USBD_CDC::getInstanceCount (void )
47
+ {
48
+ return _instance_count;
49
+ }
50
+
44
51
Adafruit_USBD_CDC::Adafruit_USBD_CDC (void ) {
45
- _begun = false ;
46
- _itf = 0 ;
52
+ _instance = INVALID_INSTANCE;
47
53
}
48
54
49
55
uint16_t Adafruit_USBD_CDC::getInterfaceDescriptor (uint8_t itfnum, uint8_t *buf,
@@ -65,17 +71,17 @@ uint16_t Adafruit_USBD_CDC::getInterfaceDescriptor(uint8_t itfnum, uint8_t *buf,
65
71
void Adafruit_USBD_CDC::begin (uint32_t baud) {
66
72
(void )baud;
67
73
68
- if (_begun) {
74
+ // already called begin()
75
+ if (isValid ()) {
69
76
return ;
70
77
}
71
78
72
79
// too many instances
73
- if (!(_cdc_instance_count < CFG_TUD_CDC)) {
80
+ if (!(_instance_count < CFG_TUD_CDC)) {
74
81
return ;
75
82
}
76
83
77
- _begun = true ;
78
- _itf = _cdc_instance_count++;
84
+ _instance = _instance_count++;
79
85
this ->setStringDescriptor (" TinyUSB Serial" );
80
86
USBDevice.addInterface (*this );
81
87
}
@@ -86,69 +92,69 @@ void Adafruit_USBD_CDC::begin(uint32_t baud, uint8_t config) {
86
92
}
87
93
88
94
void Adafruit_USBD_CDC::end (void ) {
89
- // Resset configuration descriptor without Serial as CDC
95
+ // Reset configuration descriptor without Serial as CDC
90
96
USBDevice.clearConfiguration ();
91
- _cdc_instance_count = 0 ;
97
+ _instance_count = 0 ;
92
98
}
93
99
94
100
uint32_t Adafruit_USBD_CDC::baud (void ) {
95
- if (!_begun ) {
101
+ if (!isValid () ) {
96
102
return 0 ;
97
103
}
98
104
99
105
cdc_line_coding_t coding;
100
- tud_cdc_n_get_line_coding (_itf , &coding);
106
+ tud_cdc_n_get_line_coding (_instance , &coding);
101
107
102
108
return coding.bit_rate ;
103
109
}
104
110
105
111
uint8_t Adafruit_USBD_CDC::stopbits (void ) {
106
- if (!_begun ) {
112
+ if (!isValid () ) {
107
113
return 0 ;
108
114
}
109
115
110
116
cdc_line_coding_t coding;
111
- tud_cdc_n_get_line_coding (_itf , &coding);
117
+ tud_cdc_n_get_line_coding (_instance , &coding);
112
118
113
119
return coding.stop_bits ;
114
120
}
115
121
116
122
uint8_t Adafruit_USBD_CDC::paritytype (void ) {
117
- if (!_begun ) {
123
+ if (!isValid () ) {
118
124
return 0 ;
119
125
}
120
126
121
127
cdc_line_coding_t coding;
122
- tud_cdc_n_get_line_coding (_itf , &coding);
128
+ tud_cdc_n_get_line_coding (_instance , &coding);
123
129
124
130
return coding.parity ;
125
131
}
126
132
127
133
uint8_t Adafruit_USBD_CDC::numbits (void ) {
128
- if (!_begun ) {
134
+ if (!isValid () ) {
129
135
return 0 ;
130
136
}
131
137
132
138
cdc_line_coding_t coding;
133
- tud_cdc_n_get_line_coding (_itf , &coding);
139
+ tud_cdc_n_get_line_coding (_instance , &coding);
134
140
135
141
return coding.data_bits ;
136
142
}
137
143
138
144
int Adafruit_USBD_CDC::dtr (void ) {
139
- if (!_begun ) {
145
+ if (!isValid () ) {
140
146
return 0 ;
141
147
}
142
148
143
- return tud_cdc_n_connected (_itf );
149
+ return tud_cdc_n_connected (_instance );
144
150
}
145
151
146
152
Adafruit_USBD_CDC::operator bool () {
147
- if (!_begun ) {
153
+ if (!isValid () ) {
148
154
return false ;
149
155
}
150
156
151
- bool ret = tud_cdc_n_connected (_itf );
157
+ bool ret = tud_cdc_n_connected (_instance );
152
158
153
159
// Add an yield to run usb background in case sketch block wait as follows
154
160
// while( !Serial ) {}
@@ -159,11 +165,11 @@ Adafruit_USBD_CDC::operator bool() {
159
165
}
160
166
161
167
int Adafruit_USBD_CDC::available (void ) {
162
- if (!_begun ) {
168
+ if (!isValid () ) {
163
169
return 0 ;
164
170
}
165
171
166
- uint32_t count = tud_cdc_n_available (_itf );
172
+ uint32_t count = tud_cdc_n_available (_instance );
167
173
168
174
// Add an yield to run usb background in case sketch block wait as follows
169
175
// while( !Serial.available() ) {}
@@ -175,39 +181,39 @@ int Adafruit_USBD_CDC::available(void) {
175
181
}
176
182
177
183
int Adafruit_USBD_CDC::peek (void ) {
178
- if (!_begun ) {
184
+ if (!isValid () ) {
179
185
return -1 ;
180
186
}
181
187
182
188
uint8_t ch;
183
- return tud_cdc_n_peek (_itf , &ch) ? (int )ch : -1 ;
189
+ return tud_cdc_n_peek (_instance , &ch) ? (int )ch : -1 ;
184
190
}
185
191
186
192
int Adafruit_USBD_CDC::read (void ) {
187
- if (!_begun ) {
193
+ if (!isValid () ) {
188
194
return -1 ;
189
195
}
190
- return (int )tud_cdc_n_read_char (_itf );
196
+ return (int )tud_cdc_n_read_char (_instance );
191
197
}
192
198
193
199
void Adafruit_USBD_CDC::flush (void ) {
194
- if (!_begun ) {
200
+ if (!isValid () ) {
195
201
return ;
196
202
}
197
203
198
- tud_cdc_n_write_flush (_itf );
204
+ tud_cdc_n_write_flush (_instance );
199
205
}
200
206
201
207
size_t Adafruit_USBD_CDC::write (uint8_t ch) { return write (&ch, 1 ); }
202
208
203
209
size_t Adafruit_USBD_CDC::write (const uint8_t *buffer, size_t size) {
204
- if (!_begun ) {
210
+ if (!isValid () ) {
205
211
return 0 ;
206
212
}
207
213
208
214
size_t remain = size;
209
- while (remain && tud_cdc_n_connected (_itf )) {
210
- size_t wrcount = tud_cdc_n_write (_itf , buffer, remain);
215
+ while (remain && tud_cdc_n_connected (_instance )) {
216
+ size_t wrcount = tud_cdc_n_write (_instance , buffer, remain);
211
217
remain -= wrcount;
212
218
buffer += wrcount;
213
219
@@ -221,10 +227,10 @@ size_t Adafruit_USBD_CDC::write(const uint8_t *buffer, size_t size) {
221
227
}
222
228
223
229
int Adafruit_USBD_CDC::availableForWrite (void ) {
224
- if (!_begun ) {
230
+ if (!isValid () ) {
225
231
return 0 ;
226
232
}
227
- return tud_cdc_n_write_available (_itf );
233
+ return tud_cdc_n_write_available (_instance );
228
234
}
229
235
230
236
extern " C" {
0 commit comments