SRK Version of mDot LoRa_Sensormode_SRK
Dependencies: libmDot mbed-rtos mbed
Fork of mDot_LoRa_Sensornode by
app/LoRa.h@6:e2ae47490f60, 2016-08-15 (annotated)
- Committer:
- skramer
- Date:
- Mon Aug 15 18:57:35 2016 +0000
- Revision:
- 6:e2ae47490f60
- Parent:
- 1:fe242f3e341b
Uptodate with last changes
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mitea1 | 0:f2815503561f | 1 | /** |
mitea1 | 0:f2815503561f | 2 | * @file LoRa.h |
mitea1 | 0:f2815503561f | 3 | * |
mitea1 | 0:f2815503561f | 4 | * @author Adrian |
mitea1 | 0:f2815503561f | 5 | * @date May 31, 2016 |
mitea1 | 0:f2815503561f | 6 | * |
mitea1 | 0:f2815503561f | 7 | */ |
mitea1 | 0:f2815503561f | 8 | #include "mDot.h" |
mitea1 | 0:f2815503561f | 9 | #include "MTSLog.h" |
mitea1 | 0:f2815503561f | 10 | #include "LoRaConfig.h" |
mitea1 | 0:f2815503561f | 11 | |
mitea1 | 0:f2815503561f | 12 | #ifndef LORA_H_ |
mitea1 | 0:f2815503561f | 13 | #define LORA_H_ |
mitea1 | 0:f2815503561f | 14 | |
mitea1 | 0:f2815503561f | 15 | /** |
mitea1 | 0:f2815503561f | 16 | * @class LoRa |
mitea1 | 0:f2815503561f | 17 | * @brief Represents the LoRa Module with all its functionality. It wraps Multitech owns mDot Library functions. |
mitea1 | 0:f2815503561f | 18 | * It's possible to wrap other functionality from other LoRa Module Manufactures for future use cases |
mitea1 | 0:f2815503561f | 19 | */ |
mitea1 | 0:f2815503561f | 20 | class LoRa { |
mitea1 | 0:f2815503561f | 21 | public: |
mitea1 | 0:f2815503561f | 22 | LoRa(mDot*,RawSerial*); |
mitea1 | 0:f2815503561f | 23 | virtual ~LoRa(); |
mitea1 | 0:f2815503561f | 24 | |
mitea1 | 0:f2815503561f | 25 | /** |
mitea1 | 0:f2815503561f | 26 | * @brief Initializes and start the LoRa Module depending on the desireMode |
mitea1 | 0:f2815503561f | 27 | * @param desiredMode |
mitea1 | 0:f2815503561f | 28 | */ |
mitea1 | 0:f2815503561f | 29 | void init(LORA_MODE desiredMode); |
mitea1 | 0:f2815503561f | 30 | |
mitea1 | 0:f2815503561f | 31 | /** |
mitea1 | 0:f2815503561f | 32 | * @brief Sends data stored inside a vector via LoRa |
mitea1 | 0:f2815503561f | 33 | * @param dataToSend the vector that contains the Data that needs to be sent |
mitea1 | 0:f2815503561f | 34 | * @return |
mitea1 | 0:f2815503561f | 35 | */ |
mitea1 | 0:f2815503561f | 36 | int32_t send(std::vector<uint8_t>& dataToSend); |
mitea1 | 0:f2815503561f | 37 | |
mitea1 | 0:f2815503561f | 38 | /** |
mitea1 | 0:f2815503561f | 39 | * @brief Receives data via LoRa and stores it inside a vector |
mitea1 | 0:f2815503561f | 40 | * @param receivedData the vector where the received data needs to be stored |
mitea1 | 0:f2815503561f | 41 | * @return |
mitea1 | 0:f2815503561f | 42 | */ |
mitea1 | 0:f2815503561f | 43 | int32_t recv(std::vector<uint8_t>& receivedData); |
mitea1 | 0:f2815503561f | 44 | |
mitea1 | 0:f2815503561f | 45 | /** |
mitea1 | 0:f2815503561f | 46 | * @brief Gets the Rssi of the last sent Message. It's important that at least 1 |
mitea1 | 0:f2815503561f | 47 | * Acknowledgment Retries is set by setAckRetries() |
mitea1 | 0:f2815503561f | 48 | * @return |
mitea1 | 0:f2815503561f | 49 | */ |
mitea1 | 0:f2815503561f | 50 | int16_t getLastRssi(); |
mitea1 | 0:f2815503561f | 51 | |
mitea1 | 0:f2815503561f | 52 | /** |
mitea1 | 1:fe242f3e341b | 53 | * @brief DON'T USE IT RESULTS IN HARDFAULT! |
mitea1 | 0:f2815503561f | 54 | * Gets the SNR of the last sent Message. |
mitea1 | 0:f2815503561f | 55 | * @return |
mitea1 | 0:f2815503561f | 56 | */ |
mitea1 | 0:f2815503561f | 57 | int16_t getLastSnr(); |
mitea1 | 0:f2815503561f | 58 | |
mitea1 | 0:f2815503561f | 59 | /** |
mitea1 | 0:f2815503561f | 60 | * @brief Gets the actual spreading Factor from 7 to 12 from the LoRa Module |
mitea1 | 0:f2815503561f | 61 | * @return |
mitea1 | 0:f2815503561f | 62 | */ |
mitea1 | 0:f2815503561f | 63 | uint8_t getSpreadingFactor(); |
mitea1 | 0:f2815503561f | 64 | |
mitea1 | 0:f2815503561f | 65 | /** |
mitea1 | 0:f2815503561f | 66 | * @brief Gets the actual transmit Power in dBm from the LoRa Module |
mitea1 | 0:f2815503561f | 67 | * @return |
mitea1 | 0:f2815503561f | 68 | */ |
mitea1 | 0:f2815503561f | 69 | uint8_t getTxPowerdBm(); |
mitea1 | 0:f2815503561f | 70 | |
mitea1 | 0:f2815503561f | 71 | /** |
mitea1 | 0:f2815503561f | 72 | * @brief Sends a 0 Byte long ping message to the gateway |
mitea1 | 0:f2815503561f | 73 | */ |
mitea1 | 0:f2815503561f | 74 | void ping(); |
mitea1 | 0:f2815503561f | 75 | |
mitea1 | 0:f2815503561f | 76 | |
mitea1 | 1:fe242f3e341b | 77 | /** |
mitea1 | 1:fe242f3e341b | 78 | * @brief Get ms until next free channel |
mitea1 | 1:fe242f3e341b | 79 | * only applicable for European models, US models return 0 |
mitea1 | 1:fe242f3e341b | 80 | */ |
mitea1 | 1:fe242f3e341b | 81 | uint32_t getNextTxMs(); |
mitea1 | 1:fe242f3e341b | 82 | |
mitea1 | 1:fe242f3e341b | 83 | |
mitea1 | 0:f2815503561f | 84 | |
mitea1 | 0:f2815503561f | 85 | private: |
mitea1 | 0:f2815503561f | 86 | mDot* dot; |
mitea1 | 0:f2815503561f | 87 | RawSerial* debugSerial; |
mitea1 | 0:f2815503561f | 88 | |
mitea1 | 0:f2815503561f | 89 | LoRaConfig* config; |
mitea1 | 0:f2815503561f | 90 | |
mitea1 | 0:f2815503561f | 91 | int16_t rssi; |
mitea1 | 0:f2815503561f | 92 | int16_t snr; |
mitea1 | 0:f2815503561f | 93 | uint8_t spreadingFactor; |
mitea1 | 0:f2815503561f | 94 | uint8_t txPowerdBm; |
mitea1 | 0:f2815503561f | 95 | |
mitea1 | 0:f2815503561f | 96 | /** |
mitea1 | 0:f2815503561f | 97 | * @brief Depending on the LoRaConfig it defines wheter the LoRa Module connects to a |
mitea1 | 0:f2815503561f | 98 | * public network or not |
mitea1 | 0:f2815503561f | 99 | * @return |
mitea1 | 0:f2815503561f | 100 | */ |
mitea1 | 0:f2815503561f | 101 | int32_t setPublicNetwork(); |
mitea1 | 0:f2815503561f | 102 | |
mitea1 | 0:f2815503561f | 103 | /** |
mitea1 | 0:f2815503561f | 104 | * @brief Depending on the LoRaConfig it defines the frequency SubBand that is used for |
mitea1 | 0:f2815503561f | 105 | * transmission of Message to the Gateway |
mitea1 | 0:f2815503561f | 106 | * @return |
mitea1 | 0:f2815503561f | 107 | */ |
mitea1 | 0:f2815503561f | 108 | int32_t setFrequencySubBand(); |
mitea1 | 0:f2815503561f | 109 | |
mitea1 | 0:f2815503561f | 110 | /** |
mitea1 | 0:f2815503561f | 111 | * @brief Depending on the LoRaConfig it defines the name of the Network the |
mitea1 | 0:f2815503561f | 112 | * LoRa Module signs up |
mitea1 | 0:f2815503561f | 113 | * @return |
mitea1 | 0:f2815503561f | 114 | */ |
mitea1 | 0:f2815503561f | 115 | int32_t setNetworkName(); |
mitea1 | 0:f2815503561f | 116 | |
mitea1 | 0:f2815503561f | 117 | /** |
mitea1 | 0:f2815503561f | 118 | * @brief Depending on the LoRaConfig it defines the Passphrase thats used to |
mitea1 | 0:f2815503561f | 119 | * use the Network |
mitea1 | 0:f2815503561f | 120 | * @return |
mitea1 | 0:f2815503561f | 121 | */ |
mitea1 | 0:f2815503561f | 122 | int32_t setNetworkPassphrase(); |
mitea1 | 0:f2815503561f | 123 | |
mitea1 | 0:f2815503561f | 124 | /** |
mitea1 | 1:fe242f3e341b | 125 | * @brief Depending on the LoRaConfig it defines that AppEUI thats used for OTAA |
mitea1 | 1:fe242f3e341b | 126 | * @return |
mitea1 | 1:fe242f3e341b | 127 | */ |
mitea1 | 1:fe242f3e341b | 128 | int32_t setAppEUI(); |
mitea1 | 1:fe242f3e341b | 129 | |
mitea1 | 1:fe242f3e341b | 130 | /** |
mitea1 | 1:fe242f3e341b | 131 | * @brief Depending on the LoRaConfig it defines that AppKey thats used for OTAA |
mitea1 | 1:fe242f3e341b | 132 | * @return |
mitea1 | 1:fe242f3e341b | 133 | */ |
mitea1 | 1:fe242f3e341b | 134 | int32_t setAppKey(); |
mitea1 | 1:fe242f3e341b | 135 | |
mitea1 | 1:fe242f3e341b | 136 | /** |
mitea1 | 1:fe242f3e341b | 137 | * @brief Depending on the LoRaConfig it defines that DeviceEUI thats used for OTAA |
mitea1 | 1:fe242f3e341b | 138 | * @return |
mitea1 | 1:fe242f3e341b | 139 | */ |
mitea1 | 1:fe242f3e341b | 140 | int32_t setDeviceEUI(); |
mitea1 | 1:fe242f3e341b | 141 | |
mitea1 | 1:fe242f3e341b | 142 | |
mitea1 | 1:fe242f3e341b | 143 | /** |
mitea1 | 1:fe242f3e341b | 144 | * @brief Depending on the LoRaConfig it sets the join mode of the Node. |
mitea1 | 1:fe242f3e341b | 145 | * Either OTTA (Over the Air Activation or ABP (Activation by Personalization) |
mitea1 | 1:fe242f3e341b | 146 | * @param |
mitea1 | 1:fe242f3e341b | 147 | * @return |
mitea1 | 1:fe242f3e341b | 148 | */ |
mitea1 | 1:fe242f3e341b | 149 | int32_t setJoinMode(); |
mitea1 | 1:fe242f3e341b | 150 | |
mitea1 | 1:fe242f3e341b | 151 | /** |
mitea1 | 0:f2815503561f | 152 | * @brief Depending on the LoRaConfig it defines the spreading Factor |
mitea1 | 0:f2815503561f | 153 | * for transmissions via LoRa |
mitea1 | 0:f2815503561f | 154 | * @return |
mitea1 | 0:f2815503561f | 155 | */ |
mitea1 | 0:f2815503561f | 156 | int32_t setSpreadingFactor(); |
mitea1 | 0:f2815503561f | 157 | |
mitea1 | 0:f2815503561f | 158 | /** |
mitea1 | 0:f2815503561f | 159 | * @brief Depending on the LoRaConfig it defines the number of Acknowledgment Retries |
mitea1 | 0:f2815503561f | 160 | * that are made |
mitea1 | 0:f2815503561f | 161 | * @return |
mitea1 | 0:f2815503561f | 162 | */ |
mitea1 | 0:f2815503561f | 163 | int32_t setAckRetries(); |
mitea1 | 0:f2815503561f | 164 | |
mitea1 | 0:f2815503561f | 165 | /** |
mitea1 | 0:f2815503561f | 166 | * @brief Depending on the LoRaConfig it defines the power of LoRa data Transmission |
mitea1 | 0:f2815503561f | 167 | * @return |
mitea1 | 0:f2815503561f | 168 | */ |
mitea1 | 0:f2815503561f | 169 | int32_t setTxPower(); |
mitea1 | 0:f2815503561f | 170 | |
mitea1 | 0:f2815503561f | 171 | /** |
mitea1 | 0:f2815503561f | 172 | * @brief Saves parameters of the LoRa Module |
mitea1 | 0:f2815503561f | 173 | */ |
mitea1 | 0:f2815503561f | 174 | void saveConfig(); |
mitea1 | 0:f2815503561f | 175 | |
mitea1 | 0:f2815503561f | 176 | /** |
mitea1 | 0:f2815503561f | 177 | * @brief Resets Configuration of the LoRa Module |
mitea1 | 0:f2815503561f | 178 | */ |
mitea1 | 0:f2815503561f | 179 | void resetConfig(); |
mitea1 | 0:f2815503561f | 180 | |
mitea1 | 0:f2815503561f | 181 | /** |
mitea1 | 0:f2815503561f | 182 | * @brief Tries to join the Network defined by NetworkName and NetworkPassphrase |
mitea1 | 0:f2815503561f | 183 | */ |
mitea1 | 0:f2815503561f | 184 | void joinNetwork(); |
mitea1 | 0:f2815503561f | 185 | |
mitea1 | 0:f2815503561f | 186 | |
mitea1 | 0:f2815503561f | 187 | |
mitea1 | 0:f2815503561f | 188 | }; |
mitea1 | 0:f2815503561f | 189 | |
mitea1 | 0:f2815503561f | 190 | #endif /* LORA_H_ */ |