Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed BufferedSerial SX1276GenericLib OLED_SSD1306 HELIOS_Si7021 NVProperty RadioShuttle-STM32L4 USBDeviceHT
main.cpp@61:6e462fa1b7d5, 2019-05-29 (annotated)
- Committer:
- Helmut Tschemernjak
- Date:
- Wed May 29 11:18:32 2019 +0200
- Revision:
- 61:6e462fa1b7d5
- Parent:
- 50:28166f6fdaa2
Updated OLED lib
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Helmut64 | 0:3b6c2ce051a6 | 1 | /* |
| Helmut Tschemernjak | 3:b5052f3fa638 | 2 | * Copyright (c) 2019 Helmut Tschemernjak |
| Helmut64 | 0:3b6c2ce051a6 | 3 | * 30826 Garbsen (Hannover) Germany |
| Helmut64 | 0:3b6c2ce051a6 | 4 | * Licensed under the Apache License, Version 2.0); |
| Helmut64 | 0:3b6c2ce051a6 | 5 | */ |
| Helmut Tschemernjak | 3:b5052f3fa638 | 6 | |
| Helmut Tschemernjak | 3:b5052f3fa638 | 7 | /* |
| Helmut Tschemernjak | 3:b5052f3fa638 | 8 | * TODO: |
| Helmut Tschemernjak | 45:22bb680cad5a | 9 | * Compiler Date/Time is not set correctly on startup using gcc |
| Helmut Tschemernjak | 45:22bb680cad5a | 10 | * USB Serial block deepsleep |
| Helmut Tschemernjak | 3:b5052f3fa638 | 11 | */ |
| Helmut Tschemernjak | 3:b5052f3fa638 | 12 | #include "main.h" |
| Helmut Tschemernjak | 3:b5052f3fa638 | 13 | #include "RadioTest.h" |
| Helmut64 | 0:3b6c2ce051a6 | 14 | |
| Helmut Tschemernjak | 3:b5052f3fa638 | 15 | DigitalOut statusLED(LED); |
| Helmut Tschemernjak | 3:b5052f3fa638 | 16 | DigitalOut redLED(LED2); |
| Helmut Tschemernjak | 3:b5052f3fa638 | 17 | InterruptIn buttonIntr(USER_BUTTON); |
| Helmut Tschemernjak | 13:3c7a52b11316 | 18 | volatile int pressedCount; |
| Helmut64 | 0:3b6c2ce051a6 | 19 | |
| Helmut Tschemernjak | 3:b5052f3fa638 | 20 | void switchInput(void) { |
| Helmut Tschemernjak | 47:59a9923a9f77 | 21 | InterruptMSG(INT_BUTTON1); |
| Helmut Tschemernjak | 3:b5052f3fa638 | 22 | } |
| Helmut64 | 0:3b6c2ce051a6 | 23 | |
| Helmut Tschemernjak | 3:b5052f3fa638 | 24 | void timerUpdate(void) { |
| Helmut Tschemernjak | 5:c6a960febe80 | 25 | static LowPowerTimeout timeout; |
| Helmut Tschemernjak | 3:b5052f3fa638 | 26 | if (redLED == 0) |
| Helmut Tschemernjak | 3:b5052f3fa638 | 27 | timeout.attach_us(&timerUpdate, 20000); // setup to call timerUpdate after 20 millis |
| Helmut Tschemernjak | 3:b5052f3fa638 | 28 | else |
| Helmut Tschemernjak | 3:b5052f3fa638 | 29 | timeout.attach_us(&timerUpdate, 2000000); // setup to call timerUpdate after 2 seconds |
| Helmut Tschemernjak | 3:b5052f3fa638 | 30 | |
| Helmut Tschemernjak | 47:59a9923a9f77 | 31 | InterruptMSG(INT_TIMEOUT); |
| Helmut Tschemernjak | 3:b5052f3fa638 | 32 | } |
| Helmut Tschemernjak | 3:b5052f3fa638 | 33 | |
| Helmut Tschemernjak | 18:d2f227e0a8bf | 34 | |
| Helmut Tschemernjak | 34:d3d60dbb84ea | 35 | |
| Helmut64 | 0:3b6c2ce051a6 | 36 | int main() { |
| Helmut64 | 0:3b6c2ce051a6 | 37 | /* |
| Helmut64 | 0:3b6c2ce051a6 | 38 | * inits the Serial or USBSerial when available (230400 baud). |
| Helmut64 | 0:3b6c2ce051a6 | 39 | * If the serial uart is not is not connected it swiches to USB Serial |
| Helmut64 | 0:3b6c2ce051a6 | 40 | * blinking LED means USBSerial detected, waiting for a connect. |
| Helmut64 | 0:3b6c2ce051a6 | 41 | * It waits up to 30 seconds for a USB terminal connections |
| Helmut64 | 0:3b6c2ce051a6 | 42 | */ |
| Helmut Tschemernjak | 45:22bb680cad5a | 43 | InitSerial(30*1000, &statusLED, &buttonIntr); |
| Helmut Tschemernjak | 37:77fa81e4ad79 | 44 | RunStartup(); |
| Helmut Tschemernjak | 3:b5052f3fa638 | 45 | dprintf("Welcome to RadioShuttle v%d.%d", RS_MAJOR, RS_MINOR); |
| Helmut Tschemernjak | 37:77fa81e4ad79 | 46 | timerUpdate(); // start timer for status blinked, can be disalbed to save energy |
| Helmut Tschemernjak | 3:b5052f3fa638 | 47 | #if defined (USER_BUTTON_RISE) // attach switchInput function to the rising or falling edge |
| Helmut Tschemernjak | 3:b5052f3fa638 | 48 | buttonIntr.rise(&switchInput); |
| Helmut Tschemernjak | 3:b5052f3fa638 | 49 | #else |
| Helmut Tschemernjak | 3:b5052f3fa638 | 50 | buttonIntr.fall(&switchInput); |
| Helmut Tschemernjak | 3:b5052f3fa638 | 51 | #endif |
| Helmut Tschemernjak | 34:d3d60dbb84ea | 52 | |
| Helmut Tschemernjak | 37:77fa81e4ad79 | 53 | RunCommands(10000); // check 10 secs for any commands |
| Helmut Tschemernjak | 34:d3d60dbb84ea | 54 | |
| Helmut Tschemernjak | 34:d3d60dbb84ea | 55 | #ifdef FEATURE_LORA |
| Helmut Tschemernjak | 34:d3d60dbb84ea | 56 | InitRadio(); |
| Helmut Tschemernjak | 34:d3d60dbb84ea | 57 | #endif |
| Helmut Tschemernjak | 34:d3d60dbb84ea | 58 | |
| Helmut Tschemernjak | 3:b5052f3fa638 | 59 | /* |
| Helmut Tschemernjak | 45:22bb680cad5a | 60 | * Main event loop, process interrupts and goes to sleep when idle. |
| Helmut Tschemernjak | 3:b5052f3fa638 | 61 | * the green statusLED indicates CPU activity |
| Helmut Tschemernjak | 45:22bb680cad5a | 62 | * the red redLED indicates that low power timerUpdate function is running. |
| Helmut Tschemernjak | 3:b5052f3fa638 | 63 | */ |
| Helmut Tschemernjak | 3:b5052f3fa638 | 64 | while(true) { |
| Helmut Tschemernjak | 3:b5052f3fa638 | 65 | while ((readPendingInterrupts() == 0)) { |
| Helmut Tschemernjak | 3:b5052f3fa638 | 66 | statusLED = 0; |
| Helmut Tschemernjak | 45:22bb680cad5a | 67 | sleep(); |
| Helmut Tschemernjak | 3:b5052f3fa638 | 68 | statusLED = 1; |
| Helmut Tschemernjak | 3:b5052f3fa638 | 69 | } |
| Helmut Tschemernjak | 3:b5052f3fa638 | 70 | |
| Helmut Tschemernjak | 3:b5052f3fa638 | 71 | uint32_t pendirqs = readclrPendingInterrupts(); |
| Helmut Tschemernjak | 3:b5052f3fa638 | 72 | if (pendirqs & INT_BUTTON1) { |
| Helmut Tschemernjak | 3:b5052f3fa638 | 73 | #ifdef FEATURE_LORA |
| Helmut Tschemernjak | 3:b5052f3fa638 | 74 | statusLED = !statusLED; |
| Helmut Tschemernjak | 3:b5052f3fa638 | 75 | RadioUpdate(true); // pass the pressed user button to RadioShuttle |
| Helmut Tschemernjak | 3:b5052f3fa638 | 76 | #endif |
| Helmut Tschemernjak | 3:b5052f3fa638 | 77 | } |
| Helmut Tschemernjak | 3:b5052f3fa638 | 78 | if (pendirqs & INT_LORA) { |
| Helmut Tschemernjak | 3:b5052f3fa638 | 79 | #ifdef FEATURE_LORA |
| Helmut Tschemernjak | 3:b5052f3fa638 | 80 | RadioUpdate(false); |
| Helmut Tschemernjak | 3:b5052f3fa638 | 81 | #endif |
| Helmut Tschemernjak | 3:b5052f3fa638 | 82 | } |
| Helmut Tschemernjak | 3:b5052f3fa638 | 83 | if (pendirqs & INT_TIMEOUT) { |
| Helmut Tschemernjak | 37:77fa81e4ad79 | 84 | redLED = ! redLED; |
| Helmut Tschemernjak | 3:b5052f3fa638 | 85 | } |
| Helmut Tschemernjak | 3:b5052f3fa638 | 86 | } |
| Helmut64 | 0:3b6c2ce051a6 | 87 | } |