text: /**
   * Copyright (c) 2018 Linaro
   *
   * SPDX-License-Identifier: Apache-2.0
   */
  
  #ifndef ZEPHYR_DRIVERS_WIFI_ESWIFI_ESWIFI_OFFLOAD_H_
  #define ZEPHYR_DRIVERS_WIFI_ESWIFI_ESWIFI_OFFLOAD_H_
  
  #include <net/net_offload.h>
  
  #include "eswifi.h"
  
  #define ESWIFI_OFFLOAD_MAX_SOCKETS 4
  
  enum eswifi_transport_type {
  	ESWIFI_TRANSPORT_TCP,
  	ESWIFI_TRANSPORT_UDP,
  	ESWIFI_TRANSPORT_UDP_LITE,
  	ESWIFI_TRANSPORT_TCP_SSL,
  };
  
  enum eswifi_socket_state {
  	ESWIFI_SOCKET_STATE_NONE,
  	ESWIFI_SOCKET_STATE_CONNECTING,
  	ESWIFI_SOCKET_STATE_CONNECTED,
  };
  
  struct eswifi_off_socket {
  	u8_t index;
  	enum eswifi_transport_type type;
  	enum eswifi_socket_state state;
  	struct net_context *context;
  	net_context_recv_cb_t recv_cb;
  	net_context_connect_cb_t conn_cb;
  	net_context_send_cb_t send_cb;
  	void *user_data;
  	struct net_pkt *tx_pkt;
  	struct k_work connect_work;
  	struct k_work send_work;
  	struct k_delayed_work read_work;
  	struct sockaddr peer_addr;
  	struct k_sem read_sem;
  };
  
  #endif
  