Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
simplelink_sockets.c File Reference
#include "simplelink_log.h"
#include <stdlib.h>
#include <limits.h>
#include <fcntl.h>
#include <zephyr.h>
#include <net/socket_offload.h>
#include <errno.h>
#include <ti/drivers/net/wifi/simplelink.h>
#include <ti/drivers/net/wifi/source/driver.h>
#include <ti/net/slnetutils.h>
#include <ti/net/slnetif.h>
#include "simplelink_support.h"
#include "sockets_internal.h"
#include "tls_internal.h"

Macros

#define FAILED   (-1)
 
#define SD_TO_OBJ(sd)   ((void *)(sd + 1))
 
#define OBJ_TO_SD(obj)   (((int)obj) - 1)
 
#define ONE_THOUSAND   1000
 
#define SO_BROADCAST   (200)
 
#define SO_SNDBUF   (202)
 

Functions

 LOG_MODULE_DECLARE (wifi_simplelink)
 
static int simplelink_socket_accept (void *obj, struct sockaddr *addr, socklen_t *addrlen)
 
static int getErrno (_i32 error)
 
static int simplelink_socket (int family, int type, int proto)
 
static int simplelink_close (void *obj)
 
static SlSockAddr_t * translate_z_to_sl_addrlen (socklen_t addrlen, SlSockAddrIn_t *sl_addr_in, SlSockAddrIn6_t *sl_addr_in6, SlSocklen_t *sl_addrlen)
 
static SlSockAddr_t * translate_z_to_sl_addrs (const struct sockaddr *addr, socklen_t addrlen, SlSockAddrIn_t *sl_addr_in, SlSockAddrIn6_t *sl_addr_in6, SlSocklen_t *sl_addrlen)
 
static void translate_sl_to_z_addr (SlSockAddr_t *sl_addr, SlSocklen_t sl_addrlen, struct sockaddr *addr, socklen_t *addrlen)
 
static int simplelink_accept (void *obj, struct sockaddr *addr, socklen_t *addrlen)
 
static int simplelink_bind (void *obj, const struct sockaddr *addr, socklen_t addrlen)
 
static int simplelink_listen (void *obj, int backlog)
 
static int simplelink_connect (void *obj, const struct sockaddr *addr, socklen_t addrlen)
 
static int simplelink_poll (struct zsock_pollfd *fds, int nfds, int msecs)
 
static int map_credentials (int sd, const void *optval, socklen_t optlen)
 
static int simplelink_setsockopt (void *obj, int level, int optname, const void *optval, socklen_t optlen)
 
static int simplelink_getsockopt (void *obj, int level, int optname, void *optval, socklen_t *optlen)
 
static int handle_recv_flags (int sd, int flags, bool set, int *nb_enabled)
 
static ssize_t simplelink_recvfrom (void *obj, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen)
 
static ssize_t simplelink_sendto (void *obj, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen)
 
static ssize_t simplelink_sendmsg (void *obj, const struct msghdr *msg, int flags)
 
static int set_addr_info (const struct SlNetUtil_addrInfo_t *sl_ai, struct zsock_addrinfo **res)
 
static int simplelink_getaddrinfo (const char *node, const char *service, const struct zsock_addrinfo *hints, struct zsock_addrinfo **res)
 
static void simplelink_freeaddrinfo (struct zsock_addrinfo *res)
 
static int simplelink_fcntl (int sd, int cmd, va_list args)
 
static int simplelink_ioctl (void *obj, unsigned int request, va_list args)
 
static ssize_t simplelink_read (void *obj, void *buffer, size_t count)
 
static ssize_t simplelink_write (void *obj, const void *buffer, size_t count)
 
static bool simplelink_is_supported (int family, int type, int proto)
 
static int simplelink_socket_create (int family, int type, int proto)
 
void simplelink_sockets_init (void)
 

Variables

static const struct socket_op_vtable simplelink_socket_fd_op_vtable
 
const struct socket_dns_offload simplelink_dns_ops
 

Macro Definition Documentation

◆ FAILED

#define FAILED   (-1)

◆ OBJ_TO_SD

#define OBJ_TO_SD (   obj)    (((int)obj) - 1)

◆ ONE_THOUSAND

#define ONE_THOUSAND   1000

◆ SD_TO_OBJ

#define SD_TO_OBJ (   sd)    ((void *)(sd + 1))

◆ SO_BROADCAST

#define SO_BROADCAST   (200)

◆ SO_SNDBUF

#define SO_SNDBUF   (202)

Function Documentation

◆ getErrno()

static int getErrno ( _i32  error)
static

◆ handle_recv_flags()

static int handle_recv_flags ( int  sd,
int  flags,
bool  set,
int *  nb_enabled 
)
static

◆ LOG_MODULE_DECLARE()

LOG_MODULE_DECLARE ( wifi_simplelink  )

Copyright (c) 2018 Linaro Limited.

SPDX-License-Identifier: Apache-2.0

◆ map_credentials()

static int map_credentials ( int  sd,
const void optval,
socklen_t  optlen 
)
static

◆ set_addr_info()

