summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LoRaHandler/LoRaHandler.cpp31
-rw-r--r--LoRaHandler/LoRaHandler.h3
-rw-r--r--Mode/ModeJoin.cpp6
-rw-r--r--Mode/ModeSingle.cpp34
-rw-r--r--Mode/ModeSweep.cpp32
5 files changed, 46 insertions, 60 deletions
diff --git a/LoRaHandler/LoRaHandler.cpp b/LoRaHandler/LoRaHandler.cpp
index 7ba05f5..47b0e01 100644
--- a/LoRaHandler/LoRaHandler.cpp
+++ b/LoRaHandler/LoRaHandler.cpp
@@ -87,28 +87,6 @@ LoRaHandler::LoRaHandler(osThreadId main)
_ping.status = false;
}
-bool LoRaHandler::setDataRate(uint8_t rate) {
- int32_t res;
- _mutex.lock();
- res = _dot->setTxDataRate(rate);
- _mutex.unlock();
- if (res == mDot::MDOT_OK)
- return true;
-
- return false;
-}
-
-bool LoRaHandler::setPower(uint32_t power) {
- int32_t res;
- _mutex.lock();
- res = _dot->setTxPower(power);
- _mutex.unlock();
- if (res == mDot::MDOT_OK)
- return true;
-
- return false;
-}
-
bool LoRaHandler::ping() {
return action(l_ping);
}
@@ -151,15 +129,6 @@ LoRaHandler::LoRaPing LoRaHandler::getPingResults() {
return ping;
}
-uint32_t LoRaHandler::getNextTx() {
- uint32_t ms;
- _mutex.lock();
- ms = _dot->getNextTxMs();
- _mutex.unlock();
-
- return ms;
-}
-
uint32_t LoRaHandler::getJoinAttempts() {
uint32_t val;
diff --git a/LoRaHandler/LoRaHandler.h b/LoRaHandler/LoRaHandler.h
index 1a68668..a715d03 100644
--- a/LoRaHandler/LoRaHandler.h
+++ b/LoRaHandler/LoRaHandler.h
@@ -27,15 +27,12 @@ class LoRaHandler {
LoRaHandler(osThreadId main);
~LoRaHandler();
- bool setDataRate(uint8_t rate);
- bool setPower(uint32_t power);
bool ping();
bool send(std::vector<uint8_t> data);
bool join();
bool action(uint8_t cmd);
LoRaStatus getStatus();
LoRaPing getPingResults();
- uint32_t getNextTx();
uint32_t getJoinAttempts();
void resetJoinAttempts();
diff --git a/Mode/ModeJoin.cpp b/Mode/ModeJoin.cpp
index c992eff..9adbd55 100644
--- a/Mode/ModeJoin.cpp
+++ b/Mode/ModeJoin.cpp
@@ -22,12 +22,12 @@ bool ModeJoin::start() {
display();
- _lora->setDataRate(_data_rate);
- _lora->setPower(_power);
+ _dot->setTxDataRate(_data_rate);
+ _dot->setTxPower(_power);
_lora->resetJoinAttempts();
while (! _joined) {
- _next_tx = _lora->getNextTx();
+ _next_tx = _dot->getNextTxMs();
if (_next_tx) {
logInfo("next tx %lu ms", _next_tx);
_join.updateStatus("Waiting...");
diff --git a/Mode/ModeSingle.cpp b/Mode/ModeSingle.cpp
index bda6e12..ab371fb 100644
--- a/Mode/ModeSingle.cpp
+++ b/Mode/ModeSingle.cpp
@@ -102,7 +102,7 @@ bool ModeSingle::start() {
case show_help:
_state = in_progress;
_progress.display();
- if (_lora->getNextTx() > 0)
+ if (_dot->getNextTxMs() > 0)
no_channel_ping = true;
else
send_ping = true;
@@ -113,7 +113,7 @@ bool ModeSingle::start() {
case success:
_state = in_progress;
_progress.display();
- if (_lora->getNextTx() > 0)
+ if (_dot->getNextTxMs() > 0)
no_channel_ping = true;
else
send_ping = true;
@@ -123,7 +123,7 @@ bool ModeSingle::start() {
case failure:
_state = in_progress;
_progress.display();
- if (_lora->getNextTx() > 0)
+ if (_dot->getNextTxMs() > 0)
no_channel_ping = true;
else
send_ping = true;
@@ -153,7 +153,7 @@ bool ModeSingle::start() {
appendDataFile(_data);
if (_send_data) {
_state = data;
- if (_lora->getNextTx() > 0)
+ if (_dot->getNextTxMs() > 0)
no_channel_data = true;
else
send_data = true;
@@ -226,9 +226,12 @@ bool ModeSingle::start() {
break;
case data:
_state = success;
- _success.updateInfo("Data Send Success");
+ _success.updateInfo(" ");
_success.updateSw1(" Power");
_success.updateSw2("Survey");
+ // turn acks and receive windows back on
+ _dot->setAck(1);
+ _dot->setTxWait(true);
logInfo("data send success");
break;
case failure:
@@ -250,9 +253,12 @@ bool ModeSingle::start() {
break;
case data:
_state = success;
- _success.updateInfo("Data Send Failure");
+ _success.updateInfo(" ");
_success.updateSw1(" Power");
_success.updateSw2("Survey");
+ // turn acks and receive windows back on
+ _dot->setAck(1);
+ _dot->setTxWait(true);
logInfo("data send failed");
break;
case failure:
@@ -264,7 +270,7 @@ bool ModeSingle::start() {
}
if (no_channel_ping) {
- uint32_t t = _lora->getNextTx();
+ uint32_t t = _dot->getNextTxMs();
if (t > 0) {
logInfo("next tx %lu ms", t);
_progress.updateCountdown(t / 1000);
@@ -275,7 +281,7 @@ bool ModeSingle::start() {
}
}
if (no_channel_data) {
- uint32_t t = _lora->getNextTx();
+ uint32_t t = _dot->getNextTxMs();
if (t > 0) {
logInfo("next tx %lu ms", t);
_success.updateCountdown(t / 1000);
@@ -288,8 +294,8 @@ bool ModeSingle::start() {
if (send_ping) {
logInfo("sending ping %s %d", _dot->DataRateStr(_data_rate).c_str(), _power);
send_ping = false;
- _lora->setDataRate(_data_rate);
- _lora->setPower(_power);
+ _dot->setTxDataRate(_data_rate);
+ _dot->setTxPower(_power);
_lora->ping();
_index++;
}
@@ -298,8 +304,12 @@ bool ModeSingle::start() {
logInfo("sending data %s %d", _dot->DataRateStr(_data_rate).c_str(), _power);
send_data = false;
_success.updateInfo("Data Sending...");
- _lora->setDataRate(_data_rate);
- _lora->setPower(_power);
+ _dot->setTxDataRate(_data_rate);
+ _dot->setTxPower(_power);
+ // we don't care if the server actually gets this packet or not
+ // we won't retry anyway
+ _dot->setAck(0);
+ _dot->setTxWait(false);
_lora->send(s_data);
}
}
diff --git a/Mode/ModeSweep.cpp b/Mode/ModeSweep.cpp
index 12dbd1e..a0f6595 100644
--- a/Mode/ModeSweep.cpp
+++ b/Mode/ModeSweep.cpp
@@ -141,7 +141,7 @@ bool ModeSweep::start() {
_state = in_progress;
_progress.display();
_progress.updateProgress(_survey_current, _survey_total);
- if (_lora->getNextTx() > 0)
+ if (_dot->getNextTxMs() > 0)
no_channel_ping = true;
else
send_ping = true;
@@ -159,7 +159,7 @@ bool ModeSweep::start() {
_survey_current = 1;
_progress.display();
_progress.updateProgress(_survey_current, _survey_total);
- if (_lora->getNextTx() > 0)
+ if (_dot->getNextTxMs() > 0)
no_channel_ping = true;
else
send_ping = true;
@@ -190,7 +190,7 @@ bool ModeSweep::start() {
appendDataFile(_data);
if (_send_data) {
_state = data;
- if (_lora->getNextTx() > 0)
+ if (_dot->getNextTxMs() > 0)
no_channel_data = true;
else
send_data = true;
@@ -267,9 +267,12 @@ bool ModeSweep::start() {
break;
case data:
_state = success;
- _success.updateInfo("Data Send Success");
+ _success.updateInfo(" ");
_success.updateSw1(" Cancel");
logInfo("data send success");
+ // turn acks and receive windows back on
+ _dot->setAck(1);
+ _dot->setTxWait(true);
_display_timer.start();
break;
case failure:
@@ -293,9 +296,12 @@ bool ModeSweep::start() {
break;
case data:
_state = success;
- _success.updateInfo("Data Send Failure");
+ _success.updateInfo(" ");
_success.updateSw1(" Cancel");
logInfo("data send failed");
+ // turn acks and receive windows back on
+ _dot->setAck(1);
+ _dot->setTxWait(true);
_display_timer.start();
break;
case failure:
@@ -331,7 +337,7 @@ bool ModeSweep::start() {
}
if (no_channel_ping) {
- uint32_t t = _lora->getNextTx();
+ uint32_t t = _dot->getNextTxMs();
if (t > 0) {
logInfo("next tx %lu ms", t);
_progress.updateCountdown(t / 1000);
@@ -343,7 +349,7 @@ bool ModeSweep::start() {
}
}
if (no_channel_data) {
- uint32_t t = _lora->getNextTx();
+ uint32_t t = _dot->getNextTxMs();
if (t > 0) {
logInfo("next tx %lu ms", t);
_success.updateCountdown(t / 1000);
@@ -359,8 +365,8 @@ bool ModeSweep::start() {
_power = p.second;
logInfo("sending ping %s %d", _dot->DataRateStr(_data_rate).c_str(), _power);
send_ping = false;
- _lora->setDataRate(_data_rate);
- _lora->setPower(_power);
+ _dot->setTxDataRate(_data_rate);
+ _dot->setTxPower(_power);
_lora->ping();
}
if (send_data) {
@@ -368,8 +374,12 @@ bool ModeSweep::start() {
logInfo("sending data %s %d", _dot->DataRateStr(_data_rate).c_str(), _power);
send_data = false;
_success.updateInfo("Data Sending...");
- _lora->setDataRate(_data_rate);
- _lora->setPower(_power);
+ _dot->setTxDataRate(_data_rate);
+ _dot->setTxPower(_power);
+ // we don't care if the server actually gets this packet or not
+ // we won't retry anyway
+ _dot->setAck(0);
+ _dot->setTxWait(false);
_lora->send(s_data);
}
}