From abaacd64f96b834d85169f12351b0057c6e9c2fd Mon Sep 17 00:00:00 2001 From: Mike Fiore Date: Tue, 8 Dec 2015 12:56:29 -0600 Subject: use link check instead of ping for compatibility with 3rd party network servers --- Mode/Mode.cpp | 21 ++++++++++----------- Mode/Mode.h | 4 ++-- Mode/ModeSingle.cpp | 10 +++++----- Mode/ModeSweep.cpp | 10 +++++----- 4 files changed, 22 insertions(+), 23 deletions(-) (limited to 'Mode') diff --git a/Mode/Mode.cpp b/Mode/Mode.cpp index 70a3f49..2bac839 100644 --- a/Mode/Mode.cpp +++ b/Mode/Mode.cpp @@ -92,12 +92,11 @@ bool Mode::appendDataFile(const DataItem& data) { } if (data.status) { - float up_snr = (float)data.ping.up.snr / 10.0; - float down_snr = (float)data.ping.down.snr / 4.0; - snprintf(stats_buf, sizeof(stats_buf), "%d,%2.1f,%d,%2.1f", - abs(data.ping.up.rssi), - up_snr, - abs(data.ping.down.rssi), + float down_snr = (float)data.link.down.snr / 4.0; + snprintf(stats_buf, sizeof(stats_buf), "%d,%d,%d,%2.1f", + data.link.up.gateways, + data.link.up.dBm, + abs(data.link.down.rssi), down_snr); } @@ -138,7 +137,7 @@ void Mode::updateData(DataItem& data, DataType type, bool status) { data.gps_latitude = _gps->getLatitude(); data.gps_altitude = _gps->getAltitude(); data.gps_time = _gps->getTimestamp(); - data.ping = _ping_result; + data.link = _link_check_result; data.data_rate = _data_rate; data.power = _power; } @@ -227,17 +226,17 @@ std::vector Mode::formatSurveyData(DataItem& data) { send_data.clear(); send_data.push_back(0x1D); // key for start of data structure send_data.push_back(0x1A); // key for uplink QOS + RF Pwr - convertS.f_s = data.ping.up.rssi; + convertS.f_s = data.link.up.gateways; send_data.push_back(convertS.t_u[1]); send_data.push_back(convertS.t_u[0]); - send_data.push_back((data.ping.up.snr/10) & 0xFF); + send_data.push_back((data.link.up.dBm) & 0xFF); send_data.push_back(data.power); send_data.push_back(0x1B); // key for downlink QOS - convertS.f_s=data.ping.down.rssi; + convertS.f_s=data.link.down.rssi; send_data.push_back(convertS.t_u[1]); send_data.push_back(convertS.t_u[0]); - send_data.push_back(data.ping.down.snr); + send_data.push_back(data.link.down.snr); // collect GPS data if GPS device detected if (_gps->gpsDetected() && ((_data_rate != mDot::SF_10) || (_band == mDot::FB_868))){ diff --git a/Mode/Mode.h b/Mode/Mode.h index 61687f1..bd09cc9 100644 --- a/Mode/Mode.h +++ b/Mode/Mode.h @@ -28,7 +28,7 @@ class Mode { GPSPARSER::latitude gps_latitude; int16_t gps_altitude; struct tm gps_time; - LoRaHandler::LoRaPing ping; + LoRaHandler::LoRaLink link; uint8_t data_rate; uint32_t power; } DataItem; @@ -68,7 +68,7 @@ class Mode { uint32_t _next_tx; ButtonHandler::ButtonEvent _be; LoRaHandler::LoRaStatus _ls; - LoRaHandler::LoRaPing _ping_result; + LoRaHandler::LoRaLink _link_check_result; uint8_t _state; bool _send_data; bool _gps_available; diff --git a/Mode/ModeSingle.cpp b/Mode/ModeSingle.cpp index 737301f..70d131c 100644 --- a/Mode/ModeSingle.cpp +++ b/Mode/ModeSingle.cpp @@ -124,10 +124,10 @@ bool ModeSingle::start() { if (e.value.signals & loraSignal) { _ls = _lora->getStatus(); switch (_ls) { - case LoRaHandler::ping_success: + case LoRaHandler::link_check_success: switch (_state) { case in_progress: - _ping_result = _lora->getPingResults(); + _link_check_result = _lora->getLinkCheckResults(); displaySuccess(); logInfo("ping successful"); updateData(_data, single, true); @@ -147,7 +147,7 @@ bool ModeSingle::start() { } break; - case LoRaHandler::ping_failure: + case LoRaHandler::link_check_failure: switch (_state) { case in_progress: _state = failure; @@ -235,7 +235,7 @@ bool ModeSingle::start() { send_ping = false; _dot->setTxDataRate(_data_rate); _dot->setTxPower(_power); - _lora->ping(); + _lora->linkCheck(); _index++; } if (send_data) { @@ -272,7 +272,7 @@ void ModeSingle::displaySuccess() { // mDot::DataRateStr returns format SF_XX - we only want to display the XX part _success.updateRate(_dot->DataRateStr(_data_rate).substr(3)); _success.updatePower(_power); - _success.updateStats(_ping_result); + _success.updateStats(_link_check_result); if (_gps_available && _gps->getLockStatus()) { GPSPARSER::latitude lat = _gps->getLatitude(); GPSPARSER::longitude lon = _gps->getLongitude(); diff --git a/Mode/ModeSweep.cpp b/Mode/ModeSweep.cpp index 17047b3..80c2dde 100644 --- a/Mode/ModeSweep.cpp +++ b/Mode/ModeSweep.cpp @@ -157,11 +157,11 @@ bool ModeSweep::start() { if (e.value.signals & loraSignal) { _ls = _lora->getStatus(); switch (_ls) { - case LoRaHandler::ping_success: + case LoRaHandler::link_check_success: switch (_state) { case in_progress: _survey_success++; - _ping_result = _lora->getPingResults(); + _link_check_result = _lora->getLinkCheckResults(); displaySuccess(); logInfo("ping successful"); updateData(_data, sweep, true); @@ -181,7 +181,7 @@ bool ModeSweep::start() { } break; - case LoRaHandler::ping_failure: + case LoRaHandler::link_check_failure: switch (_state) { case in_progress: _survey_failure++; @@ -295,7 +295,7 @@ bool ModeSweep::start() { send_ping = false; _dot->setTxDataRate(_data_rate); _dot->setTxPower(_power); - _lora->ping(); + _lora->linkCheck(); } if (send_data) { std::vector s_data = formatSurveyData(_data); @@ -327,7 +327,7 @@ void ModeSweep::displaySuccess() { // mDot::DataRateStr returns format SF_XX - we only want to display the XX part _success.updateRate(_dot->DataRateStr(_data_rate).substr(3)); _success.updatePower(_power); - _success.updateStats(_ping_result); + _success.updateStats(_link_check_result); if (_gps_available && _gps->getLockStatus()) { GPSPARSER::latitude lat = _gps->getLatitude(); GPSPARSER::longitude lon = _gps->getLongitude(); -- cgit v1.2.3