Socket

Functions

_i16 sl_Socket (_i16 Domain, _i16 Type, _i16 Protocol)
 create an endpoint for communication More...
 
_i16 sl_Close (_i16 sd)
 gracefully close socket More...
 
_i16 sl_Accept (_i16 sd, SlSockAddr_t *addr, SlSocklen_t *addrlen)
 Accept a connection on a socket. More...
 
_i16 sl_Bind (_i16 sd, const SlSockAddr_t *addr, _i16 addrlen)
 assign a name to a socket More...
 
_i16 sl_Listen (_i16 sd, _i16 backlog)
 listen for connections on a socket More...
 
_i16 sl_Connect (_i16 sd, const SlSockAddr_t *addr, _i16 addrlen)
 Initiate a connection on a socket. More...
 
_i16 sl_Select (_i16 nfds, SlFdSet_t *readsds, SlFdSet_t *writesds, SlFdSet_t *exceptsds, struct SlTimeval_t *timeout)
 Monitor socket activity. More...
 
void SL_FD_SET (_i16 fd, SlFdSet_t *fdset)
 Select's SlFdSet_t SET function. More...
 
void SL_FD_CLR (_i16 fd, SlFdSet_t *fdset)
 Select's SlFdSet_t CLR function. More...
 
_i16 SL_FD_ISSET (_i16 fd, SlFdSet_t *fdset)
 Select's SlFdSet_t ISSET function. More...
 
void SL_FD_ZERO (SlFdSet_t *fdset)
 Select's SlFdSet_t ZERO function. More...
 
_i16 sl_SetSockOpt (_i16 sd, _i16 level, _i16 optname, const void *optval, SlSocklen_t optlen)
 set socket options More...
 
_i16 sl_GetSockOpt (_i16 sd, _i16 level, _i16 optname, void *optval, SlSocklen_t *optlen)
 Get socket options. More...
 
_i16 sl_Recv (_i16 sd, void *buf, _i16 Len, _i16 flags)
 read data from TCP socket More...
 
_i16 sl_RecvFrom (_i16 sd, void *buf, _i16 Len, _i16 flags, SlSockAddr_t *from, SlSocklen_t *fromlen)
 read data from socket More...
 
_i16 sl_Send (_i16 sd, const void *buf, _i16 Len, _i16 flags)
 write data to TCP socket More...
 
_i16 sl_SendTo (_i16 sd, const void *buf, _i16 Len, _i16 flags, const SlSockAddr_t *to, SlSocklen_t tolen)
 write data to socket More...
 
_u32 sl_Htonl (_u32 val)
 Reorder the bytes of a 32-bit unsigned value. More...
 
_u16 sl_Htons (_u16 val)
 Reorder the bytes of a 16-bit unsigned value. More...
 

Typedefs

typedef struct SlInAddr_t SlInAddr_t
 
typedef _u32 SlTime_t
 
typedef _u32 SlSuseconds_t
 
typedef struct SlTimeval_t SlTimeval_t
 
typedef _u16 SlSocklen_t
 
typedef struct SlSockAddr_t SlSockAddr_t
 
typedef struct SlIn6Addr_t SlIn6Addr_t
 
typedef struct SlSockAddrIn6_t SlSockAddrIn6_t
 
typedef struct SlSockAddrIn_t SlSockAddrIn_t
 
typedef struct sock_secureFiles SlSockSecureFiles_t
 
typedef struct SlFdSet_t SlFdSet_t
 

Enumerations

enum  slBsd_secureSocketFilesIndex_e {
  SL_BSD_SECURED_PRIVATE_KEY_IDX = 0,
  SL_BSD_SECURED_CERTIFICATE_IDX,
  SL_BSD_SECURED_CA_IDX,
  SL_BSD_SECURED_DH_IDX
}
 

Detailed Description

Function Documentation

_i16 sl_Accept ( _i16  sd,
SlSockAddr_t addr,
SlSocklen_t *  addrlen 
)

Accept a connection on a socket.

This function is used with connection-based socket types (SOCK_STREAM). It extracts the first connection request on the queue of pending connections, creates a new connected socket, and returns a new file descriptor referring to that socket. The newly created socket is not in the listening state. The original socket sd is unaffected by this call. The argument sd is a socket that has been created with sl_Socket(), bound to a local address with sl_Bind(), and is listening for connections after a sl_Listen(). The argument addr is a pointer to a sockaddr structure. This structure is filled in with the address of the peer socket, as known to the communications layer. The exact format of the address returned addr is determined by the socket's address family. The addrlen argument is a value-result argument: it should initially contain the size of the structure pointed to by addr, on return it will contain the actual length (in bytes) of the address returned.

