AT command firmware for MultiTech Dot devices.
Fork of mDot_AT_firmware by
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 }
Generated on Wed Dec 6 2023 19:34:05 by 1.7.2