static int set_addr_info ( const struct SlNetUtil_addrInfo_t *  sl_ai,
struct zsock_addrinfo **  res 
)
static

◆ simplelink_accept()

static int simplelink_accept ( void obj,
struct sockaddr addr,
socklen_t addrlen 
)
static

◆ simplelink_bind()

static int simplelink_bind ( void obj,
const struct sockaddr addr,
socklen_t  addrlen 
)
static

◆ simplelink_close()

static int simplelink_close ( void obj)
static

◆ simplelink_connect()

static int simplelink_connect ( void obj,
const struct sockaddr addr,
socklen_t  addrlen 
)
static

◆ simplelink_fcntl()

static int simplelink_fcntl ( int  sd,
int  cmd,
va_list  args 
)
static

◆ simplelink_freeaddrinfo()

static void simplelink_freeaddrinfo ( struct zsock_addrinfo res)
static

◆ simplelink_getaddrinfo()

static int simplelink_getaddrinfo ( const char *  node,
const char *  service,
const struct zsock_addrinfo hints,
struct zsock_addrinfo **  res 
)
static

◆ simplelink_getsockopt()

static int simplelink_getsockopt ( void obj,
int  level,
int  optname,
void optval,
socklen_t optlen 
)
static

◆ simplelink_ioctl()

static int simplelink_ioctl ( void obj,
unsigned int  request,
va_list  args 
)
static

◆ simplelink_is_supported()

static bool simplelink_is_supported ( int  family,
int  type,
int  proto 
)
static

◆ simplelink_listen()

static int simplelink_listen ( void obj,
int  backlog 
)
static

◆ simplelink_poll()

static int simplelink_poll ( struct zsock_pollfd fds,
int  nfds,
int  msecs 
)
static

◆ simplelink_read()

static ssize_t simplelink_read ( void obj,
void buffer,
size_t  count 
)
static

◆ simplelink_recvfrom()

static ssize_t simplelink_recvfrom ( void obj,
void buf,
size_t  len,
int  flags,
struct sockaddr from,
socklen_t fromlen 
)
static

◆ simplelink_sendmsg()

static ssize_t simplelink_sendmsg ( void obj,
const struct msghdr msg,
int  flags 
)
static

◆ simplelink_sendto()

static ssize_t simplelink_sendto ( void obj,
const void buf,
size_t  len,
int  flags,
const struct sockaddr to,
socklen_t  tolen 
)
static

◆ simplelink_setsockopt()

static int simplelink_setsockopt ( void obj,
int  level,
int  optname,
const void optval,
socklen_t  optlen 
)
static

◆ simplelink_socket()

static int simplelink_socket ( int  family,
int  type,
int  proto 
)
static

◆ simplelink_socket_accept()

static int simplelink_socket_accept ( void obj,
struct sockaddr addr,
socklen_t addrlen 
)
static

◆ simplelink_socket_create()

static int simplelink_socket_create ( int  family,
int  type,
int  proto 
)
static

◆ simplelink_sockets_init()

void simplelink_sockets_init ( void  )

◆ simplelink_write()

static ssize_t simplelink_write ( void obj,
const void buffer,
size_t  count 
)
static

◆ translate_sl_to_z_addr()

static void translate_sl_to_z_addr ( SlSockAddr_t *  sl_addr,
SlSocklen_t  sl_addrlen,
struct sockaddr addr,
socklen_t addrlen 
)
static

◆ translate_z_to_sl_addrlen()

static SlSockAddr_t * translate_z_to_sl_addrlen ( socklen_t  addrlen,
SlSockAddrIn_t *  sl_addr_in,
SlSockAddrIn6_t *  sl_addr_in6,
SlSocklen_t *  sl_addrlen 
)
static

◆ translate_z_to_sl_addrs()

static SlSockAddr_t * translate_z_to_sl_addrs ( const struct sockaddr addr,
socklen_t  addrlen,
SlSockAddrIn_t *  sl_addr_in,
SlSockAddrIn6_t *  sl_addr_in6,
SlSocklen_t *  sl_addrlen 
)
static

Variable Documentation

◆ simplelink_dns_ops

const struct socket_dns_offload simplelink_dns_ops
Initial value:
= {
.getaddrinfo = simplelink_getaddrinfo,
.freeaddrinfo = simplelink_freeaddrinfo,
}

Copyright (c) 2018 Linaro Limited.

SPDX-License-Identifier: Apache-2.0

◆ simplelink_socket_fd_op_vtable

static const struct socket_op_vtable simplelink_socket_fd_op_vtable
static
Initial value:
= {
.fd_vtable = {
.read = simplelink_read,
.write = simplelink_write,
.close = simplelink_close,
.ioctl = simplelink_ioctl,
},
.bind = simplelink_bind,
.connect = simplelink_connect,
.listen = simplelink_listen,
.sendto = simplelink_sendto,
.sendmsg = simplelink_sendmsg,
.recvfrom = simplelink_recvfrom,
.getsockopt = simplelink_getsockopt,
.setsockopt = simplelink_setsockopt,
}