Skip to content

Commit

Permalink
signalDecoder.cpp - fix MS detection
Browse files Browse the repository at this point in the history
Es werden nun am Anfang von MS-Nachrichten auch mehrere sync in Folge erkannt und übersprungen.
Bei der Ausgabe werden nun mit "b<x>" die Position des ersten Sync und mit "s<x>" die Anzahl der sync ausgegeben.
Z.B.: "...01010;CP=1;SP=3;R=6;O;b63;s4;m0;" beim GT-WT-02 Temperatursensor
  • Loading branch information
Ralf9 committed Jun 16, 2019
1 parent f33f5f8 commit 746ccea
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions src/_micro-api/libraries/signalDecoder/src/signalDecoder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -472,18 +472,26 @@ void SignalDetectorClass::processMessage(const uint8_t p_valid)

mend = mstart + 12;
uint8_t mstartNeu = mstart + 10;
uint8_t mstartAlt = mstart;
bool m_endfound = false;

while (mstartNeu > mstart) // testen ob innerhalb 10 Zeichen nach dem sync ein weiterer sync folgt, falls ja diesen als neuen mstart verwenden
{
//if (message[mend + 1] == sync && message[mend] == clock) {
if (message[mstartNeu + 1] == sync) {
if (message[mstartNeu] == clock) {
while (mstartNeu < mstartNeu+40 && mstartNeu < (messageLen - minMessageLen)) // alle folgenden sync ueberspringen
{
if (message[mstartNeu + 2] != clock || message[mstartNeu + 3] != sync) { // folgt kein weiterer sync?
#ifdef DEBUGDECODE
DBG_PRINT(F("MStart:")); DBG_PRINT(mstart);
DBG_PRINT(F(" new MStart:")); DBG_PRINTLN(mstartNeu);
#endif
mstart = mstartNeu; // weiterer sync -> neuer mstart
mstart = mstartNeu; // weiterer sync -> neuer mstart
mend = mstart + 2;
break;
}
mstartNeu += 2;
}
break;
}
}
Expand Down Expand Up @@ -616,14 +624,17 @@ void SignalDetectorClass::processMessage(const uint8_t p_valid)
MSG_PRINT("O"); MSG_PRINT(SERIAL_DELIMITER);
}
if (MdebEnabled) {
if (mstart > 1) {
MSG_PRINT("s"); MSG_PRINT(mstart); MSG_PRINT(SERIAL_DELIMITER);
}
if (p_valid == 0) { // Nachrichtenende erkannt
MSG_PRINT("e"); MSG_PRINT(SERIAL_DELIMITER);
} else if (p_valid == 2) { // Patternpuffer overflow
MSG_PRINT("p"); MSG_PRINT(SERIAL_DELIMITER);
}
if (mstartAlt > 1) {
MSG_PRINT("b"); MSG_PRINT(mstartAlt); MSG_PRINT(SERIAL_DELIMITER); // Position von ersten gefundenen Sync
}
if (mstart > mstartAlt) {
MSG_PRINT(F("s")); MSG_PRINT(mstart - mstartAlt); MSG_PRINT(SERIAL_DELIMITER); // Anzahl der uebersprungenen Sync
}
}
}
m_truncated = false;
Expand Down

0 comments on commit 746ccea

Please sign in to comment.