aboutsummaryrefslogtreecommitdiff
path: root/main/tcp_server.c
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2021-11-30 23:50:53 -0700
committerJosh Rahm <joshuarahm@gmail.com>2021-11-30 23:50:53 -0700
commitd89195e2144df51ca02a860f4b46fd38b4dfeb29 (patch)
treebf94208b2538c8039729f7b30a7dd5504ebf7fb2 /main/tcp_server.c
parent6df4a4ed74621ce5df26791b84b9157902aeaa83 (diff)
downloadesp32-ws2812b-d89195e2144df51ca02a860f4b46fd38b4dfeb29.tar.gz
esp32-ws2812b-d89195e2144df51ca02a860f4b46fd38b4dfeb29.tar.bz2
esp32-ws2812b-d89195e2144df51ca02a860f4b46fd38b4dfeb29.zip
Reorganize tasks into their own files.
Diffstat (limited to 'main/tcp_server.c')
-rw-r--r--main/tcp_server.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/main/tcp_server.c b/main/tcp_server.c
new file mode 100644
index 0000000..1ff9b62
--- /dev/null
+++ b/main/tcp_server.c
@@ -0,0 +1,43 @@
+#include "tcp_server.h"
+
+#include "lwip/sockets.h"
+#include "station.h"
+
+portTASK_FUNCTION(tcp_server, params)
+{
+ ws_params_t* ws_params = (ws_params_t*) params;
+
+ wifi_init_station("Wort", "JoshIsBau5");
+
+ int s = socket(AF_INET, SOCK_STREAM, 0);
+ struct sockaddr_in addr;
+ memset(&addr, 0, sizeof(addr));
+ addr.sin_port = htons(1234);
+ addr.sin_family = AF_INET;
+ addr.sin_addr.s_addr = INADDR_ANY;
+ int err = bind(s, (struct sockaddr*)&addr, sizeof(addr));
+ if (err) {
+ printf("Error binding to sockaddr: %d\n", err);
+ return;
+ }
+
+ printf("Listening ...\n");
+ listen(s, 1);
+
+ while (true) {
+ printf("Waiting for connection... \n");
+
+ struct sockaddr_in client_addr;
+ socklen_t size;
+ int sock = accept(s, (struct sockaddr*)&client_addr, &size);
+
+ printf("Accepted connection\n");
+ ssize_t len;
+
+ while ((len = read(sock, ws_params->color, sizeof(ws_params->color) - 1)) >
+ 0) {
+ ws_params->color[len] = 0;
+ printf("Read %s\n", ws_params->color);
+ }
+ }
+}