A simple program that connects to University of Queensland's Lora network and requests a joke, then prints the joke to usb serial.
Dependencies: fota-mdot libmDot MTS-Serial
src/main.cpp@0:fa546fb96b80, 2019-04-02 (annotated)
- Committer:
- WilliamAF
- Date:
- Tue Apr 02 05:55:13 2019 +0000
- Revision:
- 0:fa546fb96b80
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
WilliamAF | 0:fa546fb96b80 | 1 | #include "mbed.h" |
WilliamAF | 0:fa546fb96b80 | 2 | #include "mDot.h" |
WilliamAF | 0:fa546fb96b80 | 3 | #include "LoraComms.h" |
WilliamAF | 0:fa546fb96b80 | 4 | #include "DebugTerminal.h" |
WilliamAF | 0:fa546fb96b80 | 5 | |
WilliamAF | 0:fa546fb96b80 | 6 | Serial pc(USBTX, USBRX); // The serial connection through micro-usb cable |
WilliamAF | 0:fa546fb96b80 | 7 | mDot* dot = NULL; |
WilliamAF | 0:fa546fb96b80 | 8 | Thread debugTerminalThread; |
WilliamAF | 0:fa546fb96b80 | 9 | |
WilliamAF | 0:fa546fb96b80 | 10 | // Callback function for running a terminal in its own thread |
WilliamAF | 0:fa546fb96b80 | 11 | void terminalThreadStarter(mts::DebugTerminal* term) { |
WilliamAF | 0:fa546fb96b80 | 12 | term->start(); |
WilliamAF | 0:fa546fb96b80 | 13 | } |
WilliamAF | 0:fa546fb96b80 | 14 | |
WilliamAF | 0:fa546fb96b80 | 15 | int main() { |
WilliamAF | 0:fa546fb96b80 | 16 | std::vector<uint8_t> tx_data; |
WilliamAF | 0:fa546fb96b80 | 17 | std::vector<uint8_t> rx_data; |
WilliamAF | 0:fa546fb96b80 | 18 | |
WilliamAF | 0:fa546fb96b80 | 19 | pc.baud(115200); |
WilliamAF | 0:fa546fb96b80 | 20 | pc.printf("Started program\r\n"); |
WilliamAF | 0:fa546fb96b80 | 21 | |
WilliamAF | 0:fa546fb96b80 | 22 | dot = initializeLora(); |
WilliamAF | 0:fa546fb96b80 | 23 | |
WilliamAF | 0:fa546fb96b80 | 24 | // Create the terminal for the rs232 port and run it in its own thread |
WilliamAF | 0:fa546fb96b80 | 25 | mts::DebugTerminal* debugTerminal = new mts::DebugTerminal(dot, UART_TX, UART_RX); |
WilliamAF | 0:fa546fb96b80 | 26 | debugTerminal->baud(115200); |
WilliamAF | 0:fa546fb96b80 | 27 | debugTerminalThread.start(callback(terminalThreadStarter, debugTerminal)); |
WilliamAF | 0:fa546fb96b80 | 28 | |
WilliamAF | 0:fa546fb96b80 | 29 | tx_data.push_back('s'); |
WilliamAF | 0:fa546fb96b80 | 30 | tx_data.push_back('c'); |
WilliamAF | 0:fa546fb96b80 | 31 | tx_data.push_back('/'); |
WilliamAF | 0:fa546fb96b80 | 32 | tx_data.push_back('j'); |
WilliamAF | 0:fa546fb96b80 | 33 | |
WilliamAF | 0:fa546fb96b80 | 34 | while (true) { |
WilliamAF | 0:fa546fb96b80 | 35 | // join network if not joined |
WilliamAF | 0:fa546fb96b80 | 36 | if (!dot->getNetworkJoinStatus()) { |
WilliamAF | 0:fa546fb96b80 | 37 | join_network(dot); |
WilliamAF | 0:fa546fb96b80 | 38 | } |
WilliamAF | 0:fa546fb96b80 | 39 | |
WilliamAF | 0:fa546fb96b80 | 40 | // Send what's in tx_data to server and print what's received |
WilliamAF | 0:fa546fb96b80 | 41 | if (dot->send(tx_data) == mDot::MDOT_OK) { |
WilliamAF | 0:fa546fb96b80 | 42 | if (dot->recv(rx_data) == mDot::MDOT_OK) { |
WilliamAF | 0:fa546fb96b80 | 43 | pc.printf("Received data\r\n"); |
WilliamAF | 0:fa546fb96b80 | 44 | for (uint8_t i = 0; i < rx_data.size(); ++i) { |
WilliamAF | 0:fa546fb96b80 | 45 | pc.printf("%c", rx_data[i]); |
WilliamAF | 0:fa546fb96b80 | 46 | } |
WilliamAF | 0:fa546fb96b80 | 47 | pc.printf("\r\n"); |
WilliamAF | 0:fa546fb96b80 | 48 | rx_data.clear(); |
WilliamAF | 0:fa546fb96b80 | 49 | } |
WilliamAF | 0:fa546fb96b80 | 50 | } |
WilliamAF | 0:fa546fb96b80 | 51 | pc.printf("Waiting\r\n"); |
WilliamAF | 0:fa546fb96b80 | 52 | wait(30.f); |
WilliamAF | 0:fa546fb96b80 | 53 | } |
WilliamAF | 0:fa546fb96b80 | 54 | } |