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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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