add ability to read from USB serial
This commit is contained in:
parent
838102a7e9
commit
661e2b6a73
@ -255,8 +255,15 @@ int _write(int file, char *ptr, int len) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// this method could be overridden to read stuff from the USB console? but no need rn.
|
char buf[256] = {0};
|
||||||
int _read(void) {
|
|
||||||
|
int _read(int file, char *ptr, int len) {
|
||||||
|
(void)file;
|
||||||
|
int actual_length = strlen(buf);
|
||||||
|
if (actual_length) {
|
||||||
|
memcpy(ptr, buf, min(len, actual_length));
|
||||||
|
return actual_length;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,8 +271,18 @@ void USB_Handler(void) {
|
|||||||
tud_int_handler(0);
|
tud_int_handler(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cdc_task(void) {
|
||||||
|
if (tud_cdc_n_available(0)) {
|
||||||
|
tud_cdc_n_read(0, buf, sizeof(buf));
|
||||||
|
} else {
|
||||||
|
memset(buf, 0, 64);
|
||||||
|
// buf[0] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void TC0_Handler(void) {
|
void TC0_Handler(void) {
|
||||||
tud_task();
|
tud_task();
|
||||||
|
cdc_task();
|
||||||
TC0->COUNT8.INTFLAG.reg |= TC_INTFLAG_OVF;
|
TC0->COUNT8.INTFLAG.reg |= TC_INTFLAG_OVF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,4 +76,12 @@
|
|||||||
*/
|
*/
|
||||||
bool watch_is_buzzer_or_led_enabled(void);
|
bool watch_is_buzzer_or_led_enabled(void);
|
||||||
|
|
||||||
|
/** @brief Reads up to len bytes from the USB serial.
|
||||||
|
* @param file ignored, you can pass in 0
|
||||||
|
* @param ptr pointer to a buffer of at least len bytes
|
||||||
|
* @param len the number of bytes you wish to read, max 256.
|
||||||
|
* @return The number of bytes read, or zero if no bytes were read.
|
||||||
|
*/
|
||||||
|
int read(int file, char *ptr, int len);
|
||||||
|
|
||||||
#endif /* WATCH_H_ */
|
#endif /* WATCH_H_ */
|
@ -44,7 +44,8 @@ void _watch_enable_usb(void);
|
|||||||
// this function ends up getting called by printf to log stuff to the USB console.
|
// this function ends up getting called by printf to log stuff to the USB console.
|
||||||
int _write(int file, char *ptr, int len);
|
int _write(int file, char *ptr, int len);
|
||||||
|
|
||||||
// this method could be overridden to read stuff from the USB console? but no need rn.
|
// i thought this would be called by gets but it doesn't? anyway it does get called by read()
|
||||||
int _read(void);
|
// so that's our mechanism for reading data from the USB serial console.
|
||||||
|
int _read(int file, char *ptr, int len);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user