![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Peer to peer xDot
Dependencies: ISL29011 libxDot-dev-mbed5-deprecated
src/main.cpp@0:33f2abdc6bf9, 2018-03-05 (annotated)
- Committer:
- javierp
- Date:
- Mon Mar 05 23:51:58 2018 +0000
- Revision:
- 0:33f2abdc6bf9
Conexi?n peer to peer para que con una misma clave se entiendan dos xDot.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
javierp | 0:33f2abdc6bf9 | 1 | #include "mbed.h" |
javierp | 0:33f2abdc6bf9 | 2 | #include "mDot.h" |
javierp | 0:33f2abdc6bf9 | 3 | #include "rtos.h" |
javierp | 0:33f2abdc6bf9 | 4 | #include "ChannelPlan.h" |
javierp | 0:33f2abdc6bf9 | 5 | #include "ISL29011.h" |
javierp | 0:33f2abdc6bf9 | 6 | #include "dot_util.h" |
javierp | 0:33f2abdc6bf9 | 7 | #include "RadioEvent.h" |
javierp | 0:33f2abdc6bf9 | 8 | |
javierp | 0:33f2abdc6bf9 | 9 | static uint8_t network_address[] = { 0x04, 0x05, 0x03, 0x04 }; |
javierp | 0:33f2abdc6bf9 | 10 | static uint8_t network_session_key[] = { 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x03, 0x04 }; |
javierp | 0:33f2abdc6bf9 | 11 | static uint8_t data_session_key[] = { 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x03, 0x04 }; |
javierp | 0:33f2abdc6bf9 | 12 | |
javierp | 0:33f2abdc6bf9 | 13 | mDot* dot = NULL; |
javierp | 0:33f2abdc6bf9 | 14 | lora::ChannelPlan* plan = NULL; |
javierp | 0:33f2abdc6bf9 | 15 | |
javierp | 0:33f2abdc6bf9 | 16 | static Serial pc(USBTX, USBRX); |
javierp | 0:33f2abdc6bf9 | 17 | |
javierp | 0:33f2abdc6bf9 | 18 | I2C i2c(I2C_SDA, I2C_SCL); |
javierp | 0:33f2abdc6bf9 | 19 | ISL29011 lux(i2c); |
javierp | 0:33f2abdc6bf9 | 20 | |
javierp | 0:33f2abdc6bf9 | 21 | int main() { |
javierp | 0:33f2abdc6bf9 | 22 | |
javierp | 0:33f2abdc6bf9 | 23 | // Custom event handler for automatically displaying RX data |
javierp | 0:33f2abdc6bf9 | 24 | RadioEvent events; |
javierp | 0:33f2abdc6bf9 | 25 | uint32_t tx_frequency; |
javierp | 0:33f2abdc6bf9 | 26 | uint8_t tx_datarate; |
javierp | 0:33f2abdc6bf9 | 27 | uint8_t tx_power; |
javierp | 0:33f2abdc6bf9 | 28 | |
javierp | 0:33f2abdc6bf9 | 29 | pc.baud(115200); |
javierp | 0:33f2abdc6bf9 | 30 | |
javierp | 0:33f2abdc6bf9 | 31 | plan = new lora::ChannelPlan_US915(); |
javierp | 0:33f2abdc6bf9 | 32 | dot = mDot::getInstance(plan); |
javierp | 0:33f2abdc6bf9 | 33 | assert(dot); |
javierp | 0:33f2abdc6bf9 | 34 | |
javierp | 0:33f2abdc6bf9 | 35 | logInfo("defaulting Dot configuration"); |
javierp | 0:33f2abdc6bf9 | 36 | dot->resetConfig(); |
javierp | 0:33f2abdc6bf9 | 37 | |
javierp | 0:33f2abdc6bf9 | 38 | // make sure library logging is turned on |
javierp | 0:33f2abdc6bf9 | 39 | dot->setLogLevel(mts::MTSLog::INFO_LEVEL); |
javierp | 0:33f2abdc6bf9 | 40 | |
javierp | 0:33f2abdc6bf9 | 41 | // attach the custom events handler |
javierp | 0:33f2abdc6bf9 | 42 | dot->setEvents(&events); |
javierp | 0:33f2abdc6bf9 | 43 | |
javierp | 0:33f2abdc6bf9 | 44 | // update configuration if necessary |
javierp | 0:33f2abdc6bf9 | 45 | if (dot->getJoinMode() != mDot::PEER_TO_PEER) { |
javierp | 0:33f2abdc6bf9 | 46 | logInfo("changing network join mode to PEER_TO_PEER"); |
javierp | 0:33f2abdc6bf9 | 47 | if (dot->setJoinMode(mDot::PEER_TO_PEER) != mDot::MDOT_OK) { |
javierp | 0:33f2abdc6bf9 | 48 | logError("failed to set network join mode to PEER_TO_PEER"); |
javierp | 0:33f2abdc6bf9 | 49 | } |
javierp | 0:33f2abdc6bf9 | 50 | } |
javierp | 0:33f2abdc6bf9 | 51 | |
javierp | 0:33f2abdc6bf9 | 52 | tx_frequency = 915500000; |
javierp | 0:33f2abdc6bf9 | 53 | tx_datarate = lora::DR_13; |
javierp | 0:33f2abdc6bf9 | 54 | // 915 bands have no duty cycle restrictions, set tx power to max |
javierp | 0:33f2abdc6bf9 | 55 | tx_power = 20; |
javierp | 0:33f2abdc6bf9 | 56 | |
javierp | 0:33f2abdc6bf9 | 57 | // in PEER_TO_PEER mode there is no join request/response transaction |
javierp | 0:33f2abdc6bf9 | 58 | // as long as both Dots are configured correctly, they should be able to communicate |
javierp | 0:33f2abdc6bf9 | 59 | update_peer_to_peer_config(network_address, network_session_key, data_session_key, tx_frequency, tx_datarate, tx_power); |
javierp | 0:33f2abdc6bf9 | 60 | |
javierp | 0:33f2abdc6bf9 | 61 | // save changes to configuration |
javierp | 0:33f2abdc6bf9 | 62 | logInfo("saving configuration"); |
javierp | 0:33f2abdc6bf9 | 63 | if (!dot->saveConfig()) { |
javierp | 0:33f2abdc6bf9 | 64 | logError("failed to save configuration"); |
javierp | 0:33f2abdc6bf9 | 65 | } |
javierp | 0:33f2abdc6bf9 | 66 | |
javierp | 0:33f2abdc6bf9 | 67 | // display configuration |
javierp | 0:33f2abdc6bf9 | 68 | display_config(); |
javierp | 0:33f2abdc6bf9 | 69 | |
javierp | 0:33f2abdc6bf9 | 70 | lux.setMode(ISL29011::ALS_CONT); |
javierp | 0:33f2abdc6bf9 | 71 | lux.setResolution(ISL29011::ADC_16BIT); |
javierp | 0:33f2abdc6bf9 | 72 | lux.setRange(ISL29011::RNG_64000); |
javierp | 0:33f2abdc6bf9 | 73 | |
javierp | 0:33f2abdc6bf9 | 74 | while (true) { |
javierp | 0:33f2abdc6bf9 | 75 | uint16_t light; |
javierp | 0:33f2abdc6bf9 | 76 | std::vector<uint8_t> tx_data; |
javierp | 0:33f2abdc6bf9 | 77 | |
javierp | 0:33f2abdc6bf9 | 78 | // join network if not joined |
javierp | 0:33f2abdc6bf9 | 79 | if (!dot->getNetworkJoinStatus()) { |
javierp | 0:33f2abdc6bf9 | 80 | join_network(); |
javierp | 0:33f2abdc6bf9 | 81 | } |
javierp | 0:33f2abdc6bf9 | 82 | |
javierp | 0:33f2abdc6bf9 | 83 | light = lux.getData(); |
javierp | 0:33f2abdc6bf9 | 84 | tx_data.push_back((light >> 8) & 0xFF); |
javierp | 0:33f2abdc6bf9 | 85 | tx_data.push_back(light & 0xFF); |
javierp | 0:33f2abdc6bf9 | 86 | logInfo("light: %lu [0x%04X]", light, light); |
javierp | 0:33f2abdc6bf9 | 87 | send_data(tx_data); |
javierp | 0:33f2abdc6bf9 | 88 | |
javierp | 0:33f2abdc6bf9 | 89 | // the Dot can't sleep in PEER_TO_PEER mode |
javierp | 0:33f2abdc6bf9 | 90 | // it must be waiting for data from the other Dot |
javierp | 0:33f2abdc6bf9 | 91 | // send data every 5 seconds |
javierp | 0:33f2abdc6bf9 | 92 | logInfo("waiting for 5s"); |
javierp | 0:33f2abdc6bf9 | 93 | wait(5); |
javierp | 0:33f2abdc6bf9 | 94 | } |
javierp | 0:33f2abdc6bf9 | 95 | return 0; |
javierp | 0:33f2abdc6bf9 | 96 | } |