Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: DOGS102 ISL29011 MMA845x MPL3115A2 NCP5623B libmDot_1012-hotifx mbed-rtos mbed-src
Fork of MTDOT-EVBDemo by
Diff: main.cpp
- Revision:
- 4:9ea6ae34157c
- Parent:
- 3:68e974f5f532
- Child:
- 5:a33dcda3507b
diff -r 68e974f5f532 -r 9ea6ae34157c main.cpp
--- a/main.cpp Wed Jul 15 14:20:33 2015 +0000
+++ b/main.cpp Wed Sep 23 14:31:59 2015 +0000
@@ -101,16 +101,16 @@
*/
static std::string config_network_name = "TAB-CubeNet";
static std::string config_network_pass = "1nt3gral";
-static uint8_t config_frequency_sub_band = 5;
+static uint8_t config_frequency_sub_band = 1;
-/* config_app_id and config_app_key are for public networks.
-static uint8_t app_id[8] = {0x00,0x01,0x02,0x03,0x0A,0x0B,0x0C,0x0D};
-std::vector<uint8_t> config_app_id;
-static uint8_t app_key[16] = {0x00,0x01,0x02,0x03,0x0A,0x0B,0x0C,0x0D};
-std::vector<uint8_t> config_app_key;
-*/
+/* config_app_id and config_app_key are for public networks. */
+static uint8_t app_id[8] = {0x00,0x25,0x0C,0x00,0x00,0x01,0x00,0x01};
+std::vector<uint8_t> config_app_id(app_id,app_id+sizeof(app_id)/sizeof(uint8_t));
+static uint8_t app_key[16] = //9C49 - {0xB4,0xAD,0x1A,0x25,0x69,0x7F,0xF6,0x8E,0xD3,0x4B,0x83,0xC4,0xB6,0xC0,0xF2,0x3C};
+ {0xA0,0xC8,0x3D,0xD1,0x7B,0x32,0x97,0x1B,0x71,0xDC,0x53,0xB5,0x4D,0x89,0xC6,0x19};
+std::vector<uint8_t> config_app_key(app_key,app_key+sizeof(app_key)/sizeof(uint8_t));
-uint8_t result, pckt_time=10;
+uint8_t result, pckt_time=100;
char data;
unsigned char test;
char txtstr[17];
@@ -118,6 +118,10 @@
uint32_t pressure;
int16_t num_frac;
+uint8_t position_value = 0xFF; // 00 unknown, 01 is flat, 02 is vertical
+uint8_t reflected_value = 0xFE;
+bool position_changed = true;
+
bool exit_program = false;
MMA845x_DATA accel_data;
@@ -154,7 +158,7 @@
std::vector<uint8_t> mdot_EUI;
uint16_t i = 0;
- debugUART.baud(921600);
+ debugUART.baud(115200);
// mDotUART.baud(9600); // mdot UART unused but available on external connector
Thread thread_1(pb1_debounce); // threads for de-bouncing pushbutton switches
@@ -249,8 +253,8 @@
* This call sets up private or public mode on the MTDOT. Set the function to true if
* connecting to a public network
*/
- printf("setting Private Network Mode\r\n");
- if ((mdot_ret = mdot_radio->setPublicNetwork(false)) != mDot::MDOT_OK) {
+ printf("setting Public Network Mode\r\n");
+ if ((mdot_ret = mdot_radio->setPublicNetwork(true)) != mDot::MDOT_OK) {
log_error(mdot_radio, "failed to set Public Network Mode", mdot_ret);
}
@@ -272,8 +276,8 @@
// config_app_id.assign(app_id,app_id+7);
printf("setting network name\r\n");
- if ((mdot_ret = mdot_radio->setNetworkName(config_network_name)) != mDot::MDOT_OK) {
-// if ((mdot_ret = mdot_radio->setNetworkID(config_app_id)) != mDot::MDOT_OK) {
+// if ((mdot_ret = mdot_radio->setNetworkName(config_network_name)) != mDot::MDOT_OK) {
+ if ((mdot_ret = mdot_radio->setNetworkId(config_app_id)) != mDot::MDOT_OK) {
log_error(mdot_radio, "failed to set network name", mdot_ret);
}
@@ -285,8 +289,8 @@
// config_app_key.assign(app_key,app_key+15);
printf("setting network password\r\n");
- if ((mdot_ret = mdot_radio->setNetworkPassphrase(config_network_pass)) != mDot::MDOT_OK) {
-// if ((mdot_ret = mdot_radio->setNetworkKey(config_app_key)) != mDot::MDOT_OK) {
+// if ((mdot_ret = mdot_radio->setNetworkPassphrase(config_network_pass)) != mDot::MDOT_OK) {
+ if ((mdot_ret = mdot_radio->setNetworkKey(config_app_key)) != mDot::MDOT_OK) {
log_error(mdot_radio, "failed to set network password", mdot_ret);
}
@@ -424,7 +428,28 @@
evbLCD->writeText(20,2,font_6x8,txtstr,strlen(txtstr));
sprintf(txtstr, "z = %d", accel_data._z );
evbLCD->writeText(20,3,font_6x8,txtstr,strlen(txtstr));
-
+ // convert to simple position value for use in send/recv
+ if((accel_data._x > 500)&&(accel_data._z < 500))
+ {
+ if(position_value != 0x02)
+ position_changed = true;
+ position_value = 0x02;
+ }
+ else if((accel_data._x < 500)&&(accel_data._z > 500))
+ {
+ if(position_value != 0x01)
+ position_changed = true;
+ position_value = 0x01;
+ }
+ else
+ {
+ if(position_value != 0x00)
+ position_changed = true;
+ position_value= 0x00;
+ }
+ if(position_changed)
+ evbBackLight->setLEDCurrent(0);
+
/*
* Trigger a Pressure reading
*/
@@ -492,13 +517,18 @@
if (i % pckt_time == 0) { // check packet counter will send packet every 2-5-10 data collection loops
mdot_data.clear();
- mdot_data.push_back(0x0E); // key for Current Acceleration 3-Axis Value
+ // we will send a simple byte descriptor of the current position of the device: 01 is laying flat, 02 is vertically oriented
+ mdot_data.push_back(0x00);
+ mdot_data.push_back(position_value);
+ /*mdot_data.push_back(0x0E); // key for Current Acceleration 3-Axis Value
converts.f_s = accel_data._x *4; // shift data 2 bits while retaining sign
mdot_data.push_back(converts.t_u[1]); // get 8 MSB of 14 bit value
converts.f_s = accel_data._y * 4; // shift data 2 bits while retaining sign
mdot_data.push_back(converts.t_u[1]); // get 8 MSB of 14 bit value
converts.f_s = accel_data._z * 4; // shift data 2 bits while retaining sign
mdot_data.push_back(converts.t_u[1]); // get 8 MSB of 14 bit value
+ */
+ /*
mdot_data.push_back(0x08); // key for Current Pressure Value
convertl.f_u = pressure; // pressure data is 20 bits unsigned
mdot_data.push_back(convertl.t_u[2]);
@@ -512,11 +542,31 @@
converts.f_s = baro_data._temp; // temperature is signed 12 bit
mdot_data.push_back(converts.t_u[1]);
mdot_data.push_back(converts.t_u[0]);
-
- if ((mdot_ret = mdot_radio->send(mdot_data)) != mDot::MDOT_OK) {
- log_error(mdot_radio, "failed to send", mdot_ret);
- } else {
- printf("successfully sent data to gateway\r\n");
+*/
+ if((reflected_value != position_value)||(position_changed))
+ {
+ if ((mdot_ret = mdot_radio->send(mdot_data)) != mDot::MDOT_OK) {
+ log_error(mdot_radio, "failed to send", mdot_ret);
+ } else {
+ printf("successfully sent data to gateway\r\n");
+ mdot_data.clear();
+ if ((mdot_ret = mdot_radio->recv(mdot_data)) != mDot::MDOT_OK) {
+ log_error(mdot_radio,"failed to recv:", mdot_ret);
+ } else {
+ printf("recv data: ");
+ for(int i = 0;i < mdot_data.size();i++)
+ printf("%02X",mdot_data[i]);
+ printf("\r\n");
+ reflected_value = mdot_data[0];
+ if(reflected_value == position_value)
+ {
+ evbBackLight->setLEDCurrent(16);
+ position_changed = false;
+ }
+ else
+ evbBackLight->setLEDCurrent(0);
+ }
+ }
}
}
} while(!exit_program && (i < 65000));