Parameters
[in]sdsocket descriptor (handle)
[out]addrthe argument addr is a pointer to a sockaddr structure. This structure is filled in with the address of the peer socket, as known to the communications layer. The exact format of the address returned addr is determined by the socket's address
sockaddr:
- code for the address format. On this version only AF_INET is supported.
- socket address, the length depends on the code format
[out]addrlenthe addrlen argument is a value-result argument: it should initially contain the size of the structure pointed to by addr
Returns
On success, a socket handle. On a non-blocking accept a possible negative value is SL_EAGAIN. On failure, negative value. SL_POOL_IS_EMPTY may be return in case there are no resources in the system In this case try again later or increase MAX_CONCURRENT_ACTIONS
See also
sl_Socket sl_Bind sl_Listen
Note
belongs to server_side
Warning
_i16 sl_Bind ( _i16  sd,
const SlSockAddr_t addr,
_i16  addrlen 
)

assign a name to a socket

This function gives the socket the local address addr. addr is addrlen bytes long. Traditionally, this is called When a socket is created with socket, it exists in a name space (address family) but has no name assigned. It is necessary to assign a local address before a SOCK_STREAM socket may receive connections.

Parameters
[in]sdsocket descriptor (handle)
[in]addrspecifies the destination addrs
sockaddr:
- code for the address format. On this version only AF_INET is supported.
- socket address, the length depends on the code format
[in]addrlencontains the size of the structure pointed to by addr
Returns
On success, zero is returned. On error, a negative error code is returned.
See also
sl_Socket sl_Accept sl_Listen
Note
belongs to basic_api
Warning
_i16 sl_Close ( _i16  sd)

gracefully close socket

This function causes the system to release resources allocated to a socket.
In case of TCP, the connection is terminated.

Parameters
[in]sdsocket handle (received in sl_Socket)
Returns
On success, zero is returned. On error, a negative number is returned.
See also
sl_Socket
Note
belongs to ext_api
Warning
_i16 sl_Connect ( _i16  sd,
const SlSockAddr_t addr,
_i16  addrlen 
)

Initiate a connection on a socket.

Function connects the socket referred to by the socket descriptor sd, to the address specified by addr. The addrlen argument specifies the size of addr. The format of the address in addr is determined by the address space of the socket. If it is of type SOCK_DGRAM, this call specifies the peer with which the socket is to be associated; this address is that to which datagrams are to be sent, and the only address from which datagrams are to be received. If the socket is of type SOCK_STREAM, this call attempts to make a connection to another socket. The other socket is specified by address, which is an address in the communications space of the socket.

Parameters
[in]sdsocket descriptor (handle)
[in]addrspecifies the destination addr
sockaddr:
- code for the address format. On this version only AF_INET is supported.
- socket address, the length depends on the code format
[in]addrlencontains the size of the structure pointed to by addr
Returns
On success, a socket handle. On a non-blocking connect a possible negative value is SL_EALREADY. On failure, negative value. SL_POOL_IS_EMPTY may be return in case there are no resources in the system In this case try again later or increase MAX_CONCURRENT_ACTIONS
See also
sl_Socket
Note
belongs to client_side
Warning
void SL_FD_CLR ( _i16  fd,
SlFdSet_t fdset 
)

Select's SlFdSet_t CLR function.

Clears current socket descriptor on SlFdSet_t container

_i16 SL_FD_ISSET ( _i16  fd,
SlFdSet_t fdset 
)

Select's SlFdSet_t ISSET function.

Checks if current socket descriptor is set (TRUE/FALSE)

Returns
Returns TRUE if set, FALSE if unset
void SL_FD_SET ( _i16  fd,
SlFdSet_t fdset 
)

Select's SlFdSet_t SET function.

Sets current socket descriptor on SlFdSet_t container

void SL_FD_ZERO ( SlFdSet_t fdset)

Select's SlFdSet_t ZERO function.

Clears all socket descriptors from SlFdSet_t

_i16 sl_GetSockOpt ( _i16  sd,
_i16  level,
_i16  optname,
void *  optval,
SlSocklen_t *  optlen 
)

Get socket options.

This function manipulate the options associated with a socket. Options may exist at multiple protocol levels; they are always present at the uppermost socket level.

When manipulating socket options the level at which the option resides and the name of the option must be specified. To manipulate options at the socket level, level is specified as SOL_SOCKET. To manipulate options at any other level the protocol number of the appropriate proto- col controlling the option is supplied. For example, to indicate that an option is to be interpreted by the TCP protocol, level should be set to the protocol number of TCP;

The parameters optval and optlen are used to access optval - ues for setsockopt(). For getsockopt() they identify a buffer in which the value for the requested option(s) are to be returned. For getsockopt(), optlen is a value-result parameter, initially containing the size of the buffer pointed to by option_value, and modified on return to indicate the actual size of the value returned. If no option value is to be supplied or returned, option_value may be NULL.

Parameters
[in]sdsocket handle
[in]leveldefines the protocol level for this option
[in]optnamedefines the option name to interrogate
[out]optvalspecifies a value for the option
[out]optlenspecifies the length of the option value
Returns
On success, zero is returned. On error, a negative value is returned.
See also
sl_SetSockOpt
Note
See sl_SetSockOpt belongs to ext_api
Warning
_u32 sl_Htonl ( _u32  val)

