@@ -92,36 +92,62 @@ void Adafruit_USBD_CDC::end(void) {
92
92
}
93
93
94
94
uint32_t Adafruit_USBD_CDC::baud (void ) {
95
+ if (!_begun) {
96
+ return 0 ;
97
+ }
98
+
95
99
cdc_line_coding_t coding;
96
100
tud_cdc_n_get_line_coding (_itf, &coding);
97
101
98
102
return coding.bit_rate ;
99
103
}
100
104
101
105
uint8_t Adafruit_USBD_CDC::stopbits (void ) {
106
+ if (!_begun) {
107
+ return 0 ;
108
+ }
109
+
102
110
cdc_line_coding_t coding;
103
111
tud_cdc_n_get_line_coding (_itf, &coding);
104
112
105
113
return coding.stop_bits ;
106
114
}
107
115
108
116
uint8_t Adafruit_USBD_CDC::paritytype (void ) {
117
+ if (!_begun) {
118
+ return 0 ;
119
+ }
120
+
109
121
cdc_line_coding_t coding;
110
122
tud_cdc_n_get_line_coding (_itf, &coding);
111
123
112
124
return coding.parity ;
113
125
}
114
126
115
127
uint8_t Adafruit_USBD_CDC::numbits (void ) {
128
+ if (!_begun) {
129
+ return 0 ;
130
+ }
131
+
116
132
cdc_line_coding_t coding;
117
133
tud_cdc_n_get_line_coding (_itf, &coding);
118
134
119
135
return coding.data_bits ;
120
136
}
121
137
122
- int Adafruit_USBD_CDC::dtr (void ) { return tud_cdc_n_connected (_itf); }
138
+ int Adafruit_USBD_CDC::dtr (void ) {
139
+ if (!_begun) {
140
+ return 0 ;
141
+ }
142
+
143
+ return tud_cdc_n_connected (_itf);
144
+ }
123
145
124
146
Adafruit_USBD_CDC::operator bool () {
147
+ if (!_begun) {
148
+ return false ;
149
+ }
150
+
125
151
bool ret = tud_cdc_n_connected (_itf);
126
152
127
153
// Add an yield to run usb background in case sketch block wait as follows
@@ -133,6 +159,10 @@ Adafruit_USBD_CDC::operator bool() {
133
159
}
134
160
135
161
int Adafruit_USBD_CDC::available (void ) {
162
+ if (!_begun) {
163
+ return 0 ;
164
+ }
165
+
136
166
uint32_t count = tud_cdc_n_available (_itf);
137
167
138
168
// Add an yield to run usb background in case sketch block wait as follows
@@ -145,17 +175,36 @@ int Adafruit_USBD_CDC::available(void) {
145
175
}
146
176
147
177
int Adafruit_USBD_CDC::peek (void ) {
178
+ if (!_begun) {
179
+ return -1 ;
180
+ }
181
+
148
182
uint8_t ch;
149
183
return tud_cdc_n_peek (_itf, &ch) ? (int )ch : -1 ;
150
184
}
151
185
152
- int Adafruit_USBD_CDC::read (void ) { return (int )tud_cdc_n_read_char (_itf); }
186
+ int Adafruit_USBD_CDC::read (void ) {
187
+ if (!_begun) {
188
+ return -1 ;
189
+ }
190
+ return (int )tud_cdc_n_read_char (_itf);
191
+ }
153
192
154
- void Adafruit_USBD_CDC::flush (void ) { tud_cdc_n_write_flush (_itf); }
193
+ void Adafruit_USBD_CDC::flush (void ) {
194
+ if (!_begun) {
195
+ return ;
196
+ }
197
+
198
+ tud_cdc_n_write_flush (_itf);
199
+ }
155
200
156
201
size_t Adafruit_USBD_CDC::write (uint8_t ch) { return write (&ch, 1 ); }
157
202
158
203
size_t Adafruit_USBD_CDC::write (const uint8_t *buffer, size_t size) {
204
+ if (!_begun) {
205
+ return 0 ;
206
+ }
207
+
159
208
size_t remain = size;
160
209
while (remain && tud_cdc_n_connected (_itf)) {
161
210
size_t wrcount = tud_cdc_n_write (_itf, buffer, remain);
@@ -172,6 +221,9 @@ size_t Adafruit_USBD_CDC::write(const uint8_t *buffer, size_t size) {
172
221
}
173
222
174
223
int Adafruit_USBD_CDC::availableForWrite (void ) {
224
+ if (!_begun) {
225
+ return 0 ;
226
+ }
175
227
return tud_cdc_n_write_available (_itf);
176
228
}
177
229
0 commit comments