4 Commits
1.03 ... 1.05

4 changed files with 46 additions and 29 deletions

View File

@@ -1 +1 @@
1.03 1.04

View File

@@ -59,8 +59,8 @@ typedef struct Constants_s
} Constants_t; } Constants_t;
const Constants_t constants PROGMEM = { const Constants_t constants PROGMEM = {
1,3, // Firmware_Version 1,5, // Firmware_Version
1,3, // Required Flash Version 1,4, // Required Flash Version
GIT_REV // Git-Hash-String GIT_REV // Git-Hash-String
}; };

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,41 +95,36 @@ 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;
int recievedSize = 0;
if (SerialLoRa.available() && packageRecieved == false) while (SerialLoRa.available() && packageRecieved == false)
{ {
while (bufferPtr < sizeof(packageInput)) if (bufferPtr < sizeof(packageInput) - 1)
{ {
packageInput[bufferPtr] = SerialLoRa.read(); packageInput[bufferPtr] = SerialLoRa.read();
packageInput[bufferPtr + 1] = 0; // always terminate String
if (packageInput[bufferPtr] == '\n') if (packageInput[bufferPtr] == '\n')
{ {
packageInput[bufferPtr] = 0; // terminate String
packageRecieved = true; packageRecieved = true;
recievedSize = bufferPtr;
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 else if ((packageInput[bufferPtr] >= 0x30) || (packageInput[bufferPtr] <= 0x5A)) // only accept Numbers, UpperCase-Letters and some special chars
{ {
if (bufferPtr < sizeof(packageInput) - 1) bufferPtr++;
{
bufferPtr++;
}
else
{
packageInput[bufferPtr] = 0; // terminate String, bc Buffer is full (package to long)
packageRecieved = true; // send it anyway to the parser
Debug_pushMessage("Got LoRa UART: %s\n", packageInput);
break;
}
} }
} }
} }
if (packageRecieved) if (packageRecieved) {
Parse_LoRa_UartCommand(packageInput, bufferPtr); Parse_LoRa_UartCommand(packageInput, recievedSize);
packageRecieved = false;
}
#endif #endif
} }
@@ -242,6 +238,7 @@ void printParameters(struct Configuration configuration)
void Parse_LoRa_UartCommand(char input[], int size) void Parse_LoRa_UartCommand(char input[], int size)
{ {
Debug_pushMessage("Start parsing, size: %d", size);
char delimiter[] = ";"; char delimiter[] = ";";
char *ptr; char *ptr;
char command[8]; char command[8];
@@ -249,11 +246,28 @@ void Parse_LoRa_UartCommand(char input[], int size)
ptr = strtok(input, delimiter); ptr = strtok(input, delimiter);
ptr = strtok(input, delimiter);
while (ptr != NULL) while (ptr != NULL)
{ {
strncpy(command, ptr, sizeof(command)); strncpy(command, ptr, sizeof(command) - 1); // Platz für Nullterminator lassen
command[sizeof(command) - 1] = '\0'; // Nullterminator setzen
ptr = strtok(NULL, delimiter); ptr = strtok(NULL, delimiter);
strncpy(value, ptr, sizeof(value));
if (ptr != NULL)
{
strncpy(value, ptr, sizeof(value) - 1); // Platz für Nullterminator lassen
value[sizeof(value) - 1] = '\0'; // Nullterminator setzen
}
else
{
// Wenn ptr NULL ist, setze value auf leeren String
value[0] = '\0';
}
// Hier kannst du den Wert und das Kommando verarbeiten
Debug_pushMessage("Command: %s, Value: %s", command, value);
} }
Debug_pushMessage("Parsed LoRa UART Command: %s Value: %s\n", command, value); Debug_pushMessage("Parsed LoRa UART Command: %s Value: %s\n", command, value);
@@ -261,10 +275,12 @@ void Parse_LoRa_UartCommand(char input[], int size)
if (!strcmp(command, "ENABLE")) if (!strcmp(command, "ENABLE"))
{ {
globals.timer_disabled = false; globals.timer_disabled = false;
Debug_pushMessage("Enabled by LoRa");
} }
else if (!strcmp(command, "DISABLE")) else if (!strcmp(command, "DISABLE"))
{ {
globals.timer_disabled = false; globals.timer_disabled = true;
Debug_pushMessage("Disabled by LoRa");
} }
else if (!strcmp(command, "RESET")) else if (!strcmp(command, "RESET"))
{ {
@@ -272,6 +288,7 @@ void Parse_LoRa_UartCommand(char input[], int size)
PersistenceData.faction_1_timer = 0; PersistenceData.faction_1_timer = 0;
PersistenceData.faction_2_timer = 0; PersistenceData.faction_2_timer = 0;
PersistenceData.faction_3_timer = 0; PersistenceData.faction_3_timer = 0;
Debug_pushMessage("Reset by LoRa");
} }
else if (!strcmp(command, "TMRSTP")) else if (!strcmp(command, "TMRSTP"))
{ {

View File

@@ -352,7 +352,7 @@ void tmrCallback_InputGetter()
return; return;
} }
if (btnState[0] == FAC_1_TRG_PRESSED && globals.timer_disabled == false) if (btnState[0] == FAC_1_TRG_PRESSED && globals.timer_disabled != true)
{ {
if (PersistenceData.activeFaction != FACTION_1) if (PersistenceData.activeFaction != FACTION_1)
{ {
@@ -362,7 +362,7 @@ void tmrCallback_InputGetter()
PersistenceData.activeFaction = FACTION_1; PersistenceData.activeFaction = FACTION_1;
} }
if (btnState[1] == FAC_2_TRG_PRESSED && globals.timer_disabled == false) if (btnState[1] == FAC_2_TRG_PRESSED && globals.timer_disabled != true)
{ {
if (PersistenceData.activeFaction != FACTION_2) if (PersistenceData.activeFaction != FACTION_2)
{ {
@@ -372,7 +372,7 @@ void tmrCallback_InputGetter()
PersistenceData.activeFaction = FACTION_2; PersistenceData.activeFaction = FACTION_2;
} }
if (btnState[2] == FAC_3_TRG_PRESSED && globals.timer_disabled == false) if (btnState[2] == FAC_3_TRG_PRESSED && globals.timer_disabled != true)
{ {
if (PersistenceData.activeFaction != FACTION_3) if (PersistenceData.activeFaction != FACTION_3)
{ {