From f4375bf5b800d3b48355fbf35380217019c2892b Mon Sep 17 00:00:00 2001 From: FReenen Date: Tue, 11 Jun 2024 21:23:05 +0200 Subject: [PATCH] prepair the use of the cli lib --- rx_esp2866/lib/cli | 2 +- rx_esp2866/src/commands.c | 6 +-- rx_esp2866/src/main.c | 108 ++++++++++++++------------------------ rx_esp2866/src/utils.c | 39 ++++++++++++++ rx_esp2866/src/utils.h | 6 +++ 5 files changed, 87 insertions(+), 74 deletions(-) create mode 100644 rx_esp2866/src/utils.c create mode 100644 rx_esp2866/src/utils.h diff --git a/rx_esp2866/lib/cli b/rx_esp2866/lib/cli index 34f830b..09ae510 160000 --- a/rx_esp2866/lib/cli +++ b/rx_esp2866/lib/cli @@ -1 +1 @@ -Subproject commit 34f830bd1d23379f58b956f28cd6cd0171d46957 +Subproject commit 09ae51070be1be5ebf6717649460510dd744cf65 diff --git a/rx_esp2866/src/commands.c b/rx_esp2866/src/commands.c index c02f65b..4660652 100644 --- a/rx_esp2866/src/commands.c +++ b/rx_esp2866/src/commands.c @@ -3,13 +3,13 @@ #include "commands.h" -int boads(char* line) +int contrl(char* line) { - // do stuff + } const CMD_t Commands[] = { - { "ctrl", &test } + { "ctrl", &contrl } }; CMDList_t* getCMDList() diff --git a/rx_esp2866/src/main.c b/rx_esp2866/src/main.c index 839909d..07931dc 100644 --- a/rx_esp2866/src/main.c +++ b/rx_esp2866/src/main.c @@ -1,25 +1,34 @@ #include +#include +#include #include #include -#define WIFI_SSID "MBCBootjes" -#define WIFI_PASS "hetgrootedok" +#include "../lib/cli/CLI/CLI.h" +#include "../lib/cli/CMDList/CMDList.h" + +#include "commands.h" + +#define WIFI_SSID "UPC46273" +#define WIFI_PASS "SPHZHKRY" #define UDP_PORT 1234 #define BOAT_ID 1 WiFiUDP UDP; -#define RX_BUFFER_SIZE 255 -char rxBuffer[RX_BUFFER_SIZE]; -char lineBuffer[RX_BUFFER_SIZE]; -uint8_t rxBuffer_readPointer = 0; -uint8_t rxBuffer_lineStart = 0; -uint8_t rxBuffer_lineEnd = 0; -bool unProcessedLineAvailable = false; + +bool running = true; +CMDList_t* cmdList; bool rxBuffer_overflow = false; +int charOut(const char* line) +{ + // don't print anything + return 0; +} + void setup() { WiFi.begin(WIFI_SSID, WIFI_PASS); while (WiFi.status() != WL_CONNECTED) @@ -29,75 +38,34 @@ void setup() { } UDP.begin(UDP_PORT); -} -void processLine() -{ - rxBuffer[rxBuffer_lineEnd] = 0; - uint8_t readPointer = rxBuffer_lineStart; - enum { - reading_id, - reading_cmd, - reading_value, - invalid_line - } readState = reading_id; + running = true; - uint16_t id = 0; + cmdList = getCMDList(); + + // init cli + CLI_init((CLI_charOutFn)&charOut, cmdList); - while (rxBuffer_lineStart < rxBuffer_lineEnd) - { - switch (readState) - { - case reading_id: - if (rxBuffer[readPointer] >= '0' && rxBuffer[readPointer] <= '9') - { - id = (id * 10) + (rxBuffer[readPointer] - '0'); - } - else if ((rxBuffer[readPointer] == ':') && (id == BOAT_ID)) - { - readState = reading_cmd; - } - else - { - readState = invalid_line; - } - break; - case reading_cmd: - break; - case reading_value: - break; - case invalid_line: - rxBuffer_lineStart = rxBuffer_lineEnd; - break; + while (running) + { + int packetSize = UDP.parsePacket(); + while (packetSize) { + char c; + int len = UDP.read(&c, 1); + if (len == 1) + { + CLI_charIn(c); + packetSize -= c; + } } - rxBuffer_lineStart++; - } -} + } -int readNextLine() -{ - while (rxBuffer_readPointer < RX_BUFFER_SIZE) - { - if (rxBuffer[rxBuffer_readPointer] == '\n') - { - rxBuffer_lineEnd = rxBuffer_readPointer; - processLine(); - } + CLI_deinit(); + CMDList_deinit(cmdList); - rxBuffer_readPointer++; - } + return; } void loop() { - int packetSize = UDP.parsePacket(); - if (packetSize) { - int len = UDP.read(&rxBuffer[0], RX_BUFFER_SIZE); - - rxBuffer_readPointer = 0; - rxBuffer_lineStart = 0; - rxBuffer_lineEnd = 0; - - readNextLine(); - } } diff --git a/rx_esp2866/src/utils.c b/rx_esp2866/src/utils.c new file mode 100644 index 0000000..fe7f37b --- /dev/null +++ b/rx_esp2866/src/utils.c @@ -0,0 +1,39 @@ +#include "utils.h" + +#include +#include + +char* getNextArg(char* args) +{ + uint8_t step = 0; + int end = 0; + while (end == 0) + { + if (step < 255) + { + switch (*(args + step)) + { + case ';': + end = 1; // found + case '\n': + case '\r': + case '\0': + end = 2; // end of line + } + } + else + { + end = 3; // line to long + } + step++; + } + + if (end != 3) + { + return args + step; + } + else + { + return NULL; + } +} diff --git a/rx_esp2866/src/utils.h b/rx_esp2866/src/utils.h new file mode 100644 index 0000000..dfb488e --- /dev/null +++ b/rx_esp2866/src/utils.h @@ -0,0 +1,6 @@ +#ifndef UTILS_H +#define UTILS_H + +char* getNextArg(char* args); + +#endif \ No newline at end of file