Fix parser tail pointer semantics and add further TODO
This commit is contained in:
@@ -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';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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];
|
||||||
|
|||||||
Reference in New Issue
Block a user