Using the mDot to receive data.

Dependencies:   libmDot-dev-mbed5-deprecated ISL29011

Fork of mdot-examples by 3mdeb

Committer:
SDesign2018
Date:
Mon Apr 02 03:13:35 2018 +0000
Revision:
3:6bd9904f6c3e
Parent:
2:b44a9032fcc5
Child:
4:ee3739e513a9
Values are converted correctly

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SDesign2018 2:b44a9032fcc5 1 /*
SDesign2018 2:b44a9032fcc5 2 3/27/2018 mdot version 3.1.0, mbed version 5.7.4
SDesign2018 2:b44a9032fcc5 3 */
SDesign2018 2:b44a9032fcc5 4
SDesign2018 2:b44a9032fcc5 5 #include "dot_util.h"
SDesign2018 2:b44a9032fcc5 6 #include "RadioEvent.h"
SDesign2018 2:b44a9032fcc5 7 #include <string.h>
SDesign2018 3:6bd9904f6c3e 8 #include <cstdlib>
SDesign2018 2:b44a9032fcc5 9
SDesign2018 2:b44a9032fcc5 10 #if ACTIVE_EXAMPLE == PEER_TO_PEER_EXAMPLE
SDesign2018 2:b44a9032fcc5 11
SDesign2018 2:b44a9032fcc5 12 /////////////////////////////////////////////////////////////////////////////
SDesign2018 2:b44a9032fcc5 13 // -------------------- DOT LIBRARY REQUIRED ------------------------------//
SDesign2018 2:b44a9032fcc5 14 // * Because these example programs can be used for both mDot and xDot //
SDesign2018 2:b44a9032fcc5 15 // devices, the LoRa stack is not included. The libmDot library should //
SDesign2018 2:b44a9032fcc5 16 // be imported if building for mDot devices. The libxDot library //
SDesign2018 2:b44a9032fcc5 17 // should be imported if building for xDot devices. //
SDesign2018 2:b44a9032fcc5 18 // * https://developer.mbed.org/teams/MultiTech/code/libmDot-dev-mbed5/ //
SDesign2018 2:b44a9032fcc5 19 // * https://developer.mbed.org/teams/MultiTech/code/libmDot-mbed5/ //
SDesign2018 2:b44a9032fcc5 20 // * https://developer.mbed.org/teams/MultiTech/code/libxDot-dev-mbed5/ //
SDesign2018 2:b44a9032fcc5 21 // * https://developer.mbed.org/teams/MultiTech/code/libxDot-mbed5/ //
SDesign2018 2:b44a9032fcc5 22 /////////////////////////////////////////////////////////////////////////////
SDesign2018 2:b44a9032fcc5 23
SDesign2018 2:b44a9032fcc5 24 /////////////////////////////////////////////////////////////
SDesign2018 2:b44a9032fcc5 25 // * these options must match between the two devices in //
SDesign2018 2:b44a9032fcc5 26 // order for communication to be successful
SDesign2018 2:b44a9032fcc5 27 /////////////////////////////////////////////////////////////
SDesign2018 2:b44a9032fcc5 28 static uint8_t network_address[] = { 0x00, 0x11, 0x22, 0x33 };
SDesign2018 2:b44a9032fcc5 29 static uint8_t network_session_key[] = { 0x00, 0x11, 0x22, 0x33, 0x00, 0x11, 0x22, 0x33, 0x00, 0x11, 0x22, 0x33, 0x00, 0x11, 0x22, 0x33 };
SDesign2018 2:b44a9032fcc5 30 static uint8_t data_session_key[] = { 0x33, 0x22, 0x11, 0x00, 0x33, 0x22, 0x11, 0x00, 0x33, 0x22, 0x11, 0x00, 0x33, 0x22, 0x11, 0x00 };
SDesign2018 2:b44a9032fcc5 31
SDesign2018 2:b44a9032fcc5 32 mDot* dot = NULL;
SDesign2018 2:b44a9032fcc5 33 lora::ChannelPlan* plan = NULL;
SDesign2018 2:b44a9032fcc5 34
SDesign2018 2:b44a9032fcc5 35 Serial pc(USBTX, USBRX);
SDesign2018 2:b44a9032fcc5 36
SDesign2018 3:6bd9904f6c3e 37
SDesign2018 3:6bd9904f6c3e 38 // Storage for int conversions
SDesign2018 3:6bd9904f6c3e 39 unsigned int i_Temperature;
SDesign2018 3:6bd9904f6c3e 40 unsigned int i_X;
SDesign2018 3:6bd9904f6c3e 41 unsigned int i_Y;
SDesign2018 3:6bd9904f6c3e 42 unsigned int i_Z;
SDesign2018 3:6bd9904f6c3e 43
SDesign2018 3:6bd9904f6c3e 44 // Storage for twos complement
SDesign2018 3:6bd9904f6c3e 45 unsigned int i2s_Temperature;
SDesign2018 3:6bd9904f6c3e 46 unsigned int i2s_X;
SDesign2018 3:6bd9904f6c3e 47 unsigned int i2s_Y;
SDesign2018 3:6bd9904f6c3e 48 unsigned int i2s_Z;
SDesign2018 3:6bd9904f6c3e 49
SDesign2018 3:6bd9904f6c3e 50 unsigned int twosComplement(unsigned int value, unsigned int resolutionMask,unsigned int bitMask);
SDesign2018 3:6bd9904f6c3e 51
SDesign2018 2:b44a9032fcc5 52
SDesign2018 2:b44a9032fcc5 53 class myEvent : public mDotEvent
SDesign2018 2:b44a9032fcc5 54 {
SDesign2018 2:b44a9032fcc5 55
SDesign2018 2:b44a9032fcc5 56 public:
SDesign2018 2:b44a9032fcc5 57 myEvent() {}
SDesign2018 2:b44a9032fcc5 58
SDesign2018 2:b44a9032fcc5 59 virtual ~myEvent() {
SDesign2018 2:b44a9032fcc5 60 }
SDesign2018 2:b44a9032fcc5 61
SDesign2018 2:b44a9032fcc5 62 /*!
SDesign2018 2:b44a9032fcc5 63 * MAC layer event callback prototype.
SDesign2018 2:b44a9032fcc5 64 *
SDesign2018 2:b44a9032fcc5 65 * \param [IN] flags Bit field indicating the MAC events occurred
SDesign2018 2:b44a9032fcc5 66 * \param [IN] info Details about MAC events occurred
SDesign2018 2:b44a9032fcc5 67 */
SDesign2018 2:b44a9032fcc5 68 virtual void MacEvent(LoRaMacEventFlags* flags, LoRaMacEventInfo* info) {
SDesign2018 2:b44a9032fcc5 69
SDesign2018 2:b44a9032fcc5 70
SDesign2018 2:b44a9032fcc5 71 if (flags->Bits.Rx) {
SDesign2018 2:b44a9032fcc5 72
SDesign2018 2:b44a9032fcc5 73 //logDebug("Rx %d bytes", info->RxBufferSize);
SDesign2018 2:b44a9032fcc5 74 if (info->RxBufferSize > 0) {
SDesign2018 3:6bd9904f6c3e 75
SDesign2018 2:b44a9032fcc5 76 std::string whatData = "";
SDesign2018 2:b44a9032fcc5 77 int whereDataTypeFlag = 0;
SDesign2018 2:b44a9032fcc5 78 std::string s_temperature = "";
SDesign2018 2:b44a9032fcc5 79 std::string s_XData = "";
SDesign2018 2:b44a9032fcc5 80 std::string s_YData = "";
SDesign2018 2:b44a9032fcc5 81 std::string s_ZData = "";
SDesign2018 2:b44a9032fcc5 82
SDesign2018 2:b44a9032fcc5 83 std::string data = mts::Text::bin2hexString(info->RxBuffer, info->RxBufferSize).c_str();
SDesign2018 2:b44a9032fcc5 84
SDesign2018 2:b44a9032fcc5 85
SDesign2018 2:b44a9032fcc5 86
SDesign2018 2:b44a9032fcc5 87 // print RX data as string and hexadecimal
SDesign2018 2:b44a9032fcc5 88 std::string rx((const char*)info->RxBuffer, info->RxBufferSize);
SDesign2018 3:6bd9904f6c3e 89 pc.printf("Receive data: %s [%s]\r\n", rx.c_str(), data.c_str());
SDesign2018 2:b44a9032fcc5 90 pc.printf("Data is of length: %d\n\r", data.length());
SDesign2018 2:b44a9032fcc5 91
SDesign2018 2:b44a9032fcc5 92 whereDataTypeFlag = data.find("01");
SDesign2018 2:b44a9032fcc5 93 s_temperature = data.substr(whereDataTypeFlag + 2, 4);
SDesign2018 3:6bd9904f6c3e 94 data.erase(0,6);
SDesign2018 2:b44a9032fcc5 95
SDesign2018 2:b44a9032fcc5 96 whereDataTypeFlag = data.find("02");
SDesign2018 2:b44a9032fcc5 97 s_XData = data.substr(whereDataTypeFlag + 2, 4);
SDesign2018 2:b44a9032fcc5 98
SDesign2018 2:b44a9032fcc5 99 whereDataTypeFlag = data.find("03");
SDesign2018 2:b44a9032fcc5 100 s_YData = data.substr(whereDataTypeFlag + 2, 4);
SDesign2018 2:b44a9032fcc5 101
SDesign2018 2:b44a9032fcc5 102 whereDataTypeFlag = data.find("04");
SDesign2018 2:b44a9032fcc5 103 s_ZData = data.substr(whereDataTypeFlag + 2, 4);
SDesign2018 2:b44a9032fcc5 104
SDesign2018 3:6bd9904f6c3e 105 i_Temperature = strtoul(s_temperature.c_str(), NULL, 16);
SDesign2018 3:6bd9904f6c3e 106 i_X = strtoul(s_XData.c_str(), NULL, 16);
SDesign2018 3:6bd9904f6c3e 107 i_Y = strtoul(s_YData.c_str(), NULL, 16);
SDesign2018 3:6bd9904f6c3e 108 i_Z = strtoul(s_ZData.c_str(), NULL, 16);
SDesign2018 3:6bd9904f6c3e 109
SDesign2018 3:6bd9904f6c3e 110 // 0x1FFF->only needs 13bits, 0x1000->13th bit is sign bit
SDesign2018 3:6bd9904f6c3e 111 i2s_Temperature = twosComplement(i_Temperature, 0x1FFF, 0x1000);
SDesign2018 3:6bd9904f6c3e 112
SDesign2018 3:6bd9904f6c3e 113 // 0x0FFF->resolution is 12bits, 0x0800->12th bit is sign bit
SDesign2018 3:6bd9904f6c3e 114 i2s_X = twosComplement(i_X, 0x0FFF, 0x0800);
SDesign2018 3:6bd9904f6c3e 115 i2s_Y = twosComplement(i_Y, 0x0FFF, 0x0800);
SDesign2018 3:6bd9904f6c3e 116 i2s_Z = twosComplement(i_Z, 0x0FFF, 0x0800);
SDesign2018 3:6bd9904f6c3e 117
SDesign2018 3:6bd9904f6c3e 118 // Stoi not in mbed
SDesign2018 3:6bd9904f6c3e 119 // i_Temperature = std::stoi(s_temperature,nullptr,16);
SDesign2018 3:6bd9904f6c3e 120 // i_X = std::stoi(s_XData,nullptr,16);
SDesign2018 3:6bd9904f6c3e 121 // i_Y = std::stoi(s_YData,nullptr,16);
SDesign2018 3:6bd9904f6c3e 122 // i_Z = std::stoi(s_ZData,nullptr,16);
SDesign2018 3:6bd9904f6c3e 123
SDesign2018 3:6bd9904f6c3e 124 // atoi freezes
SDesign2018 3:6bd9904f6c3e 125 // i_Temperature = std::atoi(s_temperature.c_str());
SDesign2018 3:6bd9904f6c3e 126 // i_X = std::atoi(s_XData.c_str());
SDesign2018 3:6bd9904f6c3e 127 // i_Y = std::atoi(s_YData.c_str());
SDesign2018 3:6bd9904f6c3e 128 // i_Z = std::atoi(s_ZData.c_str());
SDesign2018 3:6bd9904f6c3e 129
SDesign2018 3:6bd9904f6c3e 130 // pc.printf("Temperature is: %s\n\r", s_temperature);
SDesign2018 3:6bd9904f6c3e 131 // pc.printf("X: %s \n\r", s_XData);
SDesign2018 3:6bd9904f6c3e 132 // pc.printf("Y: %s \n\r", s_YData);
SDesign2018 3:6bd9904f6c3e 133 // pc.printf("Z: %s \n\r", s_ZData);
SDesign2018 3:6bd9904f6c3e 134
SDesign2018 3:6bd9904f6c3e 135 pc.printf("Temperature is: %d (%d)[%s]\n\r", i2s_Temperature, i_Temperature, s_temperature.c_str());
SDesign2018 3:6bd9904f6c3e 136 pc.printf("X: %d (%d) [%s]\n\r", i2s_X, i_X, s_XData.c_str());
SDesign2018 3:6bd9904f6c3e 137 pc.printf("Y: %d (%d) [%s]\n\r", i2s_Y, i_Y, s_YData.c_str());
SDesign2018 3:6bd9904f6c3e 138 pc.printf("Z: %d (%d) [%s]\n\r", i2s_Z, i_Z, s_ZData.c_str());
SDesign2018 2:b44a9032fcc5 139
SDesign2018 2:b44a9032fcc5 140
SDesign2018 2:b44a9032fcc5 141
SDesign2018 2:b44a9032fcc5 142
SDesign2018 2:b44a9032fcc5 143
SDesign2018 2:b44a9032fcc5 144 /*for(; it < 2; it++)
SDesign2018 2:b44a9032fcc5 145 {
SDesign2018 2:b44a9032fcc5 146 whatData = strcat(whatData,data[it])
SDesign2018 2:b44a9032fcc5 147 }
SDesign2018 2:b44a9032fcc5 148 pc.printf("%s is the first 2 numbers\n\r", whatData);*/
SDesign2018 2:b44a9032fcc5 149
SDesign2018 2:b44a9032fcc5 150 }
SDesign2018 2:b44a9032fcc5 151 }
SDesign2018 2:b44a9032fcc5 152 }
SDesign2018 2:b44a9032fcc5 153 };
SDesign2018 2:b44a9032fcc5 154
SDesign2018 3:6bd9904f6c3e 155 /*
SDesign2018 3:6bd9904f6c3e 156 @Param:
SDesign2018 3:6bd9904f6c3e 157 value: pass by value, the value you want to evaluate for twos complement
SDesign2018 3:6bd9904f6c3e 158 resolutionMask: declare at function call, hex representation of which bits are unneeded
SDesign2018 3:6bd9904f6c3e 159 bitMask: declare at function call, hex representation of which bit is sign bit
SDesign2018 3:6bd9904f6c3e 160 @return:
SDesign2018 3:6bd9904f6c3e 161 unsigned int converted value, if needed
SDesign2018 3:6bd9904f6c3e 162 */
SDesign2018 3:6bd9904f6c3e 163 unsigned int twosComplement(unsigned int value, unsigned int resolutionMask,unsigned int bitMask)
SDesign2018 3:6bd9904f6c3e 164 {
SDesign2018 3:6bd9904f6c3e 165 if(value & bitMask)
SDesign2018 3:6bd9904f6c3e 166 {
SDesign2018 3:6bd9904f6c3e 167 value = ~value;
SDesign2018 3:6bd9904f6c3e 168 value = value & resolutionMask;
SDesign2018 3:6bd9904f6c3e 169 value += 1;
SDesign2018 3:6bd9904f6c3e 170 }
SDesign2018 3:6bd9904f6c3e 171
SDesign2018 3:6bd9904f6c3e 172 return value;
SDesign2018 3:6bd9904f6c3e 173 }
SDesign2018 3:6bd9904f6c3e 174
SDesign2018 2:b44a9032fcc5 175 int main() {
SDesign2018 2:b44a9032fcc5 176 // Custom event handler for automatically displaying RX data
SDesign2018 2:b44a9032fcc5 177 //RadioEvent events;
SDesign2018 2:b44a9032fcc5 178 myEvent _event;
SDesign2018 2:b44a9032fcc5 179
SDesign2018 2:b44a9032fcc5 180 uint32_t tx_frequency;
SDesign2018 2:b44a9032fcc5 181 uint8_t tx_datarate;
SDesign2018 2:b44a9032fcc5 182 uint8_t tx_power;
SDesign2018 2:b44a9032fcc5 183 uint8_t frequency_band;
SDesign2018 2:b44a9032fcc5 184 uint32_t receiveStatus;
SDesign2018 2:b44a9032fcc5 185
SDesign2018 2:b44a9032fcc5 186 pc.baud(115200);
SDesign2018 2:b44a9032fcc5 187
SDesign2018 2:b44a9032fcc5 188 mts::MTSLog::setLogLevel(mts::MTSLog::TRACE_LEVEL);
SDesign2018 2:b44a9032fcc5 189
SDesign2018 2:b44a9032fcc5 190
SDesign2018 2:b44a9032fcc5 191 plan = new lora::ChannelPlan_US915();
SDesign2018 2:b44a9032fcc5 192
SDesign2018 2:b44a9032fcc5 193 logInfo("Now asserting");
SDesign2018 2:b44a9032fcc5 194 assert(plan);
SDesign2018 2:b44a9032fcc5 195
SDesign2018 2:b44a9032fcc5 196 dot = mDot::getInstance(plan);
SDesign2018 2:b44a9032fcc5 197 assert(dot);
SDesign2018 2:b44a9032fcc5 198
SDesign2018 2:b44a9032fcc5 199 logInfo("mbed-os library version: %d", MBED_LIBRARY_VERSION);
SDesign2018 2:b44a9032fcc5 200
SDesign2018 2:b44a9032fcc5 201 // start from a well-known state
SDesign2018 2:b44a9032fcc5 202 logInfo("defaulting Dot configuration");
SDesign2018 2:b44a9032fcc5 203 dot->resetConfig();
SDesign2018 2:b44a9032fcc5 204
SDesign2018 2:b44a9032fcc5 205
SDesign2018 2:b44a9032fcc5 206 // make sure library logging is turned on
SDesign2018 2:b44a9032fcc5 207 dot->setLogLevel(mts::MTSLog::INFO_LEVEL);
SDesign2018 2:b44a9032fcc5 208
SDesign2018 2:b44a9032fcc5 209 // attach the custom events handler
SDesign2018 2:b44a9032fcc5 210 //dot->setEvents(&events);
SDesign2018 2:b44a9032fcc5 211 dot->setEvents(&_event);
SDesign2018 2:b44a9032fcc5 212
SDesign2018 2:b44a9032fcc5 213 // update configuration if necessary
SDesign2018 2:b44a9032fcc5 214 if (dot->getJoinMode() != mDot::PEER_TO_PEER) {
SDesign2018 2:b44a9032fcc5 215 logInfo("changing network join mode to PEER_TO_PEER");
SDesign2018 2:b44a9032fcc5 216 if (dot->setJoinMode(mDot::PEER_TO_PEER) != mDot::MDOT_OK) {
SDesign2018 2:b44a9032fcc5 217 logError("failed to set network join mode to PEER_TO_PEER");
SDesign2018 2:b44a9032fcc5 218 }
SDesign2018 2:b44a9032fcc5 219 }
SDesign2018 2:b44a9032fcc5 220 frequency_band = dot->getFrequencyBand();
SDesign2018 2:b44a9032fcc5 221 switch (frequency_band) {
SDesign2018 2:b44a9032fcc5 222 case lora::ChannelPlan::EU868_OLD:
SDesign2018 2:b44a9032fcc5 223 case lora::ChannelPlan::EU868:
SDesign2018 2:b44a9032fcc5 224 // 250kHz channels achieve higher throughput
SDesign2018 2:b44a9032fcc5 225 // DR_6 : SF7 @ 250kHz
SDesign2018 2:b44a9032fcc5 226 // DR_0 - DR_5 (125kHz channels) available but much slower
SDesign2018 2:b44a9032fcc5 227 tx_frequency = 869850000;
SDesign2018 2:b44a9032fcc5 228 tx_datarate = lora::DR_6;
SDesign2018 2:b44a9032fcc5 229 // the 869850000 frequency is 100% duty cycle if the total power is under 7 dBm - tx power 4 + antenna gain 3 = 7
SDesign2018 2:b44a9032fcc5 230 tx_power = 4;
SDesign2018 2:b44a9032fcc5 231 break;
SDesign2018 2:b44a9032fcc5 232
SDesign2018 2:b44a9032fcc5 233 case lora::ChannelPlan::US915_OLD:
SDesign2018 2:b44a9032fcc5 234 case lora::ChannelPlan::US915:
SDesign2018 2:b44a9032fcc5 235 case lora::ChannelPlan::AU915_OLD:
SDesign2018 2:b44a9032fcc5 236 case lora::ChannelPlan::AU915:
SDesign2018 2:b44a9032fcc5 237 // 500kHz channels achieve highest throughput
SDesign2018 2:b44a9032fcc5 238 // DR_8 : SF12 @ 500kHz
SDesign2018 2:b44a9032fcc5 239 // DR_9 : SF11 @ 500kHz
SDesign2018 2:b44a9032fcc5 240 // DR_10 : SF10 @ 500kHz
SDesign2018 2:b44a9032fcc5 241 // DR_11 : SF9 @ 500kHz
SDesign2018 2:b44a9032fcc5 242 // DR_12 : SF8 @ 500kHz
SDesign2018 2:b44a9032fcc5 243 // DR_13 : SF7 @ 500kHz
SDesign2018 2:b44a9032fcc5 244 // DR_0 - DR_3 (125kHz channels) available but much slower
SDesign2018 2:b44a9032fcc5 245 tx_frequency = 915500000;
SDesign2018 2:b44a9032fcc5 246 tx_datarate = lora::DR_13;
SDesign2018 2:b44a9032fcc5 247 // 915 bands have no duty cycle restrictions, set tx power to max
SDesign2018 2:b44a9032fcc5 248 tx_power = 20;
SDesign2018 2:b44a9032fcc5 249 break;
SDesign2018 2:b44a9032fcc5 250
SDesign2018 2:b44a9032fcc5 251 case lora::ChannelPlan::AS923:
SDesign2018 2:b44a9032fcc5 252 case lora::ChannelPlan::AS923_JAPAN:
SDesign2018 2:b44a9032fcc5 253 // 250kHz channels achieve higher throughput
SDesign2018 2:b44a9032fcc5 254 // DR_6 : SF7 @ 250kHz
SDesign2018 2:b44a9032fcc5 255 // DR_0 - DR_5 (125kHz channels) available but much slower
SDesign2018 2:b44a9032fcc5 256 tx_frequency = 924800000;
SDesign2018 2:b44a9032fcc5 257 tx_datarate = lora::DR_6;
SDesign2018 2:b44a9032fcc5 258 tx_power = 16;
SDesign2018 2:b44a9032fcc5 259 break;
SDesign2018 2:b44a9032fcc5 260
SDesign2018 2:b44a9032fcc5 261 case lora::ChannelPlan::KR920:
SDesign2018 2:b44a9032fcc5 262 // DR_5 : SF7 @ 125kHz
SDesign2018 2:b44a9032fcc5 263 tx_frequency = 922700000;
SDesign2018 2:b44a9032fcc5 264 tx_datarate = lora::DR_5;
SDesign2018 2:b44a9032fcc5 265 tx_power = 14;
SDesign2018 2:b44a9032fcc5 266 break;
SDesign2018 2:b44a9032fcc5 267
SDesign2018 2:b44a9032fcc5 268 default:
SDesign2018 2:b44a9032fcc5 269 while (true) {
SDesign2018 2:b44a9032fcc5 270 logFatal("no known channel plan in use - extra configuration is needed!");
SDesign2018 2:b44a9032fcc5 271 wait(5);
SDesign2018 2:b44a9032fcc5 272 }
SDesign2018 2:b44a9032fcc5 273 break;
SDesign2018 2:b44a9032fcc5 274 }
SDesign2018 2:b44a9032fcc5 275 // in PEER_TO_PEER mode there is no join request/response transaction
SDesign2018 2:b44a9032fcc5 276 // as long as both Dots are configured correctly, they should be able to communicate
SDesign2018 2:b44a9032fcc5 277 update_peer_to_peer_config(network_address, network_session_key, data_session_key, tx_frequency, tx_datarate, tx_power);
SDesign2018 2:b44a9032fcc5 278
SDesign2018 2:b44a9032fcc5 279 // save changes to configuration
SDesign2018 2:b44a9032fcc5 280 logInfo("saving configuration");
SDesign2018 2:b44a9032fcc5 281 if (!dot->saveConfig()) {
SDesign2018 2:b44a9032fcc5 282 logError("failed to save configuration");
SDesign2018 2:b44a9032fcc5 283 }
SDesign2018 2:b44a9032fcc5 284
SDesign2018 2:b44a9032fcc5 285 // display configuration
SDesign2018 2:b44a9032fcc5 286 display_config();
SDesign2018 2:b44a9032fcc5 287 //
SDesign2018 2:b44a9032fcc5 288 //#if defined(TARGET_XDOT_L151CC)
SDesign2018 2:b44a9032fcc5 289 // // configure the ISL29011 sensor on the xDot-DK for continuous ambient light sampling, 16 bit conversion, and maximum range
SDesign2018 2:b44a9032fcc5 290 // lux.setMode(ISL29011::ALS_CONT);
SDesign2018 2:b44a9032fcc5 291 // lux.setResolution(ISL29011::ADC_16BIT);
SDesign2018 2:b44a9032fcc5 292 // lux.setRange(ISL29011::RNG_64000);
SDesign2018 2:b44a9032fcc5 293 //#endif
SDesign2018 2:b44a9032fcc5 294
SDesign2018 2:b44a9032fcc5 295
SDesign2018 2:b44a9032fcc5 296 while (true) {
SDesign2018 2:b44a9032fcc5 297
SDesign2018 2:b44a9032fcc5 298 std::vector<uint8_t> rx_data;
SDesign2018 2:b44a9032fcc5 299
SDesign2018 2:b44a9032fcc5 300 // join network if not joined
SDesign2018 2:b44a9032fcc5 301 if (!dot->getNetworkJoinStatus()) {
SDesign2018 2:b44a9032fcc5 302 join_network();
SDesign2018 2:b44a9032fcc5 303 }
SDesign2018 2:b44a9032fcc5 304
SDesign2018 2:b44a9032fcc5 305
SDesign2018 2:b44a9032fcc5 306
SDesign2018 2:b44a9032fcc5 307 }
SDesign2018 2:b44a9032fcc5 308
SDesign2018 2:b44a9032fcc5 309 return 0;
SDesign2018 2:b44a9032fcc5 310 }
SDesign2018 2:b44a9032fcc5 311
SDesign2018 2:b44a9032fcc5 312 #endif
SDesign2018 2:b44a9032fcc5 313