XCORE SDK
XCORE Software Development Kit
sl_wfx_iot_wifi.h
1 /*
2  * Amazon FreeRTOS WiFi V1.0.4
3  * Copyright (C) 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of
6  * this software and associated documentation files (the "Software"), to deal in
7  * the Software without restriction, including without limitation the rights to
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9  * the Software, and to permit persons to whom the Software is furnished to do so,
10  * subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included in all
13  * copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21  *
22  * http://aws.amazon.com/freertos
23  * http://www.FreeRTOS.org
24  */
25 
31 #ifndef _AWS_WIFI_H_
32 #define _AWS_WIFI_H_
33 
34 #include <stdint.h>
35 
36 /* FreeRTOS include for BaseType_t. */
37 #include "portmacro.h"
38 
39 /* Wi-Fi configuration includes. */
40 #include "aws_wifi_config.h"
42 
43 /* WFX Driver include */
44 #include "sl_wfx.h"
45 #include "FreeRTOS/sl_wfx_host.h"
46 
53 typedef enum
54 {
55  eWiFiSuccess = 0,
56  eWiFiFailure = 1,
57  eWiFiTimeout = 2,
58  eWiFiNotSupported = 3,
59 } WIFIReturnCode_t;
60 
66 typedef enum
67 {
68  eWiFiSecurityOpen = 0,
69  eWiFiSecurityWEP,
70  eWiFiSecurityWPA,
71  eWiFiSecurityWPA2,
72  eWiFiSecurityWPA2_ent,
73  eWiFiSecurityNotSupported
74 } WIFISecurity_t;
75 
82 typedef enum
83 {
84  eWiFiModeStation = 0,
85  eWiFiModeAP,
86  eWiFiModeP2P,
87  eWiFiModeNotSupported
88 } WIFIDeviceMode_t;
89 
96 typedef enum
97 {
98  eWiFiPMNormal = 0,
99  eWiFiPMLowPower,
100  eWiFiPMAlwaysOn,
101  eWiFiPMNotSupported
102 } WIFIPMMode_t;
103 
111 typedef struct
112 {
113  const char * pcSSID;
114  uint8_t ucSSIDLength;
115  const char * pcPassword;
117  WIFISecurity_t xSecurity;
118  int8_t cChannel;
120 
134 typedef struct
135 {
136  char cSSID[ wificonfigMAX_SSID_LEN + 1 ];
137  uint8_t ucBSSID[ wificonfigMAX_BSSID_LEN ];
138  WIFISecurity_t xSecurity;
139  int8_t cRSSI;
140  int8_t cChannel;
141  uint8_t ucHidden;
143 
153 typedef struct
154 {
155  char cSSID[ wificonfigMAX_SSID_LEN + 1 ];
156  uint8_t ucSSIDLength;
157  uint8_t ucBSSID[ wificonfigMAX_BSSID_LEN ];
158  char cPassword[ wificonfigMAX_PASSPHRASE_LEN + 1 ];
160  WIFISecurity_t xSecurity;
162 
171 /* @[declare_wifi_wifi_on] */
172 WIFIReturnCode_t WIFI_On( void );
173 /* @[declare_wifi_wifi_on] */
174 
183 /* @[declare_wifi_wifi_off] */
184 WIFIReturnCode_t WIFI_Off( void );
185 /* @[declare_wifi_wifi_off] */
186 
187 WIFIReturnCode_t WIFI_ConnectAPSetBSSID(const uint8_t *bssid);
188 
219 /* @[declare_wifi_wifi_connectap] */
220 WIFIReturnCode_t WIFI_ConnectAP( const WIFINetworkParams_t * const pxNetworkParams );
221 /* @[declare_wifi_wifi_connectap] */
222 
229 /* @[declare_wifi_wifi_disconnect] */
230 WIFIReturnCode_t WIFI_Disconnect( void );
231 /* @[declare_wifi_wifi_disconnect] */
232 
238 /* @[declare_wifi_wifi_reset] */
239 WIFIReturnCode_t WIFI_Reset( void );
240 /* @[declare_wifi_wifi_reset] */
241 
259 /* @[declare_wifi_wifi_setmode] */
260 WIFIReturnCode_t WIFI_SetMode( WIFIDeviceMode_t xDeviceMode );
261 /* @[declare_wifi_wifi_setmode] */
262 
281 /* @[declare_wifi_wifi_getmode] */
282 WIFIReturnCode_t WIFI_GetMode( WIFIDeviceMode_t * pxDeviceMode );
283 /* @[declare_wifi_wifi_getmode] */
284 
308 /* @[declare_wifi_wifi_networkadd] */
309 WIFIReturnCode_t WIFI_NetworkAdd( const WIFINetworkProfile_t * const pxNetworkProfile,
310  uint16_t * pusIndex );
311 /* @[declare_wifi_wifi_networkadd] */
312 
313 
339 /* @[declare_wifi_wifi_networkget] */
340 WIFIReturnCode_t WIFI_NetworkGet( WIFINetworkProfile_t * pxNetworkProfile,
341  uint16_t usIndex );
342 /* @[declare_wifi_wifi_networkget] */
343 
366 /* @[declare_wifi_wifi_networkdelete] */
367 WIFIReturnCode_t WIFI_NetworkDelete( uint16_t usIndex );
368 /* @[declare_wifi_wifi_networkdelete] */
369 
379 /* @[declare_wifi_wifi_ping] */
380 WIFIReturnCode_t WIFI_Ping( uint8_t * pucIPAddr,
381  uint16_t usCount,
382  uint32_t ulIntervalMS );
383 /* @[declare_wifi_wifi_ping] */
384 
399 /* @[declare_wifi_wifi_getip] */
400 WIFIReturnCode_t WIFI_GetIP( uint8_t * pucIPAddr );
401 /* @[declare_wifi_wifi_getip] */
402 
417 /* @[declare_wifi_wifi_getmac] */
418 WIFIReturnCode_t WIFI_GetMAC( uint8_t * pucMac );
419 /* @[declare_wifi_wifi_getmac] */
420 
436 /* @[declare_wifi_wifi_gethostip] */
437 WIFIReturnCode_t WIFI_GetHostIP( char * pcHost,
438  uint8_t * pucIPAddr );
439 /* @[declare_wifi_wifi_gethostip] */
440 
441 WIFIReturnCode_t WIFI_ScanSetSSIDList(const sl_wfx_ssid_def_t *list, int count);
442 
443 WIFIReturnCode_t WIFI_ScanSetBSSID(const uint8_t *bssid);
444 
462 /* @[declare_wifi_wifi_scan] */
463 WIFIReturnCode_t WIFI_Scan( WIFIScanResult_t * pxBuffer,
464  uint8_t ucNumNetworks );
465 /* @[declare_wifi_wifi_scan] */
466 
472 /* @[declare_wifi_wifi_startap] */
473 WIFIReturnCode_t WIFI_StartAP( void );
474 /* @[declare_wifi_wifi_startap] */
475 
481 /* @[declare_wifi_wifi_stopap] */
482 WIFIReturnCode_t WIFI_StopAP( void );
483 /* @[declare_wifi_wifi_stopap] */
484 
502 /* @[declare_wifi_wifi_configureap] */
503 WIFIReturnCode_t WIFI_ConfigureAP( const WIFINetworkParams_t * const pxNetworkParams );
504 /* @[declare_wifi_wifi_configureap] */
505 
517 /* @[declare_wifi_wifi_setpmmode] */
518 WIFIReturnCode_t WIFI_SetPMMode( WIFIPMMode_t xPMModeType,
519  const void * pvOptionValue );
520 /* @[declare_wifi_wifi_setpmmode] */
521 
531 /* @[declare_wifi_wifi_getpmmode] */
532 WIFIReturnCode_t WIFI_GetPMMode( WIFIPMMode_t * pxPMModeType,
533  void * pvOptionValue );
534 /* @[declare_wifi_wifi_getpmmode] */
535 
536 
544 /* @[declare_wifi_wifi_registernetworkstatechangeeventcallback] */
545 //WIFIReturnCode_t WIFI_RegisterNetworkStateChangeEventCallback( IotNetworkStateChangeEventCallback_t xCallback );
546 /* @[declare_wifi_wifi_registernetworkstatechangeeventcallback] */
547 
553 /* @[declare_wifi_wifi_isconnected] */
554 BaseType_t WIFI_IsConnected( void );
555 /* @[declare_wifi_wifi_isconnected] */
556 
561 int WIFI_DHCPHook( int eDHCPPhase,
562  uint32_t ulIPAddress );
563 
564 WIFIReturnCode_t WIFI_GetLock( void );
565 void WIFI_ReleaseLock( void );
566 
567 
568 #endif /* _AWS_WIFI_H_ */
WiFi module configuration parameters.
#define wificonfigMAX_SSID_LEN
Max SSID length.
Definition: aws_wifi_config.h:52
#define wificonfigMAX_BSSID_LEN
Max BSSID length.
Definition: aws_wifi_config.h:57
#define wificonfigMAX_PASSPHRASE_LEN
Max passphrase length.
Definition: aws_wifi_config.h:62
Header file contains the network types shared by both low level networking drivers and upper level ap...
Parameters passed to the WIFI_ConnectAP API for connection.
Definition: sl_wfx_iot_wifi.h:112
WIFISecurity_t xSecurity
Definition: sl_wfx_iot_wifi.h:117
const char * pcSSID
Definition: sl_wfx_iot_wifi.h:113
uint8_t ucSSIDLength
Definition: sl_wfx_iot_wifi.h:114
int8_t cChannel
Definition: sl_wfx_iot_wifi.h:118
const char * pcPassword
Definition: sl_wfx_iot_wifi.h:115
uint8_t ucPasswordLength
Definition: sl_wfx_iot_wifi.h:116
Wi-Fi network parameters passed to the WIFI_NetworkAdd API.
Definition: sl_wfx_iot_wifi.h:154
uint8_t ucSSIDLength
Definition: sl_wfx_iot_wifi.h:156
uint8_t ucPasswordLength
Definition: sl_wfx_iot_wifi.h:159
WIFISecurity_t xSecurity
Definition: sl_wfx_iot_wifi.h:160
Wi-Fi scan results.
Definition: sl_wfx_iot_wifi.h:135
int8_t cChannel
Definition: sl_wfx_iot_wifi.h:140
int8_t cRSSI
Definition: sl_wfx_iot_wifi.h:139
uint8_t ucHidden
Definition: sl_wfx_iot_wifi.h:141
WIFISecurity_t xSecurity
Definition: sl_wfx_iot_wifi.h:138
Service Set Identifier (SSID) of a network.
Definition: sl_wfx_cmd_api.h:384