SmartApp_Miun

Dependents:   Light

Committer:
biwa1400
Date:
Mon Oct 02 16:09:25 2017 +0000
Revision:
2:506fb35771f6
Parent:
1:5b29579a065e
201710002;

Who changed what in which revision?

UserRevisionLine numberNew 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 }