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 "DebugTerminal.h"
WilliamAF 0:fa546fb96b80 3
WilliamAF 0:fa546fb96b80 4 #define DEFAULT_BAUD 115200
WilliamAF 0:fa546fb96b80 5
WilliamAF 0:fa546fb96b80 6 using namespace mts;
WilliamAF 0:fa546fb96b80 7
WilliamAF 0:fa546fb96b80 8 DebugTerminal::DebugTerminal(mDot* dot, PinName TXD, PinName RXD,
WilliamAF 0:fa546fb96b80 9 int txBufferSize, int rxBufferSize)
WilliamAF 0:fa546fb96b80 10 : MTSSerial(TXD, RXD, txBufferSize, rxBufferSize),
WilliamAF 0:fa546fb96b80 11 dot(dot)
WilliamAF 0:fa546fb96b80 12 {
WilliamAF 0:fa546fb96b80 13 baud(DEFAULT_BAUD);
WilliamAF 0:fa546fb96b80 14 }
WilliamAF 0:fa546fb96b80 15
WilliamAF 0:fa546fb96b80 16 DebugTerminal::~DebugTerminal() {
WilliamAF 0:fa546fb96b80 17
WilliamAF 0:fa546fb96b80 18 }
WilliamAF 0:fa546fb96b80 19
WilliamAF 0:fa546fb96b80 20 void DebugTerminal::start() {
WilliamAF 0:fa546fb96b80 21 writef("DebugTerminal Started\r\n");
WilliamAF 0:fa546fb96b80 22
WilliamAF 0:fa546fb96b80 23 std::string command;
WilliamAF 0:fa546fb96b80 24
WilliamAF 0:fa546fb96b80 25 while(1) {
WilliamAF 0:fa546fb96b80 26 if (readable()) {
WilliamAF 0:fa546fb96b80 27 char ch;
WilliamAF 0:fa546fb96b80 28 read(ch);
WilliamAF 0:fa546fb96b80 29 if (ch == '\n' || ch == '\r') { // handle newline
WilliamAF 0:fa546fb96b80 30 writef("\r\n");
WilliamAF 0:fa546fb96b80 31 handleCommand(command);
WilliamAF 0:fa546fb96b80 32 command.clear();
WilliamAF 0:fa546fb96b80 33 } else if (ch == '\b' || ch == 0x7f) { // handle backspace
WilliamAF 0:fa546fb96b80 34 if (!command.empty()) {
WilliamAF 0:fa546fb96b80 35 writef("\b \b");
WilliamAF 0:fa546fb96b80 36 command.erase(command.size() - 1);
WilliamAF 0:fa546fb96b80 37 }
WilliamAF 0:fa546fb96b80 38 } else { // handle regular character
WilliamAF 0:fa546fb96b80 39 command += ch;
WilliamAF 0:fa546fb96b80 40 write(ch); // echo the char back to terminal
WilliamAF 0:fa546fb96b80 41 }
WilliamAF 0:fa546fb96b80 42 }
WilliamAF 0:fa546fb96b80 43 wait(0.00001);
WilliamAF 0:fa546fb96b80 44 }
WilliamAF 0:fa546fb96b80 45 }
WilliamAF 0:fa546fb96b80 46
WilliamAF 0:fa546fb96b80 47 void DebugTerminal::handleCommand(std::string command) {
WilliamAF 0:fa546fb96b80 48 if (dot == NULL) {
WilliamAF 0:fa546fb96b80 49 writef("Error in DebugTerminal - member 'dot' is uninitialized\r\n");
WilliamAF 0:fa546fb96b80 50 return;
WilliamAF 0:fa546fb96b80 51 }
WilliamAF 0:fa546fb96b80 52 if (command.compare("ni") == 0) {
WilliamAF 0:fa546fb96b80 53 writef("Network Name: ");
WilliamAF 0:fa546fb96b80 54 writef(dot->getNetworkName().c_str());
WilliamAF 0:fa546fb96b80 55 writef("\r\n");
WilliamAF 0:fa546fb96b80 56 }
WilliamAF 0:fa546fb96b80 57 }