ME910 support
Fork of MTS-Cellular by
Utils/Terminal.cpp@1:f155d94d6f3a, 2014-05-19 (annotated)
- Committer:
- Mike Fiore
- Date:
- Mon May 19 12:34:32 2014 -0500
- Revision:
- 1:f155d94d6f3a
- Child:
- 4:1f63354b8d1b
add all cellular code, remove MBEDCellularRadioInterface
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Mike Fiore |
1:f155d94d6f3a | 1 | #include "Terminal.h" |
Mike Fiore |
1:f155d94d6f3a | 2 | |
Mike Fiore |
1:f155d94d6f3a | 3 | using namespace mts; |
Mike Fiore |
1:f155d94d6f3a | 4 | |
Mike Fiore |
1:f155d94d6f3a | 5 | Terminal::Terminal(MTSBufferedIO* io) : io(io), index(0) |
Mike Fiore |
1:f155d94d6f3a | 6 | { |
Mike Fiore |
1:f155d94d6f3a | 7 | terminal = new MTSSerial(USBTX, USBRX); |
Mike Fiore |
1:f155d94d6f3a | 8 | } |
Mike Fiore |
1:f155d94d6f3a | 9 | |
Mike Fiore |
1:f155d94d6f3a | 10 | Terminal::~Terminal() |
Mike Fiore |
1:f155d94d6f3a | 11 | { |
Mike Fiore |
1:f155d94d6f3a | 12 | delete terminal; |
Mike Fiore |
1:f155d94d6f3a | 13 | } |
Mike Fiore |
1:f155d94d6f3a | 14 | |
Mike Fiore |
1:f155d94d6f3a | 15 | void Terminal::start() |
Mike Fiore |
1:f155d94d6f3a | 16 | { |
Mike Fiore |
1:f155d94d6f3a | 17 | //Setup terminal session |
Mike Fiore |
1:f155d94d6f3a | 18 | printf("Starting Terminal Mode.\n\r"); |
Mike Fiore |
1:f155d94d6f3a | 19 | char buffer[256]; |
Mike Fiore |
1:f155d94d6f3a | 20 | bool running = true; |
Mike Fiore |
1:f155d94d6f3a | 21 | |
Mike Fiore |
1:f155d94d6f3a | 22 | //Run terminal session |
Mike Fiore |
1:f155d94d6f3a | 23 | while (running) { |
Mike Fiore |
1:f155d94d6f3a | 24 | //Write terminal data to interface |
Mike Fiore |
1:f155d94d6f3a | 25 | int terminalRead = terminal->readable(); |
Mike Fiore |
1:f155d94d6f3a | 26 | terminal->read(buffer, terminalRead); |
Mike Fiore |
1:f155d94d6f3a | 27 | io->write(buffer, terminalRead); |
Mike Fiore |
1:f155d94d6f3a | 28 | |
Mike Fiore |
1:f155d94d6f3a | 29 | //Check for exit condition |
Mike Fiore |
1:f155d94d6f3a | 30 | for (int i = 0; i < terminalRead; i++) { |
Mike Fiore |
1:f155d94d6f3a | 31 | if (index < (exitMsg.size() - 1)) { |
Mike Fiore |
1:f155d94d6f3a | 32 | if(buffer[i] == exitMsg[index]) { |
Mike Fiore |
1:f155d94d6f3a | 33 | index++; |
Mike Fiore |
1:f155d94d6f3a | 34 | } else { |
Mike Fiore |
1:f155d94d6f3a | 35 | index = 0; |
Mike Fiore |
1:f155d94d6f3a | 36 | } |
Mike Fiore |
1:f155d94d6f3a | 37 | } else { |
Mike Fiore |
1:f155d94d6f3a | 38 | running = false; |
Mike Fiore |
1:f155d94d6f3a | 39 | wait(.1); |
Mike Fiore |
1:f155d94d6f3a | 40 | } |
Mike Fiore |
1:f155d94d6f3a | 41 | } |
Mike Fiore |
1:f155d94d6f3a | 42 | |
Mike Fiore |
1:f155d94d6f3a | 43 | //Write interface data to the terminal |
Mike Fiore |
1:f155d94d6f3a | 44 | int ioRead = io->readable(); |
Mike Fiore |
1:f155d94d6f3a | 45 | io->read(buffer, ioRead); |
Mike Fiore |
1:f155d94d6f3a | 46 | terminal->write(buffer, ioRead); |
Mike Fiore |
1:f155d94d6f3a | 47 | } |
Mike Fiore |
1:f155d94d6f3a | 48 | |
Mike Fiore |
1:f155d94d6f3a | 49 | //Cleanup and return |
Mike Fiore |
1:f155d94d6f3a | 50 | io->txClear(); |
Mike Fiore |
1:f155d94d6f3a | 51 | io->rxClear(); |
Mike Fiore |
1:f155d94d6f3a | 52 | printf("\n\rExited Terminal Mode.\n\r"); |
Mike Fiore |
1:f155d94d6f3a | 53 | } |