Small refactoring

pull/15/head
sh123 2020-06-19 10:39:49 +03:00
rodzic 04f76c7301
commit ee46c91b88
6 zmienionych plików z 32 dodań i 40 usunięć

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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