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