kopia lustrzana https://github.com/sh123/esp32_loraprs
Small refactoring
rodzic
04f76c7301
commit
ee46c91b88
|
@ -32,7 +32,7 @@ Callsign::Callsign(const byte *rxPayload, int payloadLength)
|
|||
isValid_ = fromBinary(rxPayload, payloadLength);
|
||||
}
|
||||
|
||||
Callsign::Callsign(String callsign)
|
||||
Callsign::Callsign(const String &callsign)
|
||||
: isValid_(false)
|
||||
, call_()
|
||||
, ssid_(0)
|
||||
|
@ -42,7 +42,24 @@ Callsign::Callsign(String callsign)
|
|||
|
||||
bool Callsign::ToBinary(byte *txPayload, int bufferLength) const
|
||||
{
|
||||
return encode(txPayload, bufferLength);
|
||||
if (bufferLength < CallsignSize) return false;
|
||||
|
||||
byte *ptr = txPayload;
|
||||
|
||||
memset(ptr, 0, bufferLength);
|
||||
|
||||
for (int i = 0; i < CallsignSize - 1; i++) {
|
||||
if (i < call_.length()) {
|
||||
char c = call_.charAt(i);
|
||||
*(ptr++) = c << 1;
|
||||
}
|
||||
else {
|
||||
*(ptr++) = char(' ') << 1;
|
||||
}
|
||||
}
|
||||
*(txPayload + CallsignSize - 1) = ssid_ << 1;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
String Callsign::ToString() const
|
||||
|
@ -67,28 +84,6 @@ bool Callsign::Digirepeat()
|
|||
return false;
|
||||
}
|
||||
|
||||
bool Callsign::encode(byte *txPtr, int bufferLength) const
|
||||
{
|
||||
if (bufferLength < CallsignSize) return false;
|
||||
|
||||
byte *ptr = txPtr;
|
||||
|
||||
memset(ptr, 0, bufferLength);
|
||||
|
||||
for (int i = 0; i < CallsignSize - 1; i++) {
|
||||
if (i < call_.length()) {
|
||||
char c = call_.charAt(i);
|
||||
*(ptr++) = c << 1;
|
||||
}
|
||||
else {
|
||||
*(ptr++) = char(' ') << 1;
|
||||
}
|
||||
}
|
||||
*(txPtr + CallsignSize - 1) = ssid_ << 1;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Callsign::fromString(const String &inputCallsign)
|
||||
{
|
||||
String callsign = inputCallsign;
|
||||
|
|
|
@ -13,7 +13,7 @@ public:
|
|||
Callsign& operator=(const Callsign &callsign);
|
||||
|
||||
Callsign(const byte *rxPayload, int payloadLength);
|
||||
Callsign(String inputText);
|
||||
Callsign(const String &inputText);
|
||||
|
||||
inline bool IsValid() const { return isValid_; };
|
||||
inline bool IsTrace() const { return call_.startsWith("TRACE"); }
|
||||
|
@ -26,8 +26,6 @@ public:
|
|||
bool Digirepeat();
|
||||
|
||||
private:
|
||||
bool encode(byte *txPtr, int bufferLength) const;
|
||||
|
||||
bool fromString(const String &callsign);
|
||||
bool fromBinary(const byte *rxPtr, int payloadLength);
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ Payload::Payload(byte *rxPayload, int payloadLength)
|
|||
isValid_ = fromBinary(rxPayload, payloadLength);
|
||||
}
|
||||
|
||||
Payload::Payload(String inputText)
|
||||
Payload::Payload(const String &textPayload)
|
||||
: rptCallsCount_(0)
|
||||
{
|
||||
isValid_ = fromString(inputText);
|
||||
isValid_ = fromString(textPayload);
|
||||
}
|
||||
|
||||
void Payload::Dump()
|
||||
|
@ -164,8 +164,10 @@ bool Payload::fromBinary(const byte *rxPayload, int payloadLength)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool Payload::fromString(String inputText)
|
||||
bool Payload::fromString(const String &textPayload)
|
||||
{
|
||||
String inputText = textPayload;
|
||||
|
||||
int rptIndex = inputText.indexOf('>');
|
||||
int infoIndex = inputText.indexOf(':');
|
||||
|
||||
|
|
|
@ -10,8 +10,8 @@ namespace AX25 {
|
|||
class Payload
|
||||
{
|
||||
public:
|
||||
Payload(const String &textPayload);
|
||||
Payload(byte *rxPayload, int payloadLength);
|
||||
Payload(String inputText);
|
||||
|
||||
inline bool IsValid() const { return isValid_; }
|
||||
|
||||
|
@ -22,7 +22,7 @@ public:
|
|||
void Dump();
|
||||
|
||||
private:
|
||||
bool fromString(String inputText);
|
||||
bool fromString(const String &textPayload);
|
||||
bool fromBinary(const byte *rxPayload, int payloadLength);
|
||||
|
||||
bool InsertRptCallsign(const Callsign &rptCallsign, int index);
|
||||
|
|
|
@ -153,12 +153,12 @@ void Service::loop()
|
|||
onLoraDataAvailable(packetSize);
|
||||
}
|
||||
if (needsBeacon()) {
|
||||
sendBeacon();
|
||||
sendPeriodicBeacon();
|
||||
}
|
||||
delay(10);
|
||||
delay(CfgPollDelayMs);
|
||||
}
|
||||
|
||||
void Service::sendBeacon()
|
||||
void Service::sendPeriodicBeacon()
|
||||
{
|
||||
long currentMs = millis();
|
||||
|
||||
|
@ -296,8 +296,6 @@ void Service::onLoraDataAvailable(int packetSize)
|
|||
else {
|
||||
Serial.println("Invalid payload from LoRA");
|
||||
}
|
||||
|
||||
delay(50);
|
||||
}
|
||||
|
||||
void Service::kissResetState()
|
||||
|
@ -361,7 +359,6 @@ void Service::onBtDataAvailable()
|
|||
break;
|
||||
}
|
||||
}
|
||||
delay(20);
|
||||
}
|
||||
|
||||
} // LoraPrs
|
||||
|
|
|
@ -32,7 +32,7 @@ private:
|
|||
void onBtDataAvailable();
|
||||
void onAprsisDataAvailable();
|
||||
|
||||
void sendBeacon();
|
||||
void sendPeriodicBeacon();
|
||||
|
||||
void sendToAprsis(String aprsMessage);
|
||||
bool sendToLora(const AX25::Payload &payload);
|
||||
|
@ -65,6 +65,7 @@ private:
|
|||
};
|
||||
|
||||
const String CfgLoraprsVersion = "LoRAPRS 0.1";
|
||||
const int CfgPollDelayMs = 10;
|
||||
|
||||
const byte CfgPinSs = 5;
|
||||
const byte CfgPinRst = 26;
|
||||
|
@ -94,7 +95,6 @@ private:
|
|||
// state
|
||||
KissCmd kissCmd_;
|
||||
KissState kissState_;
|
||||
|
||||
long previousBeaconMs_;
|
||||
|
||||
// peripherals
|
||||
|
|
Ładowanie…
Reference in New Issue