1 /** 2 * Copyright (c) 2018 Linaro 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef ZEPHYR_DRIVERS_WIFI_ESWIFI_ESWIFI_OFFLOAD_H_ 8 #define ZEPHYR_DRIVERS_WIFI_ESWIFI_ESWIFI_OFFLOAD_H_ 9 10 #include <net/net_offload.h> 11 #include "eswifi.h" 12 13 #define ESWIFI_OFFLOAD_MAX_SOCKETS 4 14 15 enum eswifi_transport_type { 16 ESWIFI_TRANSPORT_TCP, 17 ESWIFI_TRANSPORT_UDP, 18 ESWIFI_TRANSPORT_UDP_LITE, 19 ESWIFI_TRANSPORT_TCP_SSL, 20 }; 21 22 enum eswifi_socket_state { 23 ESWIFI_SOCKET_STATE_NONE, 24 ESWIFI_SOCKET_STATE_CONNECTING, 25 ESWIFI_SOCKET_STATE_CONNECTED, 26 ESWIFI_SOCKET_STATE_ACCEPTING, 27 }; 28 29 struct eswifi_off_socket { 30 uint8_t index; 31 enum eswifi_transport_type type; 32 enum eswifi_socket_state state; 33 struct net_context *context; 34 net_context_recv_cb_t recv_cb; 35 net_context_connect_cb_t conn_cb; 36 net_context_send_cb_t send_cb; 37 net_tcp_accept_cb_t accept_cb; 38 void *recv_data; 39 void *conn_data; 40 void *send_data; 41 void *accept_data; 42 struct net_pkt *tx_pkt; 43 struct k_work connect_work; 44 struct k_work send_work; 45 struct k_work_delayable read_work; 46 struct sockaddr peer_addr; 47 struct k_sem read_sem; 48 struct k_sem accept_sem; 49 uint16_t port; 50 bool is_server; 51 int usage; 52 struct k_fifo fifo; 53 struct net_pkt *prev_pkt_rem; 54 }; 55 #endif 56