Dave H's version of the EVB Demo. Sends to specific conduit, and sends with a comma separated text string
Dependencies: DOGS102 ISL29011 MMA845x MPL3115A2 NCP5623B libmDot mbed-rtos mbed-src
Fork of MTDOT-EVBDemo by
Revision 5:5a794cedd728, committed 2015-08-20
- Comitter:
- daveheitzman
- Date:
- Thu Aug 20 21:28:45 2015 +0000
- Parent:
- 4:51d7c24bbf91
- Child:
- 6:b62e5106b5bc
- Commit message:
- runs and works, sends string of csv for data points
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- 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