Skip to content

Commit 5a8afeb

Browse files
authored
Merge pull request #179 from toyo/master
2 parents 2b9912e + 6c43f70 commit 5a8afeb

File tree

4 files changed

+18
-7
lines changed

4 files changed

+18
-7
lines changed

lib/LoRa/LoRa.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#define REG_FIFO_RX_CURRENT_ADDR 0x10
1919
#define REG_IRQ_FLAGS 0x12
2020
#define REG_RX_NB_BYTES 0x13
21+
#define REG_MODEM_STAT 0x18
2122
#define REG_PKT_SNR_VALUE 0x19
2223
#define REG_PKT_RSSI_VALUE 0x1a
2324
#define REG_RSSI_VALUE 0x1b
@@ -251,6 +252,10 @@ float LoRaClass::packetSnr() {
251252
return ((int8_t)readRegister(REG_PKT_SNR_VALUE)) * 0.25;
252253
}
253254

255+
bool LoRaClass::rxSignalDetected() {
256+
return (readRegister(REG_MODEM_STAT) & 0x01) == 0x01;
257+
}
258+
254259
long LoRaClass::packetFrequencyError() {
255260
int32_t freqError = 0;
256261
freqError = static_cast<int32_t>(readRegister(REG_FREQ_ERROR_MSB) & B111);

lib/LoRa/LoRa.h

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class LoRaClass : public Stream {
4444
int packetRssi();
4545
float packetSnr();
4646
long packetFrequencyError();
47+
bool rxSignalDetected();
4748

4849
int rssi();
4950

src/LoRa_APRS_iGate.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include "TaskWifi.h"
2121
#include "project_configuration.h"
2222

23-
#define VERSION "22.12.4"
23+
#define VERSION "22.13.0"
2424
#define MODULE_NAME "Main"
2525

2626
String create_lat_aprs(double lat);

src/TaskModem.cpp

+11-6
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,18 @@ bool ModemTask::loop(System &system) {
4545
}
4646

4747
if (!_toModem.empty()) {
48-
std::shared_ptr<APRSMessage> msg = _toModem.getElement();
49-
if (system.getUserConfig()->lora.tx_enable) {
50-
system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, getName(), "[%s] Transmitting packet '%s'", timeString().c_str(), msg->toString().c_str());
51-
_lora_aprs.sendMessage(msg);
52-
system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, getName(), "[%s] TX done", timeString().c_str());
48+
if (_lora_aprs.rxSignalDetected()) {
49+
system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, getName(), "[%s] RX signal detected. Waiting TX", timeString().c_str());
50+
delay(1000);
5351
} else {
54-
system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, getName(), "[%s] NOT transmitting packet as TX is not enabled '%s'", timeString().c_str(), msg->toString().c_str());
52+
std::shared_ptr<APRSMessage> msg = _toModem.getElement();
53+
if (system.getUserConfig()->lora.tx_enable) {
54+
system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, getName(), "[%s] Transmitting packet '%s'", timeString().c_str(), msg->toString().c_str());
55+
_lora_aprs.sendMessage(msg);
56+
system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, getName(), "[%s] TX done", timeString().c_str());
57+
} else {
58+
system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, getName(), "[%s] NOT transmitting packet as TX is not enabled '%s'", timeString().c_str(), msg->toString().c_str());
59+
}
5560
}
5661
}
5762

0 commit comments

Comments
 (0)