An example project for the Heltec Turtle LoRa board (STM32L4 and SX1276 chips). The projects is only supported for the Nucleo-L432KC board platform in the mbed online and offline compiler environment. Visit www.radioshuttle.de (choose Turtle board) for instructions. Note that most source files and libraries are open source, however some files especially the RadioShuttle core protocol is copyrighted work. Check header for details.
Dependencies: mbed BufferedSerial SX1276GenericLib OLED_SSD1306 HELIOS_Si7021 NVProperty RadioShuttle-STM32L4 USBDeviceHT
Diff: utils.cpp
- Revision:
- 33:617765dcce6c
- Parent:
- 30:8bc655c9b224
- Child:
- 37:77fa81e4ad79
--- a/utils.cpp Tue Feb 12 16:52:23 2019 +0100 +++ b/utils.cpp Tue Feb 12 16:54:21 2019 +0100 @@ -17,17 +17,13 @@ void InitSerial(int timeout, DigitalOut *led) { _useDprintf = true; - bool uartActive; - { - { - // need to turn rx low to avoid floating signal - DigitalOut rx(USBRX); - rx = 0; - } - DigitalIn uartRX(USBRX); - uartActive = uartRX.read(); - } + bool uartActive = true; + #ifdef FEATURE_USBSERIAL + DigitalOut rx(USBRX); // need to turn rx low to avoid floating signal + rx = 0; + DigitalIn uartRX(USBRX); + uartActive = uartRX.read(); if (!uartActive) { usb = new USBSerialBuffered(); Timer t; @@ -42,20 +38,17 @@ usb = NULL; DigitalOut rx(USBRX); rx = 0; // need to turn tx low to avoid floating signal - goto done; } - } - } - goto done; - } else { -#else - { + } + } + } #endif + if (uartActive) { ser = new BufferedSerial(USBTX, USBRX); ser->baud(230400); ser->format(8); } -done: + time_t t = cvt_date(__DATE__, __TIME__); if (t > time(NULL)) { set_time(t); @@ -113,10 +106,9 @@ usb->vprintf_irqsafe(format, arg); if (newline) usb->printf_irqsafe("\r\n"); -#else - if (0) { + } #endif - } else if (ser) { + if (ser) { // serial jas int r = 0; r = vsnprintf(NULL, 0, format, arg); @@ -146,8 +138,13 @@ int count = 0; memset(buf, 0, buflen); +#ifdef FEATURE_USBSERIAL if (usb == NULL && ser == NULL) return NULL; +#else + if (ser == NULL) + return NULL; +#endif Timer t; int start = 0; @@ -156,11 +153,13 @@ start = t.read_ms(); } +#ifdef FEATURE_USBSERIAL if (usb) { usb->flush(); while(usb->readable()) usb->getc(); // flush old chars } +#endif if (ser) { while(ser->readable()) ser->getc(); // flush old chars @@ -170,8 +169,10 @@ if (timeout_ms && t.read_ms() - start > timeout_ms) return NULL; int c = -2; +#ifdef FEATURE_USBSERIAL if (usb && usb->readable()) c = usb->getc(); +#endif if (ser && ser->readable()) c = ser->getc(); if (c == -2) @@ -185,16 +186,21 @@ buf[--count] = 0; if (echo) rprintf("\b \b"); +#ifdef FEATURE_USBSERIAL if (usb) usb->flush(); +#endif continue; } if (echo) { rprintf("%c", c); +#ifdef FEATURE_USBSERIAL if (usb) usb->flush(); +#endif } + start = t.read_ms(); buf[count] = c; if (count++ >= buflen-2) break;