Reorder the bytes of a 32-bit unsigned value.

This function is used to Reorder the bytes of a 32-bit unsigned value from processor order to network order.

Parameters
[in]varvariable to reorder
Returns
Return the reorder variable,
See also
sl_SendTo sl_Bind sl_Connect sl_RecvFrom sl_Accept
Note
belongs to send_api
Warning
_u16 sl_Htons ( _u16  val)

Reorder the bytes of a 16-bit unsigned value.

This function is used to Reorder the bytes of a 16-bit unsigned value from processor order to network order.

Parameters
[in]varvariable to reorder
Returns
Return the reorder variable,
See also
sl_SendTo sl_Bind sl_Connect sl_RecvFrom sl_Accept
Note
belongs to send_api
Warning
_i16 sl_Listen ( _i16  sd,
_i16  backlog 
)

listen for connections on a socket

The willingness to accept incoming connections and a queue limit for incoming connections are specified with listen(), and then the connections are accepted with accept. The listen() call applies only to sockets of type SOCK_STREAM The backlog parameter defines the maximum length the queue of pending connections may grow to.

Parameters
[in]sdsocket descriptor (handle)
[in]backlogspecifies the listen queue depth.
Returns
On success, zero is returned. On error, a negative error code is returned.
See also
sl_Socket sl_Accept sl_Bind
Note
belongs to server_side
Warning
_i16 sl_Recv ( _i16  sd,
void *  buf,
_i16  Len,
_i16  flags 
)

read data from TCP socket

function receives a message from a connection-mode socket

Parameters
[in]sdsocket handle
[out]bufPoints to the buffer where the message should be stored.
[in]LenSpecifies the length in bytes of the buffer pointed to by the buffer argument. Range: 1-16000 bytes
[in]flagsSpecifies the type of message reception. On this version, this parameter is not supported.
Returns
return the number of bytes received, or a negative value if an error occurred. using a non-blocking recv a possible negative value is SL_EAGAIN. SL_POOL_IS_EMPTY may be return in case there are no resources in the system In this case try again later or increase MAX_CONCURRENT_ACTIONS
See also
sl_RecvFrom
Note
belongs to recv_api
Warning
Examples:
1 An example of receiving data using TCP socket:
2 
3  SlSockAddrIn_t Addr;
4  SlSockAddrIn_t LocalAddr;
5  _i16 AddrSize = sizeof(SlSockAddrIn_t);
6  _i16 SockID, newSockID;
7  _i16 Status;
8  _i8 Buf[RECV_BUF_LEN];
9 
10  LocalAddr.sin_family = SL_AF_INET;
11  LocalAddr.sin_port = sl_Htons(5001);
12  LocalAddr.sin_addr.s_addr = 0;
13 
14  Addr.sin_family = SL_AF_INET;
15  Addr.sin_port = sl_Htons(5001);
16  Addr.sin_addr.s_addr = sl_Htonl(SL_IPV4_VAL(10,1,1,200));
17 
18  SockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);
19  Status = sl_Bind(SockID, (SlSockAddr_t *)&LocalAddr, AddrSize);
20  Status = sl_Listen(SockID, 0);
21  newSockID = sl_Accept(SockID, (SlSockAddr_t*)&Addr, (SlSocklen_t*) &AddrSize);
22  Status = sl_Recv(newSockID, Buf, 1460, 0);
1 Example code for Rx transceiver mode using a raw socket
2  _i8 buffer[1536];
3  _i16 sd;
4  _u16 size;
5  SlTransceiverRxOverHead_t *transHeader;
6  sd = sl_Socket(SL_AF_RF,SL_SOCK_RAW,11); // channel 11
7  while(1)
8  {
9  size = sl_Recv(sd,buffer,1536,0);
10  transHeader = (SlTransceiverRxOverHead_t *)buffer;
11  printf("RSSI is %d frame type is 0x%x size %d\n",transHeader->rssi,buffer[sizeof(SlTransceiverRxOverHead_t)],size);
12  }
_i16 sl_RecvFrom ( _i16  sd,
void *  buf,
_i16  Len,
_i16  flags,
SlSockAddr_t from,
SlSocklen_t *  fromlen 
)

read data from socket

function receives a message from a connection-mode or connectionless-mode socket

