AT command firmware for MultiTech Dot devices.

Fork of mDot_AT_firmware by MultiTech

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers CmdJoinRx2Datarate.cpp Source File

CmdJoinRx2Datarate.cpp

00001 #include "CmdJoinRx2Datarate.h"
00002 #include "CommandTerminal.h"
00003 
00004 CmdJoinRx2Datarate::CmdJoinRx2Datarate() :
00005 #if MTS_CMD_TERM_VERBOSE
00006     Command("Join Rx2 Datarate", "AT+JR2D", "Join Rx2 datarate", "(US:DR8-DR13,AU:DR8-DR13,EU:DR0-DR7)")
00007 #else
00008     Command("AT+JR2D")
00009 #endif
00010 {
00011 
00012 }
00013 
00014 uint32_t CmdJoinRx2Datarate::action(const std::vector<std::string>& args) {
00015 
00016     if (args.size() == 1) {
00017         CommandTerminal::Serial()->writef("%s\r\n", mDot::DataRateStr(CommandTerminal::Dot()->getJoinRx2DataRate()).c_str());
00018     }
00019     else if (args.size() == 2) {
00020         std::string dr = mts::Text::toUpper(args[1]);
00021 
00022         int datarate = 0;
00023         uint8_t i;
00024 
00025         int res = sscanf(dr.c_str(), "%d", &datarate);
00026 
00027         if (res == 0) {
00028             for (i = 0; i < 16; i++) {
00029                 if (mDot::DataRateStr(i).find(dr) != std::string::npos) {
00030                     datarate = i;
00031                     break;
00032                 }
00033             }
00034         }
00035 
00036         if (CommandTerminal::Dot()->setJoinRx2DataRate(datarate) != mDot::MDOT_OK) {
00037             return 1;
00038         }
00039     }
00040 
00041     return 0;
00042 }
00043 
00044 bool CmdJoinRx2Datarate::verify(const std::vector<std::string>& args) {
00045     if (args.size() == 1)
00046         return true;
00047 
00048     if (args.size() == 2) {
00049         return true;
00050     }
00051 
00052 #if MTS_CMD_TERM_VERBOSE
00053     CommandTerminal::setErrorMessage("Invalid arguments");
00054 #endif
00055     return false;
00056 }