AT Command Set mDot firmware with updated libmDot, to fix endian problem with joining LoRaWAN network

Dependencies:   MTS-Serial libmDot mbed-rtos mbed-src

Fork of mDot_AT_firmware by MultiTech

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers CmdSendStringHighBW.cpp Source File

CmdSendStringHighBW.cpp

00001 #include "CmdSendStringHighBW.h"
00002 #include "CommandTerminal.h"
00003 
00004 CmdSendStringHighBW::CmdSendStringHighBW(mDot* dot, mts::MTSSerial& serial)
00005 :
00006   Command(dot, "Send Once High BW", "AT+SENDH", "Sends supplied packet data one time and return response using High Bandwidth channel, (max:242 bytes)"),
00007   _serial(serial) {
00008     _help = std::string(text()) + ": " + std::string(desc());
00009     _usage = "(string:242)";
00010 }
00011 
00012 uint32_t CmdSendStringHighBW::action(std::vector<std::string> args) {
00013     // Argument had been split on each comma, rebuild payload
00014     int32_t code;
00015     std::string text;
00016     for (size_t i = 1; i < args.size(); i++) {
00017         text.append(args[i]);
00018         if (i != args.size() - 1)
00019             text.append(",");
00020     }
00021 
00022     std::vector<uint8_t> data(text.begin(), text.end());
00023     if ((code = _dot->send(data, _dot->getTxWait(), true)) != mDot::MDOT_OK) {
00024         std::string error = mDot::getReturnCodeString(code);
00025 
00026         if (code != mDot::MDOT_NOT_JOINED)
00027             error +=  + " - " + _dot->getLastError();
00028 
00029         setErrorMessage(error);
00030         return 1;
00031     }
00032 
00033     data.clear();
00034 
00035     if (_dot->getTxWait() && _dot->recv(data) == mDot::MDOT_OK) {
00036         if (!data.empty()) {
00037             if (_dot->getVerbose())
00038                 _serial.writef("Packet data:\r\n");
00039             _serial.writef("%s\r\n", CommandTerminal::formatPacketData(data, _dot->getRxOutput()).c_str());
00040         }
00041     }
00042 
00043     return 0;
00044 }
00045 
00046 bool CmdSendStringHighBW::verify(std::vector<std::string> args) {
00047     if (args.size() == 2) {
00048         if (args[1].size() > 242) {
00049             setErrorMessage("Invalid packet, expects (string:242)");
00050             return false;
00051         }
00052 
00053         return true;
00054     }
00055 
00056     setErrorMessage("Invalid arguments");
00057     return false;
00058 }