Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: libmDot mbed-rtos mbed
Fork of mDot_LoRa_Sensornode by
app/LoRaConfig.cpp@1:fe242f3e341b, 2016-08-12 (annotated)
- Committer:
- mitea1
- Date:
- Fri Aug 12 11:19:14 2016 +0000
- Revision:
- 1:fe242f3e341b
- Parent:
- 0:f2815503561f
- Child:
- 4:135e5ebdf555
added OTAA Join Mode for LoRa Connection
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| mitea1 | 0:f2815503561f | 1 | /* | 
| mitea1 | 0:f2815503561f | 2 | * LoRaConfig.cpp | 
| mitea1 | 0:f2815503561f | 3 | * | 
| mitea1 | 0:f2815503561f | 4 | * Created on: Jun 11, 2016 | 
| mitea1 | 0:f2815503561f | 5 | * Author: Adrian | 
| mitea1 | 0:f2815503561f | 6 | */ | 
| mitea1 | 0:f2815503561f | 7 | |
| mitea1 | 0:f2815503561f | 8 | #include "LoRaConfig.h" | 
| mitea1 | 0:f2815503561f | 9 | |
| mitea1 | 0:f2815503561f | 10 | //LoRaConfig::LoRaConfig(){ | 
| mitea1 | 0:f2815503561f | 11 | // | 
| mitea1 | 0:f2815503561f | 12 | //} | 
| mitea1 | 0:f2815503561f | 13 | // | 
| mitea1 | 0:f2815503561f | 14 | //LoRaConfig::~LoRaConfig(){ | 
| mitea1 | 0:f2815503561f | 15 | // | 
| mitea1 | 0:f2815503561f | 16 | //} | 
| mitea1 | 0:f2815503561f | 17 | |
| mitea1 | 0:f2815503561f | 18 | void LoRaConfig::build(LORA_MODE desiredMode){ | 
| mitea1 | 1:fe242f3e341b | 19 | |
| mitea1 | 0:f2815503561f | 20 | setLORA_MODE(desiredMode); | 
| mitea1 | 1:fe242f3e341b | 21 | setNetworkName(LORA_NETWORK_NAME); | 
| mitea1 | 1:fe242f3e341b | 22 | setNetworkPassphrase(LORA_NETWORK_PASSPHRASE); | 
| mitea1 | 1:fe242f3e341b | 23 | setAppEUI(); | 
| mitea1 | 1:fe242f3e341b | 24 | setAppKey(); | 
| mitea1 | 1:fe242f3e341b | 25 | setDeviceEUI(); | 
| mitea1 | 0:f2815503561f | 26 | |
| mitea1 | 0:f2815503561f | 27 | switch(desiredMode){ | 
| mitea1 | 0:f2815503561f | 28 | |
| mitea1 | 0:f2815503561f | 29 | case LORA_MODE_0_OFF: | 
| mitea1 | 0:f2815503561f | 30 | setNetworkPublicity(true); | 
| mitea1 | 0:f2815503561f | 31 | setActivity(false); | 
| mitea1 | 0:f2815503561f | 32 | setFrequencySubBand(LORA_SUBBAND_0); | 
| mitea1 | 0:f2815503561f | 33 | setSpreadingFactor(LORA_SPREADING_FACTOR_7); | 
| mitea1 | 0:f2815503561f | 34 | setTxPowerdBm(LORA_TX_POWER_16_DBM); | 
| mitea1 | 0:f2815503561f | 35 | setAcknowledgeRetries(LORA_ACKNOWLEDGE_RETRIES_1); | 
| mitea1 | 1:fe242f3e341b | 36 | setJOIN_MODE(ABP); | 
| mitea1 | 0:f2815503561f | 37 | break; | 
| mitea1 | 0:f2815503561f | 38 | |
| mitea1 | 0:f2815503561f | 39 | case LORA_MODE_1: | 
| mitea1 | 0:f2815503561f | 40 | setNetworkPublicity(true); | 
| mitea1 | 0:f2815503561f | 41 | setActivity(true); | 
| mitea1 | 1:fe242f3e341b | 42 | setFrequencySubBand(LORA_SUBBAND_1); | 
| mitea1 | 1:fe242f3e341b | 43 | setSpreadingFactor(LORA_SPREADING_FACTOR_8); | 
| mitea1 | 0:f2815503561f | 44 | setTxPowerdBm(LORA_TX_POWER_16_DBM); | 
| mitea1 | 1:fe242f3e341b | 45 | setAcknowledgeRetries(LORA_ACKNOWLEDGE_RETRIES_0); | 
| mitea1 | 1:fe242f3e341b | 46 | setJOIN_MODE(OTA); | 
| mitea1 | 0:f2815503561f | 47 | break; | 
| mitea1 | 0:f2815503561f | 48 | |
| mitea1 | 0:f2815503561f | 49 | case LORA_MODE_2: | 
| mitea1 | 0:f2815503561f | 50 | setNetworkPublicity(true); | 
| mitea1 | 0:f2815503561f | 51 | setActivity(true); | 
| mitea1 | 0:f2815503561f | 52 | setFrequencySubBand(LORA_SUBBAND_0); | 
| mitea1 | 0:f2815503561f | 53 | setSpreadingFactor(LORA_SPREADING_FACTOR_12); | 
| mitea1 | 0:f2815503561f | 54 | setTxPowerdBm(LORA_TX_POWER_16_DBM); | 
| mitea1 | 0:f2815503561f | 55 | setAcknowledgeRetries(LORA_ACKNOWLEDGE_RETRIES_1); | 
| mitea1 | 1:fe242f3e341b | 56 | setJOIN_MODE(ABP); | 
| mitea1 | 0:f2815503561f | 57 | break; | 
| mitea1 | 0:f2815503561f | 58 | |
| mitea1 | 0:f2815503561f | 59 | case LORA_MODE_3: | 
| mitea1 | 0:f2815503561f | 60 | setNetworkPublicity(true); | 
| mitea1 | 0:f2815503561f | 61 | setActivity(true); | 
| mitea1 | 0:f2815503561f | 62 | setFrequencySubBand(LORA_SUBBAND_0); | 
| mitea1 | 0:f2815503561f | 63 | setSpreadingFactor(LORA_SPREADING_FACTOR_7); | 
| mitea1 | 0:f2815503561f | 64 | setTxPowerdBm(LORA_TX_POWER_16_DBM); | 
| mitea1 | 0:f2815503561f | 65 | setAcknowledgeRetries(LORA_ACKNOWLEDGE_RETRIES_1); | 
| mitea1 | 1:fe242f3e341b | 66 | setJOIN_MODE(ABP); | 
| mitea1 | 0:f2815503561f | 67 | break; | 
| mitea1 | 0:f2815503561f | 68 | |
| mitea1 | 0:f2815503561f | 69 | case LORA_MODE_4: | 
| mitea1 | 0:f2815503561f | 70 | setNetworkPublicity(true); | 
| mitea1 | 0:f2815503561f | 71 | setActivity(true); | 
| mitea1 | 0:f2815503561f | 72 | setFrequencySubBand(LORA_SUBBAND_0); | 
| mitea1 | 0:f2815503561f | 73 | setSpreadingFactor(LORA_SPREADING_FACTOR_7); | 
| mitea1 | 0:f2815503561f | 74 | setTxPowerdBm(LORA_TX_POWER_16_DBM); | 
| mitea1 | 0:f2815503561f | 75 | setAcknowledgeRetries(LORA_ACKNOWLEDGE_RETRIES_1); | 
| mitea1 | 1:fe242f3e341b | 76 | setJOIN_MODE(ABP); | 
| mitea1 | 0:f2815503561f | 77 | break; | 
| mitea1 | 0:f2815503561f | 78 | |
| mitea1 | 0:f2815503561f | 79 | case LORA_MODE_5: | 
| mitea1 | 0:f2815503561f | 80 | setNetworkPublicity(true); | 
| mitea1 | 0:f2815503561f | 81 | setActivity(true); | 
| mitea1 | 0:f2815503561f | 82 | setFrequencySubBand(LORA_SUBBAND_0); | 
| mitea1 | 0:f2815503561f | 83 | setSpreadingFactor(LORA_SPREADING_FACTOR_7); | 
| mitea1 | 0:f2815503561f | 84 | setTxPowerdBm(LORA_TX_POWER_20_DBM); | 
| mitea1 | 0:f2815503561f | 85 | setAcknowledgeRetries(LORA_ACKNOWLEDGE_RETRIES_1); | 
| mitea1 | 1:fe242f3e341b | 86 | setJOIN_MODE(ABP); | 
| mitea1 | 0:f2815503561f | 87 | break; | 
| mitea1 | 0:f2815503561f | 88 | |
| mitea1 | 0:f2815503561f | 89 | default: | 
| mitea1 | 0:f2815503561f | 90 | setNetworkPublicity(true); | 
| mitea1 | 0:f2815503561f | 91 | setActivity(false); | 
| mitea1 | 0:f2815503561f | 92 | setFrequencySubBand(LORA_SUBBAND_0); | 
| mitea1 | 0:f2815503561f | 93 | setSpreadingFactor(LORA_SPREADING_FACTOR_7); | 
| mitea1 | 0:f2815503561f | 94 | setTxPowerdBm(LORA_TX_POWER_16_DBM); | 
| mitea1 | 0:f2815503561f | 95 | setAcknowledgeRetries(LORA_ACKNOWLEDGE_RETRIES_1); | 
| mitea1 | 1:fe242f3e341b | 96 | setJOIN_MODE(ABP); | 
| mitea1 | 0:f2815503561f | 97 | break; | 
| mitea1 | 0:f2815503561f | 98 | } | 
| mitea1 | 0:f2815503561f | 99 | } | 
| mitea1 | 0:f2815503561f | 100 | |
| mitea1 | 0:f2815503561f | 101 | bool LoRaConfig::isPublic(){ | 
| mitea1 | 0:f2815503561f | 102 | return publicity; | 
| mitea1 | 0:f2815503561f | 103 | } | 
| mitea1 | 0:f2815503561f | 104 | |
| mitea1 | 0:f2815503561f | 105 | bool LoRaConfig::isActiv(){ | 
| mitea1 | 0:f2815503561f | 106 | return activity; | 
| mitea1 | 0:f2815503561f | 107 | } | 
| mitea1 | 0:f2815503561f | 108 | |
| mitea1 | 0:f2815503561f | 109 | std::string LoRaConfig::getNetworkName(){ | 
| mitea1 | 0:f2815503561f | 110 | return *networkName; | 
| mitea1 | 0:f2815503561f | 111 | } | 
| mitea1 | 0:f2815503561f | 112 | |
| mitea1 | 0:f2815503561f | 113 | std::string LoRaConfig::getNetworkPassphrase(){ | 
| mitea1 | 0:f2815503561f | 114 | return *networkPassphrase; | 
| mitea1 | 0:f2815503561f | 115 | } | 
| mitea1 | 0:f2815503561f | 116 | |
| mitea1 | 1:fe242f3e341b | 117 | std::string LoRaConfig::getNetworkAddress(){ | 
| mitea1 | 1:fe242f3e341b | 118 | return *networkAddress; | 
| mitea1 | 1:fe242f3e341b | 119 | } | 
| mitea1 | 1:fe242f3e341b | 120 | |
| mitea1 | 1:fe242f3e341b | 121 | std::vector<uint8_t> LoRaConfig::getAppEUI(){ | 
| mitea1 | 1:fe242f3e341b | 122 | return *appEUI; | 
| mitea1 | 1:fe242f3e341b | 123 | } | 
| mitea1 | 1:fe242f3e341b | 124 | |
| mitea1 | 1:fe242f3e341b | 125 | std::vector<uint8_t> LoRaConfig::getAppKey(){ | 
| mitea1 | 1:fe242f3e341b | 126 | return *appKey; | 
| mitea1 | 1:fe242f3e341b | 127 | } | 
| mitea1 | 1:fe242f3e341b | 128 | |
| mitea1 | 1:fe242f3e341b | 129 | std::vector<uint8_t> LoRaConfig::getDeviceEUI(){ | 
| mitea1 | 1:fe242f3e341b | 130 | return *deviceEUI; | 
| mitea1 | 1:fe242f3e341b | 131 | } | 
| mitea1 | 1:fe242f3e341b | 132 | |
| mitea1 | 0:f2815503561f | 133 | uint8_t LoRaConfig::getFrequencySubBand(){ | 
| mitea1 | 0:f2815503561f | 134 | return frequencySubBand; | 
| mitea1 | 0:f2815503561f | 135 | } | 
| mitea1 | 0:f2815503561f | 136 | |
| mitea1 | 0:f2815503561f | 137 | uint8_t LoRaConfig::getSpreadingFactor(){ | 
| mitea1 | 0:f2815503561f | 138 | return spreadingFactor; | 
| mitea1 | 0:f2815503561f | 139 | } | 
| mitea1 | 0:f2815503561f | 140 | |
| mitea1 | 0:f2815503561f | 141 | uint8_t LoRaConfig::getTxPowerdBm(){ | 
| mitea1 | 0:f2815503561f | 142 | return txPowerdBm; | 
| mitea1 | 0:f2815503561f | 143 | } | 
| mitea1 | 0:f2815503561f | 144 | |
| mitea1 | 0:f2815503561f | 145 | uint8_t LoRaConfig::getAcknowledgeRetries(){ | 
| mitea1 | 0:f2815503561f | 146 | return acknowledgeRetries; | 
| mitea1 | 0:f2815503561f | 147 | } | 
| mitea1 | 0:f2815503561f | 148 | |
| mitea1 | 0:f2815503561f | 149 | LORA_MODE LoRaConfig::getLORA_MODE(){ | 
| mitea1 | 0:f2815503561f | 150 | return loraMode; | 
| mitea1 | 0:f2815503561f | 151 | } | 
| mitea1 | 0:f2815503561f | 152 | |
| mitea1 | 1:fe242f3e341b | 153 | JOIN_MODE LoRaConfig::getJOIN_MODE(){ | 
| mitea1 | 1:fe242f3e341b | 154 | return joinMode; | 
| mitea1 | 1:fe242f3e341b | 155 | } | 
| mitea1 | 1:fe242f3e341b | 156 | |
| mitea1 | 0:f2815503561f | 157 | void LoRaConfig::setNetworkPublicity(bool publicity){ | 
| mitea1 | 0:f2815503561f | 158 | this->publicity = publicity; | 
| mitea1 | 0:f2815503561f | 159 | } | 
| mitea1 | 0:f2815503561f | 160 | |
| mitea1 | 0:f2815503561f | 161 | void LoRaConfig::setActivity(bool activity){ | 
| mitea1 | 0:f2815503561f | 162 | this->activity = activity; | 
| mitea1 | 0:f2815503561f | 163 | } | 
| mitea1 | 0:f2815503561f | 164 | |
| mitea1 | 0:f2815503561f | 165 | void LoRaConfig::setNetworkName(char* networkName){ | 
| mitea1 | 0:f2815503561f | 166 | this->networkName = new std::string(networkName); | 
| mitea1 | 0:f2815503561f | 167 | } | 
| mitea1 | 0:f2815503561f | 168 | |
| mitea1 | 0:f2815503561f | 169 | void LoRaConfig::setNetworkPassphrase(char* networkPassphrase){ | 
| mitea1 | 0:f2815503561f | 170 | this->networkPassphrase = new std::string(networkPassphrase); | 
| mitea1 | 0:f2815503561f | 171 | } | 
| mitea1 | 0:f2815503561f | 172 | |
| mitea1 | 1:fe242f3e341b | 173 | void LoRaConfig::setNetworkAddress(char* networkAddress){ | 
| mitea1 | 1:fe242f3e341b | 174 | this->networkAddress = new std::string(networkAddress); | 
| mitea1 | 1:fe242f3e341b | 175 | } | 
| mitea1 | 1:fe242f3e341b | 176 | |
| mitea1 | 1:fe242f3e341b | 177 | void LoRaConfig::setAppEUI(){ | 
| mitea1 | 1:fe242f3e341b | 178 | this->appEUI = new std::vector<uint8_t>(); | 
| mitea1 | 1:fe242f3e341b | 179 | |
| mitea1 | 1:fe242f3e341b | 180 | for(int i = 0; i < 8; i++){ | 
| mitea1 | 1:fe242f3e341b | 181 | this->appEUI->push_back(LORA_APP_EUI[i]); | 
| mitea1 | 1:fe242f3e341b | 182 | } | 
| mitea1 | 1:fe242f3e341b | 183 | } | 
| mitea1 | 1:fe242f3e341b | 184 | |
| mitea1 | 1:fe242f3e341b | 185 | void LoRaConfig::setAppKey(){ | 
| mitea1 | 1:fe242f3e341b | 186 | this->appKey = new std::vector<uint8_t>(); | 
| mitea1 | 1:fe242f3e341b | 187 | |
| mitea1 | 1:fe242f3e341b | 188 | for(int i = 0; i < 16; i++){ | 
| mitea1 | 1:fe242f3e341b | 189 | this->appKey->push_back(LORA_APP_KEY[i]); | 
| mitea1 | 1:fe242f3e341b | 190 | } | 
| mitea1 | 1:fe242f3e341b | 191 | } | 
| mitea1 | 1:fe242f3e341b | 192 | |
| mitea1 | 1:fe242f3e341b | 193 | void LoRaConfig::setDeviceEUI(){ | 
| mitea1 | 1:fe242f3e341b | 194 | this->deviceEUI = new std::vector<uint8_t>(); | 
| mitea1 | 1:fe242f3e341b | 195 | |
| mitea1 | 1:fe242f3e341b | 196 | for(int i = 0; i < 8; i++){ | 
| mitea1 | 1:fe242f3e341b | 197 | this->deviceEUI->push_back(LORA_DEVICE_EUI[i]); | 
| mitea1 | 1:fe242f3e341b | 198 | } | 
| mitea1 | 1:fe242f3e341b | 199 | } | 
| mitea1 | 1:fe242f3e341b | 200 | |
| mitea1 | 0:f2815503561f | 201 | void LoRaConfig::setFrequencySubBand(uint8_t frequencySubBand){ | 
| mitea1 | 0:f2815503561f | 202 | this->frequencySubBand = frequencySubBand; | 
| mitea1 | 0:f2815503561f | 203 | } | 
| mitea1 | 0:f2815503561f | 204 | |
| mitea1 | 0:f2815503561f | 205 | void LoRaConfig::setSpreadingFactor(uint8_t spreadingFactor){ | 
| mitea1 | 0:f2815503561f | 206 | this->spreadingFactor = spreadingFactor; | 
| mitea1 | 0:f2815503561f | 207 | } | 
| mitea1 | 0:f2815503561f | 208 | |
| mitea1 | 0:f2815503561f | 209 | void LoRaConfig::setTxPowerdBm(uint8_t txPowerdBm){ | 
| mitea1 | 0:f2815503561f | 210 | this->txPowerdBm = txPowerdBm; | 
| mitea1 | 0:f2815503561f | 211 | } | 
| mitea1 | 0:f2815503561f | 212 | |
| mitea1 | 0:f2815503561f | 213 | void LoRaConfig::setAcknowledgeRetries(uint8_t acknowledgeRetries){ | 
| mitea1 | 0:f2815503561f | 214 | this->acknowledgeRetries = acknowledgeRetries; | 
| mitea1 | 0:f2815503561f | 215 | } | 
| mitea1 | 0:f2815503561f | 216 | |
| mitea1 | 0:f2815503561f | 217 | void LoRaConfig::setLORA_MODE(LORA_MODE loraMode){ | 
| mitea1 | 0:f2815503561f | 218 | this->loraMode = loraMode; | 
| mitea1 | 0:f2815503561f | 219 | } | 
| mitea1 | 0:f2815503561f | 220 | |
| mitea1 | 1:fe242f3e341b | 221 | void LoRaConfig::setJOIN_MODE(JOIN_MODE joinMode){ | 
| mitea1 | 1:fe242f3e341b | 222 | this->joinMode = joinMode; | 
| mitea1 | 1:fe242f3e341b | 223 | } | 
| mitea1 | 0:f2815503561f | 224 | |
| mitea1 | 1:fe242f3e341b | 225 | 
