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 mbed-rtos mbed-src
Fork of MTDOT-EVBDemo by
Diff: main.cpp
- Revision:
- 5:5a794cedd728
- Parent:
- 4:51d7c24bbf91
- Child:
- 6:b62e5106b5bc
diff -r 51d7c24bbf91 -r 5a794cedd728 main.cpp
--- a/main.cpp Thu Aug 20 18:34:53 2015 +0000
+++ b/main.cpp Thu Aug 20 21:28:45 2015 +0000
@@ -146,6 +146,7 @@
void log_error(mDot* dot, const char* msg, int32_t retval);
void config_pkt_xmit (void const *args);
+int32_t sendString(const std::string text);
int main()
{
@@ -398,6 +399,11 @@
*/
pckt_time = 10;
i = 0;
+ char sensor_text[54];
+ char lora_temp_string[7];
+ char lora_alt_string[8];
+ char lora_press_string[9];
+ char lora_light_string[6];
do {
evbLCD->startUpdate();
@@ -447,6 +453,13 @@
num_whole = pressure >> 2; // 18 bit integer significant
num_frac = (pressure & 0x3) * 25; // 2 bit fractional 0.25 per bit
sprintf(txtstr,"Press=%ld.%02d Pa", num_whole, num_frac);
+
+ pressure = evbBaro->getBaroData() >> 12; // convert 32 bit signed to 20 bit unsigned value
+ num_whole = pressure >> 2; // 18 bit integer significant
+ num_frac = (pressure & 0x3) * 25; // 2 bit fractional 0.25 per bit
+
+ sprintf(lora_press_string, "%ld.%02d", num_whole, num_frac);
+
evbLCD->writeText(0,4,font_6x8,txtstr,strlen(txtstr));
/*
@@ -466,16 +479,23 @@
/*
* Retrieve and print out altitude and temperature
+ const std::string lora_temp_string;
+ const std::string lora_alt_string;
+ const std::string lora_press_string;
+ const std::string lora_light_string;
+
*/
baro_data = evbBaro->getAllData(false);
baro_data._baro /= 4096; // convert 32 bit signed to 20 bit signed value
num_whole = baro_data._baro / 16; // 18 bit signed significant integer
num_frac = (baro_data._baro & 0xF) * 625 / 100; // 4 bit fractional .0625 per bit
sprintf(txtstr,"Alti=%ld.%03d m", num_whole, num_frac);
+ sprintf(lora_alt_string,"%ld.%03d", num_whole, num_frac);
evbLCD->writeText(0,5,font_6x8,txtstr,strlen(txtstr));
num_whole = baro_data._temp / 16; // 8 bit signed significant integer
num_frac = (baro_data._temp & 0x0F) * 625 / 100; // 4 bit fractional .0625 per bit
sprintf(txtstr,"Temp=%ld.%03d C", num_whole, num_frac);
+ sprintf(lora_temp_string,"%ld.%03d", num_whole, num_frac);
evbLCD->writeText(0,6,font_6x8,txtstr,strlen(txtstr));
/*
@@ -485,11 +505,11 @@
num_whole = lux_data * 24 / 100; // 16000 lux full scale .24 lux per bit
num_frac = lux_data * 24 % 100;
sprintf(txtstr, "Light=%ld.%02d lux", num_whole, num_frac );
+ sprintf(lora_light_string, "%ld.%02d", num_whole, num_frac );
evbLCD->writeText(0,7,font_6x8,txtstr,strlen(txtstr));
evbLCD->endUpdate();
printf("finished iteration %d\n\r",(++i));
-
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
@@ -512,14 +532,27 @@
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) {
- if ((mdot_ret = mdot_radio->send("{\"light\":{\"lux\":\"23.22\"}}")) != mDot::MDOT_OK) {
+ mdot_data.clear();
+
+// if you want to go back to sending byte vector instead:
+// if ((mdot_ret = mdot_radio->send(mdot_data)) != mDot::MDOT_OK) {
+// sprintf(sensor_text, "x:%d,y:%d,z:%d,p:%s,a:%s,t:%s,l:%s",
+
+ sprintf(sensor_text, "%d,%d,%d,%s,%s,%s,%s",
+ accel_data._x,
+ accel_data._y,
+ accel_data._z,
+ lora_press_string,
+ lora_alt_string,
+ lora_temp_string,
+ lora_light_string);
+ if ((mdot_ret = sendString((const std::string)sensor_text)) != mDot::MDOT_OK) {
log_error(mdot_radio, "failed to send", mdot_ret);
} else {
printf("successfully sent data to gateway\r\n");
}
}
+
} while(!exit_program);
evbBaro->triggerOneShot();
@@ -644,3 +677,23 @@
}
}
}
+
+int32_t sendString(const std::string text)
+{
+ int32_t ret;
+ if (mdot_radio->getNextTxMs() != 0) {
+ printf("Sending in %lu ms...\r\n", mdot_radio->getNextTxMs());
+ return false;
+ }
+
+ printf("Sending: '%s' ", text.c_str());
+ std::vector<uint8_t> data(text.begin(), text.end());
+ if ((ret = mdot_radio->send(data, 1)) != mDot::MDOT_OK)
+ {
+ log_error(mdot_radio, "Failed to send data", ret);
+
+ } else {
+ printf("Data sent!\r\n");
+ }
+ return ret;
+}
\ No newline at end of file
