Test program for FF1705.
Dependencies: libxDot-dev-mbed5-deprecated ISL29011
Example/src/peer_to_peer_example.cpp@1:12a289bd6b82, 2017-11-07 (annotated)
- Committer:
- jernej_vrscaj
- Date:
- Tue Nov 07 11:22:06 2017 +0000
- Revision:
- 1:12a289bd6b82
- Parent:
- 0:d96e7e513c16
- Child:
- 2:9b44950b84af
Testing program for FF1705.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jernej_vrscaj | 0:d96e7e513c16 | 1 | #include "dot_util.h" |
jernej_vrscaj | 0:d96e7e513c16 | 2 | #include "RadioEvent.h" |
jernej_vrscaj | 0:d96e7e513c16 | 3 | #include "mDotEvent.h" |
jernej_vrscaj | 0:d96e7e513c16 | 4 | #include "C12832.h" |
jernej_vrscaj | 0:d96e7e513c16 | 5 | |
jernej_vrscaj | 0:d96e7e513c16 | 6 | #if ACTIVE_EXAMPLE == PEER_TO_PEER_EXAMPLE |
jernej_vrscaj | 0:d96e7e513c16 | 7 | |
jernej_vrscaj | 1:12a289bd6b82 | 8 | #define TEST_board |
jernej_vrscaj | 1:12a289bd6b82 | 9 | //#define REFERENCE_board |
jernej_vrscaj | 0:d96e7e513c16 | 10 | |
jernej_vrscaj | 0:d96e7e513c16 | 11 | |
jernej_vrscaj | 0:d96e7e513c16 | 12 | ///////////////////////////////////////////////////////////////////////////// |
jernej_vrscaj | 0:d96e7e513c16 | 13 | // -------------------- DOT LIBRARY REQUIRED ------------------------------// |
jernej_vrscaj | 0:d96e7e513c16 | 14 | // * Because these example programs can be used for both mDot and xDot // |
jernej_vrscaj | 0:d96e7e513c16 | 15 | // devices, the LoRa stack is not included. The libmDot library should // |
jernej_vrscaj | 0:d96e7e513c16 | 16 | // be imported if building for mDot devices. The libxDot library // |
jernej_vrscaj | 0:d96e7e513c16 | 17 | // should be imported if building for xDot devices. // |
jernej_vrscaj | 0:d96e7e513c16 | 18 | // * https://developer.mbed.org/teams/MultiTech/code/libmDot-dev-mbed5/ // |
jernej_vrscaj | 0:d96e7e513c16 | 19 | // * https://developer.mbed.org/teams/MultiTech/code/libmDot-mbed5/ // |
jernej_vrscaj | 0:d96e7e513c16 | 20 | // * https://developer.mbed.org/teams/MultiTech/code/libxDot-dev-mbed5/ // |
jernej_vrscaj | 0:d96e7e513c16 | 21 | // * https://developer.mbed.org/teams/MultiTech/code/libxDot-mbed5/ // |
jernej_vrscaj | 0:d96e7e513c16 | 22 | ///////////////////////////////////////////////////////////////////////////// |
jernej_vrscaj | 0:d96e7e513c16 | 23 | |
jernej_vrscaj | 0:d96e7e513c16 | 24 | ///////////////////////////////////////////////////////////// |
jernej_vrscaj | 0:d96e7e513c16 | 25 | // * these options must match between the two devices in // |
jernej_vrscaj | 0:d96e7e513c16 | 26 | // order for communication to be successful |
jernej_vrscaj | 0:d96e7e513c16 | 27 | ///////////////////////////////////////////////////////////// |
jernej_vrscaj | 0:d96e7e513c16 | 28 | |
jernej_vrscaj | 0:d96e7e513c16 | 29 | /*============================= INIT =========================================*/ |
jernej_vrscaj | 0:d96e7e513c16 | 30 | |
jernej_vrscaj | 0:d96e7e513c16 | 31 | static uint8_t network_address[] = { 0x01, 0x02, 0x03, 0x04 }; |
jernej_vrscaj | 0:d96e7e513c16 | 32 | static uint8_t network_session_key[] = { 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04 }; |
jernej_vrscaj | 0:d96e7e513c16 | 33 | static uint8_t data_session_key[] = { 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04 }; |
jernej_vrscaj | 0:d96e7e513c16 | 34 | |
jernej_vrscaj | 0:d96e7e513c16 | 35 | mDot* dot = NULL; |
jernej_vrscaj | 0:d96e7e513c16 | 36 | lora::ChannelPlan* plan = NULL; |
jernej_vrscaj | 0:d96e7e513c16 | 37 | |
jernej_vrscaj | 0:d96e7e513c16 | 38 | Serial pc(USBTX, USBRX); |
jernej_vrscaj | 0:d96e7e513c16 | 39 | |
jernej_vrscaj | 0:d96e7e513c16 | 40 | #ifdef TEST_board |
jernej_vrscaj | 0:d96e7e513c16 | 41 | C12832 lcd(PB_15, PB_13, PB_14, PA_12, PB_12); // init LCD |
jernej_vrscaj | 0:d96e7e513c16 | 42 | |
jernej_vrscaj | 0:d96e7e513c16 | 43 | DigitalIn joystick_up(PB_2); // init button to start the send routine |
jernej_vrscaj | 0:d96e7e513c16 | 44 | DigitalOut led(PB_8, 1); // init LED to indicate sending messages |
jernej_vrscaj | 0:d96e7e513c16 | 45 | |
jernej_vrscaj | 0:d96e7e513c16 | 46 | DigitalIn BTN_1(PA_5); // init LoRa button |
jernej_vrscaj | 0:d96e7e513c16 | 47 | DigitalOut LED_1(PA_4, 0); // init LoRa LED |
jernej_vrscaj | 0:d96e7e513c16 | 48 | |
jernej_vrscaj | 0:d96e7e513c16 | 49 | |
jernej_vrscaj | 0:d96e7e513c16 | 50 | uint8_t trx = 0x2F; // initial sending value (0x2F dec 47) |
jernej_vrscaj | 0:d96e7e513c16 | 51 | uint8_t sent = 0; |
jernej_vrscaj | 0:d96e7e513c16 | 52 | uint8_t sent_rx = 0; |
jernej_vrscaj | 0:d96e7e513c16 | 53 | |
jernej_vrscaj | 0:d96e7e513c16 | 54 | #elif defined(REFERENCE_board) |
jernej_vrscaj | 0:d96e7e513c16 | 55 | DigitalOut led(PA_4, 0); // init LED to indicate sending messages |
jernej_vrscaj | 0:d96e7e513c16 | 56 | |
jernej_vrscaj | 0:d96e7e513c16 | 57 | uint8_t received = 0; // check for RadioEvent |
jernej_vrscaj | 0:d96e7e513c16 | 58 | |
jernej_vrscaj | 0:d96e7e513c16 | 59 | uint16_t *ptr_rx; // init pointer to RxBuffer |
jernej_vrscaj | 0:d96e7e513c16 | 60 | |
jernej_vrscaj | 0:d96e7e513c16 | 61 | #endif |
jernej_vrscaj | 0:d96e7e513c16 | 62 | |
jernej_vrscaj | 0:d96e7e513c16 | 63 | /*============================ END INIT ======================================*/ |
jernej_vrscaj | 0:d96e7e513c16 | 64 | |
jernej_vrscaj | 0:d96e7e513c16 | 65 | |
jernej_vrscaj | 0:d96e7e513c16 | 66 | /*============================== MAIN ========================================*/ |
jernej_vrscaj | 0:d96e7e513c16 | 67 | |
jernej_vrscaj | 0:d96e7e513c16 | 68 | int main() |
jernej_vrscaj | 0:d96e7e513c16 | 69 | { |
jernej_vrscaj | 0:d96e7e513c16 | 70 | // Custom event handler for automatically displaying RX data |
jernej_vrscaj | 0:d96e7e513c16 | 71 | RadioEvent events; |
jernej_vrscaj | 0:d96e7e513c16 | 72 | uint32_t tx_frequency; |
jernej_vrscaj | 0:d96e7e513c16 | 73 | uint8_t tx_datarate; |
jernej_vrscaj | 0:d96e7e513c16 | 74 | uint8_t tx_power; |
jernej_vrscaj | 0:d96e7e513c16 | 75 | uint8_t frequency_band; |
jernej_vrscaj | 0:d96e7e513c16 | 76 | |
jernej_vrscaj | 0:d96e7e513c16 | 77 | // sending data |
jernej_vrscaj | 0:d96e7e513c16 | 78 | |
jernej_vrscaj | 0:d96e7e513c16 | 79 | pc.baud(115200); |
jernej_vrscaj | 0:d96e7e513c16 | 80 | |
jernej_vrscaj | 0:d96e7e513c16 | 81 | mts::MTSLog::setLogLevel(mts::MTSLog::TRACE_LEVEL); |
jernej_vrscaj | 0:d96e7e513c16 | 82 | |
jernej_vrscaj | 0:d96e7e513c16 | 83 | #if CHANNEL_PLAN == CP_US915 |
jernej_vrscaj | 0:d96e7e513c16 | 84 | plan = new lora::ChannelPlan_US915(); |
jernej_vrscaj | 0:d96e7e513c16 | 85 | #elif CHANNEL_PLAN == CP_AU915 |
jernej_vrscaj | 0:d96e7e513c16 | 86 | plan = new lora::ChannelPlan_AU915(); |
jernej_vrscaj | 0:d96e7e513c16 | 87 | #elif CHANNEL_PLAN == CP_EU868 |
jernej_vrscaj | 0:d96e7e513c16 | 88 | plan = new lora::ChannelPlan_EU868(); |
jernej_vrscaj | 0:d96e7e513c16 | 89 | #elif CHANNEL_PLAN == CP_KR920 |
jernej_vrscaj | 0:d96e7e513c16 | 90 | plan = new lora::ChannelPlan_KR920(); |
jernej_vrscaj | 0:d96e7e513c16 | 91 | #elif CHANNEL_PLAN == CP_AS923 |
jernej_vrscaj | 0:d96e7e513c16 | 92 | plan = new lora::ChannelPlan_AS923(); |
jernej_vrscaj | 0:d96e7e513c16 | 93 | #elif CHANNEL_PLAN == CP_AS923_JAPAN |
jernej_vrscaj | 0:d96e7e513c16 | 94 | plan = new lora::ChannelPlan_AS923_Japan(); |
jernej_vrscaj | 0:d96e7e513c16 | 95 | #elif CHANNEL_PLAN == CP_IN865 |
jernej_vrscaj | 0:d96e7e513c16 | 96 | plan = new lora::ChannelPlan_IN865(); |
jernej_vrscaj | 0:d96e7e513c16 | 97 | #endif |
jernej_vrscaj | 0:d96e7e513c16 | 98 | assert(plan); |
jernej_vrscaj | 0:d96e7e513c16 | 99 | |
jernej_vrscaj | 0:d96e7e513c16 | 100 | dot = mDot::getInstance(plan); |
jernej_vrscaj | 0:d96e7e513c16 | 101 | assert(dot); |
jernej_vrscaj | 0:d96e7e513c16 | 102 | |
jernej_vrscaj | 0:d96e7e513c16 | 103 | logInfo("mbed-os library version: %d", MBED_LIBRARY_VERSION); |
jernej_vrscaj | 0:d96e7e513c16 | 104 | |
jernej_vrscaj | 0:d96e7e513c16 | 105 | // start from a well-known state |
jernej_vrscaj | 0:d96e7e513c16 | 106 | logInfo("defaulting Dot configuration"); |
jernej_vrscaj | 0:d96e7e513c16 | 107 | dot->resetConfig(); |
jernej_vrscaj | 0:d96e7e513c16 | 108 | |
jernej_vrscaj | 0:d96e7e513c16 | 109 | // make sure library logging is turned on |
jernej_vrscaj | 0:d96e7e513c16 | 110 | dot->setLogLevel(mts::MTSLog::INFO_LEVEL); |
jernej_vrscaj | 0:d96e7e513c16 | 111 | |
jernej_vrscaj | 0:d96e7e513c16 | 112 | // attach the custom events handler |
jernej_vrscaj | 0:d96e7e513c16 | 113 | dot->setEvents(&events); |
jernej_vrscaj | 0:d96e7e513c16 | 114 | |
jernej_vrscaj | 0:d96e7e513c16 | 115 | // update configuration if necessary |
jernej_vrscaj | 0:d96e7e513c16 | 116 | if (dot->getJoinMode() != mDot::PEER_TO_PEER) { |
jernej_vrscaj | 0:d96e7e513c16 | 117 | logInfo("changing network join mode to PEER_TO_PEER"); |
jernej_vrscaj | 0:d96e7e513c16 | 118 | if (dot->setJoinMode(mDot::PEER_TO_PEER) != mDot::MDOT_OK) { |
jernej_vrscaj | 0:d96e7e513c16 | 119 | logError("failed to set network join mode to PEER_TO_PEER"); |
jernej_vrscaj | 0:d96e7e513c16 | 120 | } |
jernej_vrscaj | 0:d96e7e513c16 | 121 | } |
jernej_vrscaj | 0:d96e7e513c16 | 122 | frequency_band = dot->getFrequencyBand(); |
jernej_vrscaj | 0:d96e7e513c16 | 123 | switch (frequency_band) { |
jernej_vrscaj | 0:d96e7e513c16 | 124 | case lora::ChannelPlan::EU868_OLD: |
jernej_vrscaj | 0:d96e7e513c16 | 125 | case lora::ChannelPlan::EU868: |
jernej_vrscaj | 0:d96e7e513c16 | 126 | // 250kHz channels achieve higher throughput |
jernej_vrscaj | 0:d96e7e513c16 | 127 | // DR_6 : SF7 @ 250kHz |
jernej_vrscaj | 0:d96e7e513c16 | 128 | // DR_0 - DR_5 (125kHz channels) available but much slower |
jernej_vrscaj | 0:d96e7e513c16 | 129 | tx_frequency = 869850000; |
jernej_vrscaj | 0:d96e7e513c16 | 130 | tx_datarate = lora::DR_6; |
jernej_vrscaj | 0:d96e7e513c16 | 131 | // the 869850000 frequency is 100% duty cycle if the total power is under 7 dBm - tx power 4 + antenna gain 3 = 7 |
jernej_vrscaj | 0:d96e7e513c16 | 132 | tx_power = 4; |
jernej_vrscaj | 0:d96e7e513c16 | 133 | break; |
jernej_vrscaj | 0:d96e7e513c16 | 134 | |
jernej_vrscaj | 0:d96e7e513c16 | 135 | case lora::ChannelPlan::US915_OLD: |
jernej_vrscaj | 0:d96e7e513c16 | 136 | case lora::ChannelPlan::US915: |
jernej_vrscaj | 0:d96e7e513c16 | 137 | case lora::ChannelPlan::AU915_OLD: |
jernej_vrscaj | 0:d96e7e513c16 | 138 | case lora::ChannelPlan::AU915: |
jernej_vrscaj | 0:d96e7e513c16 | 139 | // 500kHz channels achieve highest throughput |
jernej_vrscaj | 0:d96e7e513c16 | 140 | // DR_8 : SF12 @ 500kHz |
jernej_vrscaj | 0:d96e7e513c16 | 141 | // DR_9 : SF11 @ 500kHz |
jernej_vrscaj | 0:d96e7e513c16 | 142 | // DR_10 : SF10 @ 500kHz |
jernej_vrscaj | 0:d96e7e513c16 | 143 | // DR_11 : SF9 @ 500kHz |
jernej_vrscaj | 0:d96e7e513c16 | 144 | // DR_12 : SF8 @ 500kHz |
jernej_vrscaj | 0:d96e7e513c16 | 145 | // DR_13 : SF7 @ 500kHz |
jernej_vrscaj | 0:d96e7e513c16 | 146 | // DR_0 - DR_3 (125kHz channels) available but much slower |
jernej_vrscaj | 0:d96e7e513c16 | 147 | tx_frequency = 915500000; |
jernej_vrscaj | 0:d96e7e513c16 | 148 | tx_datarate = lora::DR_13; |
jernej_vrscaj | 0:d96e7e513c16 | 149 | // 915 bands have no duty cycle restrictions, set tx power to max |
jernej_vrscaj | 0:d96e7e513c16 | 150 | tx_power = 20; |
jernej_vrscaj | 0:d96e7e513c16 | 151 | break; |
jernej_vrscaj | 0:d96e7e513c16 | 152 | |
jernej_vrscaj | 0:d96e7e513c16 | 153 | case lora::ChannelPlan::AS923: |
jernej_vrscaj | 0:d96e7e513c16 | 154 | case lora::ChannelPlan::AS923_JAPAN: |
jernej_vrscaj | 0:d96e7e513c16 | 155 | // 250kHz channels achieve higher throughput |
jernej_vrscaj | 0:d96e7e513c16 | 156 | // DR_6 : SF7 @ 250kHz |
jernej_vrscaj | 0:d96e7e513c16 | 157 | // DR_0 - DR_5 (125kHz channels) available but much slower |
jernej_vrscaj | 0:d96e7e513c16 | 158 | tx_frequency = 924800000; |
jernej_vrscaj | 0:d96e7e513c16 | 159 | tx_datarate = lora::DR_6; |
jernej_vrscaj | 0:d96e7e513c16 | 160 | tx_power = 16; |
jernej_vrscaj | 0:d96e7e513c16 | 161 | break; |
jernej_vrscaj | 0:d96e7e513c16 | 162 | |
jernej_vrscaj | 0:d96e7e513c16 | 163 | case lora::ChannelPlan::KR920: |
jernej_vrscaj | 0:d96e7e513c16 | 164 | // DR_5 : SF7 @ 125kHz |
jernej_vrscaj | 0:d96e7e513c16 | 165 | tx_frequency = 922700000; |
jernej_vrscaj | 0:d96e7e513c16 | 166 | tx_datarate = lora::DR_5; |
jernej_vrscaj | 0:d96e7e513c16 | 167 | tx_power = 14; |
jernej_vrscaj | 0:d96e7e513c16 | 168 | break; |
jernej_vrscaj | 0:d96e7e513c16 | 169 | |
jernej_vrscaj | 0:d96e7e513c16 | 170 | default: |
jernej_vrscaj | 0:d96e7e513c16 | 171 | while (true) { |
jernej_vrscaj | 0:d96e7e513c16 | 172 | logFatal("no known channel plan in use - extra configuration is needed!"); |
jernej_vrscaj | 0:d96e7e513c16 | 173 | wait(5); |
jernej_vrscaj | 0:d96e7e513c16 | 174 | } |
jernej_vrscaj | 0:d96e7e513c16 | 175 | break; |
jernej_vrscaj | 0:d96e7e513c16 | 176 | } |
jernej_vrscaj | 0:d96e7e513c16 | 177 | // in PEER_TO_PEER mode there is no join request/response transaction |
jernej_vrscaj | 0:d96e7e513c16 | 178 | // as long as both Dots are configured correctly, they should be able to communicate |
jernej_vrscaj | 0:d96e7e513c16 | 179 | update_peer_to_peer_config(network_address, network_session_key, data_session_key, tx_frequency, tx_datarate, tx_power); |
jernej_vrscaj | 0:d96e7e513c16 | 180 | |
jernej_vrscaj | 0:d96e7e513c16 | 181 | // save changes to configuration |
jernej_vrscaj | 0:d96e7e513c16 | 182 | logInfo("saving configuration"); |
jernej_vrscaj | 0:d96e7e513c16 | 183 | if (!dot->saveConfig()) { |
jernej_vrscaj | 0:d96e7e513c16 | 184 | logError("failed to save configuration"); |
jernej_vrscaj | 0:d96e7e513c16 | 185 | } |
jernej_vrscaj | 0:d96e7e513c16 | 186 | |
jernej_vrscaj | 0:d96e7e513c16 | 187 | // display configuration |
jernej_vrscaj | 0:d96e7e513c16 | 188 | display_config(); |
jernej_vrscaj | 0:d96e7e513c16 | 189 | |
jernej_vrscaj | 0:d96e7e513c16 | 190 | #ifdef TEST_board |
jernej_vrscaj | 0:d96e7e513c16 | 191 | |
jernej_vrscaj | 0:d96e7e513c16 | 192 | while (true) { |
jernej_vrscaj | 0:d96e7e513c16 | 193 | |
jernej_vrscaj | 0:d96e7e513c16 | 194 | lcd.locate(0,0); |
jernej_vrscaj | 0:d96e7e513c16 | 195 | lcd.printf("Zacni test s pritiskom na JOYSTICK tipko..."); |
jernej_vrscaj | 0:d96e7e513c16 | 196 | |
jernej_vrscaj | 0:d96e7e513c16 | 197 | // join network if not joined |
jernej_vrscaj | 0:d96e7e513c16 | 198 | if (!dot->getNetworkJoinStatus()) { |
jernej_vrscaj | 0:d96e7e513c16 | 199 | join_network(); |
jernej_vrscaj | 0:d96e7e513c16 | 200 | } |
jernej_vrscaj | 0:d96e7e513c16 | 201 | |
jernej_vrscaj | 0:d96e7e513c16 | 202 | while(!BTN_1) LED_1 = 1; // press btn to light up led |
jernej_vrscaj | 0:d96e7e513c16 | 203 | LED_1 = 0; // clear LED |
jernej_vrscaj | 0:d96e7e513c16 | 204 | |
jernej_vrscaj | 0:d96e7e513c16 | 205 | |
jernej_vrscaj | 0:d96e7e513c16 | 206 | if(joystick_up) { // wait for user input |
jernej_vrscaj | 0:d96e7e513c16 | 207 | |
jernej_vrscaj | 0:d96e7e513c16 | 208 | sent = 1; |
jernej_vrscaj | 0:d96e7e513c16 | 209 | |
jernej_vrscaj | 0:d96e7e513c16 | 210 | lcd.cls(); |
jernej_vrscaj | 0:d96e7e513c16 | 211 | led = 0; |
jernej_vrscaj | 0:d96e7e513c16 | 212 | |
jernej_vrscaj | 0:d96e7e513c16 | 213 | std::vector<uint8_t> tx_data; |
jernej_vrscaj | 0:d96e7e513c16 | 214 | |
jernej_vrscaj | 0:d96e7e513c16 | 215 | trx++; // +1 to value to be send |
jernej_vrscaj | 0:d96e7e513c16 | 216 | tx_data.push_back((trx >> 8) & 0xFF); // shift data eg. 0x0031 -> 0x3100 |
jernej_vrscaj | 0:d96e7e513c16 | 217 | tx_data.push_back(trx & 0xFF); |
jernej_vrscaj | 0:d96e7e513c16 | 218 | logInfo("send_data: 0x%x", trx); |
jernej_vrscaj | 0:d96e7e513c16 | 219 | |
jernej_vrscaj | 0:d96e7e513c16 | 220 | lcd.locate(0,0); |
jernej_vrscaj | 0:d96e7e513c16 | 221 | lcd.printf("Poslano: %u", trx); |
jernej_vrscaj | 0:d96e7e513c16 | 222 | |
jernej_vrscaj | 0:d96e7e513c16 | 223 | send_data(tx_data); // send data |
jernej_vrscaj | 0:d96e7e513c16 | 224 | |
jernej_vrscaj | 0:d96e7e513c16 | 225 | wait(1); |
jernej_vrscaj | 0:d96e7e513c16 | 226 | |
jernej_vrscaj | 0:d96e7e513c16 | 227 | if(!(sent && sent_rx)) |
jernej_vrscaj | 0:d96e7e513c16 | 228 | { |
jernej_vrscaj | 0:d96e7e513c16 | 229 | |
jernej_vrscaj | 0:d96e7e513c16 | 230 | lcd.locate(0,10); |
jernej_vrscaj | 0:d96e7e513c16 | 231 | lcd.printf("FAIL!"); |
jernej_vrscaj | 0:d96e7e513c16 | 232 | lcd.locate(0,20); |
jernej_vrscaj | 0:d96e7e513c16 | 233 | lcd.printf("Preveri REFERENCNO platico."); |
jernej_vrscaj | 0:d96e7e513c16 | 234 | } |
jernej_vrscaj | 0:d96e7e513c16 | 235 | |
jernej_vrscaj | 0:d96e7e513c16 | 236 | wait(4); |
jernej_vrscaj | 0:d96e7e513c16 | 237 | |
jernej_vrscaj | 0:d96e7e513c16 | 238 | sent = 0; |
jernej_vrscaj | 0:d96e7e513c16 | 239 | sent_rx = 0; |
jernej_vrscaj | 0:d96e7e513c16 | 240 | |
jernej_vrscaj | 0:d96e7e513c16 | 241 | lcd.cls(); |
jernej_vrscaj | 0:d96e7e513c16 | 242 | led = 1; |
jernej_vrscaj | 0:d96e7e513c16 | 243 | |
jernej_vrscaj | 0:d96e7e513c16 | 244 | } |
jernej_vrscaj | 0:d96e7e513c16 | 245 | } |
jernej_vrscaj | 0:d96e7e513c16 | 246 | |
jernej_vrscaj | 0:d96e7e513c16 | 247 | #elif defined(REFERENCE_board) |
jernej_vrscaj | 0:d96e7e513c16 | 248 | |
jernej_vrscaj | 0:d96e7e513c16 | 249 | while (true) { |
jernej_vrscaj | 0:d96e7e513c16 | 250 | |
jernej_vrscaj | 0:d96e7e513c16 | 251 | std::vector<uint8_t> tx_data; |
jernej_vrscaj | 0:d96e7e513c16 | 252 | |
jernej_vrscaj | 0:d96e7e513c16 | 253 | // join network if not joined |
jernej_vrscaj | 0:d96e7e513c16 | 254 | if (!dot->getNetworkJoinStatus()) { |
jernej_vrscaj | 0:d96e7e513c16 | 255 | join_network(); |
jernej_vrscaj | 0:d96e7e513c16 | 256 | } |
jernej_vrscaj | 0:d96e7e513c16 | 257 | |
jernej_vrscaj | 0:d96e7e513c16 | 258 | if(received) // RadioEvent happened |
jernej_vrscaj | 0:d96e7e513c16 | 259 | { |
jernej_vrscaj | 0:d96e7e513c16 | 260 | |
jernej_vrscaj | 0:d96e7e513c16 | 261 | led = 1; |
jernej_vrscaj | 0:d96e7e513c16 | 262 | |
jernej_vrscaj | 0:d96e7e513c16 | 263 | received = 0; // clear event flag |
jernej_vrscaj | 0:d96e7e513c16 | 264 | ++*ptr_rx; // +1 to received value |
jernej_vrscaj | 0:d96e7e513c16 | 265 | tx_data.push_back((*ptr_rx >> 8) & 0xFF); // shift data eg. 0x0031 -> 0x3100 |
jernej_vrscaj | 0:d96e7e513c16 | 266 | tx_data.push_back(*ptr_rx & 0xFF); |
jernej_vrscaj | 0:d96e7e513c16 | 267 | logInfo("Sent *ptr_rx: %#x", *ptr_rx); |
jernej_vrscaj | 0:d96e7e513c16 | 268 | send_data(tx_data); // then send back |
jernej_vrscaj | 0:d96e7e513c16 | 269 | |
jernej_vrscaj | 0:d96e7e513c16 | 270 | wait(1); |
jernej_vrscaj | 0:d96e7e513c16 | 271 | |
jernej_vrscaj | 0:d96e7e513c16 | 272 | led = 0; |
jernej_vrscaj | 0:d96e7e513c16 | 273 | |
jernej_vrscaj | 0:d96e7e513c16 | 274 | NVIC_SystemReset(); // reset Reference board |
jernej_vrscaj | 0:d96e7e513c16 | 275 | |
jernej_vrscaj | 0:d96e7e513c16 | 276 | } |
jernej_vrscaj | 0:d96e7e513c16 | 277 | } |
jernej_vrscaj | 0:d96e7e513c16 | 278 | |
jernej_vrscaj | 0:d96e7e513c16 | 279 | #endif |
jernej_vrscaj | 0:d96e7e513c16 | 280 | |
jernej_vrscaj | 0:d96e7e513c16 | 281 | return 0; |
jernej_vrscaj | 0:d96e7e513c16 | 282 | } |
jernej_vrscaj | 0:d96e7e513c16 | 283 | |
jernej_vrscaj | 0:d96e7e513c16 | 284 | #endif |
jernej_vrscaj | 0:d96e7e513c16 | 285 | |
jernej_vrscaj | 0:d96e7e513c16 | 286 | /*============================ END MAIN =======================================*/ |
jernej_vrscaj | 0:d96e7e513c16 | 287 |