Parameters
[in]sdsocket handle
[out]bufPoints to the buffer where the message should be stored.
[in]LenSpecifies the length in bytes of the buffer pointed to by the buffer argument. Range: 1-16000 bytes
[in]flagsSpecifies the type of message reception. On this version, this parameter is not supported.
[in]frompointer to an address structure indicating the source address.
sockaddr:
- code for the address format. On this version only AF_INET is supported.
- socket address, the length depends on the code format
[in]fromlensource address structure size. This parameter MUST be set to the size of the structure pointed to by addr.
Returns
return the number of bytes received, or a negative value if an error occurred. using a non-blocking recv a possible negative value is SL_EAGAIN. SL_RET_CODE_INVALID_INPUT (-2) will be returned if fromlen has incorrect length. SL_POOL_IS_EMPTY may be return in case there are no resources in the system In this case try again later or increase MAX_CONCURRENT_ACTIONS
See also
sl_Recv
Note
belongs to recv_api
Warning
Example:
1 An example of receiving data:
2 
3  SlSockAddrIn_t Addr;
4  SlSockAddrIn_t LocalAddr;
5  _i16 AddrSize = sizeof(SlSockAddrIn_t);
6  _i16 SockID;
7  _i16 Status;
8  _i8 Buf[RECV_BUF_LEN];
9 
10  LocalAddr.sin_family = SL_AF_INET;
11  LocalAddr.sin_port = sl_Htons(5001);
12  LocalAddr.sin_addr.s_addr = 0;
13 
14  SockID = sl_Socket(SL_AF_INET,SL_SOCK_DGRAM, 0);
15  Status = sl_Bind(SockID, (SlSockAddr_t *)&LocalAddr, AddrSize);
16  Status = sl_RecvFrom(SockID, Buf, 1472, 0, (SlSockAddr_t *)&Addr, (SlSocklen_t*)&AddrSize);
_i16 sl_Select ( _i16  nfds,
SlFdSet_t readsds,
SlFdSet_t writesds,
SlFdSet_t exceptsds,
struct SlTimeval_t timeout 
)

Monitor socket activity.

Select allow a program to monitor multiple file descriptors, waiting until one or more of the file descriptors become "ready" for some class of I/O operation

Parameters
[in]nfdsthe highest-numbered file descriptor in any of the three sets, plus 1.
[out]readsdssocket descriptors list for read monitoring and accept monitoring
[out]writesdssocket descriptors list for connect monitoring only, write monitoring is not supported, non blocking connect is supported
[out]exceptsdssocket descriptors list for exception monitoring, not supported.
[in]timeoutis an upper bound on the amount of time elapsed before select() returns. Null or above 0xffff seconds means infinity timeout. The minimum timeout is 10 milliseconds, less than 10 milliseconds will be set automatically to 10 milliseconds. Max microseconds supported is 0xfffc00.
Returns
On success, select() returns the number of file descriptors contained in the three returned descriptor sets (that is, the total number of bits that are set in readfds, writefds, exceptfds) which may be zero if the timeout expires before anything interesting happens. On error, a negative value is returned. readsds - return the sockets on which Read request will return without delay with valid data. writesds - return the sockets on which Write request will return without delay. exceptsds - return the sockets closed recently. SL_POOL_IS_EMPTY may be return in case there are no resources in the system In this case try again later or increase MAX_CONCURRENT_ACTIONS
See also
sl_Socket
Note
If the timeout value set to less than 5ms it will automatically set to 5ms to prevent overload of the system belongs to basic_api

Only one sl_Select can be handled at a time. Calling this API while the same command is called from another thread, may result in one of the two scenarios:

  1. The command will wait (internal) until the previous command finish, and then be executed.
  2. There are not enough resources and SL_POOL_IS_EMPTY error will return. In this case, MAX_CONCURRENT_ACTIONS can be increased (result in memory increase) or try again later to issue the command.
Warning
_i16 sl_Send ( _i16  sd,
const void *  buf,
_i16  Len,
_i16  flags 
)

write data to TCP socket

This function is used to transmit a message to another socket. Returns immediately after sending data to device. In case of TCP failure an async event SL_SOCKET_TX_FAILED_EVENT is going to be received. In case of a RAW socket (transceiver mode), extra 4 bytes should be reserved at the end of the frame data buffer for WLAN FCS

Parameters
[in]sdsocket handle
[in]bufPoints to a buffer containing the message to be sent
[in]Lenmessage size in bytes. Range: 1-1460 bytes
[in]flagsSpecifies the type of message transmission. On this version, this parameter is not supported for TCP. For transceiver mode, the SL_RAW_RF_TX_PARAMS macro can be used to determine transmission parameters (channel,rate,tx_power,preamble)
Returns
Return the number of bytes transmitted, or -1 if an error occurred
See also
sl_SendTo
Note
belongs to send_api
Warning
Example:
1 An example of sending data:
2 
3  SlSockAddrIn_t Addr;
4  _i16 AddrSize = sizeof(SlSockAddrIn_t);
5  _i16 SockID;
6  _i16 Status;
7  _i8 Buf[SEND_BUF_LEN];
8 
9  Addr.sin_family = SL_AF_INET;
10  Addr.sin_port = sl_Htons(5001);
11  Addr.sin_addr.s_addr = sl_Htonl(SL_IPV4_VAL(10,1,1,200));
12 
13  SockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);
14  Status = sl_Connect(SockID, (SlSockAddr_t *)&Addr, AddrSize);
15  Status = sl_Send(SockID, Buf, 1460, 0 );
_i16 sl_SendTo ( _i16  sd,
const void *  buf,
_i16  Len,
_i16  flags,
const SlSockAddr_t to,
SlSocklen_t  tolen 
)

