#ifndef USBSERIAL_H #define USBSERIAL_H #include #include #include class USBSerial { public: SerialUSBDriver susbdriver; public: void init(); inline msg_t getc(systime_t timeout = TIME_INFINITE) { return chIQGetTimeout(&susbdriver.iqueue, timeout); } inline size_t read(uint8_t* buf, size_t len, systime_t timeout = TIME_INFINITE) { return chIQReadTimeout(&susbdriver.iqueue, buf, len, timeout); } inline msg_t putc(uint8_t data, systime_t timeout = TIME_INFINITE) { if(USBD1.state != USB_ACTIVE) { return 0; } return chOQPutTimeout(&susbdriver.oqueue, data, timeout); } inline size_t write(uint8_t* buf, size_t len, systime_t timeout = TIME_INFINITE) { if(USBD1.state != USB_ACTIVE) { return 0; } return chOQWriteTimeout(&susbdriver.oqueue, buf, len, timeout); } }; #endif