Fix parser tail pointer semantics and add further TODO

This commit is contained in:
2024-09-23 17:13:19 +02:00
parent 9aede09a2f
commit 47188c0bc8
2 changed files with 9 additions and 9 deletions

View File

@@ -3,16 +3,16 @@
#include <stdlib.h> #include <stdlib.h>
#include <ctype.h> #include <ctype.h>
#include <errno.h> #include <errno.h>
#include <avr/io.h>
#define CMD_MAX_LEN 128 #define CMD_MAX_LEN 128
// TODO: Write documentation. // TODO: Write documentation.
// TODO: Implement start and stop commands.
// TODO: Reset command buffer on timeout. // TODO: Reset command buffer on timeout.
// TODO: Test with different RXBUF sizes.
// TODO: Add commands update, start and stop.
static char cmdbuf[CMD_MAX_LEN + 1]; static char cmdbuf[CMD_MAX_LEN + 1];
static char *tail = cmdbuf + CMD_MAX_LEN - 1; static char *tail = cmdbuf + CMD_MAX_LEN;
static char *head = cmdbuf; static char *head = cmdbuf;
static bool ParseLine(cmd_t *out); static bool ParseLine(cmd_t *out);
@@ -29,13 +29,13 @@ bool CMD_Parse(char ch, cmd_t *out)
if (ch == '\n' || ch == '\r') { if (ch == '\n' || ch == '\r') {
is_valid = ParseLine(out); is_valid = ParseLine(out);
tail = cmdbuf + CMD_MAX_LEN - 1; tail = cmdbuf + CMD_MAX_LEN;
head = cmdbuf; head = cmdbuf;
return is_valid; return is_valid;
} }
if (head < tail) { if (head < tail - 1) {
*head++ = ch; *head++ = ch;
*head = '\0'; *head = '\0';
} }

View File

@@ -34,7 +34,7 @@ static float rhum;
static int Init(void); static int Init(void);
static void Update(void); static void Update(void);
static void SetTarget(float t, float td); static void SetTarget(float t, float td);
static void GetSensorState(void); static void FetchSensorValues(void);
static int Init(void) static int Init(void)
{ {
@@ -156,8 +156,8 @@ static void Update(void)
} }
} }
// Poll sensor values // Get sensor values
GetSensorState(); FetchSensorValues();
// Handle state // Handle state
switch (state) { switch (state) {
@@ -198,7 +198,7 @@ static void SetTarget(float t, float td)
dewp_target = td; dewp_target = td;
} }
static void GetSensorState(void) static void FetchSensorValues(void)
{ {
word raw; word raw;
float t[6], rh[3], td[3]; float t[6], rh[3], td[3];