Small refactoring

pull/15/head
sh123 2021-02-02 11:18:46 +02:00
rodzic fb4e0125f8
commit 014fd6b045
4 zmienionych plików z 50 dodań i 43 usunięć

Wyświetl plik

@ -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();

Wyświetl plik

@ -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);

Wyświetl plik

@ -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");
}
}

Wyświetl plik

@ -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_;