LoRa_Miun_Lib

Dependents:   Light

Fork of LoRa_Miun_lib by BIN WANG

Committer:
biwa1400
Date:
Mon Oct 02 16:09:14 2017 +0000
Revision:
3:48209baab102
20171002

Who changed what in which revision?

UserRevisionLine numberNew contents of line
biwa1400 3:48209baab102 1 /**
biwa1400 3:48209baab102 2 * @file LoRa.h
biwa1400 3:48209baab102 3 * @brief Application call
biwa1400 3:48209baab102 4 * @author Bin Wang
biwa1400 3:48209baab102 5 * @version 1.0
biwa1400 3:48209baab102 6 */
biwa1400 3:48209baab102 7
biwa1400 3:48209baab102 8 #ifndef MIUN_LORA_H
biwa1400 3:48209baab102 9 #define MIUN_LORA_H
biwa1400 3:48209baab102 10
biwa1400 3:48209baab102 11 #include "mDot.h"
biwa1400 3:48209baab102 12 #include "mDotEvent.h"
biwa1400 3:48209baab102 13
biwa1400 3:48209baab102 14
biwa1400 3:48209baab102 15 namespace MIUN
biwa1400 3:48209baab102 16 {
biwa1400 3:48209baab102 17
biwa1400 3:48209baab102 18 class LoRa;
biwa1400 3:48209baab102 19
biwa1400 3:48209baab102 20 class MacCommandEvent : public mDotEvent
biwa1400 3:48209baab102 21 {
biwa1400 3:48209baab102 22 /*** CommandType ***/
biwa1400 3:48209baab102 23 private:
biwa1400 3:48209baab102 24 enum CommmandType
biwa1400 3:48209baab102 25 {
biwa1400 3:48209baab102 26 decreaseSF = 0x80,
biwa1400 3:48209baab102 27 increaseSF = 0x81,
biwa1400 3:48209baab102 28 changeSleepTime = 0x82,
biwa1400 3:48209baab102 29 };
biwa1400 3:48209baab102 30
biwa1400 3:48209baab102 31 enum CommmandType_length
biwa1400 3:48209baab102 32 {
biwa1400 3:48209baab102 33 decreaseSF_length = 1,
biwa1400 3:48209baab102 34 increaseSF_length = 1,
biwa1400 3:48209baab102 35 changeSleepTime_length = 5,
biwa1400 3:48209baab102 36 };
biwa1400 3:48209baab102 37
biwa1400 3:48209baab102 38
biwa1400 3:48209baab102 39
biwa1400 3:48209baab102 40 private:
biwa1400 3:48209baab102 41 LoRa& loraHandle;
biwa1400 3:48209baab102 42 public:
biwa1400 3:48209baab102 43 MacCommandEvent(LoRa& loraHandle);
biwa1400 3:48209baab102 44
biwa1400 3:48209baab102 45 virtual ~MacCommandEvent() {}
biwa1400 3:48209baab102 46
biwa1400 3:48209baab102 47 virtual void RxDone(uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr, lora::DownlinkControl ctrl, uint8_t slot);
biwa1400 3:48209baab102 48
biwa1400 3:48209baab102 49 virtual uint8_t MeasureBattery();
biwa1400 3:48209baab102 50
biwa1400 3:48209baab102 51 private:
biwa1400 3:48209baab102 52 void processSFDecrease(uint8_t *payload);
biwa1400 3:48209baab102 53 void processSFIncrease(uint8_t *payload);
biwa1400 3:48209baab102 54 void processChangeSleepTm(uint8_t *macCommand);
biwa1400 3:48209baab102 55 void processqueryBatteryLevel(uint8_t *macCommand);
biwa1400 3:48209baab102 56
biwa1400 3:48209baab102 57 void sendCommand (uint8_t* command, int commandLength);
biwa1400 3:48209baab102 58 };
biwa1400 3:48209baab102 59
biwa1400 3:48209baab102 60 class LoRa
biwa1400 3:48209baab102 61 {
biwa1400 3:48209baab102 62 /*** Parameters ***/
biwa1400 3:48209baab102 63 private:
biwa1400 3:48209baab102 64 uint8_t rejoinTimes;
biwa1400 3:48209baab102 65 uint8_t retransTimes;
biwa1400 3:48209baab102 66 uint8_t installSF;
biwa1400 3:48209baab102 67 uint32_t sleepTime;
biwa1400 3:48209baab102 68 uint32_t defaultSleepTime;
biwa1400 3:48209baab102 69
biwa1400 3:48209baab102 70 int receivePort;
biwa1400 3:48209baab102 71
biwa1400 3:48209baab102 72 uint8_t batteryLevel;
biwa1400 3:48209baab102 73
biwa1400 3:48209baab102 74 /*** component ***/
biwa1400 3:48209baab102 75 private:
biwa1400 3:48209baab102 76 mDot* dot;
biwa1400 3:48209baab102 77 MacCommandEvent macCommandEvent;
biwa1400 3:48209baab102 78
biwa1400 3:48209baab102 79 /*** constructor ***/
biwa1400 3:48209baab102 80 public:
biwa1400 3:48209baab102 81 LoRa();
biwa1400 3:48209baab102 82
biwa1400 3:48209baab102 83 /*** Handle Functins ***/
biwa1400 3:48209baab102 84
biwa1400 3:48209baab102 85 public:
biwa1400 3:48209baab102 86 /*** Information ***/
biwa1400 3:48209baab102 87 void showInfo();
biwa1400 3:48209baab102 88
biwa1400 3:48209baab102 89 /*** sleep ***/
biwa1400 3:48209baab102 90 void sleep();
biwa1400 3:48209baab102 91 void sleep(const uint32_t& interval_s);
biwa1400 3:48209baab102 92 void sleepWaitingNextFreeChannel();
biwa1400 3:48209baab102 93
biwa1400 3:48209baab102 94 /*** Network ***/
biwa1400 3:48209baab102 95 bool joinNetwork ();
biwa1400 3:48209baab102 96 bool send_basic(std::string input_data);
biwa1400 3:48209baab102 97 bool send(std::string input_data, int port);
biwa1400 3:48209baab102 98 std::string receive(int* port);
biwa1400 3:48209baab102 99
biwa1400 3:48209baab102 100 /*** check ***/
biwa1400 3:48209baab102 101 bool checkSleepTime(uint32_t sleepTime);
biwa1400 3:48209baab102 102
biwa1400 3:48209baab102 103 /*** Setting ***/
biwa1400 3:48209baab102 104 void reset();
biwa1400 3:48209baab102 105
biwa1400 3:48209baab102 106 void networkConfig(std::string network_name,
biwa1400 3:48209baab102 107 std::string network_passphrase,
biwa1400 3:48209baab102 108 uint8_t retransTimes,
biwa1400 3:48209baab102 109 uint8_t joinDelay,
biwa1400 3:48209baab102 110 bool ADR,
biwa1400 3:48209baab102 111 uint8_t sf); // Include reset and setting save.
biwa1400 3:48209baab102 112
biwa1400 3:48209baab102 113 /*** getting ***/
biwa1400 3:48209baab102 114
biwa1400 3:48209baab102 115
biwa1400 3:48209baab102 116 /*** Setting ***/
biwa1400 3:48209baab102 117 public:
biwa1400 3:48209baab102 118
biwa1400 3:48209baab102 119 void setBatteryLevel(uint8_t batteryLevel);
biwa1400 3:48209baab102 120
biwa1400 3:48209baab102 121 void setFPending(bool isPending);
biwa1400 3:48209baab102 122
biwa1400 3:48209baab102 123 void setDefaultSleepTime(uint32_t inSleepTime);
biwa1400 3:48209baab102 124
biwa1400 3:48209baab102 125 void setSleepTime(uint32_t inSleepTime);
biwa1400 3:48209baab102 126
biwa1400 3:48209baab102 127 bool increaseSF();
biwa1400 3:48209baab102 128
biwa1400 3:48209baab102 129 bool decreaseSF();
biwa1400 3:48209baab102 130
biwa1400 3:48209baab102 131 void resetSF();
biwa1400 3:48209baab102 132
biwa1400 3:48209baab102 133 void changeSF(const uint8_t& sf);
biwa1400 3:48209baab102 134
biwa1400 3:48209baab102 135 void changeAdaptSF(bool adaptSF);
biwa1400 3:48209baab102 136
biwa1400 3:48209baab102 137 void changeModeToAUTO_OTA();
biwa1400 3:48209baab102 138
biwa1400 3:48209baab102 139 void changeNetworkName(const std::string& network_name);
biwa1400 3:48209baab102 140
biwa1400 3:48209baab102 141 void changePassword(const std::string& networkKey);
biwa1400 3:48209baab102 142
biwa1400 3:48209baab102 143 void changeAck(const uint8_t& retries);
biwa1400 3:48209baab102 144
biwa1400 3:48209baab102 145 void changeJoinDelay(uint8_t joinDelay);
biwa1400 3:48209baab102 146
biwa1400 3:48209baab102 147 void changePublicNetwork(bool isPublicNetwork);
biwa1400 3:48209baab102 148
biwa1400 3:48209baab102 149 /*** Save & get***/
biwa1400 3:48209baab102 150 private:
biwa1400 3:48209baab102 151 void saveSetting();
biwa1400 3:48209baab102 152 /*
biwa1400 3:48209baab102 153 void saveSleepTime(uint32_t sleepTime);
biwa1400 3:48209baab102 154 uint32_t readSleepTime();
biwa1400 3:48209baab102 155 */
biwa1400 3:48209baab102 156
biwa1400 3:48209baab102 157
biwa1400 3:48209baab102 158 /*** Get ***/
biwa1400 3:48209baab102 159 public:
biwa1400 3:48209baab102 160 mDot& getHandler();
biwa1400 3:48209baab102 161
biwa1400 3:48209baab102 162 /*** Private Functions ***/
biwa1400 3:48209baab102 163 private:
biwa1400 3:48209baab102 164 bool tryConnectNet();
biwa1400 3:48209baab102 165
biwa1400 3:48209baab102 166 friend class MacCommandEvent;
biwa1400 3:48209baab102 167 };
biwa1400 3:48209baab102 168
biwa1400 3:48209baab102 169
biwa1400 3:48209baab102 170
biwa1400 3:48209baab102 171
biwa1400 3:48209baab102 172
biwa1400 3:48209baab102 173 } // CLOSE NAMESPACE
biwa1400 3:48209baab102 174
biwa1400 3:48209baab102 175
biwa1400 3:48209baab102 176
biwa1400 3:48209baab102 177 #endif