From 9a00517bb35952e672284aa15d0304c1d75f698f Mon Sep 17 00:00:00 2001 From: Mike Fiore Date: Tue, 24 Nov 2015 11:44:06 -0600 Subject: 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 --- Mode/Mode.cpp | 29 +++++++++++++++++++++++------ Mode/Mode.h | 1 + Mode/ModeSingle.cpp | 15 +++++++++++---- 3 files changed, 35 insertions(+), 10 deletions(-) (limited to 'Mode') 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 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); -- cgit v1.2.3