aboutsummaryrefslogtreecommitdiff
path: root/include/sockbuf.h
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2021-12-01 23:42:19 -0700
committerJosh Rahm <joshuarahm@gmail.com>2021-12-01 23:42:19 -0700
commit62715093e446d952bbc3fa82fdb65deacd576be2 (patch)
treec4fca7d19d8cd73b76c030de8f66eedc1930ec22 /include/sockbuf.h
parentb1ca00800f34ab86c0a99c46796c73a8028157ff (diff)
downloadesp32-ws2812b-62715093e446d952bbc3fa82fdb65deacd576be2.tar.gz
esp32-ws2812b-62715093e446d952bbc3fa82fdb65deacd576be2.tar.bz2
esp32-ws2812b-62715093e446d952bbc3fa82fdb65deacd576be2.zip
Add a controller shell.
This adds a mini shell to the tcp server that allows the user to modify the current state. Commands are in the form: set [int_attribute] (=|+=|-=) [number] set [bool_attribute] (on|off|toggle) print end for example: set brightness += 5 set power on print end
Diffstat (limited to 'include/sockbuf.h')
-rw-r--r--include/sockbuf.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/include/sockbuf.h b/include/sockbuf.h
new file mode 100644
index 0000000..664e134
--- /dev/null
+++ b/include/sockbuf.h
@@ -0,0 +1,39 @@
+#pragma once
+#ifndef SOCKBUF_H_
+#define SOCKBUF_H_
+
+#include <inttypes.h>
+
+#define SOCKBUF_BUFLEN 128
+#define SOCKBUF_CLOSED 1
+
+typedef struct {
+ uint8_t buf[SOCKBUF_BUFLEN];
+
+ uint8_t next;
+ uint8_t last;
+
+ int socket;
+ uint8_t flags;
+} sockbuf_t;
+
+/* Initialize a sockbuf from the provided file descriptor. */
+sockbuf_t* init_sockbuf(sockbuf_t* sockbuf, int socket);
+
+/* Writes a null-terminated string to the socket. */
+void sockbuf_write(sockbuf_t* sockbuf, const char* value);
+
+/*
+ * Return the next character of the sockbuf or -1 if EOF was reached.
+ *
+ * This does not advance the pointer.
+ */
+int peek_char(sockbuf_t* sockbuf);
+
+/*
+ * Return and consume the next character of the sockbuf or -1 if EOF was
+ * reached.
+ */
+int get_char(sockbuf_t* sockbuf);
+
+#endif /* SOCKBUF_H_ */