few changes for RTS/CTS control
Dependencies: MTS-Serial libmDot mbed-rtos mbed
Fork of mDot_AT_firmware by
Diff: CommandTerminal/CmdReceiveContinuous.cpp
- Revision:
- 1:e52ae6584f1c
- Child:
- 4:666017851052
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CommandTerminal/CmdReceiveContinuous.cpp Thu Jun 25 10:23:41 2015 -0500 @@ -0,0 +1,51 @@ +#include "CmdReceiveContinuous.h" +#include "CommandTerminal.h" + +CmdReceiveContinuous::CmdReceiveContinuous(mDot* dot, mts::MTSSerial& serial) : + Command(dot, "Receive Continuous", "AT+RECVC", "Continuously receive and display packets. (escape sequence: +++)"), + _serial(serial) +{ + _help = std::string(text()) + ": " + std::string(desc()); + _usage = "in: (2000-2147483647) ms; out: (string:242) or (hex:242)"; +} + +uint32_t CmdReceiveContinuous::action(std::vector<std::string> args) +{ + std::vector<uint8_t> data; + + std::string escape_buffer; + char ch; + + while (true) + { + if (_dot->recv(data) == mDot::MDOT_OK) { + if (_dot->getVerbose()) + _serial.writef("Packet data:\r\n"); + _serial.writef("%s\r\n", CommandTerminal::formatPacketData(data, _dot->getRxOutput()).c_str()); + + data.clear(); + } + + while (_serial.readable()) { + _serial.read(&ch, 1); + escape_buffer += ch; + if (escape_buffer == CommandTerminal::escape_sequence) + return 0; + + osDelay(50); + } + + escape_buffer.clear(); + } + + return 0; +} + +bool CmdReceiveContinuous::verify(std::vector<std::string> args) +{ + if (args.size() == 1) + return true; + + setErrorMessage("Invalid arguments"); + return false; +}