MicroLabo / Mbed OS mbed-Dot-AT-Firmware

Dependencies:   MTS-Serial libmDot-mbed5

Fork of Dot-AT-Firmware by MultiTech

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers CmdFrequencyBand.cpp Source File

CmdFrequencyBand.cpp

00001 #include "CmdFrequencyBand.h"
00002 
00003 
00004 CmdFrequencyBand::CmdFrequencyBand() :
00005         Command("Frequency Band", "AT+FREQ", "Configured Frequency Band 'EU868', 'US915' or 'AU915'", "(EU868,US915,AU915)")
00006 {
00007     _queryable = true;
00008 }
00009 
00010 uint32_t CmdFrequencyBand::action(std::vector<std::string> args)
00011                                   {
00012     if (args.size() == 1)
00013     {
00014         CommandTerminal::Serial()->writef("%s\r\n", mDot::FrequencyBandStr(CommandTerminal::Dot()->getFrequencyBand()).c_str());
00015     }
00016 
00017 #ifdef DEBUG_MAC
00018     else if (args.size() == 2)
00019     {
00020         uint8_t band = mDot::FB_US915;
00021         std::string band_str = mts::Text::toUpper(args[1]);
00022 
00023 
00024         if (mDot::FrequencyBandStr(mDot::FB_EU868).find(band_str) != std::string::npos) {
00025             band = mDot::FB_EU868;
00026         }
00027         if (mDot::FrequencyBandStr(mDot::FB_AU915).find(band_str) != std::string::npos) {
00028             band = mDot::FB_AU915;
00029         }
00030         if (mDot::FrequencyBandStr(mDot::FB_US915).find(band_str) != std::string::npos) {
00031             band = mDot::FB_US915;
00032         }
00033 
00034         if (CommandTerminal::Dot()->setFrequencyBand(band) != mDot::MDOT_OK) {
00035             CommandTerminal::setErrorMessage(CommandTerminal::Dot()->getLastError());;
00036             return 1;
00037         }
00038     }
00039 #endif
00040 
00041     return 0;
00042 }
00043 
00044 bool CmdFrequencyBand::verify(std::vector<std::string> args)
00045                               {
00046     if (args.size() == 1)
00047         return true;
00048 
00049 #ifdef DEBUG_MAC
00050     if (args.size() == 2)
00051     {
00052         std::string band = mts::Text::toUpper(args[1]);
00053 
00054         if (mDot::FrequencyBandStr(mDot::FB_EU868).find(band) == std::string::npos &&
00055             mDot::FrequencyBandStr(mDot::FB_US915).find(band) == std::string::npos &&
00056             mDot::FrequencyBandStr(mDot::FB_AU915).find(band) == std::string::npos)
00057         {
00058             CommandTerminal::setErrorMessage("Invalid parameter, expects (EU868,US915,AU915)");
00059             return false;
00060         }
00061 
00062         return true;
00063     }
00064 #endif
00065 
00066     CommandTerminal::setErrorMessage("Invalid arguments");
00067     return false;
00068 }