few changes for RTS/CTS control

Dependencies:   MTS-Serial libmDot mbed-rtos mbed

Fork of mDot_AT_firmware by MultiTech

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers CmdNetworkAddress.cpp Source File

CmdNetworkAddress.cpp

00001 #include "CmdNetworkAddress.h"
00002 #include <algorithm>
00003 
00004 CmdNetworkAddress::CmdNetworkAddress(mDot* dot, mts::MTSSerial& serial) :
00005         Command(dot, "Network Address", "AT+NA", "Network address (devAddr in LoraMac) (4 bytes)"), _serial(serial)
00006 {
00007     _help = std::string(text()) + ": " + std::string(desc());
00008     _usage = "(hex:4)";
00009     _queryable = true;
00010 }
00011 
00012 uint32_t CmdNetworkAddress::action(std::vector<std::string> args)
00013 {
00014     std::vector<uint8_t> addr;
00015 
00016     if (args.size() == 1)
00017     {
00018         if (_dot->getVerbose())
00019             _serial.writef("Network Address: ");
00020 
00021         addr = _dot->getNetworkAddress();
00022 
00023         _serial.writef("%02x:%02x:%02x:%02x\r\n", addr[0], addr[1], addr[2], addr[3]);
00024     }
00025     else if (args.size() == 2)
00026     {
00027         int32_t code;
00028         int temp;
00029         uint32_t step = 2;
00030 
00031         if (args[1].find(":") != std::string::npos || args[1].find(".") != std::string::npos || args[1].find("-") != std::string::npos)
00032             step = 3;
00033 
00034         // Convert the ASCII hex data to binary...
00035         for (size_t i = 0; i < args[1].size(); i += step) 
00036         {
00037             sscanf(&args[1][i], "%02x", &temp);
00038             addr.push_back(temp);
00039         }
00040 
00041         if ((code = _dot->setNetworkAddress(addr)) == mDot::MDOT_OK) {
00042             _serial.writef("Set Network Address: ");
00043             _serial.writef("%02x:%02x:%02x:%02x\r\n", addr[0], addr[1], addr[2], addr[3]);
00044         } else {
00045             
00046             setErrorMessage(_dot->getLastError());;
00047             return 1;
00048         }
00049     }
00050 
00051     return 0;
00052 }
00053 
00054 bool CmdNetworkAddress::verify(std::vector<std::string> args)
00055 {
00056     if (args.size() == 1) {
00057         return true;
00058     }
00059 
00060     if (args.size() == 2) {
00061         if (!isHexString(args[1], 4))
00062         {
00063             setErrorMessage("Invalid address, expects (hex:4)");
00064             return false;
00065         }
00066 
00067         return true;
00068     }
00069 
00070     setErrorMessage("Invalid arguments");
00071     return false;
00072 }