few changes for RTS/CTS control

Dependencies:   MTS-Serial libmDot mbed-rtos mbed

Fork of mDot_AT_firmware by MultiTech

Committer:
Mike Fiore
Date:
Tue Aug 18 11:21:43 2015 -0500
Revision:
4:666017851052
Parent:
1:e52ae6584f1c
Child:
9:ff62b20f7000
update mdot-firmware to 0.1.2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mike Fiore 1:e52ae6584f1c 1 #include "CmdReceiveContinuous.h"
Mike Fiore 1:e52ae6584f1c 2 #include "CommandTerminal.h"
Mike Fiore 1:e52ae6584f1c 3
Mike Fiore 4:666017851052 4 CmdReceiveContinuous::CmdReceiveContinuous(mDot* dot, mts::MTSSerial& serial)
Mike Fiore 4:666017851052 5 :
Mike Fiore 1:e52ae6584f1c 6 Command(dot, "Receive Continuous", "AT+RECVC", "Continuously receive and display packets. (escape sequence: +++)"),
Mike Fiore 4:666017851052 7 _serial(serial) {
Mike Fiore 1:e52ae6584f1c 8 _help = std::string(text()) + ": " + std::string(desc());
Mike Fiore 4:666017851052 9 _usage = "out: (string:242) or (hex:242)";
Mike Fiore 1:e52ae6584f1c 10 }
Mike Fiore 1:e52ae6584f1c 11
Mike Fiore 4:666017851052 12 uint32_t CmdReceiveContinuous::action(std::vector<std::string> args) {
Mike Fiore 1:e52ae6584f1c 13 std::vector<uint8_t> data;
Mike Fiore 1:e52ae6584f1c 14
Mike Fiore 1:e52ae6584f1c 15 std::string escape_buffer;
Mike Fiore 1:e52ae6584f1c 16 char ch;
Mike Fiore 1:e52ae6584f1c 17
Mike Fiore 4:666017851052 18 while (true) {
Mike Fiore 4:666017851052 19
Mike Fiore 4:666017851052 20 _dot->openRxWindow(0);
Mike Fiore 4:666017851052 21
Mike Fiore 4:666017851052 22 osDelay(1000);
Mike Fiore 1:e52ae6584f1c 23 if (_dot->recv(data) == mDot::MDOT_OK) {
Mike Fiore 1:e52ae6584f1c 24 if (_dot->getVerbose())
Mike Fiore 1:e52ae6584f1c 25 _serial.writef("Packet data:\r\n");
Mike Fiore 1:e52ae6584f1c 26 _serial.writef("%s\r\n", CommandTerminal::formatPacketData(data, _dot->getRxOutput()).c_str());
Mike Fiore 1:e52ae6584f1c 27
Mike Fiore 1:e52ae6584f1c 28 data.clear();
Mike Fiore 1:e52ae6584f1c 29 }
Mike Fiore 1:e52ae6584f1c 30
Mike Fiore 1:e52ae6584f1c 31 while (_serial.readable()) {
Mike Fiore 1:e52ae6584f1c 32 _serial.read(&ch, 1);
Mike Fiore 1:e52ae6584f1c 33 escape_buffer += ch;
Mike Fiore 1:e52ae6584f1c 34 if (escape_buffer == CommandTerminal::escape_sequence)
Mike Fiore 1:e52ae6584f1c 35 return 0;
Mike Fiore 1:e52ae6584f1c 36
Mike Fiore 1:e52ae6584f1c 37 osDelay(50);
Mike Fiore 1:e52ae6584f1c 38 }
Mike Fiore 1:e52ae6584f1c 39
Mike Fiore 1:e52ae6584f1c 40 escape_buffer.clear();
Mike Fiore 1:e52ae6584f1c 41 }
Mike Fiore 1:e52ae6584f1c 42
Mike Fiore 1:e52ae6584f1c 43 return 0;
Mike Fiore 1:e52ae6584f1c 44 }
Mike Fiore 1:e52ae6584f1c 45
Mike Fiore 4:666017851052 46 bool CmdReceiveContinuous::verify(std::vector<std::string> args) {
Mike Fiore 1:e52ae6584f1c 47 if (args.size() == 1)
Mike Fiore 1:e52ae6584f1c 48 return true;
Mike Fiore 1:e52ae6584f1c 49
Mike Fiore 1:e52ae6584f1c 50 setErrorMessage("Invalid arguments");
Mike Fiore 1:e52ae6584f1c 51 return false;
Mike Fiore 1:e52ae6584f1c 52 }