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

Committer:
WilliamAF
Date:
Tue Apr 02 05:55:13 2019 +0000
Revision:
0:fa546fb96b80
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew 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 }