summaryrefslogtreecommitdiff
path: root/Mode
diff options
context:
space:
mode:
authorMike Fiore <mfiore@multitech.com>2015-11-24 11:44:06 -0600
committerMike Fiore <mfiore@multitech.com>2015-11-24 11:44:06 -0600
commit9a00517bb35952e672284aa15d0304c1d75f698f (patch)
tree88914ac428e544fbe68fb25f7fbe4543125b309e /Mode
parentcf6730142a9d6783abb950979d5a60aea3eb9451 (diff)
downloadmtdot-box-evb-factory-firmware-9a00517bb35952e672284aa15d0304c1d75f698f.tar.gz
mtdot-box-evb-factory-firmware-9a00517bb35952e672284aa15d0304c1d75f698f.tar.bz2
mtdot-box-evb-factory-firmware-9a00517bb35952e672284aa15d0304c1d75f698f.zip
use floats for SNR values - will be supported in next mbed release, add logging to surveySingle, stub out function to parse index from data file
Diffstat (limited to 'Mode')
-rw-r--r--Mode/Mode.cpp29
-rw-r--r--Mode/Mode.h1
-rw-r--r--Mode/ModeSingle.cpp15
3 files changed, 35 insertions, 10 deletions
diff --git a/Mode/Mode.cpp b/Mode/Mode.cpp
index ba60c01..820efe7 100644
--- a/Mode/Mode.cpp
+++ b/Mode/Mode.cpp
@@ -58,13 +58,13 @@ bool Mode::appendDataFile(const DataItem& data) {
// if we had GPS lock, format GPS data
if (data.lock > 0) {
- snprintf(lat_buf, sizeof(lat_buf), "%d %d %d.%03d %c",
+ snprintf(lat_buf, sizeof(lat_buf), "%3d %2d %2d.%03d %c",
abs(data.gps_latitude.degrees),
data.gps_latitude.minutes,
(data.gps_latitude.seconds * 6) / 1000,
(data.gps_latitude.seconds % 6) / 1000,
(data.gps_latitude.degrees > 0) ? 'N' : 'S');
- snprintf(lon_buf, sizeof(lon_buf), "%d %d %d.%03d %c",
+ snprintf(lon_buf, sizeof(lon_buf), "%3d %2d %2d.%03d %c",
abs(data.gps_longitude.degrees),
data.gps_longitude.minutes,
(data.gps_longitude.seconds * 6) / 1000,
@@ -82,11 +82,13 @@ bool Mode::appendDataFile(const DataItem& data) {
}
if (data.status) {
- snprintf(stats_buf, sizeof(stats_buf), "%d,%d.%ld,%d,%d.%ld",
+ float up_snr = (float)data.ping.up.snr / 10.0;
+ float down_snr = (float)data.ping.up.snr / 4.0;
+ snprintf(stats_buf, sizeof(stats_buf), "%3d,%2.1f,%3d,%2.1f",
data.ping.up.rssi,
- data.ping.up.snr / 10, abs(data.ping.up.snr) % 10,
+ up_snr,
data.ping.down.rssi,
- data.ping.down.snr / 4, (abs(data.ping.down.snr) % 10) * 25);
+ down_snr);
}
size = snprintf(main_buf, sizeof(main_buf), "%s,%c,%ld,%s,%s,%s,%s,%s,%s,%lu\n",
@@ -110,7 +112,7 @@ bool Mode::appendDataFile(const DataItem& data) {
logError("failed to write survey data to file");
return false;
} else {
- logInfo("successfully wrote survey data to file");
+ logInfo("successfully wrote survey data to file\r\n\t%s", main_buf);
}
return true;
@@ -127,3 +129,18 @@ void Mode::updateData(DataItem& data, DataType type, bool status) {
data.power = _power;
}
+uint32_t Mode::getIndex(DataType type) {
+ uint32_t index = 0;
+ mDot::mdot_file file;
+
+ file = _dot->openUserFile(_file_name, mDot::FM_RDONLY);
+ if (file.fd < 0) {
+ logError("failed to open survey data file");
+ } else {
+ logInfo("file size %d", file.size);
+ _dot->closeUserFile(file);
+ }
+
+ return index;
+}
+
diff --git a/Mode/Mode.h b/Mode/Mode.h
index 8a4f030..ca8fd19 100644
--- a/Mode/Mode.h
+++ b/Mode/Mode.h
@@ -37,6 +37,7 @@ class Mode {
bool deleteDataFile();
bool appendDataFile(const DataItem& data);
void updateData(DataItem& data, DataType type, bool status);
+ uint32_t getIndex(DataType type);
DOGS102* _lcd;
ButtonHandler* _buttons;
diff --git a/Mode/ModeSingle.cpp b/Mode/ModeSingle.cpp
index 77f789a..26d0aad 100644
--- a/Mode/ModeSingle.cpp
+++ b/Mode/ModeSingle.cpp
@@ -56,7 +56,7 @@ bool ModeSingle::start() {
switch (_state) {
case check_file:
_state = show_help;
- _index = 0; // need to get index from NVM
+ _index = getIndex(single);
displayHelp();
break;
case confirm:
@@ -66,6 +66,7 @@ bool ModeSingle::start() {
case show_help:
incrementRatePower();
_help.updateMsg(formatNewRatePower());
+ logInfo("new data rate %u, power %lu", _data_rate, _power);
break;
case in_progress:
// do nothing
@@ -73,12 +74,14 @@ bool ModeSingle::start() {
case success:
incrementRatePower();
_success.updateInfo(formatNewRatePower());
+ logInfo("new data rate %u, power %lu", _data_rate, _power);
break;
case data:
break;
case failure:
incrementRatePower();
_failure.updateInfo(formatNewRatePower());
+ logInfo("new data rate %u, power %lu", _data_rate, _power);
break;
}
break;
@@ -145,6 +148,7 @@ bool ModeSingle::start() {
case in_progress:
_ping_result = _lora->getPingResults();
displaySuccess();
+ logInfo("ping successful");
updateData(_data, single, true);
appendDataFile(_data);
if (_send_data) {
@@ -181,10 +185,11 @@ bool ModeSingle::start() {
_failure.display();
_failure.updateId(_index);
// mDot::DataRateStr returns format SF_XX - we only want to display the XX part
- _success.updateRate(_dot->DataRateStr(_data_rate).substr(3));
+ _failure.updateRate(_dot->DataRateStr(_data_rate).substr(3));
updateData(_data, single, false);
appendDataFile(_data);
_failure.updatePower(_power);
+ logInfo("ping failed");
break;
case success:
break;
@@ -212,6 +217,7 @@ bool ModeSingle::start() {
_success.updateInfo("Data Send Success");
_success.updateSw1(" Power");
_success.updateSw2("Survey");
+ logInfo("data send success");
break;
case failure:
break;
@@ -235,6 +241,7 @@ bool ModeSingle::start() {
_success.updateInfo("Data Send Failure");
_success.updateSw1(" Power");
_success.updateSw2("Survey");
+ logInfo("data send failed");
break;
case failure:
break;
@@ -267,7 +274,7 @@ bool ModeSingle::start() {
}
}
if (send_ping) {
- logInfo("sending ping");
+ logInfo("sending ping %s %d", _dot->DataRateStr(_data_rate).c_str(), _power);
send_ping = false;
_lora->setDataRate(_data_rate);
_lora->setPower(_power);
@@ -276,7 +283,7 @@ bool ModeSingle::start() {
}
if (send_data) {
std::vector<uint8_t> s_data;
- logInfo("sending data");
+ logInfo("sending data %s %d", _dot->DataRateStr(_data_rate).c_str(), _power);
_success.updateInfo("Data Sending...");
_lora->setDataRate(_data_rate);
_lora->setPower(_power);