SimpleLink CC31xx/CC32xx Host Driver  Version 3.0.1.46
Simplifies the implementation of Internet connectivity
slnetifwifi.c
1 /*
2  * Copyright (c) 2017, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 
34 /*****************************************************************************/
35 /* Include files */
36 /*****************************************************************************/
37 
38 #include <ti/drivers/net/wifi/slnetifwifi.h>
39 
40 /*****************************************************************************/
41 /* Macro declarations */
42 /*****************************************************************************/
43 
44 /* Macro which split the 8bit security flags from the input flags */
45 #define SPLIT_SEC_AND_INPUT_FLAGS(inputFlags, secFlags) (secFlags = inputFlags >> 24)
46 
47 /* Disable the 8bit security flags */
48 #define SECURITY_FLAGS_IN_32BIT_REPRESENTATION (0xFF000000)
49 #define DISABLE_SEC_BITS_FROM_INPUT_FLAGS(inputFlags) (inputFlags &= ~SECURITY_FLAGS_IN_32BIT_REPRESENTATION)
50 
51 
52 /*****************************************************************************/
53 /* Structure/Enum declarations */
54 /*****************************************************************************/
55 
56 /*****************************************************************************/
57 /* Global declarations */
58 /*****************************************************************************/
59 
65 SlNetIf_Config_t SlNetIfConfigWifi =
66 {
67  SlNetIfWifi_socket, // Callback function sockCreate in slnetif module
68  SlNetIfWifi_close, // Callback function sockClose in slnetif module
69  NULL, // Callback function sockShutdown in slnetif module
70  SlNetIfWifi_accept, // Callback function sockAccept in slnetif module
71  SlNetIfWifi_bind, // Callback function sockBind in slnetif module
72  SlNetIfWifi_listen, // Callback function sockListen in slnetif module
73  SlNetIfWifi_connect, // Callback function sockConnect in slnetif module
74  NULL, // Callback function sockGetPeerName in slnetif module
75  NULL, // Callback function sockGetLocalName in slnetif module
76  SlNetIfWifi_select, // Callback function sockSelect in slnetif module
77  SlNetIfWifi_setSockOpt, // Callback function sockSetOpt in slnetif module
78  SlNetIfWifi_getSockOpt, // Callback function sockGetOpt in slnetif module
79  SlNetIfWifi_recv, // Callback function sockRecv in slnetif module
80  SlNetIfWifi_recvFrom, // Callback function sockRecvFrom in slnetif module
81  SlNetIfWifi_send, // Callback function sockSend in slnetif module
82  SlNetIfWifi_sendTo, // Callback function sockSendTo in slnetif module
83  SlNetIfWifi_sockstartSec, // Callback function sockstartSec in slnetif module
84  SlNetIfWifi_getHostByName, // Callback function utilGetHostByName in slnetif module
85  SlNetIfWifi_getIPAddr, // Callback function ifGetIPAddr in slnetif module
86  SlNetIfWifi_getConnectionStatus, // Callback function ifGetConnectionStatus in slnetif module
87  SlNetIfWifi_loadSecObj, // Callback function ifLoadSecObj in slnetif module
88  NULL // Callback function ifCreateContext in slnetif module
89 };
90 
91 static const int16_t StartSecOptName[10] =
92 {
93  SL_SO_SECURE_FILES_PRIVATE_KEY_FILE_NAME,
94  SL_SO_SECURE_FILES_CERTIFICATE_FILE_NAME,
95  SL_SO_SECURE_FILES_CA_FILE_NAME,
96  SL_SO_SECURE_FILES_PEER_CERT_OR_DH_KEY_FILE_NAME,
97  SL_SO_SECMETHOD,
98  SL_SO_SECURE_MASK,
99  SL_SO_SECURE_ALPN,
100  SL_SO_SECURE_EXT_CLIENT_CHLNG_RESP,
101  SL_SO_SECURE_DOMAIN_NAME_VERIFICATION,
102  SL_SO_SECURE_DISABLE_CERTIFICATE_STORE
103 };
104 
105 static const int16_t socketType[8] =
106 {
107  SL_SOCK_STREAM,
108  SL_SOCK_DGRAM,
109  SL_SOCK_RAW,
110  SLNETSOCK_SOCK_RX_MTR,
111  SL_SOCK_DGRAM,
112  SL_SOCK_RAW,
113  SLNETSOCK_SOCK_BRIDGE,
114  SLNETSOCK_SOCK_ROUTER,
115 };
116 
117 /*****************************************************************************/
118 /* Function prototypes */
119 /*****************************************************************************/
120 
121 //*****************************************************************************
122 //
123 // SlNetIfWifi_socket - Create an endpoint for communication
124 //
125 //*****************************************************************************
126 int16_t SlNetIfWifi_socket(void *ifContext, int16_t Domain, int16_t Type, int16_t Protocol, void **sdContext)
127 {
128  /* Create socket and return the return value of the function */
129  int16_t mappedSocketType = socketType[Type - 1];
130  return (sl_Socket(Domain, mappedSocketType, Protocol));
131 }
132 
133 
134 //*****************************************************************************
135 //
136 // SlNetIfWifi_close - Gracefully close socket
137 //
138 //*****************************************************************************
139 int32_t SlNetIfWifi_close(int16_t sd, void *sdContext)
140 {
141  /* Close socket and return the return value of the function */
142  return sl_Close(sd);
143 }
144 
145 
146 //*****************************************************************************
147 //
148 // SlNetIfWifi_accept - Accept a connection on a socket
149 //
150 //*****************************************************************************
151 int16_t SlNetIfWifi_accept(int16_t sd, void *sdContext, SlNetSock_Addr_t *addr, SlNetSocklen_t *addrlen, uint8_t flags, void **acceptedSdContext)
152 {
153  return sl_Accept(sd, (SlSockAddr_t *)addr, addrlen);
154 }
155 
156 
157 //*****************************************************************************
158 //
159 // SlNetIfWifi_bind - Assign a name to a socket
160 //
161 //*****************************************************************************
162 int32_t SlNetIfWifi_bind(int16_t sd, void *sdContext, const SlNetSock_Addr_t *addr, int16_t addrlen)
163 {
164  return sl_Bind(sd, (const SlSockAddr_t *)addr, addrlen);
165 }
166 
167 
168 //*****************************************************************************
169 //
170 // SlNetIfWifi_listen - Listen for connections on a socket
171 //
172 //*****************************************************************************
173 int32_t SlNetIfWifi_listen(int16_t sd, void *sdContext, int16_t backlog)
174 {
175  return sl_Listen(sd, backlog);
176 }
177 
178 
179 //*****************************************************************************
180 //
181 // SlNetIfWifi_connect - Initiate a connection on a socket
182 //
183 //*****************************************************************************
184 int32_t SlNetIfWifi_connect(int16_t sd, void *sdContext, const SlNetSock_Addr_t *addr, SlNetSocklen_t addrlen, uint8_t flags)
185 {
186  return sl_Connect(sd, (const SlSockAddr_t *)addr, addrlen);
187 }
188 
189 
190 //*****************************************************************************
191 //
192 // SlNetIfWifi_getSockName - Returns the local address info of the socket
193 // descriptor
194 //
195 //*****************************************************************************
196 int32_t SlNetIfWifi_getSockName(int16_t sd, void *sdContext, SlNetSock_Addr_t *addr, SlNetSocklen_t *addrlen)
197 {
198 // Not implemented in NWP
199  return SLNETERR_INVALPARAM;
200 }
201 
202 
203 //*****************************************************************************
204 //
205 // SlNetIfWifi_select - Monitor socket activity
206 //
207 //*****************************************************************************
208 int32_t SlNetIfWifi_select(void *ifContext, int16_t nfds, SlNetSock_SdSet_t *readsds, SlNetSock_SdSet_t *writesds, SlNetSock_SdSet_t *exceptsds, SlNetSock_Timeval_t *timeout)
209 {
210  return sl_Select(nfds, (SlFdSet_t *)readsds, (SlFdSet_t *)writesds, (SlFdSet_t *)exceptsds, (struct SlTimeval_t *)timeout);
211 }
212 
213 
214 //*****************************************************************************
215 //
216 // SlNetIfWifi_setSockOpt - Set socket options
217 //
218 //*****************************************************************************
219 int32_t SlNetIfWifi_setSockOpt(int16_t sd, void *sdContext, int16_t level, int16_t optname, void *optval, SlNetSocklen_t optlen)
220 {
221  return sl_SetSockOpt(sd, level, optname, optval, optlen);
222 }
223 
224 
225 //*****************************************************************************
226 //
227 // SlNetIfWifi_getSockOpt - Get socket options
228 //
229 //*****************************************************************************
230 int32_t SlNetIfWifi_getSockOpt(int16_t sd, void *sdContext, int16_t level, int16_t optname, void *optval, SlNetSocklen_t *optlen)
231 {
232  return sl_GetSockOpt(sd, level, optname, optval, optlen);
233 }
234 
235 
236 //*****************************************************************************
237 //
238 // SlNetIfWifi_recv - Read data from TCP socket
239 //
240 //*****************************************************************************
241 int32_t SlNetIfWifi_recv(int16_t sd, void *sdContext, void *buf, uint32_t len, uint32_t flags)
242 {
243  DISABLE_SEC_BITS_FROM_INPUT_FLAGS(flags);
244  return sl_Recv(sd, buf, len, flags);
245 }
246 
247 
248 //*****************************************************************************
249 //
250 // SlNetIfWifi_recvFrom - Read data from socket
251 //
252 //*****************************************************************************
253 int32_t SlNetIfWifi_recvFrom(int16_t sd, void *sdContext, void *buf, uint32_t len, uint32_t flags, SlNetSock_Addr_t *from, SlNetSocklen_t *fromlen)
254 {
255  DISABLE_SEC_BITS_FROM_INPUT_FLAGS(flags);
256  return sl_RecvFrom(sd, buf, len, flags, (SlSockAddr_t *)from, fromlen);
257 }
258 
259 
260 //*****************************************************************************
261 //
262 // SlNetIfWifi_send - Write data to TCP socket
263 //
264 //*****************************************************************************
265 int32_t SlNetIfWifi_send(int16_t sd, void *sdContext, const void *buf, uint32_t len, uint32_t flags)
266 {
267  DISABLE_SEC_BITS_FROM_INPUT_FLAGS(flags);
268  return sl_Send(sd, buf, len, flags);
269 }
270 
271 
272 //*****************************************************************************
273 //
274 // SlNetIfWifi_sendTo - Write data to socket
275 //
276 //*****************************************************************************
277 int32_t SlNetIfWifi_sendTo(int16_t sd, void *sdContext, const void *buf, uint32_t len, uint32_t flags, const SlNetSock_Addr_t *to, SlNetSocklen_t tolen)
278 {
279  DISABLE_SEC_BITS_FROM_INPUT_FLAGS(flags);
280  return sl_SendTo(sd, buf, len, flags, (const SlSockAddr_t *)to, tolen);
281 }
282 
283 
284 //*****************************************************************************
285 //
286 // SlNetIfWifi_sockstartSec - Start a security session on an opened socket
287 //
288 //*****************************************************************************
289 int32_t SlNetIfWifi_sockstartSec(int16_t sd, void *sdContext, SlNetSockSecAttrib_t *secAttrib, uint8_t flags)
290 {
291  SlNetSock_SecAttribNode_t *tempSecAttrib = *secAttrib;
292  int32_t retVal = SLNETERR_RET_CODE_OK;
293 
294  if ( 0 != (flags & SLNETSOCK_SEC_BIND_CONTEXT_ONLY) )
295  {
296  /* run over all attributes and set them */
297  while (NULL != tempSecAttrib)
298  {
299  if ( tempSecAttrib->attribName <= SLNETSOCK_SEC_ATTRIB_DISABLE_CERT_STORE)
300  {
301  retVal = sl_SetSockOpt(sd, SL_SOL_SOCKET, StartSecOptName[tempSecAttrib->attribName], tempSecAttrib->attribBuff, tempSecAttrib->attribBuffLen);
302  }
303  else
304  {
305  return SLNETERR_RET_CODE_INVALID_INPUT;
306  }
307  tempSecAttrib = tempSecAttrib->next;
308  }
309  }
310 
311  if ( 0 != (flags & SLNETSOCK_SEC_START_SECURITY_SESSION_ONLY) )
312  {
313  /* Start TLS session */
314  retVal = sl_StartTLS(sd);
315  }
316 
317  return retVal;
318 }
319 
320 
321 //*****************************************************************************
322 //
323 // SlNetIfWifi_getHostByName - Obtain the IP Address of machine on network, by
324 // machine name
325 //
326 //*****************************************************************************
327 int32_t SlNetIfWifi_getHostByName(void *ifContext, char *name, const uint16_t nameLen, uint32_t *ipAddr, uint16_t *ipAddrLen, const uint8_t family)
328 {
329  int32_t retVal = SLNETERR_RET_CODE_OK;
330 
331  /* sl_NetAppDnsGetHostByName can receive only one ipAddr variable, so
332  only the first slot of the array will be used and the ipAddrLen will
333  be updated to 1 when function is successfully */
334  retVal = sl_NetAppDnsGetHostByName((signed char *)name, nameLen, (_u32 *)ipAddr, family);
335 
336  if (retVal == SLNETERR_RET_CODE_OK)
337  {
338  *ipAddrLen = 1;
339  }
340 
341  return retVal;
342 
343 }
344 
345 
346 //*****************************************************************************
347 //
348 // matchModeByRole - Service function used by SlNetIfWifi_getIPAddr for matching SlNetIfAddressType_e to SlNetCfg_e
349 //
350 //*****************************************************************************
351 int32_t matchModeByRole(SlNetIfAddressType_e addrType,
352  SlNetCfg_e *newAddrType ,
353  uint16_t *ipAddrLen )
354 {
355  SlWlanConnStatusParam_t WlanConnectInfo;
356  uint16_t Len;
357  int32_t retVal;
358 
359  switch(addrType)
360  {
361 
362  case SLNETIF_IPV6_ADDR_LOCAL:
363  *newAddrType = SL_NETCFG_IPV6_ADDR_LOCAL;
364  *ipAddrLen = sizeof(SlNetCfgIpV6Args_t);
365  retVal = SLNETERR_RET_CODE_OK;
366  break;
367 
368  case SLNETIF_IPV6_ADDR_GLOBAL:
369  *newAddrType = SL_NETCFG_IPV6_ADDR_GLOBAL;
370  *ipAddrLen = sizeof(SlNetCfgIpV6Args_t);
371  retVal = SLNETERR_RET_CODE_OK;
372  break;
373 
374  /* IPv4 or P2P (GO and CL) */
375  case SLNETIF_IPV4_ADDR:
376  Len = sizeof(SlWlanConnStatusParam_t);
377  *ipAddrLen = sizeof(SlNetCfgIpV4Args_t);
378  retVal = sl_WlanGet(SL_WLAN_CONNECTION_INFO, NULL , &Len, (uint8_t*)&WlanConnectInfo);
379  if(retVal != SLNETERR_RET_CODE_OK)
380  {
381  return retVal;
382  }
383  if(WlanConnectInfo.ConnStatus == SL_WLAN_CONNECTED_STA || WlanConnectInfo.ConnStatus == SL_WLAN_CONNECTED_P2PCL)
384  {
385  *newAddrType = SL_NETCFG_IPV4_STA_ADDR_MODE;
386  retVal = SLNETERR_RET_CODE_OK;
387  }
388  else if(WlanConnectInfo.ConnStatus == SL_WLAN_CONNECTED_P2PGO || WlanConnectInfo.ConnStatus == SL_WLAN_AP_CONNECTED_STATIONS)
389  {
390  *newAddrType = SL_NETCFG_IPV4_AP_ADDR_MODE;
391  retVal = SLNETERR_RET_CODE_OK;
392  }
393  else
394  {
395  retVal = SLNETERR_BSD_ENOTCONN;
396  }
397 
398  }
399  return retVal;
400 }
401 
402 
403 //*****************************************************************************
404 //
405 // SlNetIfWifi_getIPAddr - Get IP Address of specific interface
406 //
407 //*****************************************************************************
408 int32_t SlNetIfWifi_getIPAddr(void *ifContext, SlNetIfAddressType_e addrType, uint16_t *addrConfig, uint32_t *ipAddr)
409 {
410  int32_t retVal;
411  uint16_t ipAddrLen;
412  SlNetCfg_e newAddrType;
413 
414  /* Translate the addrType of SlNetSock type to addrType of SlNetSockIfWifi type */
415  retVal = matchModeByRole(addrType, &newAddrType, &ipAddrLen);
416  if(retVal == SLNETERR_RET_CODE_OK)
417  {
418  retVal = sl_NetCfgGet(newAddrType, addrConfig, &ipAddrLen, (unsigned char *)ipAddr);
419  }
420  return retVal;
421 }
422 
423 
424 //*****************************************************************************
425 //
426 // SlNetIfWifi_getConnectionStatus - Get interface connection status
427 //
428 //*****************************************************************************
429 int32_t SlNetIfWifi_getConnectionStatus(void *ifContext)
430 {
431  SlWlanConnStatusParam_t connectionParams;
432  uint16_t Opt = 0;
433  int32_t retVal = 0;
434  uint16_t Size = 0;
435 
436  Size = sizeof(SlWlanConnStatusParam_t);
437  memset(&connectionParams, 0, Size);
438 
439  retVal = sl_WlanGet(SL_WLAN_CONNECTION_INFO, &Opt, &Size, (uint8_t *)&connectionParams);
440 
441  /* Check if the function returned an error */
442  if (retVal < SLNETERR_RET_CODE_OK)
443  {
444  /* Return error code */
445  return retVal;
446  }
447  return connectionParams.ConnStatus;
448 }
449 
450 
451 //*****************************************************************************
452 //
453 // SlNetIfWifi_loadSecObj - Load secured buffer to the network stack
454 //
455 //*****************************************************************************
456 int32_t SlNetIfWifi_loadSecObj(void *ifContext, uint16_t objType, char *objName, int16_t objNameLen, uint8_t *objBuff, int16_t objBuffLen)
457 {
458  int32_t retVal; /* negative retVal is an error */
459  uint16_t i;
460  uint32_t Offset = 0;
461  uint32_t MasterToken = 0;
462  int32_t OpenFlags = 0;
463  int32_t DeviceFileHandle = (-1);
464  uint16_t macAddressLen = SL_MAC_ADDR_LEN;
465  char *deviceFileName = objName;
466  uint8_t macAddress[SL_MAC_ADDR_LEN];
467 
468  /* Check if the inputs exists */
469  if ((NULL == objName) || (NULL == objBuff))
470  {
471  /* input not valid, return error code */
472  return SLNETERR_RET_CODE_INVALID_INPUT;
473  }
474  /* Print device MAC address */
475  retVal = sl_NetCfgGet(SL_NETCFG_MAC_ADDRESS_GET, 0, &macAddressLen, &macAddress[0]);
476 
477  /* Generating Random MasterPassword but constant per deviceFileName */
478  for (i = 0; i < strlen(deviceFileName); i++)
479  {
480  MasterToken = ((MasterToken << 8) ^ deviceFileName[i]);
481  }
482 
483  /* Create a file and write data. The file is secured, without
484  signature and with a fail safe commit, with vendor token which is
485  a XOR combination between the MAC address of the device and the
486  object file name */
487  OpenFlags = SL_FS_CREATE;
488  OpenFlags |= SL_FS_OVERWRITE;
489  OpenFlags |= SL_FS_CREATE_SECURE;
490  OpenFlags |= SL_FS_CREATE_VENDOR_TOKEN;
491  OpenFlags |= SL_FS_CREATE_NOSIGNATURE;
492  OpenFlags |= SL_FS_CREATE_FAILSAFE;
493 
494  /* Create a secure file if not exists and open it for write. */
495  DeviceFileHandle = sl_FsOpen((unsigned char *)deviceFileName, OpenFlags | SL_FS_CREATE_MAX_SIZE( objBuffLen ), (unsigned long *)&MasterToken);
496 
497  /* Check if file created successfully */
498  if ( DeviceFileHandle < SLNETERR_RET_CODE_OK )
499  {
500  return DeviceFileHandle;
501  }
502 
503  Offset = 0;
504  /* Write the buffer to the new file */
505  retVal = sl_FsWrite(DeviceFileHandle, Offset, (unsigned char *)objBuff, objBuffLen);
506 
507  /* Close the file */
508  retVal = sl_FsClose(DeviceFileHandle, NULL, NULL , 0);
509 
510  return retVal;
511 }
512 
513 
514 //*****************************************************************************
515 //
516 // SlNetIfWifi_CreateContext - Allocate and store interface data
517 //
518 //*****************************************************************************
519 int32_t SlNetIfWifi_CreateContext(uint16_t ifID, const char *ifName, void **context)
520 {
521  return SLNETERR_RET_CODE_OK;
522 }
int32_t SlNetIfWifi_listen(int16_t sd, void *sdContext, int16_t backlog)
Listen for connections on a socket.
Definition: slnetifwifi.c:173
_i16 sl_Bind(_i16 sd, const SlSockAddr_t *addr, _i16 addrlen)
Assign a name to a socket.
Definition: sl_socket.c:233
int32_t SlNetIfWifi_CreateContext(uint16_t ifID, const char *ifName, void **context)
Allocate and store interface data.
Definition: slnetifwifi.c:519
int32_t SlNetIfWifi_getIPAddr(void *ifContext, SlNetIfAddressType_e addrType, uint16_t *addrConfig, uint32_t *ipAddr)
Get IP Address of specific interface.
Definition: slnetifwifi.c:408
_i16 sl_Select(_i16 nfds, SlFdSet_t *readsds, SlFdSet_t *writesds, SlFdSet_t *exceptsds, struct SlTimeval_t *timeout)
Monitor socket activity.
Definition: sl_socket.c:1735
_i16 sl_WlanGet(const _u16 ConfigId, _u16 *pConfigOpt, _u16 *pConfigLen, _u8 *pValues)
Getting WLAN configurations.
Definition: wlan.c:1167
int32_t SlNetIfWifi_setSockOpt(int16_t sd, void *sdContext, int16_t level, int16_t optname, void *optval, SlNetSocklen_t optlen)
Set socket options-.
Definition: slnetifwifi.c:219
int16_t SlNetIfWifi_accept(int16_t sd, void *sdContext, SlNetSock_Addr_t *addr, SlNetSocklen_t *addrlen, uint8_t flags, void **acceptedSdContext)
Accept a connection on a socket.
Definition: slnetifwifi.c:151
_i32 sl_FsOpen(const _u8 *pFileName, const _u32 AccessModeAndMaxSize, _u32 *pToken)
open file for read or write from/to storage device
Definition: fs.c:157
int32_t SlNetIfWifi_recv(int16_t sd, void *sdContext, void *buf, uint32_t len, uint32_t flags)
Read data from TCP socket.
Definition: slnetifwifi.c:241
int32_t SlNetIfWifi_close(int16_t sd, void *sdContext)
Gracefully close socket.
Definition: slnetifwifi.c:139
int32_t SlNetIfWifi_bind(int16_t sd, void *sdContext, const SlNetSock_Addr_t *addr, int16_t addrlen)
Assign a name to a socket.
Definition: slnetifwifi.c:162
int32_t SlNetIfWifi_getConnectionStatus(void *ifContext)
Get interface connection status.
Definition: slnetifwifi.c:429
_i16 sl_FsClose(const _i32 FileHdl, const _u8 *pCeritificateFileName, const _u8 *pSignature, const _u32 SignatureLen)
Close file in storage device.
Definition: fs.c:250
SlNetIf_Config_t SlNetIfConfigWifi
Definition: slnetifwifi.c:65
_i16 sl_StartTLS(_i16 sd)
Initiate TLS connection on a socket.
Definition: sl_socket.c:1933
int32_t SlNetIfWifi_send(int16_t sd, void *sdContext, const void *buf, uint32_t len, uint32_t flags)
Write data to TCP socket.
Definition: slnetifwifi.c:265
int16_t SlNetIfWifi_socket(void *ifContext, int16_t Domain, int16_t Type, int16_t Protocol, void **sdContext)
Create an endpoint for communication.
Definition: slnetifwifi.c:126
_i16 sl_Close(_i16 sd)
Gracefully close socket.
Definition: sl_socket.c:175
_i16 sl_Recv(_i16 sd, void *buf, _i16 len, _i16 flags)
Read data from TCP socket.
Definition: sl_socket.c:860
int32_t SlNetIfWifi_select(void *ifContext, int16_t nfds, SlNetSock_SdSet_t *readsds, SlNetSock_SdSet_t *writesds, SlNetSock_SdSet_t *exceptsds, SlNetSock_Timeval_t *timeout)
Monitor socket activity.
Definition: slnetifwifi.c:208
_i16 sl_GetSockOpt(_i16 sd, _i16 level, _i16 optname, void *optval, SlSocklen_t *optlen)
Get socket options.
Definition: sl_socket.c:954
_i16 sl_NetCfgGet(const _u16 ConfigId, _u16 *pConfigOpt, _u16 *pConfigLen, _u8 *pValues)
Getting network configurations.
Definition: netcfg.c:104
int32_t SlNetIfWifi_recvFrom(int16_t sd, void *sdContext, void *buf, uint32_t len, uint32_t flags, SlNetSock_Addr_t *from, SlNetSocklen_t *fromlen)
Read data from socket.
Definition: slnetifwifi.c:253
int32_t SlNetIfWifi_sockstartSec(int16_t sd, void *sdContext, SlNetSockSecAttrib_t *secAttrib, uint8_t flags)
Start a security session on an opened socket.
Definition: slnetifwifi.c:289
_i16 sl_NetAppDnsGetHostByName(_i8 *pHostName, const _u16 NameLen, _u32 *OutIpAddr, const _u8 Family)
Get host IP by name Obtain the IP Address of machine on network, by machine name. ...
Definition: netapp.c:841
int32_t SlNetIfWifi_sendTo(int16_t sd, void *sdContext, const void *buf, uint32_t len, uint32_t flags, const SlNetSock_Addr_t *to, SlNetSocklen_t tolen)
Write data to socket.
Definition: slnetifwifi.c:277
int32_t SlNetIfWifi_connect(int16_t sd, void *sdContext, const SlNetSock_Addr_t *addr, SlNetSocklen_t addrlen, uint8_t flags)
Initiate a connection on a socket.
Definition: slnetifwifi.c:184
int32_t SlNetIfWifi_loadSecObj(void *ifContext, uint16_t objType, char *objName, int16_t objNameLen, uint8_t *objBuff, int16_t objBuffLen)
Load secured buffer to the network stack.
Definition: slnetifwifi.c:456
_i16 sl_Socket(_i16 Domain, _i16 Type, _i16 Protocol)
Create an endpoint for communication.
Definition: sl_socket.c:132
_i16 sl_RecvFrom(_i16 sd, void *buf, _i16 len, _i16 flags, SlSockAddr_t *from, SlSocklen_t *fromlen)
Read data from socket.
Definition: sl_socket.c:356
_i16 sl_Accept(_i16 sd, SlSockAddr_t *addr, SlSocklen_t *addrlen)
Accept a connection on a socket.
Definition: sl_socket.c:680
_i32 sl_FsWrite(const _i32 FileHdl, _u32 Offset, _u8 *pData, _u32 Len)
Write block of data to a file in storage device.
Definition: fs.c:379
int32_t SlNetIfWifi_getHostByName(void *ifContext, char *name, const uint16_t nameLen, uint32_t *ipAddr, uint16_t *ipAddrLen, const uint8_t family)
Get host IP by name Obtain the IP Address of machine on network, by machine name. ...
Definition: slnetifwifi.c:327
_i16 sl_Connect(_i16 sd, const SlSockAddr_t *addr, _i16 addrlen)
Initiate a connection on a socket.
Definition: sl_socket.c:445
int32_t SlNetIfWifi_getSockOpt(int16_t sd, void *sdContext, int16_t level, int16_t optname, void *optval, SlNetSocklen_t *optlen)
Get socket options.
Definition: slnetifwifi.c:230
_i16 sl_Listen(_i16 sd, _i16 backlog)
Listen for connections on a socket.
Definition: sl_socket.c:646
_i16 sl_SendTo(_i16 sd, const void *buf, _i16 len, _i16 flags, const SlSockAddr_t *to, SlSocklen_t tolen)
Write data to socket.
Definition: sl_socket.c:279
_i16 sl_Send(_i16 sd, const void *buf, _i16 len, _i16 flags)
Write data to TCP socket.
Definition: sl_socket.c:582
int32_t SlNetIfWifi_getSockName(int16_t sd, void *sdContext, SlNetSock_Addr_t *addr, SlNetSocklen_t *addrlen)
Get local address info by socket descriptor Returns the local address info of the socket descriptor...
Definition: slnetifwifi.c:196