Bugfix in LoRa-Uart

This commit is contained in:
Marcel Peterkau 2023-05-28 19:36:39 +02:00
parent 498d813624
commit 0967b6aa65

View File

@ -68,6 +68,7 @@ bool InitLoRa(void (*MPinHelper)(int, int))
} }
#elif defined(FEATURE_ENABLE_UARTLORA) #elif defined(FEATURE_ENABLE_UARTLORA)
SerialLoRa.begin(9600); SerialLoRa.begin(9600);
returnval = true;
#endif #endif
return returnval; return returnval;
} }
@ -94,35 +95,26 @@ void LoRa_Process()
} }
#elif defined(FEATURE_ENABLE_UARTLORA) #elif defined(FEATURE_ENABLE_UARTLORA)
char packageInput[16]; static char packageInput[32];
bool packageRecieved = false; static bool packageRecieved = false;
unsigned int bufferPtr = 0; static unsigned int bufferPtr = 0;
if (SerialLoRa.available() && packageRecieved == false) while (SerialLoRa.available() && packageRecieved == false)
{
while (bufferPtr < sizeof(packageInput))
{
packageInput[bufferPtr] = SerialLoRa.read();
if (packageInput[bufferPtr] == '\n')
{
packageInput[bufferPtr] = 0; // terminate String
packageRecieved = true;
Debug_pushMessage("Got LoRa UART: %s\n", packageInput);
break;
}
else if ((packageInput[bufferPtr] >= 0x30) || (packageInput[bufferPtr] <= 0x5A)) // only accept Numbers, UpperCase-Letters and some special chars
{ {
if (bufferPtr < sizeof(packageInput) - 1) if (bufferPtr < sizeof(packageInput) - 1)
{ {
bufferPtr++; packageInput[bufferPtr] = SerialLoRa.read();
} packageInput[bufferPtr + 1] = 0; // always terminate String
else
if (packageInput[bufferPtr] == '\n')
{ {
packageInput[bufferPtr] = 0; // terminate String, bc Buffer is full (package to long) packageRecieved = true;
packageRecieved = true; // send it anyway to the parser bufferPtr = 0;
Debug_pushMessage("Got LoRa UART: %s\n", packageInput); Debug_pushMessage("Got LoRa UART: %s\n", packageInput);
break;
} }
else if ((packageInput[bufferPtr] >= 0x30) || (packageInput[bufferPtr] <= 0x5A)) // only accept Numbers, UpperCase-Letters and some special chars
{
bufferPtr++;
} }
} }
} }