write data to socket

This function is used to transmit a message to another socket (connection less socket SOCK_DGRAM, SOCK_RAW). Returns immediately after sending data to device. In case of transmission failure an async event SL_SOCKET_TX_FAILED_EVENT is going to be received.

Parameters
[in]sdsocket handle
[in]bufPoints to a buffer containing the message to be sent
[in]Lenmessage size in bytes. Range: 1-1460 bytes
[in]flagsSpecifies the type of message transmission. On this version, this parameter is not supported
[in]topointer to an address structure indicating the destination address.
sockaddr:
- code for the address format. On this version only AF_INET is supported.
- socket address, the length depends on the code format
[in]tolendestination address structure size
Returns
Return the number of transmitted bytes, or -1 if an error occurred
See also
sl_Send
Note
belongs to send_api
Warning
Example:
1 An example of sending data:
2 
3  SlSockAddrIn_t Addr;
4  _i16 AddrSize = sizeof(SlSockAddrIn_t);
5  _i16 SockID;
6  _i16 Status;
7  _i8 Buf[SEND_BUF_LEN];
8 
9  Addr.sin_family = SL_AF_INET;
10  Addr.sin_port = sl_Htons(5001);
11  Addr.sin_addr.s_addr = sl_Htonl(SL_IPV4_VAL(10,1,1,200));
12 
13  SockID = sl_Socket(SL_AF_INET,SL_SOCK_DGRAM, 0);
14  Status = sl_SendTo(SockID, Buf, 1472, 0, (SlSockAddr_t *)&Addr, AddrSize);
_i16 sl_SetSockOpt ( _i16  sd,
_i16  level,
_i16  optname,
const void *  optval,
SlSocklen_t  optlen 
)

set socket options

This function manipulate the options associated with a socket. Options may exist at multiple protocol levels; they are always present at the uppermost socket level.

When manipulating socket options the level at which the option resides and the name of the option must be specified. To manipulate options at the socket level, level is specified as SOL_SOCKET. To manipulate options at any other level the protocol number of the appropriate proto- col controlling the option is supplied. For example, to indicate that an option is to be interpreted by the TCP protocol, level should be set to the protocol number of TCP;

The parameters optval and optlen are used to access optval - ues for setsockopt(). For getsockopt() they identify a buffer in which the value for the requested option(s) are to be returned. For getsockopt(), optlen is a value-result parameter, initially containing the size of the buffer pointed to by option_value, and modified on return to indicate the actual size of the value returned. If no option value is to be supplied or returned, option_value may be NULL.

Parameters
[in]sdsocket handle
[in]leveldefines the protocol level for this option
  • SL_SOL_SOCKET Socket level configurations (L4, transport layer)
  • SL_IPPROTO_IP IP level configurations (L3, network layer)
  • SL_SOL_PHY_OPT Link level configurations (L2, link layer)
