Easylube

Dependencies:   DS1820 libmDot mbed-rtos mbed

Committer:
TataLora
Date:
Thu Jul 07 06:53:09 2016 +0000
Revision:
0:7e7bd4f937c7
Child:
1:0fe7bd229e28
Alive, Power-Up en no_Signal toegevoegd

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TataLora 0:7e7bd4f937c7 1 #include "mbed.h"
TataLora 0:7e7bd4f937c7 2 #include "mDot.h"
TataLora 0:7e7bd4f937c7 3 #include "MTSLog.h"
TataLora 0:7e7bd4f937c7 4 #include <string>
TataLora 0:7e7bd4f937c7 5 #include <vector>
TataLora 0:7e7bd4f937c7 6 #include <algorithm>
TataLora 0:7e7bd4f937c7 7
TataLora 0:7e7bd4f937c7 8 typedef enum {NONE, STARTING, TURNING, ERR, ALIVE, NO_SIGNAL, POWER_UP} activity_type;
TataLora 0:7e7bd4f937c7 9
TataLora 0:7e7bd4f937c7 10
TataLora 0:7e7bd4f937c7 11
TataLora 0:7e7bd4f937c7 12 // these options must match the settings on your Conduit
TataLora 0:7e7bd4f937c7 13 // uncomment the following lines and edit their values to match your configuration
TataLora 0:7e7bd4f937c7 14 static std::string config_network_name = "MultiTech";
TataLora 0:7e7bd4f937c7 15 static std::string config_network_pass = "MultiTech";
TataLora 0:7e7bd4f937c7 16 static uint8_t config_frequency_sub_band = 1;
TataLora 0:7e7bd4f937c7 17
TataLora 0:7e7bd4f937c7 18 Timer t;
TataLora 0:7e7bd4f937c7 19 int isPulseActive = 0;
TataLora 0:7e7bd4f937c7 20 int isWaiting = 1;
TataLora 0:7e7bd4f937c7 21 activity_type activity = NONE;
TataLora 0:7e7bd4f937c7 22 int pulseCount = 0;
TataLora 0:7e7bd4f937c7 23 bool initial = 1;
TataLora 0:7e7bd4f937c7 24
TataLora 0:7e7bd4f937c7 25 void ConfigLora(mDot* dot)
TataLora 0:7e7bd4f937c7 26 {
TataLora 0:7e7bd4f937c7 27 int32_t ret;
TataLora 0:7e7bd4f937c7 28 Timer configTimer;
TataLora 0:7e7bd4f937c7 29 configTimer.reset();
TataLora 0:7e7bd4f937c7 30 configTimer.start();
TataLora 0:7e7bd4f937c7 31 //*******************************************
TataLora 0:7e7bd4f937c7 32 // configuration
TataLora 0:7e7bd4f937c7 33 //*******************************************
TataLora 0:7e7bd4f937c7 34 // reset to default config so we know what state we're in
TataLora 0:7e7bd4f937c7 35 dot->resetConfig();
TataLora 0:7e7bd4f937c7 36
TataLora 0:7e7bd4f937c7 37 dot->setLogLevel(mts::MTSLog::INFO_LEVEL);
TataLora 0:7e7bd4f937c7 38
TataLora 0:7e7bd4f937c7 39 // frequency sub band is only applicable in the 915 (US) frequency band
TataLora 0:7e7bd4f937c7 40 // if using a MultiTech Conduit gateway, use the same sub band as your Conduit (1-8) - the mDot will use the 8 channels in that sub band
TataLora 0:7e7bd4f937c7 41 // if using a gateway that supports all 64 channels, use sub band 0 - the mDot will use all 64 channels
TataLora 0:7e7bd4f937c7 42 logInfo("setting frequency sub band");
TataLora 0:7e7bd4f937c7 43 if ((ret = dot->setFrequencySubBand(config_frequency_sub_band)) != mDot::MDOT_OK) {
TataLora 0:7e7bd4f937c7 44 logError("failed to set frequency sub band %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
TataLora 0:7e7bd4f937c7 45 }
TataLora 0:7e7bd4f937c7 46
TataLora 0:7e7bd4f937c7 47 logInfo("setting network name");
TataLora 0:7e7bd4f937c7 48 if ((ret = dot->setNetworkName(config_network_name)) != mDot::MDOT_OK) {
TataLora 0:7e7bd4f937c7 49 logError("failed to set network name %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
TataLora 0:7e7bd4f937c7 50 }
TataLora 0:7e7bd4f937c7 51
TataLora 0:7e7bd4f937c7 52 logInfo("setting network password");
TataLora 0:7e7bd4f937c7 53 if ((ret = dot->setNetworkPassphrase(config_network_pass)) != mDot::MDOT_OK) {
TataLora 0:7e7bd4f937c7 54 logError("failed to set network password %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
TataLora 0:7e7bd4f937c7 55 }
TataLora 0:7e7bd4f937c7 56
TataLora 0:7e7bd4f937c7 57 // a higher spreading factor allows for longer range but lower throughput
TataLora 0:7e7bd4f937c7 58 // in the 915 (US) frequency band, spreading factors 7 - 10 are available
TataLora 0:7e7bd4f937c7 59 // in the 868 (EU) frequency band, spreading factors 7 - 12 are available
TataLora 0:7e7bd4f937c7 60 logInfo("setting TX spreading factor");
TataLora 0:7e7bd4f937c7 61 if ((ret = dot->setTxDataRate(mDot::SF_10)) != mDot::MDOT_OK) {
TataLora 0:7e7bd4f937c7 62 logError("failed to set TX datarate %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
TataLora 0:7e7bd4f937c7 63 }
TataLora 0:7e7bd4f937c7 64
TataLora 0:7e7bd4f937c7 65 // request receive confirmation of packets from the gateway
TataLora 0:7e7bd4f937c7 66 logInfo("enabling ACKs");
TataLora 0:7e7bd4f937c7 67 if ((ret = dot->setAck(1)) != mDot::MDOT_OK) {
TataLora 0:7e7bd4f937c7 68 logError("failed to enable ACKs %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
TataLora 0:7e7bd4f937c7 69 }
TataLora 0:7e7bd4f937c7 70
TataLora 0:7e7bd4f937c7 71 // set join mode to AUTO_OTA so the mDot doesn't have to rejoin after sleeping
TataLora 0:7e7bd4f937c7 72 logInfo("setting join mode to AUTO_OTA");
TataLora 0:7e7bd4f937c7 73 if ((ret = dot->setJoinMode(mDot::AUTO_OTA)) != mDot::MDOT_OK) {
TataLora 0:7e7bd4f937c7 74 logError("failed to set join mode %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
TataLora 0:7e7bd4f937c7 75 }
TataLora 0:7e7bd4f937c7 76
TataLora 0:7e7bd4f937c7 77 // save this configuration to the mDot's NVM
TataLora 0:7e7bd4f937c7 78 logInfo("saving config");
TataLora 0:7e7bd4f937c7 79 if (! dot->saveConfig()) {
TataLora 0:7e7bd4f937c7 80 logError("failed to save configuration");
TataLora 0:7e7bd4f937c7 81 }
TataLora 0:7e7bd4f937c7 82 //*******************************************
TataLora 0:7e7bd4f937c7 83 // end of configuration
TataLora 0:7e7bd4f937c7 84 //*******************************************
TataLora 0:7e7bd4f937c7 85
TataLora 0:7e7bd4f937c7 86 logInfo("Configuratie duurde: %f seconds", configTimer.read());
TataLora 0:7e7bd4f937c7 87 configTimer.stop();
TataLora 0:7e7bd4f937c7 88 }
TataLora 0:7e7bd4f937c7 89
TataLora 0:7e7bd4f937c7 90
TataLora 0:7e7bd4f937c7 91 void resetPulse(mDot* dot)
TataLora 0:7e7bd4f937c7 92 {
TataLora 0:7e7bd4f937c7 93 int32_t ret;
TataLora 0:7e7bd4f937c7 94 std::vector<uint8_t> data;
TataLora 0:7e7bd4f937c7 95 std::string data_Starten = "Starten";
TataLora 0:7e7bd4f937c7 96 std::string data_Draaien = "Draaien";
TataLora 0:7e7bd4f937c7 97 std::string data_Error = "Error!";
TataLora 0:7e7bd4f937c7 98 std::string data_Alive = "Alive";
TataLora 0:7e7bd4f937c7 99 std::string data_NoSignal = "NoSignal";
TataLora 0:7e7bd4f937c7 100 std::string data_PowerUp = "PowerUp";
TataLora 0:7e7bd4f937c7 101 std::string data_Onbekend = "Onbekend";
TataLora 0:7e7bd4f937c7 102 bool stuurBericht = 1;
TataLora 0:7e7bd4f937c7 103
TataLora 0:7e7bd4f937c7 104 isPulseActive = 0;
TataLora 0:7e7bd4f937c7 105
TataLora 0:7e7bd4f937c7 106 if(activity == NONE)
TataLora 0:7e7bd4f937c7 107 {
TataLora 0:7e7bd4f937c7 108 logInfo("Einde pulse %d stuks - Onbekend", pulseCount);
TataLora 0:7e7bd4f937c7 109 // format data for sending to the gateway
TataLora 0:7e7bd4f937c7 110 for (std::string::iterator it = data_Onbekend.begin(); it != data_Onbekend.end(); it++)
TataLora 0:7e7bd4f937c7 111 data.push_back((uint8_t) *it);
TataLora 0:7e7bd4f937c7 112 stuurBericht = 0;
TataLora 0:7e7bd4f937c7 113 }
TataLora 0:7e7bd4f937c7 114
TataLora 0:7e7bd4f937c7 115 if(activity == STARTING)
TataLora 0:7e7bd4f937c7 116 {
TataLora 0:7e7bd4f937c7 117 logInfo("Einde pulse %d stuks - Starten", pulseCount);
TataLora 0:7e7bd4f937c7 118 // format data for sending to the gateway
TataLora 0:7e7bd4f937c7 119 for (std::string::iterator it = data_Starten.begin(); it != data_Starten.end(); it++)
TataLora 0:7e7bd4f937c7 120 data.push_back((uint8_t) *it);
TataLora 0:7e7bd4f937c7 121 }
TataLora 0:7e7bd4f937c7 122
TataLora 0:7e7bd4f937c7 123 if(activity == TURNING)
TataLora 0:7e7bd4f937c7 124 {
TataLora 0:7e7bd4f937c7 125 logInfo("Einde pulse %d stuks - Draaien", pulseCount);
TataLora 0:7e7bd4f937c7 126 // format data for sending to the gateway
TataLora 0:7e7bd4f937c7 127 for (std::string::iterator it = data_Draaien.begin(); it != data_Draaien.end(); it++)
TataLora 0:7e7bd4f937c7 128 data.push_back((uint8_t) *it);
TataLora 0:7e7bd4f937c7 129 }
TataLora 0:7e7bd4f937c7 130
TataLora 0:7e7bd4f937c7 131 if(activity == ERR)
TataLora 0:7e7bd4f937c7 132 {
TataLora 0:7e7bd4f937c7 133 logInfo("Einde pulse %d stuks - Storing", pulseCount);
TataLora 0:7e7bd4f937c7 134 // format data for sending to the gateway
TataLora 0:7e7bd4f937c7 135 for (std::string::iterator it = data_Error.begin(); it != data_Error.end(); it++)
TataLora 0:7e7bd4f937c7 136 data.push_back((uint8_t) *it);
TataLora 0:7e7bd4f937c7 137 }
TataLora 0:7e7bd4f937c7 138
TataLora 0:7e7bd4f937c7 139 if(activity == NO_SIGNAL)
TataLora 0:7e7bd4f937c7 140 {
TataLora 0:7e7bd4f937c7 141 logInfo("Einde pulse %d stuks - No signal", pulseCount);
TataLora 0:7e7bd4f937c7 142 // format data for sending to the gateway
TataLora 0:7e7bd4f937c7 143 for (std::string::iterator it = data_NoSignal.begin(); it != data_NoSignal.end(); it++)
TataLora 0:7e7bd4f937c7 144 data.push_back((uint8_t) *it);
TataLora 0:7e7bd4f937c7 145 }
TataLora 0:7e7bd4f937c7 146
TataLora 0:7e7bd4f937c7 147 if(activity == ALIVE)
TataLora 0:7e7bd4f937c7 148 {
TataLora 0:7e7bd4f937c7 149 logInfo("Einde pulse %d stuks - Alive", pulseCount);
TataLora 0:7e7bd4f937c7 150 // format data for sending to the gateway
TataLora 0:7e7bd4f937c7 151 for (std::string::iterator it = data_Alive.begin(); it != data_Alive.end(); it++)
TataLora 0:7e7bd4f937c7 152 data.push_back((uint8_t) *it);
TataLora 0:7e7bd4f937c7 153 }
TataLora 0:7e7bd4f937c7 154
TataLora 0:7e7bd4f937c7 155 if(activity == POWER_UP)
TataLora 0:7e7bd4f937c7 156 {
TataLora 0:7e7bd4f937c7 157 logInfo("Einde pulse %d stuks - Power up", pulseCount);
TataLora 0:7e7bd4f937c7 158 // format data for sending to the gateway
TataLora 0:7e7bd4f937c7 159 for (std::string::iterator it = data_PowerUp.begin(); it != data_PowerUp.end(); it++)
TataLora 0:7e7bd4f937c7 160 data.push_back((uint8_t) *it);
TataLora 0:7e7bd4f937c7 161 }
TataLora 0:7e7bd4f937c7 162
TataLora 0:7e7bd4f937c7 163 pulseCount = 0;
TataLora 0:7e7bd4f937c7 164 isWaiting = 1;
TataLora 0:7e7bd4f937c7 165
TataLora 0:7e7bd4f937c7 166 if(!stuurBericht)
TataLora 0:7e7bd4f937c7 167 {
TataLora 0:7e7bd4f937c7 168 logInfo("Geen bericht versturen");
TataLora 0:7e7bd4f937c7 169 return;
TataLora 0:7e7bd4f937c7 170 }
TataLora 0:7e7bd4f937c7 171
TataLora 0:7e7bd4f937c7 172 ConfigLora(dot);
TataLora 0:7e7bd4f937c7 173
TataLora 0:7e7bd4f937c7 174 // join the network if not joined
TataLora 0:7e7bd4f937c7 175 /*if (!dot->getNetworkJoinStatus()) {
TataLora 0:7e7bd4f937c7 176 logInfo("network not joined, joining network");
TataLora 0:7e7bd4f937c7 177 if ((ret = dot->joinNetwork()) != mDot::MDOT_OK) {
TataLora 0:7e7bd4f937c7 178 logError("failed to join network %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
TataLora 0:7e7bd4f937c7 179 }
TataLora 0:7e7bd4f937c7 180 }
TataLora 0:7e7bd4f937c7 181 if (dot->getNetworkJoinStatus()) {
TataLora 0:7e7bd4f937c7 182 // send the data
TataLora 0:7e7bd4f937c7 183 // ACKs are enabled by default, so we're expecting to get one back
TataLora 0:7e7bd4f937c7 184 if ((ret = dot->send(data)) != mDot::MDOT_OK) {
TataLora 0:7e7bd4f937c7 185 logError("failed to send %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
TataLora 0:7e7bd4f937c7 186 } else {
TataLora 0:7e7bd4f937c7 187 logInfo("successfully sent data to gateway");
TataLora 0:7e7bd4f937c7 188 }
TataLora 0:7e7bd4f937c7 189 }
TataLora 0:7e7bd4f937c7 190
TataLora 0:7e7bd4f937c7 191 */
TataLora 0:7e7bd4f937c7 192
TataLora 0:7e7bd4f937c7 193 logInfo("joining network");
TataLora 0:7e7bd4f937c7 194 while ((ret = dot->joinNetwork()) != mDot::MDOT_OK) {
TataLora 0:7e7bd4f937c7 195 logError("failed to join network %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
TataLora 0:7e7bd4f937c7 196 // in the 868 (EU) frequency band, we need to wait until another channel is available before transmitting again
TataLora 0:7e7bd4f937c7 197 //osDelay(std::max((uint32_t)1000, (uint32_t)dot->getNextTxMs()));
TataLora 0:7e7bd4f937c7 198
TataLora 0:7e7bd4f937c7 199 // in the 868 (EU) frequency band, we need to wait until another channel is available before transmitting again
TataLora 0:7e7bd4f937c7 200 uint32_t sleep_time = std::max((uint32_t)10000, (uint32_t)dot->getNextTxMs()) / 1000;
TataLora 0:7e7bd4f937c7 201 logInfo("going to sleep...");
TataLora 0:7e7bd4f937c7 202
TataLora 0:7e7bd4f937c7 203 osDelay(std::max((uint32_t)5000, (uint32_t)dot->getNextTxMs()));
TataLora 0:7e7bd4f937c7 204 }
TataLora 0:7e7bd4f937c7 205
TataLora 0:7e7bd4f937c7 206 while (true) {
TataLora 0:7e7bd4f937c7 207 // send the data to the gateway
TataLora 0:7e7bd4f937c7 208 if ((ret = dot->send(data)) != mDot::MDOT_OK) {
TataLora 0:7e7bd4f937c7 209 logError("failed to send", ret, mDot::getReturnCodeString(ret).c_str());
TataLora 0:7e7bd4f937c7 210 } else {
TataLora 0:7e7bd4f937c7 211 logInfo("successfully sent data to gateway");
TataLora 0:7e7bd4f937c7 212 return;
TataLora 0:7e7bd4f937c7 213 }
TataLora 0:7e7bd4f937c7 214
TataLora 0:7e7bd4f937c7 215 // in the 868 (EU) frequency band, we need to wait until another channel is available before transmitting again
TataLora 0:7e7bd4f937c7 216 osDelay(std::max((uint32_t)5000, (uint32_t)dot->getNextTxMs()));
TataLora 0:7e7bd4f937c7 217 }
TataLora 0:7e7bd4f937c7 218
TataLora 0:7e7bd4f937c7 219 // in the 868 (EU) frequency band, we need to wait until another channel is available before transmitting again
TataLora 0:7e7bd4f937c7 220 //uint32_t sleep_time = std::max((uint32_t)10000, (uint32_t)dot->getNextTxMs()) / 1000;
TataLora 0:7e7bd4f937c7 221 //logInfo("going to sleep...");
TataLora 0:7e7bd4f937c7 222 }
TataLora 0:7e7bd4f937c7 223
TataLora 0:7e7bd4f937c7 224 int main() {
TataLora 0:7e7bd4f937c7 225 mDot* dot;
TataLora 0:7e7bd4f937c7 226 DigitalIn input(PA_0);
TataLora 0:7e7bd4f937c7 227 DigitalIn data0(PB_0);
TataLora 0:7e7bd4f937c7 228 DigitalIn data1(PB_1);
TataLora 0:7e7bd4f937c7 229 DigitalIn data2(PA_1);
TataLora 0:7e7bd4f937c7 230
TataLora 0:7e7bd4f937c7 231 // get a mDot handle
TataLora 0:7e7bd4f937c7 232 dot = mDot::getInstance();
TataLora 0:7e7bd4f937c7 233
TataLora 0:7e7bd4f937c7 234 // print library version information
TataLora 0:7e7bd4f937c7 235 logInfo("V: %s", dot->getId().c_str());
TataLora 0:7e7bd4f937c7 236
TataLora 0:7e7bd4f937c7 237
TataLora 0:7e7bd4f937c7 238 if(input)
TataLora 0:7e7bd4f937c7 239 {
TataLora 0:7e7bd4f937c7 240 uint8_t data = 0;
TataLora 0:7e7bd4f937c7 241 if(data0)
TataLora 0:7e7bd4f937c7 242 {
TataLora 0:7e7bd4f937c7 243 data |= (1 << 0);
TataLora 0:7e7bd4f937c7 244 }
TataLora 0:7e7bd4f937c7 245 if(data1)
TataLora 0:7e7bd4f937c7 246 {
TataLora 0:7e7bd4f937c7 247 data |= (1 << 1);
TataLora 0:7e7bd4f937c7 248 }
TataLora 0:7e7bd4f937c7 249 if(data2)
TataLora 0:7e7bd4f937c7 250 {
TataLora 0:7e7bd4f937c7 251 data |= (1 << 2);
TataLora 0:7e7bd4f937c7 252 }
TataLora 0:7e7bd4f937c7 253
TataLora 0:7e7bd4f937c7 254 if(data == 0)
TataLora 0:7e7bd4f937c7 255 {
TataLora 0:7e7bd4f937c7 256 activity = POWER_UP;
TataLora 0:7e7bd4f937c7 257 logInfo("Starting with data: POWER_UP");
TataLora 0:7e7bd4f937c7 258 }
TataLora 0:7e7bd4f937c7 259
TataLora 0:7e7bd4f937c7 260 if(data == 1)
TataLora 0:7e7bd4f937c7 261 {
TataLora 0:7e7bd4f937c7 262 activity = ERR;
TataLora 0:7e7bd4f937c7 263 logInfo("Starting with data: ERROR");
TataLora 0:7e7bd4f937c7 264 }
TataLora 0:7e7bd4f937c7 265
TataLora 0:7e7bd4f937c7 266 if(data == 2)
TataLora 0:7e7bd4f937c7 267 {
TataLora 0:7e7bd4f937c7 268 activity = TURNING;
TataLora 0:7e7bd4f937c7 269 logInfo("Starting with data: TURNING");
TataLora 0:7e7bd4f937c7 270 }
TataLora 0:7e7bd4f937c7 271
TataLora 0:7e7bd4f937c7 272 if(data == 3)
TataLora 0:7e7bd4f937c7 273 {
TataLora 0:7e7bd4f937c7 274 activity = STARTING;
TataLora 0:7e7bd4f937c7 275 logInfo("Starting with data: STARTING");
TataLora 0:7e7bd4f937c7 276 }
TataLora 0:7e7bd4f937c7 277 if(data == 4)
TataLora 0:7e7bd4f937c7 278 {
TataLora 0:7e7bd4f937c7 279 activity = ALIVE;
TataLora 0:7e7bd4f937c7 280 logInfo("Starting with data: ALIVE");
TataLora 0:7e7bd4f937c7 281 }
TataLora 0:7e7bd4f937c7 282 resetPulse(dot);
TataLora 0:7e7bd4f937c7 283 }
TataLora 0:7e7bd4f937c7 284 else
TataLora 0:7e7bd4f937c7 285 {
TataLora 0:7e7bd4f937c7 286 activity = NO_SIGNAL;
TataLora 0:7e7bd4f937c7 287 logInfo("Signal-pin was niet hoog");
TataLora 0:7e7bd4f937c7 288 resetPulse(dot);
TataLora 0:7e7bd4f937c7 289 }
TataLora 0:7e7bd4f937c7 290
TataLora 0:7e7bd4f937c7 291 //32 minuten slapen of wachten op een interrupt
TataLora 0:7e7bd4f937c7 292 dot->sleep(1920, mDot::RTC_ALARM_OR_INTERRUPT, true);
TataLora 0:7e7bd4f937c7 293
TataLora 0:7e7bd4f937c7 294
TataLora 0:7e7bd4f937c7 295
TataLora 0:7e7bd4f937c7 296 //logInfo("Pulsen inspecteren");
TataLora 0:7e7bd4f937c7 297
TataLora 0:7e7bd4f937c7 298 /*t.start();
TataLora 0:7e7bd4f937c7 299
TataLora 0:7e7bd4f937c7 300 int oldValue = 2;
TataLora 0:7e7bd4f937c7 301
TataLora 0:7e7bd4f937c7 302 while (true) {
TataLora 0:7e7bd4f937c7 303 int newLedValue = input;
TataLora 0:7e7bd4f937c7 304 int newValue = input.read();
TataLora 0:7e7bd4f937c7 305 int diff;
TataLora 0:7e7bd4f937c7 306
TataLora 0:7e7bd4f937c7 307 if(newValue > oldValue)
TataLora 0:7e7bd4f937c7 308 {
TataLora 0:7e7bd4f937c7 309 diff = newValue - oldValue;
TataLora 0:7e7bd4f937c7 310 }
TataLora 0:7e7bd4f937c7 311 else
TataLora 0:7e7bd4f937c7 312 {
TataLora 0:7e7bd4f937c7 313 diff = oldValue - newValue;
TataLora 0:7e7bd4f937c7 314 }
TataLora 0:7e7bd4f937c7 315
TataLora 0:7e7bd4f937c7 316
TataLora 0:7e7bd4f937c7 317 if(isPulseActive)
TataLora 0:7e7bd4f937c7 318 {
TataLora 0:7e7bd4f937c7 319 if(t.read_ms() > 1200)
TataLora 0:7e7bd4f937c7 320 {
TataLora 0:7e7bd4f937c7 321 if(pulseCount < 3)
TataLora 0:7e7bd4f937c7 322 {
TataLora 0:7e7bd4f937c7 323 activity = NONE;
TataLora 0:7e7bd4f937c7 324 }
TataLora 0:7e7bd4f937c7 325
TataLora 0:7e7bd4f937c7 326 t.stop();
TataLora 0:7e7bd4f937c7 327 resetPulse(dot);
TataLora 0:7e7bd4f937c7 328 //printf("Slapen\r\n");
TataLora 0:7e7bd4f937c7 329 // go to deepsleep and wake up automatically sleep_time seconds later
TataLora 0:7e7bd4f937c7 330 dot->sleep(20, mDot::INTERRUPT, true);
TataLora 0:7e7bd4f937c7 331 }
TataLora 0:7e7bd4f937c7 332 else if(activity == ERR)
TataLora 0:7e7bd4f937c7 333 {
TataLora 0:7e7bd4f937c7 334 if(pulseCount > 5)
TataLora 0:7e7bd4f937c7 335 {
TataLora 0:7e7bd4f937c7 336 t.stop();
TataLora 0:7e7bd4f937c7 337 resetPulse(dot);
TataLora 0:7e7bd4f937c7 338 break;
TataLora 0:7e7bd4f937c7 339 }
TataLora 0:7e7bd4f937c7 340 }
TataLora 0:7e7bd4f937c7 341 }
TataLora 0:7e7bd4f937c7 342 if(initial)
TataLora 0:7e7bd4f937c7 343 {
TataLora 0:7e7bd4f937c7 344 if(t.read_ms() > 1200)
TataLora 0:7e7bd4f937c7 345 {
TataLora 0:7e7bd4f937c7 346 logInfo("Geen pulsen gedetecteerd, slapen");
TataLora 0:7e7bd4f937c7 347 dot->sleep(0, mDot::INTERRUPT, true);
TataLora 0:7e7bd4f937c7 348 }
TataLora 0:7e7bd4f937c7 349 }
TataLora 0:7e7bd4f937c7 350
TataLora 0:7e7bd4f937c7 351 if(diff >= 1)
TataLora 0:7e7bd4f937c7 352 {
TataLora 0:7e7bd4f937c7 353
TataLora 0:7e7bd4f937c7 354 if(newValue)
TataLora 0:7e7bd4f937c7 355 {
TataLora 0:7e7bd4f937c7 356 initial = 0;
TataLora 0:7e7bd4f937c7 357 t.stop();
TataLora 0:7e7bd4f937c7 358 t.reset();
TataLora 0:7e7bd4f937c7 359 t.start();
TataLora 0:7e7bd4f937c7 360 isPulseActive = 1;
TataLora 0:7e7bd4f937c7 361 //logInfo("Start ");
TataLora 0:7e7bd4f937c7 362 //dot->sleep(0, mDot::INTERRUPT, false);
TataLora 0:7e7bd4f937c7 363 }
TataLora 0:7e7bd4f937c7 364 else if(isPulseActive)
TataLora 0:7e7bd4f937c7 365 {
TataLora 0:7e7bd4f937c7 366 t.stop();
TataLora 0:7e7bd4f937c7 367 logInfo("Positieve puls duur %f seconds", t.read());
TataLora 0:7e7bd4f937c7 368
TataLora 0:7e7bd4f937c7 369 int timeInMs = t.read_ms();
TataLora 0:7e7bd4f937c7 370
TataLora 0:7e7bd4f937c7 371 if(timeInMs > 990 && timeInMs < 1020)
TataLora 0:7e7bd4f937c7 372 {
TataLora 0:7e7bd4f937c7 373 activity = STARTING;
TataLora 0:7e7bd4f937c7 374 }
TataLora 0:7e7bd4f937c7 375 else if(timeInMs > 220 && timeInMs < 260)
TataLora 0:7e7bd4f937c7 376 {
TataLora 0:7e7bd4f937c7 377 activity = TURNING;
TataLora 0:7e7bd4f937c7 378 }
TataLora 0:7e7bd4f937c7 379 else if(timeInMs > 88 && timeInMs < 92)
TataLora 0:7e7bd4f937c7 380 {
TataLora 0:7e7bd4f937c7 381 activity = ALIVE;
TataLora 0:7e7bd4f937c7 382 dot->sleep(20, mDot::INTERRUPT, true);
TataLora 0:7e7bd4f937c7 383 }
TataLora 0:7e7bd4f937c7 384 else if(timeInMs > 32 && timeInMs < 40)
TataLora 0:7e7bd4f937c7 385 {
TataLora 0:7e7bd4f937c7 386 activity = ERR;
TataLora 0:7e7bd4f937c7 387 }
TataLora 0:7e7bd4f937c7 388 else if(timeInMs > 20)
TataLora 0:7e7bd4f937c7 389 {
TataLora 0:7e7bd4f937c7 390 activity = NONE;
TataLora 0:7e7bd4f937c7 391 }
TataLora 0:7e7bd4f937c7 392
TataLora 0:7e7bd4f937c7 393 pulseCount++;
TataLora 0:7e7bd4f937c7 394 t.reset();
TataLora 0:7e7bd4f937c7 395 t.start();
TataLora 0:7e7bd4f937c7 396 //dot->sleep(2, mDot::RTC_ALARM, false);
TataLora 0:7e7bd4f937c7 397 }
TataLora 0:7e7bd4f937c7 398 //printf("analog value: %d\r\n", newValue);
TataLora 0:7e7bd4f937c7 399 }
TataLora 0:7e7bd4f937c7 400 oldValue = newValue;
TataLora 0:7e7bd4f937c7 401
TataLora 0:7e7bd4f937c7 402 if(!isWaiting)
TataLora 0:7e7bd4f937c7 403 {
TataLora 0:7e7bd4f937c7 404 //printf("Slapen\r\n");
TataLora 0:7e7bd4f937c7 405 //dot->sleep(4, mDot::RTC_ALARM);
TataLora 0:7e7bd4f937c7 406 }
TataLora 0:7e7bd4f937c7 407
TataLora 0:7e7bd4f937c7 408 }
TataLora 0:7e7bd4f937c7 409
TataLora 0:7e7bd4f937c7 410 logInfo("Nu nergens meer op reageren.....");
TataLora 0:7e7bd4f937c7 411
TataLora 0:7e7bd4f937c7 412 dot->sleep(20, mDot::INTERRUPT, true);
TataLora 0:7e7bd4f937c7 413 */
TataLora 0:7e7bd4f937c7 414 return 0;
TataLora 0:7e7bd4f937c7 415 }