kopia lustrzana https://github.com/sh123/esp32_loraprs
Small refactoring
rodzic
fb4e0125f8
commit
014fd6b045
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace AX25 {
|
||||
|
||||
Payload::Payload(byte *rxPayload, int payloadLength)
|
||||
Payload::Payload(const byte *rxPayload, int payloadLength)
|
||||
: rptCallsCount_(0)
|
||||
{
|
||||
isValid_ = fromBinary(rxPayload, payloadLength);
|
||||
|
@ -67,7 +67,7 @@ int Payload::ToBinary(byte *txPayload, int bufferLength) const
|
|||
return (int)(txPtr-txPayload);
|
||||
}
|
||||
|
||||
String Payload::ToString(String customComment)
|
||||
String Payload::ToString(const String &customComment)
|
||||
{
|
||||
String txt = srcCall_.ToString() + String(">") + dstCall_.ToString();
|
||||
|
||||
|
|
|
@ -11,11 +11,11 @@ class Payload
|
|||
{
|
||||
public:
|
||||
Payload(const String &textPayload);
|
||||
Payload(byte *rxPayload, int payloadLength);
|
||||
Payload(const byte *rxPayload, int payloadLength);
|
||||
|
||||
inline bool IsValid() const { return isValid_; }
|
||||
|
||||
String ToString(String customComment=String());
|
||||
String ToString(const String &customComment=String());
|
||||
int ToBinary(byte *txPayload, int bufferLength) const;
|
||||
|
||||
bool Digirepeat(const Callsign &ownCallsign);
|
||||
|
|
|
@ -69,7 +69,7 @@ void Service::setupWifi(const String &wifiName, const String &wifiKey)
|
|||
}
|
||||
}
|
||||
|
||||
void Service::reconnectWifi()
|
||||
void Service::reconnectWifi() const
|
||||
{
|
||||
Serial.print("WIFI re-connecting...");
|
||||
|
||||
|
@ -268,9 +268,6 @@ void Service::onLoraDataAvailable(int packetSize)
|
|||
}
|
||||
|
||||
serialBt_.write(KissMarker::Fend);
|
||||
|
||||
float snr = LoRa.packetSnr();
|
||||
float rssi = LoRa.packetRssi();
|
||||
long frequencyError = LoRa.packetFrequencyError();
|
||||
|
||||
if (config_.EnableAutoFreqCorrection) {
|
||||
|
@ -279,36 +276,44 @@ void Service::onLoraDataAvailable(int packetSize)
|
|||
}
|
||||
|
||||
if (!config_.IsClientMode) {
|
||||
processIncomingRawPacketAsServer(rxBuf, rxBufIndex);
|
||||
}
|
||||
}
|
||||
|
||||
void Service::processIncomingRawPacketAsServer(const byte *packet, int packetLength) {
|
||||
|
||||
float snr = LoRa.packetSnr();
|
||||
float rssi = LoRa.packetRssi();
|
||||
long frequencyError = LoRa.packetFrequencyError();
|
||||
|
||||
String signalReport = String(" ") +
|
||||
String("rssi: ") +
|
||||
String(snr < 0 ? rssi + snr : rssi) +
|
||||
String("dBm, ") +
|
||||
String("snr: ") +
|
||||
String(snr) +
|
||||
String("dB, ") +
|
||||
String("err: ") +
|
||||
String(frequencyError) +
|
||||
String("Hz");
|
||||
|
||||
AX25::Payload payload(packet, packetLength);
|
||||
|
||||
if (payload.IsValid()) {
|
||||
|
||||
String signalReport = String(" ") +
|
||||
String("rssi: ") +
|
||||
String(snr < 0 ? rssi + snr : rssi) +
|
||||
String("dBm, ") +
|
||||
String("snr: ") +
|
||||
String(snr) +
|
||||
String("dB, ") +
|
||||
String("err: ") +
|
||||
String(frequencyError) +
|
||||
String("Hz");
|
||||
|
||||
AX25::Payload payload(rxBuf, rxBufIndex);
|
||||
|
||||
if (payload.IsValid()) {
|
||||
String textPayload = payload.ToString(config_.EnableSignalReport ? signalReport : String());
|
||||
Serial.println(textPayload);
|
||||
|
||||
if (config_.EnableRfToIs) {
|
||||
sendToAprsis(textPayload);
|
||||
Serial.println("Packet sent to APRS-IS");
|
||||
}
|
||||
if (config_.EnableRepeater && payload.Digirepeat(ownCallsign_)) {
|
||||
sendAX25ToLora(payload);
|
||||
Serial.println("Packet digirepeated");
|
||||
}
|
||||
String textPayload = payload.ToString(config_.EnableSignalReport ? signalReport : String());
|
||||
Serial.println(textPayload);
|
||||
|
||||
if (config_.EnableRfToIs) {
|
||||
sendToAprsis(textPayload);
|
||||
Serial.println("Packet sent to APRS-IS");
|
||||
}
|
||||
else {
|
||||
Serial.println("Skipping non-AX25 payload");
|
||||
if (config_.EnableRepeater && payload.Digirepeat(ownCallsign_)) {
|
||||
sendAX25ToLora(payload);
|
||||
Serial.println("Packet digirepeated");
|
||||
}
|
||||
} else {
|
||||
Serial.println("Skipping non-AX25 payload");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ private:
|
|||
void setupLora(long loraFreq, long bw, int sf, int cr, int pwr, int sync, bool enableCrc);
|
||||
void setupBt(const String &btName);
|
||||
|
||||
void reconnectWifi();
|
||||
void reconnectWifi() const;
|
||||
bool reconnectAprsis();
|
||||
|
||||
void processTx();
|
||||
|
@ -37,6 +37,7 @@ private:
|
|||
void sendPeriodicBeacon();
|
||||
void sendToAprsis(const String &aprsMessage);
|
||||
bool sendAX25ToLora(const AX25::Payload &payload);
|
||||
void processIncomingRawPacketAsServer(const byte *packet, int packetLength);
|
||||
|
||||
bool kissReceiveByte(unsigned char rxByte);
|
||||
bool kissProcessCommand(unsigned char rxByte);
|
||||
|
@ -91,20 +92,21 @@ private:
|
|||
|
||||
const String CfgLoraprsVersion = "LoRAPRS 0.1";
|
||||
|
||||
// module pinouts
|
||||
const byte CfgPinSs = 5;
|
||||
const byte CfgPinRst = 26;
|
||||
const byte CfgPinDio0 = 14;
|
||||
|
||||
// processor config
|
||||
const int CfgConnRetryMs = 500;
|
||||
const int CfgPollDelayMs = 5;
|
||||
const int CfgLoraTxQueueSize = 4096;
|
||||
const int CfgWiFiConnRetryMaxTimes = 10;
|
||||
|
||||
// tx when lower than this value from random 0..255
|
||||
// use lower value for high traffic, use 255 for real time
|
||||
// csma paramters, use lower value for high traffic, use 255 for real time
|
||||
const long CfgCsmaPersistence = 100;
|
||||
const long CfgCsmaSlotTimeMs = 500;
|
||||
|
||||
const byte CfgPinSs = 5;
|
||||
const byte CfgPinRst = 26;
|
||||
const byte CfgPinDio0 = 14;
|
||||
|
||||
|
||||
private:
|
||||
// config
|
||||
Config config_;
|
||||
|
|
Ładowanie…
Reference in New Issue