[in]optnamedefines the option name to interrogate
  • SL_SOL_SOCKET
    • SL_SO_KEEPALIVE
      Enable/Disable periodic keep alive. Keeps TCP connections active by enabling the periodic transmission of messages
      Timeout is 5 minutes.
      Default: Enabled
      This options takes SlSockKeepalive_t struct as parameter
    • SL_SO_RCVTIMEO
      Sets the timeout value that specifies the maximum amount of time an input function waits until it completes.
      Default: No timeout
      This options takes SlTimeval_t struct as parameter
    • SL_SO_RCVBUF
      Sets tcp max recv window size.
      This options takes SlSockWinsize_t struct as parameter
    • SL_SO_NONBLOCKING
      Sets socket to non-blocking operation Impacts: connect, accept, send, sendto, recv and recvfrom.
      Default: Blocking. This options takes SlSockNonblocking_t struct as parameter
    • SL_SO_SECMETHOD
      Sets method to tcp secured socket (SL_SEC_SOCKET)
      Default: SL_SO_SEC_METHOD_SSLv3_TLSV1_2
      This options takes SlSockSecureMethod struct as parameter
    • SL_SO_SEC_MASK
      Sets specific cipher to tcp secured socket (SL_SEC_SOCKET)
      Default: "Best" cipher suitable to method
      This options takes SlSockSecureMask struct as parameter
    • SL_SO_SECURE_FILES_CA_FILE_NAME
      Map secured socket to CA file by name
      This options takes _u8 buffer as parameter
    • SL_SO_SECURE_FILES_PRIVATE_KEY_FILE_NAME
      Map secured socket to private key by name
      This options takes _u8 buffer as parameter
    • SL_SO_SECURE_FILES_CERTIFICATE_FILE_NAME
      Map secured socket to certificate file by name
      This options takes _u8 buffer as parameter
    • SL_SO_SECURE_FILES_DH_KEY_FILE_NAME
      Map secured socket to Diffie Hellman file by name
      This options takes _u8 buffer as parameter
    • SL_SO_CHANGE_CHANNEL
      Sets channel in transceiver mode. This options takes _u32 as channel number parameter
  • SL_IPPROTO_IP
    • SL_IP_MULTICAST_TTL
      Set the time-to-live value of outgoing multicast packets for this socket.
      This options takes _u8 as parameter
    • SL_IP_ADD_MEMBERSHIP
      UDP socket, Join a multicast group.
      This options takes SlSockIpMreq struct as parameter
    • SL_IP_DROP_MEMBERSHIP
      UDP socket, Leave a multicast group
      This options takes SlSockIpMreq struct as parameter
    • SL_IP_RAW_RX_NO_HEADER
      Raw socket remove IP header from received data.
      Default: data includes ip header
      This options takes _u32 as parameter
    • SL_IP_HDRINCL
      RAW socket only, the IPv4 layer generates an IP header when sending a packet unless
      the IP_HDRINCL socket option is enabled on the socket.
      When it is enabled, the packet must contain an IP header.
      Default: disabled, IPv4 header generated by Network Stack
      This options takes _u32 as parameter
    • SL_IP_RAW_IPV6_HDRINCL (inactive)
      RAW socket only, the IPv6 layer generates an IP header when sending a packet unless
      the IP_HDRINCL socket option is enabled on the socket. When it is enabled, the packet must contain an IP header
      Default: disabled, IPv4 header generated by Network Stack
      This options takes _u32 as parameter
  • SL_SOL_PHY_OPT
    • SL_SO_PHY_RATE
      RAW socket, set WLAN PHY transmit rate
      The values are based on RateIndex_e
      This options takes _u32 as parameter
    • SL_SO_PHY_TX_POWER
      RAW socket, set WLAN PHY TX power
      Valid rage is 1-15
      This options takes _u32 as parameter
    • SL_SO_PHY_NUM_FRAMES_TO_TX
      RAW socket, set number of frames to transmit in transceiver mode. Default: 1 packet This options takes _u32 as parameter
    • SL_SO_PHY_PREAMBLE
      RAW socket, set WLAN PHY preamble for Long/Short
      This options takes _u32 as parameter
