MTDOT-BOX-EVB-Factory-Firmware

Dependencies:   NCP5623B GpsParser ISL29011 libmDot-mbed5 MTS-Serial MMA845x DOGS102 MPL3115A2

Committer:
jenkins@jenkinsdm1
Date:
Thu Mar 14 08:23:20 2019 -0500
Revision:
16:e76cec0eec43
Parent:
12:05435282f899
dotbox-firmware revision 3.1.2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mike Fiore 1:71125aa00e33 1 #include "CmdFrequencyBand.h"
jenkins@jenkinsdm1 12:05435282f899 2 #include "ChannelPlans.h"
jenkins@jenkinsdm1 12:05435282f899 3 CmdFrequencyBand::CmdFrequencyBand(mDot* dot, mts::MTSSerial& serial)
jenkins@jenkinsdm1 12:05435282f899 4 : Command(dot,"Current Frequency Band", "AT+FREQ", "Select Frequency Band 'US915', 'AU915', 'EU868', 'AS923', 'AS923-JAPAN','KR920', or 'IN865'")
jenkins@jenkinsdm1 12:05435282f899 5 , _serial(serial)
Mike Fiore 1:71125aa00e33 6 {
jenkins@jenkinsdm1 12:05435282f899 7 _help = std::string(text()) + ": " + std::string(desc());
jenkins@jenkinsdm1 12:05435282f899 8 _usage = "";
jenkins@jenkinsdm1 12:05435282f899 9 _queryable = true;
Mike Fiore 1:71125aa00e33 10 }
Mike Fiore 1:71125aa00e33 11
Mike Fiore 1:71125aa00e33 12 uint32_t CmdFrequencyBand::action(std::vector<std::string> args)
jenkins@jenkinsdm1 12:05435282f899 13 {
Mike Fiore 1:71125aa00e33 14 if (args.size() == 1)
Mike Fiore 1:71125aa00e33 15 {
jenkins@jenkinsdm1 12:05435282f899 16 // using getChannelPlanName here instead of mDot::FrequencyBandStr allows AT firmware to properly display custom channel plan names
jenkins@jenkinsdm1 12:05435282f899 17 if(_dot->getVerbose())
Mike Fiore 1:71125aa00e33 18 _serial.writef("Frequency Band: ");
Mike Fiore 1:71125aa00e33 19
jenkins@jenkinsdm1 12:05435282f899 20 _serial.writef("%s\r\n", _dot->getChannelPlanName().c_str());
Mike Fiore 1:71125aa00e33 21 }
jenkins@jenkinsdm1 12:05435282f899 22
jenkins@jenkinsdm1 12:05435282f899 23 else if (args.size() == 2)
Mike Fiore 1:71125aa00e33 24 {
jenkins@jenkinsdm1 12:05435282f899 25 std::string band_str = mts::Text::toUpper(args[1]);
jenkins@jenkinsdm1 12:05435282f899 26 lora::ChannelPlan* plan = _dot->getChannelPlan();
jenkins@jenkinsdm1 12:05435282f899 27 mDot::mdot_file file = _dot->openUserFile("ChannelPlan", mDot::FM_RDWR);
jenkins@jenkinsdm1 12:05435282f899 28 _dot->seekUserFile(file, 0, SEEK_SET);
jenkins@jenkinsdm1 12:05435282f899 29 uint8_t cp[] = {0};
Mike Fiore 7:a31236c2e75c 30
jenkins@jenkinsdm1 12:05435282f899 31 if (mDot::FrequencyBandStr(lora::ChannelPlan::US915) == band_str) {
jenkins@jenkinsdm1 12:05435282f899 32 if(plan != NULL) delete plan;
jenkins@jenkinsdm1 12:05435282f899 33 plan = new lora::ChannelPlan_US915();
jenkins@jenkinsdm1 12:05435282f899 34 cp[0] = CP_US915;
jenkins@jenkinsdm1 12:05435282f899 35 }
jenkins@jenkinsdm1 12:05435282f899 36 else if (mDot::FrequencyBandStr(lora::ChannelPlan::AU915) == band_str) {
jenkins@jenkinsdm1 12:05435282f899 37 if(plan != NULL) delete plan;
jenkins@jenkinsdm1 12:05435282f899 38 plan = new lora::ChannelPlan_AU915();
jenkins@jenkinsdm1 12:05435282f899 39 cp[0] = CP_AU915;
jenkins@jenkinsdm1 12:05435282f899 40 }
jenkins@jenkinsdm1 12:05435282f899 41 else if (mDot::FrequencyBandStr(lora::ChannelPlan::EU868) == band_str) {
jenkins@jenkinsdm1 12:05435282f899 42 if(plan != NULL) delete plan;
jenkins@jenkinsdm1 12:05435282f899 43 plan = new lora::ChannelPlan_EU868();
jenkins@jenkinsdm1 12:05435282f899 44 cp[0] = CP_EU868;
jenkins@jenkinsdm1 12:05435282f899 45 }
jenkins@jenkinsdm1 12:05435282f899 46 else if (mDot::FrequencyBandStr(lora::ChannelPlan::AS923) == band_str) {
jenkins@jenkinsdm1 12:05435282f899 47 if(plan != NULL) delete plan;
jenkins@jenkinsdm1 12:05435282f899 48 plan = new lora::ChannelPlan_AS923();
jenkins@jenkinsdm1 12:05435282f899 49 cp[0] = CP_AS923;
jenkins@jenkinsdm1 12:05435282f899 50 }
jenkins@jenkinsdm1 12:05435282f899 51 else if (mDot::FrequencyBandStr(lora::ChannelPlan::KR920) == band_str) {
jenkins@jenkinsdm1 12:05435282f899 52 if(plan != NULL) delete plan;
jenkins@jenkinsdm1 12:05435282f899 53 plan = new lora::ChannelPlan_KR920();
jenkins@jenkinsdm1 12:05435282f899 54 cp[0] = CP_KR920;
jenkins@jenkinsdm1 12:05435282f899 55 }
jenkins@jenkinsdm1 12:05435282f899 56 else if (mDot::FrequencyBandStr(lora::ChannelPlan::IN865) == band_str) {
jenkins@jenkinsdm1 12:05435282f899 57 if(plan != NULL) delete plan;
jenkins@jenkinsdm1 12:05435282f899 58 plan = new lora::ChannelPlan_IN865();
jenkins@jenkinsdm1 12:05435282f899 59 cp[0] = CP_IN865;
jenkins@jenkinsdm1 12:05435282f899 60 }
jenkins@jenkinsdm1 12:05435282f899 61 else if (mDot::FrequencyBandStr(lora::ChannelPlan::AS923_JAPAN) == band_str) {
jenkins@jenkinsdm1 12:05435282f899 62 if(plan != NULL) delete plan;
jenkins@jenkinsdm1 12:05435282f899 63 plan = new lora::ChannelPlan_AS923_Japan();
jenkins@jenkinsdm1 12:05435282f899 64 cp[0] = CP_AS923_JAPAN;
Mike Fiore 7:a31236c2e75c 65 }
Mike Fiore 7:a31236c2e75c 66
jenkins@jenkinsdm1 12:05435282f899 67 if(cp[0] > 0) {
jenkins@jenkinsdm1 12:05435282f899 68 _dot->writeUserFile(file, cp, 1);
Mike Fiore 7:a31236c2e75c 69 }
jenkins@jenkinsdm1 12:05435282f899 70 _dot->closeUserFile(file);
Mike Fiore 7:a31236c2e75c 71
jenkins@jenkinsdm1 12:05435282f899 72 _serial.writef("Setting Plan \r\n");
Mike Fiore 1:71125aa00e33 73
jenkins@jenkinsdm1 12:05435282f899 74 if (_dot->setChannelPlan(plan) != mDot::MDOT_OK) {
jenkins@jenkinsdm1 12:05435282f899 75 setErrorMessage(_dot->getLastError());
Mike Fiore 1:71125aa00e33 76 return 1;
Mike Fiore 1:71125aa00e33 77 }
Mike Fiore 1:71125aa00e33 78 }
Mike Fiore 1:71125aa00e33 79 return 0;
Mike Fiore 1:71125aa00e33 80 }
Mike Fiore 1:71125aa00e33 81
Mike Fiore 1:71125aa00e33 82 bool CmdFrequencyBand::verify(std::vector<std::string> args)
jenkins@jenkinsdm1 12:05435282f899 83 {
Mike Fiore 1:71125aa00e33 84 if (args.size() == 1)
Mike Fiore 1:71125aa00e33 85 return true;
Mike Fiore 1:71125aa00e33 86
Mike Fiore 1:71125aa00e33 87 if (args.size() == 2)
Mike Fiore 1:71125aa00e33 88 {
Mike Fiore 7:a31236c2e75c 89 std::string band = mts::Text::toUpper(args[1]);
Mike Fiore 7:a31236c2e75c 90
jenkins@jenkinsdm1 12:05435282f899 91 if (mDot::FrequencyBandStr(lora::ChannelPlan::US915) != band &&
jenkins@jenkinsdm1 12:05435282f899 92 mDot::FrequencyBandStr(lora::ChannelPlan::AU915) != band &&
jenkins@jenkinsdm1 12:05435282f899 93 mDot::FrequencyBandStr(lora::ChannelPlan::EU868) != band &&
jenkins@jenkinsdm1 12:05435282f899 94 mDot::FrequencyBandStr(lora::ChannelPlan::AS923) != band &&
jenkins@jenkinsdm1 12:05435282f899 95 mDot::FrequencyBandStr(lora::ChannelPlan::KR920) != band &&
jenkins@jenkinsdm1 12:05435282f899 96 mDot::FrequencyBandStr(lora::ChannelPlan::IN865) != band &&
jenkins@jenkinsdm1 12:05435282f899 97 mDot::FrequencyBandStr(lora::ChannelPlan::AS923_JAPAN) != band)
Mike Fiore 1:71125aa00e33 98 {
jenkins@jenkinsdm1 12:05435282f899 99 setErrorMessage("Invalid parameter, expects (US915,AU915,EU868,AS923,AS923-JAPAN,KR920,IN865)");
Mike Fiore 1:71125aa00e33 100 return false;
Mike Fiore 1:71125aa00e33 101 }
jenkins@jenkinsdm1 12:05435282f899 102 return true;
Mike Fiore 1:71125aa00e33 103 }
Mike Fiore 1:71125aa00e33 104 }