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/DebugTerminal.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 "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 | } |