From 2c1a72b53a4f26f9f98a27f77d36212ad7a532fd Mon Sep 17 00:00:00 2001
From: Ayush Singh <ayushsingh1325@gmail.com>
Date: Tue, 11 Jul 2023 00:09:23 +0530
Subject: [PATCH] Add skeleton for node (tcp) interface

Signed-off-by: Ayush Singh <ayushsingh1325@gmail.com>
---
 src/node.c       | 81 ++++++++++++++++++++++++++++++++++++++++++++++++
 src/node.h       |  5 +++
 src/operations.c | 31 ------------------
 3 files changed, 86 insertions(+), 31 deletions(-)
 create mode 100644 src/node.c
 create mode 100644 src/node.h

diff --git a/src/node.c b/src/node.c
new file mode 100644
index 0000000..e4b880d
--- /dev/null
+++ b/src/node.c
@@ -0,0 +1,81 @@
+#include "operations.h"
+#include <zephyr/logging/log.h>
+#include <zephyr/net/socket.h>
+
+LOG_MODULE_DECLARE(cc1352_greybus, CONFIG_BEAGLEPLAY_GREYBUS_LOG_LEVEL);
+
+static int write_data(int sock, const void *data, size_t len) {
+  int ret;
+  int transmitted = 0;
+  while (transmitted < len) {
+    ret = zsock_send(sock, transmitted + (char *)data, len - transmitted, 0);
+    if (ret < 0) {
+      LOG_ERR("Failed to transmit data");
+      return -1;
+    }
+    transmitted += ret;
+  }
+  return transmitted;
+}
+
+static int read_data(int sock, void *data, size_t len) {
+  int ret;
+  int recieved = 0;
+  while (recieved < len) {
+    ret = zsock_recv(sock, recieved + (char *)data, len - recieved, 0);
+    if (ret < 0) {
+      LOG_ERR("Failed to recieve data");
+      return -1;
+    } else if (ret == 0) {
+      // Socket was closed by peer
+      return 0;
+    }
+    recieved += ret;
+  }
+  return recieved;
+}
+
+struct node_control_data {
+};
+
+
+static struct gb_message *node_inf_read(struct gb_controller *ctrl,
+                                       uint16_t cport_id) {
+  return NULL;
+}
+
+static int node_inf_write(struct gb_controller *ctrl, struct gb_message *msg,
+                         uint16_t cport_id) {
+  return -1;
+}
+
+
+struct gb_interface *node_create_interface() {
+  struct node_control_data *ctrl_data = k_malloc(sizeof(struct node_control_data));
+  if (ctrl_data == NULL) {
+    return NULL;
+  }
+  struct gb_interface *inf = k_malloc(sizeof(struct gb_interface));
+  if (inf == NULL) {
+    goto free_ctrl_data;
+  }
+
+  inf->controller.ctrl_data = ctrl_data;
+  inf->controller.read = node_inf_read;
+  inf->controller.write = node_inf_write;
+
+  return inf;
+
+free_ctrl_data:
+  k_free(ctrl_data);
+  return NULL;
+}
+
+void node_destroy_interface(struct gb_interface *inf) {
+  if (inf == NULL) {
+    return;
+  }
+
+  k_free(inf->controller.ctrl_data);
+  k_free(inf);
+}
diff --git a/src/node.h b/src/node.h
new file mode 100644
index 0000000..7c7f64f
--- /dev/null
+++ b/src/node.h
@@ -0,0 +1,5 @@
+#ifndef _NODE_H_
+#define _NODE_H_
+
+
+#endif
diff --git a/src/operations.c b/src/operations.c
index 7fded86..055bf10 100644
--- a/src/operations.c
+++ b/src/operations.c
@@ -64,37 +64,6 @@ static void callback_work_handler(struct k_work *work) {
   }
 }
 
-static int write_data(int sock, const void *data, size_t len) {
-  int ret;
-  int transmitted = 0;
-  while (transmitted < len) {
-    ret = zsock_send(sock, transmitted + (char *)data, len - transmitted, 0);
-    if (ret < 0) {
-      LOG_ERR("Failed to transmit data");
-      return -1;
-    }
-    transmitted += ret;
-  }
-  return transmitted;
-}
-
-static int read_data(int sock, void *data, size_t len) {
-  int ret;
-  int recieved = 0;
-  while (recieved < len) {
-    ret = zsock_recv(sock, recieved + (char *)data, len - recieved, 0);
-    if (ret < 0) {
-      LOG_ERR("Failed to recieve data");
-      return -1;
-    } else if (ret == 0) {
-      // Socket was closed by peer
-      return 0;
-    }
-    recieved += ret;
-  }
-  return recieved;
-}
-
 static void gb_operation_finish(struct gb_operation *op) {
   sys_dlist_remove(&op->node);
 
-- 
GitLab