[in]optvalspecifies a value for the option
[in]optlenspecifies the length of the option value
Returns
On success, zero is returned. On error, a negative value is returned.
See also
sl_getsockopt
Note
belongs to basic_api
Warning
Examples:
SL_SO_KEEPALIVE: (disable Keepalive)
1 SlSockKeepalive_t enableOption;
2 enableOption.KeepaliveEnabled = 0;
3 sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_KEEPALIVE, (_u8 *)&enableOption,sizeof(enableOption));
SL_SO_RCVTIMEO:
1 struct SlTimeval_t timeVal;
2 timeVal.tv_sec = 1; // Seconds
3 timeVal.tv_usec = 0; // Microseconds. 10000 microseconds resolution
4 sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_RCVTIMEO, (_u8 *)&timeVal, sizeof(timeVal)); // Enable receive timeout
SL_SO_RCVBUF:
1 SlSockWinsize_t size;
2 size.Winsize = 3000; // bytes
3 sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_RCVBUF, (_u8 *)&size, sizeof(size));
SL_SO_NONBLOCKING:
1 SlSockNonblocking_t enableOption;
2 enableOption.NonblockingEnabled = 1;
3 sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_NONBLOCKING, (_u8 *)&enableOption,sizeof(enableOption)); // Enable/disable nonblocking mode
SL_SO_SECMETHOD:
1 SlSockSecureMethod method;
2 method.secureMethod = SL_SO_SEC_METHOD_SSLV3; // security method we want to use
3 SockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, SL_SEC_SOCKET);
4 sl_SetSockOpt(SockID, SL_SOL_SOCKET, SL_SO_SECMETHOD, (_u8 *)&method, sizeof(method));
SL_SO_SECURE_MASK:
1 SlSockSecureMask cipher;
2 cipher.secureMask = SL_SEC_MASK_SSL_RSA_WITH_RC4_128_SHA; // cipher type
3 SockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, SL_SEC_SOCKET);
4 sl_SetSockOpt(SockID, SL_SOL_SOCKET, SL_SO_SEC_MASK,(_u8 *)&cipher, sizeof(cipher));
SL_SO_SECURE_FILES_CA_FILE_NAME:
1 sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_SECURE_FILES_CA_FILE_NAME,"exuifaxCaCert.der",strlen("exuifaxCaCert.der"));
SL_SO_SECURE_FILES_PRIVATE_KEY_FILE_NAME:
1 sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_SECURE_FILES_PRIVATE_KEY_FILE_NAME,"myPrivateKey.der",strlen("myPrivateKey.der"));
SL_SO_SECURE_FILES_CERTIFICATE_FILE_NAME:
1 sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_SECURE_FILES_CERTIFICATE_FILE_NAME,"myCertificate.der",strlen("myCertificate.der"));
SL_SO_SECURE_FILES_DH_KEY_FILE_NAME:
1 sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_SECURE_FILES_DH_KEY_FILE_NAME,"myDHinServerMode.der",strlen("myDHinServerMode.der"));
SL_IP_MULTICAST_TTL:
1 _u8 ttl = 20;
2 sl_SetSockOpt(SockID, SL_IPPROTO_IP, SL_IP_MULTICAST_TTL, &ttl, sizeof(ttl));
SL_IP_ADD_MEMBERSHIP:
1 SlSockIpMreq mreq;
2 sl_SetSockOpt(SockID, SL_IPPROTO_IP, SL_IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));
SL_IP_DROP_MEMBERSHIP:
1 SlSockIpMreq mreq;
2 sl_SetSockOpt(SockID, SL_IPPROTO_IP, SL_IP_DROP_MEMBERSHIP, &mreq, sizeof(mreq));
SL_SO_CHANGE_CHANNEL:
1 _u32 newChannel = 6; // range is 1-13
2 sl_SetSockOpt(SockID, SL_SOL_SOCKET, SL_SO_CHANGE_CHANNEL, &newChannel, sizeof(newChannel));
SL_IP_RAW_RX_NO_HEADER:
1 _u32 header = 1; // remove ip header
2 sl_SetSockOpt(SockID, SL_IPPROTO_IP, SL_IP_RAW_RX_NO_HEADER, &header, sizeof(header));
SL_IP_HDRINCL:
1 _u32 header = 1;
2 sl_SetSockOpt(SockID, SL_IPPROTO_IP, SL_IP_HDRINCL, &header, sizeof(header));
SL_IP_RAW_IPV6_HDRINCL:
1 _u32 header = 1;
2 sl_SetSockOpt(SockID, SL_IPPROTO_IP, SL_IP_RAW_IPV6_HDRINCL, &header, sizeof(header));
SL_SO_PHY_RATE:
1 _u32 rate = 6; // see wlan.h RateIndex_e for values
2 sl_SetSockOpt(SockID, SL_SOL_PHY_OPT, SL_SO_PHY_RATE, &rate, sizeof(rate));
SL_SO_PHY_TX_POWER:
1 _u32 txpower = 1; // valid range is 1-15
2 sl_SetSockOpt(SockID, SL_SOL_PHY_OPT, SL_SO_PHY_TX_POWER, &txpower, sizeof(txpower));
SL_SO_PHY_NUM_FRAMES_TO_TX:
1 _u32 numframes = 1;
2  sl_SetSockOpt(SockID, SL_SOL_PHY_OPT, SL_SO_PHY_NUM_FRAMES_TO_TX, &numframes, sizeof(numframes));
SL_SO_PHY_PREAMBLE:
1 _u32 preamble = 1;
2 sl_SetSockOpt(SockID, SL_SOL_PHY_OPT, SL_SO_PHY_PREAMBLE, &preamble, sizeof(preamble));
_i16 sl_Socket ( _i16  Domain,
_i16  Type,
_i16  Protocol 
)

create an endpoint for communication

The socket function creates a new socket of a certain socket type, identified by an integer number, and allocates system resources to it. This function is called by the application layer to obtain a socket handle.

Parameters
[in]domainspecifies the protocol family of the created socket. For example: AF_INET for network protocol IPv4 AF_RF for starting transceiver mode. Notes:
  • sending and receiving any packet overriding 802.11 header
  • for optimized power consumption the socket will be started in TX only mode until receive command is activated AF_INET6 for IPv6
[in]typespecifies the communication semantic, one of: SOCK_STREAM (reliable stream-oriented service or Stream Sockets) SOCK_DGRAM (datagram service or Datagram Sockets) SOCK_RAW (raw protocols atop the network layer) when used with AF_RF: SOCK_DGRAM - L2 socket SOCK_RAW - L1 socket - bypass WLAN CCA (Clear Channel Assessment)
[in]protocolspecifies a particular transport to be used with the socket. The most common are IPPROTO_TCP, IPPROTO_SCTP, IPPROTO_UDP, IPPROTO_DCCP. The value 0 may be used to select a default protocol from the selected domain and type
Returns
On success, socket handle that is used for consequent socket operations. A successful return code should be a positive number (int16) On error, a negative (int16) value will be returned specifying the error code. SL_EAFNOSUPPORT - illegal domain parameter SL_EPROTOTYPE - illegal type parameter SL_EACCES - permission denied SL_ENSOCK - exceeded maximal number of socket SL_ENOMEM - memory allocation error SL_EINVAL - error in socket configuration SL_EPROTONOSUPPORT - illegal protocol parameter SL_EOPNOTSUPP - illegal combination of protocol and type parameters
See also
sl_Close
Note
belongs to basic_api
Warning

