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