SmartApp_Miun
SmartApp.cpp@2:506fb35771f6, 2017-10-02 (annotated)
- Committer:
- biwa1400
- Date:
- Mon Oct 02 16:09:25 2017 +0000
- Revision:
- 2:506fb35771f6
- Parent:
- 1:5b29579a065e
201710002;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
biwa1400 | 0:3cd336aba723 | 1 | #include "SmartApp.h" |
biwa1400 | 0:3cd336aba723 | 2 | #include "mbed.h" |
biwa1400 | 0:3cd336aba723 | 3 | #include "mDot.h" |
biwa1400 | 0:3cd336aba723 | 4 | #include <map> |
biwa1400 | 0:3cd336aba723 | 5 | #include <string> |
biwa1400 | 0:3cd336aba723 | 6 | #include <iostream> |
biwa1400 | 0:3cd336aba723 | 7 | |
biwa1400 | 0:3cd336aba723 | 8 | const std::string MIUN::SmartApp::emptyPayload = ""; |
biwa1400 | 0:3cd336aba723 | 9 | const int MIUN::SmartApp::defaultPort = 0; |
biwa1400 | 0:3cd336aba723 | 10 | |
biwa1400 | 0:3cd336aba723 | 11 | MIUN::SmartApp::SmartApp() |
biwa1400 | 0:3cd336aba723 | 12 | { |
biwa1400 | 0:3cd336aba723 | 13 | } |
biwa1400 | 0:3cd336aba723 | 14 | |
biwa1400 | 0:3cd336aba723 | 15 | /*** Running Thread ***/ |
biwa1400 | 0:3cd336aba723 | 16 | void MIUN::SmartApp::startRunning() |
biwa1400 | 0:3cd336aba723 | 17 | { |
biwa1400 | 0:3cd336aba723 | 18 | while(true) |
biwa1400 | 0:3cd336aba723 | 19 | { |
biwa1400 | 2:506fb35771f6 | 20 | //lora.joinNetwork(); |
biwa1400 | 2:506fb35771f6 | 21 | // heartBeat(); |
biwa1400 | 2:506fb35771f6 | 22 | // triggerApp(); |
biwa1400 | 0:3cd336aba723 | 23 | checkInterrupt(); |
biwa1400 | 2:506fb35771f6 | 24 | //lora.setBatteryLevel(measuredBattery()); |
biwa1400 | 0:3cd336aba723 | 25 | lora.sleep(); |
biwa1400 | 0:3cd336aba723 | 26 | } |
biwa1400 | 0:3cd336aba723 | 27 | } |
biwa1400 | 0:3cd336aba723 | 28 | |
biwa1400 | 0:3cd336aba723 | 29 | |
biwa1400 | 0:3cd336aba723 | 30 | void MIUN::SmartApp::addApp(AppUnit& app) |
biwa1400 | 0:3cd336aba723 | 31 | { |
biwa1400 | 0:3cd336aba723 | 32 | appMap.insert ( std::pair<uint8_t,AppUnit&>(app.getAppNumber(),app) ); |
biwa1400 | 0:3cd336aba723 | 33 | } |
biwa1400 | 0:3cd336aba723 | 34 | |
biwa1400 | 0:3cd336aba723 | 35 | void MIUN::SmartApp::showAppMap() |
biwa1400 | 0:3cd336aba723 | 36 | { |
biwa1400 | 0:3cd336aba723 | 37 | logInfo("Show App:"); |
biwa1400 | 0:3cd336aba723 | 38 | for (std::map<uint8_t,AppUnit&>::iterator it=appMap.begin(); it!=appMap.end(); ++it) |
biwa1400 | 0:3cd336aba723 | 39 | { |
biwa1400 | 0:3cd336aba723 | 40 | logInfo("App Number: %u",it->second.getAppNumber()); |
biwa1400 | 0:3cd336aba723 | 41 | } |
biwa1400 | 0:3cd336aba723 | 42 | } |
biwa1400 | 0:3cd336aba723 | 43 | |
biwa1400 | 0:3cd336aba723 | 44 | uint8_t MIUN::SmartApp::measuredBattery() |
biwa1400 | 0:3cd336aba723 | 45 | { |
biwa1400 | 0:3cd336aba723 | 46 | return 255; |
biwa1400 | 0:3cd336aba723 | 47 | } |
biwa1400 | 0:3cd336aba723 | 48 | |
biwa1400 | 0:3cd336aba723 | 49 | /*** Private Functions ***/ |
biwa1400 | 0:3cd336aba723 | 50 | |
biwa1400 | 0:3cd336aba723 | 51 | void MIUN::SmartApp::heartBeat() |
biwa1400 | 0:3cd336aba723 | 52 | { |
biwa1400 | 0:3cd336aba723 | 53 | if(AppUnit::hasSendPayload() == true) |
biwa1400 | 0:3cd336aba723 | 54 | { |
biwa1400 | 0:3cd336aba723 | 55 | //1. get Send Payload |
biwa1400 | 0:3cd336aba723 | 56 | SendPayload sendPayload = AppUnit::getSendPayload(); |
biwa1400 | 0:3cd336aba723 | 57 | //2. send |
biwa1400 | 0:3cd336aba723 | 58 | lora.send(sendPayload.getPayload(),sendPayload.getAppNumber()); |
biwa1400 | 0:3cd336aba723 | 59 | } |
biwa1400 | 0:3cd336aba723 | 60 | else |
biwa1400 | 0:3cd336aba723 | 61 | { |
biwa1400 | 0:3cd336aba723 | 62 | lora.send(emptyPayload,defaultPort); |
biwa1400 | 0:3cd336aba723 | 63 | } |
biwa1400 | 0:3cd336aba723 | 64 | } |
biwa1400 | 0:3cd336aba723 | 65 | |
biwa1400 | 0:3cd336aba723 | 66 | |
biwa1400 | 0:3cd336aba723 | 67 | void MIUN::SmartApp::triggerApp() |
biwa1400 | 0:3cd336aba723 | 68 | { |
biwa1400 | 0:3cd336aba723 | 69 | int port=-1; |
biwa1400 | 0:3cd336aba723 | 70 | std::string payload = lora.receive(&port); |
biwa1400 | 0:3cd336aba723 | 71 | if( payload != emptyPayload && port>defaultPort) |
biwa1400 | 0:3cd336aba723 | 72 | { |
biwa1400 | 0:3cd336aba723 | 73 | logInfo("Enter Trigger App"); |
biwa1400 | 0:3cd336aba723 | 74 | logInfo("Payload: %s",payload.c_str()); |
biwa1400 | 0:3cd336aba723 | 75 | logInfo("Port: %d",port); |
biwa1400 | 0:3cd336aba723 | 76 | for (std::map<uint8_t,AppUnit&>::iterator it=appMap.begin(); it!=appMap.end(); ++it) |
biwa1400 | 0:3cd336aba723 | 77 | { |
biwa1400 | 0:3cd336aba723 | 78 | if(it->second.getAppNumber() == port) |
biwa1400 | 0:3cd336aba723 | 79 | { |
biwa1400 | 0:3cd336aba723 | 80 | it->second.run(payload); |
biwa1400 | 0:3cd336aba723 | 81 | break; |
biwa1400 | 0:3cd336aba723 | 82 | } |
biwa1400 | 0:3cd336aba723 | 83 | logInfo("App Number: %u",it->second.getAppNumber()); |
biwa1400 | 0:3cd336aba723 | 84 | } |
biwa1400 | 0:3cd336aba723 | 85 | } |
biwa1400 | 0:3cd336aba723 | 86 | } |
biwa1400 | 0:3cd336aba723 | 87 | |
biwa1400 | 0:3cd336aba723 | 88 | void MIUN::SmartApp::checkInterrupt() |
biwa1400 | 0:3cd336aba723 | 89 | { |
biwa1400 | 0:3cd336aba723 | 90 | for (std::map<uint8_t,AppUnit&>::iterator it=appMap.begin(); it!=appMap.end(); ++it) |
biwa1400 | 0:3cd336aba723 | 91 | { |
biwa1400 | 0:3cd336aba723 | 92 | it->second.interrupt(); |
biwa1400 | 0:3cd336aba723 | 93 | } |
biwa1400 | 0:3cd336aba723 | 94 | } |
biwa1400 | 0:3cd336aba723 | 95 | |
biwa1400 | 0:3cd336aba723 | 96 | |
biwa1400 | 0:3cd336aba723 | 97 | /********** Test **********/ |
biwa1400 | 0:3cd336aba723 | 98 | void MIUN::SmartApp::testThread() |
biwa1400 | 0:3cd336aba723 | 99 | { |
biwa1400 | 0:3cd336aba723 | 100 | logInfo("--- Test Thread ---"); |
biwa1400 | 0:3cd336aba723 | 101 | //AppUnit app1(1); |
biwa1400 | 0:3cd336aba723 | 102 | //addApp(app1); |
biwa1400 | 0:3cd336aba723 | 103 | showAppMap(); |
biwa1400 | 0:3cd336aba723 | 104 | startRunning(); |
biwa1400 | 0:3cd336aba723 | 105 | } |
biwa1400 | 0:3cd336aba723 | 106 | |
biwa1400 | 0:3cd336aba723 | 107 | void MIUN::SmartApp::testSaveFile() |
biwa1400 | 0:3cd336aba723 | 108 | { |
biwa1400 | 0:3cd336aba723 | 109 | logInfo("--- Test Save File ---"); |
biwa1400 | 0:3cd336aba723 | 110 | //lora.saveSleepTime(235678901); |
biwa1400 | 0:3cd336aba723 | 111 | //logInfo("Read Sleep Time: %u", lora.readSleepTime()); |
biwa1400 | 0:3cd336aba723 | 112 | while(true); |
biwa1400 | 0:3cd336aba723 | 113 | } |
biwa1400 | 0:3cd336aba723 | 114 | |
biwa1400 | 0:3cd336aba723 | 115 | void MIUN::SmartApp::testSendAndReceive() |
biwa1400 | 0:3cd336aba723 | 116 | { |
biwa1400 | 0:3cd336aba723 | 117 | logInfo("--- Test Send And Receive ---"); |
biwa1400 | 0:3cd336aba723 | 118 | lora.showInfo(); |
biwa1400 | 0:3cd336aba723 | 119 | while(true) |
biwa1400 | 0:3cd336aba723 | 120 | { |
biwa1400 | 0:3cd336aba723 | 121 | lora.joinNetwork(); |
biwa1400 | 0:3cd336aba723 | 122 | lora.showInfo(); |
biwa1400 | 0:3cd336aba723 | 123 | if(lora.send((std::string)"dabin,dabin",1)==true) |
biwa1400 | 0:3cd336aba723 | 124 | { |
biwa1400 | 0:3cd336aba723 | 125 | //logInfo("Receive Payload: [%s]", ().c_str(),&i); |
biwa1400 | 0:3cd336aba723 | 126 | } |
biwa1400 | 0:3cd336aba723 | 127 | lora.sleep(); |
biwa1400 | 0:3cd336aba723 | 128 | logInfo("---After Sleep---"); |
biwa1400 | 0:3cd336aba723 | 129 | } |
biwa1400 | 0:3cd336aba723 | 130 | } |
biwa1400 | 0:3cd336aba723 | 131 | |
biwa1400 | 0:3cd336aba723 | 132 | void MIUN::SmartApp::testMacCommand() |
biwa1400 | 0:3cd336aba723 | 133 | { |
biwa1400 | 0:3cd336aba723 | 134 | logInfo("--- Test Mac Command ---"); |
biwa1400 | 0:3cd336aba723 | 135 | while(true) |
biwa1400 | 0:3cd336aba723 | 136 | { |
biwa1400 | 0:3cd336aba723 | 137 | lora.joinNetwork(); |
biwa1400 | 0:3cd336aba723 | 138 | lora.showInfo(); |
biwa1400 | 0:3cd336aba723 | 139 | lora.getHandler().networkLinkCheck(); |
biwa1400 | 0:3cd336aba723 | 140 | sleep(); |
biwa1400 | 0:3cd336aba723 | 141 | logInfo("---After Sleep---"); |
biwa1400 | 0:3cd336aba723 | 142 | } |
biwa1400 | 0:3cd336aba723 | 143 | } |
biwa1400 | 0:3cd336aba723 | 144 | |
biwa1400 | 0:3cd336aba723 | 145 | |
biwa1400 | 0:3cd336aba723 | 146 | void MIUN::SmartApp::unConfirmedTest() |
biwa1400 | 0:3cd336aba723 | 147 | { |
biwa1400 | 0:3cd336aba723 | 148 | logInfo("---unConfirmedTest Test:---"); |
biwa1400 | 0:3cd336aba723 | 149 | lora.changeAck(0); |
biwa1400 | 0:3cd336aba723 | 150 | lora.showInfo(); |
biwa1400 | 0:3cd336aba723 | 151 | while(true) |
biwa1400 | 0:3cd336aba723 | 152 | { |
biwa1400 | 0:3cd336aba723 | 153 | lora.joinNetwork(); |
biwa1400 | 0:3cd336aba723 | 154 | lora.showInfo(); |
biwa1400 | 0:3cd336aba723 | 155 | if(lora.send((std::string)"dabin,dabin",1)==true) |
biwa1400 | 0:3cd336aba723 | 156 | { |
biwa1400 | 0:3cd336aba723 | 157 | //logInfo("Receive***************: [%s]", lora.receive().c_str()); |
biwa1400 | 0:3cd336aba723 | 158 | } |
biwa1400 | 0:3cd336aba723 | 159 | sleep(); |
biwa1400 | 0:3cd336aba723 | 160 | logInfo("---After Sleep---"); |
biwa1400 | 0:3cd336aba723 | 161 | } |
biwa1400 | 0:3cd336aba723 | 162 | } |
biwa1400 | 0:3cd336aba723 | 163 | |
biwa1400 | 0:3cd336aba723 | 164 | |
biwa1400 | 0:3cd336aba723 | 165 | void MIUN::SmartApp::adaptSFTest() |
biwa1400 | 0:3cd336aba723 | 166 | { |
biwa1400 | 0:3cd336aba723 | 167 | logInfo("---adapt SF Test:---"); |
biwa1400 | 0:3cd336aba723 | 168 | lora.showInfo(); |
biwa1400 | 0:3cd336aba723 | 169 | while(true) |
biwa1400 | 0:3cd336aba723 | 170 | { |
biwa1400 | 0:3cd336aba723 | 171 | lora.joinNetwork(); |
biwa1400 | 0:3cd336aba723 | 172 | lora.showInfo(); |
biwa1400 | 0:3cd336aba723 | 173 | //lora.changeAdaptSF(true); |
biwa1400 | 0:3cd336aba723 | 174 | //lora.changeSF(20); |
biwa1400 | 0:3cd336aba723 | 175 | |
biwa1400 | 0:3cd336aba723 | 176 | if(lora.send((std::string)"dabin,dabin",1)==true) |
biwa1400 | 0:3cd336aba723 | 177 | { |
biwa1400 | 0:3cd336aba723 | 178 | // logInfo("Receive***************: [%s]", lora.receive().c_str()); |
biwa1400 | 0:3cd336aba723 | 179 | } |
biwa1400 | 0:3cd336aba723 | 180 | sleep(); |
biwa1400 | 0:3cd336aba723 | 181 | logInfo("---After Sleep---"); |
biwa1400 | 0:3cd336aba723 | 182 | } |
biwa1400 | 0:3cd336aba723 | 183 | } |
biwa1400 | 0:3cd336aba723 | 184 | |
biwa1400 | 1:5b29579a065e | 185 | void MIUN::SmartApp::setSleepTime(uint32_t inSleepTime) |
biwa1400 | 1:5b29579a065e | 186 | { |
biwa1400 | 1:5b29579a065e | 187 | lora.setSleepTime(inSleepTime); |
biwa1400 | 1:5b29579a065e | 188 | } |
biwa1400 | 1:5b29579a065e | 189 | |
biwa1400 | 0:3cd336aba723 | 190 | void MIUN::SmartApp::staQuality() |
biwa1400 | 0:3cd336aba723 | 191 | { |
biwa1400 | 0:3cd336aba723 | 192 | logInfo("---Start Test:---"); |
biwa1400 | 0:3cd336aba723 | 193 | lora.showInfo(); |
biwa1400 | 0:3cd336aba723 | 194 | int total = 0; |
biwa1400 | 0:3cd336aba723 | 195 | int truely = 0; |
biwa1400 | 0:3cd336aba723 | 196 | while(true) |
biwa1400 | 0:3cd336aba723 | 197 | { |
biwa1400 | 0:3cd336aba723 | 198 | total++; |
biwa1400 | 0:3cd336aba723 | 199 | lora.joinNetwork(); |
biwa1400 | 0:3cd336aba723 | 200 | lora.showInfo(); |
biwa1400 | 0:3cd336aba723 | 201 | if(lora.send((std::string)"dabin,dabin",1)==true) |
biwa1400 | 0:3cd336aba723 | 202 | { |
biwa1400 | 0:3cd336aba723 | 203 | truely++; |
biwa1400 | 0:3cd336aba723 | 204 | } |
biwa1400 | 0:3cd336aba723 | 205 | logInfo("*******Statistics Quality:*********:"); |
biwa1400 | 0:3cd336aba723 | 206 | logInfo("Total send: %d",total); |
biwa1400 | 0:3cd336aba723 | 207 | logInfo("Successful send: %d",truely); |
biwa1400 | 0:3cd336aba723 | 208 | logInfo("Successful Ratio: %f",(float)truely/total*100); |
biwa1400 | 0:3cd336aba723 | 209 | logInfo("***********************************"); |
biwa1400 | 0:3cd336aba723 | 210 | sleep(); |
biwa1400 | 0:3cd336aba723 | 211 | logInfo("---After Sleep---"); |
biwa1400 | 0:3cd336aba723 | 212 | } |
biwa1400 | 0:3cd336aba723 | 213 | } |