Data Structure Documentation

struct SlInAddr_t

Definition at line 447 of file socket.h.

Data Fields
_u32 s_addr
union S_un S_un
union SlInAddr_t::S_un

Definition at line 452 of file socket.h.

Data Fields
_u32 S_addr
struct S_un S_un_b
struct S_un S_un_w
struct SlInAddr_t::S_un.S_un_b

Definition at line 453 of file socket.h.

Data Fields
_u8 s_b1
_u8 s_b2
_u8 s_b3
_u8 s_b4
struct SlInAddr_t::S_un.S_un_w

Definition at line 454 of file socket.h.

Data Fields
_u8 s_w1
_u8 s_w2
struct SlSockKeepalive_t

Definition at line 462 of file socket.h.

Data Fields
_u32 KeepaliveEnabled
struct SlSockReuseaddr_t

Definition at line 467 of file socket.h.

Data Fields
_u32 ReuseaddrEnabled
struct SlSockWinsize_t

Definition at line 472 of file socket.h.

Data Fields
_u32 Winsize
struct SlSockNonblocking_t

Definition at line 477 of file socket.h.

Data Fields
_u32 NonblockingEnabled
struct SlSocketAsyncEvent_t

Definition at line 483 of file socket.h.

Data Fields
_u8 * pExtraInfo
_u8 sd
_u8 type
_i16 val
struct SlSockTxFailEventData_t

Definition at line 491 of file socket.h.

Data Fields
_u8 padding
_u8 sd
_i16 status
union SlSockEventData_u

Definition at line 499 of file socket.h.

Data Fields
SlSocketAsyncEvent_t SockAsyncData
SlSockTxFailEventData_t SockTxFailData
struct SlSockEvent_t

Definition at line 506 of file socket.h.

Data Fields
_u32 Event
SlSockEventData_u socketAsyncEvent
struct SlSockSecureMask

Definition at line 517 of file socket.h.

Data Fields
_u32 secureMask
struct SlSockSecureMethod

Definition at line 522 of file socket.h.

Data Fields
_u8 secureMethod
struct SlSockIpMreq

Definition at line 535 of file socket.h.

Data Fields
SlInAddr_t imr_interface
SlInAddr_t imr_multiaddr
struct SlTimeval_t

Definition at line 546 of file socket.h.

Data Fields
SlTime_t tv_sec
SlSuseconds_t tv_usec
struct SlSockAddr_t

Definition at line 555 of file socket.h.

Data Fields
_u8 sa_data[14]
_u16 sa_family
struct SlIn6Addr_t

Definition at line 563 of file socket.h.

Data Fields
union SlIn6Addr_t _S6_un
union SlIn6Addr_t._S6_un

Definition at line 565 of file socket.h.

Data Fields
_u32 _S6_u32[4]
_u8 _S6_u8[16]
struct SlSockAddrIn6_t

Definition at line 572 of file socket.h.

Data Fields
SlIn6Addr_t sin6_addr
_u16 sin6_family
_u32 sin6_flowinfo
_u16 sin6_port
_u32 sin6_scope_id
struct SlSockAddrIn_t

Definition at line 583 of file socket.h.

Data Fields
SlInAddr_t sin_addr
_u16 sin_family
_u16 sin_port
_i8 sin_zero[8]
struct SlIpV4AcquiredAsync_t

Definition at line 591 of file socket.h.

Data Fields
_u32 dns
_u32 gateway
_u32 ip
struct SlIpV6AcquiredAsync_t

Definition at line 598 of file socket.h.

Data Fields
_u32 dns[4]
_u32 gateway[4]
_u32 ip[4]
_u32 type
struct SlIpLeasedAsync_t

Definition at line 606 of file socket.h.

Data Fields
_u32 ip_address
_u32 lease_time
_u8 mac[6]
_u16 padding
struct SlIpReleasedAsync_t

Definition at line 614 of file socket.h.

Data Fields
_u32 ip_address
_u8 mac[6]
_u16 reason
union SlNetAppEventData_u

Definition at line 622 of file socket.h.

Data Fields
SlIpV4AcquiredAsync_t ipAcquiredV4
SlIpV6AcquiredAsync_t ipAcquiredV6
SlIpLeasedAsync_t ipLeased
SlIpReleasedAsync_t ipReleased
_u32 sd
struct SlNetAppEvent_t

Definition at line 631 of file socket.h.

Data Fields
_u32 Event
SlNetAppEventData_u EventData
struct sock_secureFiles

Definition at line 638 of file socket.h.

Data Fields
_u8 secureFiles[4]
struct SlFdSet_t

Definition at line 644 of file socket.h.

Data Fields
_u32 fd_array[(SL_FD_SETSIZE+(_u8) 31)/(_u8) 32]
struct SlTransceiverRxOverHead_t

Definition at line 649 of file socket.h.

Data Fields
_u8 channel
_u8 padding
_u8 rate
_i8 rssi
_u32 timestamp