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 CmdDefaultFrequencyBand.cpp Source File

CmdDefaultFrequencyBand.cpp

00001 #include "CmdDefaultFrequencyBand.h"
00002 
00003 
00004 #if CHANNEL_PLAN == CP_GLOBAL
00005 static const uint8_t PLAN_COUNT = 11;
00006 static const lora::ChannelPlan::Plan PLANS[PLAN_COUNT] = {
00007         lora::ChannelPlan::NONE,        lora::ChannelPlan::US915,   lora::ChannelPlan::AU915,
00008         lora::ChannelPlan::EU868,       lora::ChannelPlan::AS923,
00009         lora::ChannelPlan::AS923_JAPAN, lora::ChannelPlan::AS923_JAPAN1, lora::ChannelPlan::AS923_JAPAN2,
00010         lora::ChannelPlan::AS923_2,     lora::ChannelPlan::AS923_3, lora::ChannelPlan::AS923_4
00011     };
00012 #else
00013 static const uint8_t PLAN_COUNT = 12;
00014 static const lora::ChannelPlan::Plan PLANS[PLAN_COUNT] = {
00015         lora::ChannelPlan::NONE,        lora::ChannelPlan::US915,   lora::ChannelPlan::AU915,
00016         lora::ChannelPlan::EU868,       lora::ChannelPlan::AS923,   lora::ChannelPlan::KR920,
00017         lora::ChannelPlan::AS923_JAPAN, lora::ChannelPlan::IN865,   lora::ChannelPlan::RU864,
00018         lora::ChannelPlan::AS923_2,     lora::ChannelPlan::AS923_3, lora::ChannelPlan::AS923_4
00019         // , lora::ChannelPlan::AS923_JAPAN1, lora::ChannelPlan::AS923_JAPAN2
00020     };
00021 #endif
00022 
00023 CmdDefaultFrequencyBand::CmdDefaultFrequencyBand() :
00024 #if MTS_CMD_TERM_VERBOSE
00025 
00026 #if CHANNEL_PLAN == CP_GLOBAL
00027     Command("Default Frequency Band", "AT+DFREQ", "Frequency Band Device Was Manufactured For 'US915', 'AU915', 'EU868', 'AS923', 'AS923-2', 'AS923-3', 'AS923-4', 'KR920', 'AS923-JAPAN', 'IN865', 'RU864', or 'NONE'", "(NONE,US915,AU915,EU868,AS923,AS923-2,AS923-3,AS923-4,KR920,AS923-JAPAN,IN865,RU864)")
00028 #else
00029     Command("Default Frequency Band", "AT+DFREQ", "Frequency Band Device Was Manufactured For 'US915', 'AU915', 'EU868', 'AS923', 'AS923-2', 'AS923-3', 'AS923-4', 'AS923-JAPAN', 'AS923-JAPAN1', 'AS923-JAPAN2', or 'NONE'", "(NONE,US915,AU915,EU868,AS923,AS923-2,AS923-3,AS923-4,AS923-JAPAN,AS923-JAPAN1,AS923-JAPAN2)")
00030 #endif
00031 
00032 #else
00033     Command("AT+DFREQ")
00034 #endif
00035 {
00036     _queryable = true;
00037 }
00038 
00039 uint32_t CmdDefaultFrequencyBand::action(const std::vector<std::string>& args) {
00040     if (args.size() == 1)
00041     {
00042         CommandTerminal::Serial()->writef("%s\r\n", CommandTerminal::Dot()->FrequencyBandStr(CommandTerminal::Dot()->getDefaultFrequencyBand()).c_str());
00043     }
00044     else if (args.size() == 2)
00045     {
00046         uint8_t band = lora::ChannelPlan::US915;
00047         std::string band_str = mts::Text::toUpper(args[1]);
00048         std::string exp_band_str;
00049 
00050         for (int i = 0; i < PLAN_COUNT; ++i) {
00051             if (mDot::FrequencyBandStr(PLANS[i]) == band_str) {
00052                 band = PLANS[i];
00053             }
00054         }
00055 
00056         if (CommandTerminal::Dot()->setDefaultFrequencyBand(band) != mDot::MDOT_OK) {
00057             return 1;
00058         }
00059     }
00060 
00061     return 0;
00062 }
00063 
00064 bool CmdDefaultFrequencyBand::verify(const std::vector<std::string>& args) {
00065     if (args.size() == 1)
00066         return true;
00067 
00068     if (args.size() == 2)
00069     {
00070         std::string band = mts::Text::toUpper(args[1]);
00071 
00072         for (int i = 0; i < PLAN_COUNT; ++i) {
00073             if (mDot::FrequencyBandStr(PLANS[i]) == band) {
00074                 return true;
00075             }
00076         }
00077 
00078 #if MTS_CMD_TERM_VERBOSE
00079         // CommandTerminal::setErrorMessage("Invalid parameter, expects (NONE,US915,AU915,EU868,AS923,AS923-2,AS923-3,KR920,AS923-JAPAN,AS923-JAPAN1,AS923-JAPAN2,IN865,RU864)");
00080         CommandTerminal::setErrorMessage("Invalid parameter, expects (NONE,US915,AU915,EU868,AS923,AS923-2,AS923-3,KR920,AS923-JAPAN,IN865,RU864)");
00081 #endif
00082         return false;
00083 
00084     }
00085 
00086 #if MTS_CMD_TERM_VERBOSE
00087     CommandTerminal::setErrorMessage("Invalid arguments");
00088 #endif
00089     return false;
00090 }