Changes on the code
Dependencies: BSP_B-L475E-IOT01
es_wifi.h
00001 /** 00002 ****************************************************************************** 00003 * @file es-wifi.h 00004 * @author MCD Application Team 00005 * @version V1.8.0 00006 * @date 21-April-2017 00007 * @brief header file for the es-wifi module. 00008 ****************************************************************************** 00009 * @attention 00010 * 00011 * <h2><center>© Copyright (c) 2017 STMicroelectronics International N.V. 00012 * All rights reserved.</center></h2> 00013 * 00014 * Redistribution and use in source and binary forms, with or without 00015 * modification, are permitted, provided that the following conditions are met: 00016 * 00017 * 1. Redistribution of source code must retain the above copyright notice, 00018 * this list of conditions and the following disclaimer. 00019 * 2. Redistributions in binary form must reproduce the above copyright notice, 00020 * this list of conditions and the following disclaimer in the documentation 00021 * and/or other materials provided with the distribution. 00022 * 3. Neither the name of STMicroelectronics nor the names of other 00023 * contributors to this software may be used to endorse or promote products 00024 * derived from this software without specific written permission. 00025 * 4. This software, including modifications and/or derivative works of this 00026 * software, must execute solely and exclusively on microcontroller or 00027 * microprocessor devices manufactured by or for STMicroelectronics. 00028 * 5. Redistribution and use of this software other than as permitted under 00029 * this license is void and will automatically terminate your rights under 00030 * this license. 00031 * 00032 * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" 00033 * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT 00034 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 00035 * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY 00036 * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT 00037 * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 00038 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 00039 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 00040 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00041 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00042 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 00043 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00044 * 00045 ****************************************************************************** 00046 */ 00047 /* Define to prevent recursive inclusion -------------------------------------*/ 00048 #ifndef __ES_WIFI_H 00049 #define __ES_WIFI_H 00050 00051 #ifdef __cplusplus 00052 extern "C" { 00053 #endif 00054 00055 /* Includes ------------------------------------------------------------------*/ 00056 #include "stdint.h" 00057 #include "string.h" 00058 #include "stdio.h" 00059 #include "es_wifi_conf.h" 00060 00061 /* Exported Constants --------------------------------------------------------*/ 00062 #define ES_WIFI_PAYLOAD_SIZE 1200 00063 /* Exported macro-------------------------------------------------------------*/ 00064 #define MIN(a, b) ((a) < (b) ? (a) : (b)) 00065 00066 typedef int8_t (*IO_Init_Func)( void); 00067 typedef int8_t (*IO_DeInit_Func)( void); 00068 typedef void (*IO_Delay_Func)(uint32_t); 00069 typedef int16_t (*IO_Send_Func)( uint8_t *, uint16_t len, uint32_t); 00070 typedef int16_t (*IO_Receive_Func)(uint8_t *, uint16_t len, uint32_t); 00071 00072 /* Exported typedef ----------------------------------------------------------*/ 00073 typedef enum { 00074 ES_WIFI_STATUS_OK = 0, 00075 ES_WIFI_STATUS_REQ_DATA_STAGE = 1, 00076 ES_WIFI_STATUS_ERROR = 2, 00077 ES_WIFI_STATUS_TIMEOUT = 3, 00078 ES_WIFI_STATUS_IO_ERROR = 4, 00079 }ES_WIFI_Status_t; 00080 00081 typedef enum { 00082 ES_WIFI_MODE_SINGLE = 0, 00083 ES_WIFI_MODE_MULTI = 1, 00084 }ES_WIFI_ConnMode_t; 00085 00086 typedef enum { 00087 ES_WIFI_TCP_CONNECTION = 0, 00088 ES_WIFI_UDP_CONNECTION = 1, 00089 ES_WIFI_UDP_LITE_CONNECTION = 2, 00090 ES_WIFI_TCP_SSL_CONNECTION = 3, 00091 ES_WIFI_MQTT_CONNECTION = 4, 00092 }ES_WIFI_ConnType_t; 00093 00094 /* Security settings for wifi network */ 00095 typedef enum { 00096 ES_WIFI_SEC_OPEN = 0x00, /*!< Wifi is open */ 00097 ES_WIFI_SEC_WEP = 0x01, /*!< Wired Equivalent Privacy option for wifi security. \note This mode can't be used when setting up ES_WIFI wifi */ 00098 ES_WIFI_SEC_WPA = 0x02, /*!< Wi-Fi Protected Access */ 00099 ES_WIFI_SEC_WPA2 = 0x03, /*!< Wi-Fi Protected Access 2 */ 00100 ES_WIFI_SEC_WPA_WPA2= 0x04, /*!< Wi-Fi Protected Access with both modes */ 00101 ES_WIFI_SEC_WPA2_TKIP= 0x05, /*!< Wi-Fi Protected Access with both modes */ 00102 ES_WIFI_SEC_UNKNOWN = 0xFF, /*!< Wi-Fi Unknown Security mode */ 00103 } ES_WIFI_SecurityType_t; 00104 00105 typedef enum { 00106 ES_WIFI_IPV4 = 0x00, 00107 ES_WIFI_IPV6 = 0x01, 00108 } ES_WIFI_IPVer_t; 00109 00110 typedef enum { 00111 ES_WIFI_AP_NONE = 0x00, 00112 ES_WIFI_AP_ASSIGNED = 0x01, 00113 ES_WIFI_AP_JOINED = 0x02, 00114 ES_WIFI_AP_ERROR = 0xFF, 00115 } ES_WIFI_APState_t; 00116 00117 00118 typedef struct 00119 { 00120 uint32_t Port; 00121 uint32_t BaudRate; 00122 uint32_t DataWidth; 00123 uint32_t Parity; 00124 uint32_t StopBits; 00125 uint32_t Mode; 00126 00127 }ES_WIFI_UARTConfig_t; 00128 00129 00130 typedef struct 00131 { 00132 uint32_t Configuration; 00133 uint32_t WPSPin; 00134 uint32_t VID; 00135 uint32_t PID; 00136 uint8_t MAC[6]; 00137 uint8_t AP_IPAddress[4]; 00138 uint32_t PS_Mode; 00139 uint32_t RadioMode; 00140 uint32_t CurrentBeacon; 00141 uint32_t PrevBeacon; 00142 uint32_t ProductName; 00143 00144 }ES_WIFI_SystemConfig_t; 00145 00146 typedef struct { 00147 uint8_t* Address; /*!< Pointer to domain or IP to ping */ 00148 uint32_t Time; /*!< Time in milliseconds needed for pinging */ 00149 uint8_t Success; /*!< Status indicates if ping was successful */ 00150 }ES_WIFI_Ping_t; 00151 00152 typedef struct { 00153 uint8_t SSID[ES_WIFI_MAX_SSID_NAME_SIZE + 1]; /*!< Service Set Identifier value.Wi-Fi spot name */ 00154 ES_WIFI_SecurityType_t Security; /*!< Security of Wi-Fi spot. */ 00155 int16_t RSSI; /*!< Signal strength of Wi-Fi spot */ 00156 uint8_t MAC[6]; /*!< MAC address of spot */ 00157 uint8_t Channel; /*!< Wi-Fi channel */ 00158 } ES_WIFI_AP_t; 00159 00160 /* Access point configuration */ 00161 typedef struct { 00162 uint8_t SSID[ES_WIFI_MAX_SSID_NAME_SIZE + 1]; /*!< Network public name for ESP AP mode */ 00163 uint8_t Pass[ES_WIFI_MAX_PSWD_NAME_SIZE + 1]; /*!< Network password for ESP AP mode */ 00164 ES_WIFI_SecurityType_t Security; /*!< Security of Wi-Fi spot. This parameter can be a value of \ref ESP8266_Ecn_t enumeration */ 00165 uint8_t Channel; /*!< Channel Wi-Fi is operating at */ 00166 uint8_t MaxConnections; /*!< Max number of stations that are allowed to connect to ESP AP, between 1 and 4 */ 00167 uint8_t Hidden; /*!< Set to 1 if network is hidden (not broadcast) or zero if noz */ 00168 } ES_WIFI_APConfig_t; 00169 00170 00171 typedef struct { 00172 uint8_t SSID[ES_WIFI_MAX_SSID_NAME_SIZE + 1]; /*!< Network public name for ESP AP mode */ 00173 uint8_t IP_Addr[4]; /*!< IP Address */ 00174 uint8_t MAC_Addr[6]; /*!< MAC address */ 00175 } ES_WIFI_APSettings_t; 00176 00177 typedef struct { 00178 ES_WIFI_AP_t AP[ES_WIFI_MAX_DETECTED_AP]; 00179 uint8_t nbr; 00180 00181 }ES_WIFI_APs_t; 00182 00183 typedef struct { 00184 uint8_t SSID[ES_WIFI_MAX_SSID_NAME_SIZE + 1]; 00185 uint8_t pswd[ES_WIFI_MAX_PSWD_NAME_SIZE + 1]; 00186 ES_WIFI_SecurityType_t Security; 00187 uint8_t DHCP_IsEnabled; 00188 uint8_t JoinRetries; 00189 uint8_t IsConnected; 00190 uint8_t AutoConnect; 00191 ES_WIFI_IPVer_t IP_Ver; 00192 uint8_t IP_Addr[4]; 00193 uint8_t IP_Mask[4]; 00194 uint8_t Gateway_Addr[4]; 00195 uint8_t DNS1[4]; 00196 uint8_t DNS2[4]; 00197 } ES_WIFI_Network_t; 00198 00199 #if (ES_WIFI_USE_AWS == 1) 00200 typedef struct { 00201 ES_WIFI_ConnType_t Type; 00202 uint8_t Number; 00203 uint16_t RemotePort; 00204 uint8_t RemoteIP[4]; 00205 uint8_t *PublishTopic; 00206 uint8_t *SubscribeTopic; 00207 uint8_t *ClientID; 00208 uint8_t MQTTMode; 00209 } ES_WIFI_AWS_Conn_t; 00210 #endif 00211 00212 typedef struct { 00213 ES_WIFI_ConnType_t Type; 00214 uint8_t Number; 00215 uint16_t RemotePort; 00216 uint16_t LocalPort; 00217 uint8_t RemoteIP[4]; 00218 char* Name; 00219 } ES_WIFI_Conn_t; 00220 00221 typedef struct { 00222 IO_Init_Func IO_Init; 00223 IO_DeInit_Func IO_DeInit; 00224 IO_Delay_Func IO_Delay; 00225 IO_Send_Func IO_Send; 00226 IO_Receive_Func IO_Receive; 00227 } ES_WIFI_IO_t; 00228 00229 typedef struct { 00230 uint8_t Product_ID[ES_WIFI_PRODUCT_ID_SIZE]; 00231 uint8_t FW_Rev[ES_WIFI_FW_REV_SIZE]; 00232 uint8_t API_Rev[ES_WIFI_API_REV_SIZE]; 00233 uint8_t Stack_Rev[ES_WIFI_STACK_REV_SIZE]; 00234 uint8_t RTOS_Rev[ES_WIFI_RTOS_REV_SIZE]; 00235 uint8_t Product_Name[ES_WIFI_PRODUCT_NAME_SIZE]; 00236 uint32_t CPU_Clock; 00237 ES_WIFI_SecurityType_t Security; 00238 ES_WIFI_Network_t NetSettings; 00239 ES_WIFI_APSettings_t APSettings; 00240 ES_WIFI_IO_t fops; 00241 uint8_t CmdData[ES_WIFI_DATA_SIZE]; 00242 uint32_t Timeout; 00243 uint32_t BufferSize; 00244 }ES_WIFIObject_t; 00245 00246 00247 /* Exported functions --------------------------------------------------------*/ 00248 ES_WIFI_Status_t ES_WIFI_Init(ES_WIFIObject_t *Obj); 00249 ES_WIFI_Status_t ES_WIFI_SetTimeout(ES_WIFIObject_t *Obj, uint32_t Timeout); 00250 ES_WIFI_Status_t ES_WIFI_ListAccessPoints(ES_WIFIObject_t *Obj, ES_WIFI_APs_t *APs); 00251 ES_WIFI_Status_t ES_WIFI_Connect(ES_WIFIObject_t *Obj, const char* SSID, const char* Password, 00252 ES_WIFI_SecurityType_t SecType); 00253 ES_WIFI_Status_t ES_WIFI_Disconnect(ES_WIFIObject_t *Obj); 00254 uint8_t ES_WIFI_IsConnected(ES_WIFIObject_t *Obj); 00255 ES_WIFI_Status_t ES_WIFI_GetNetworkSettings(ES_WIFIObject_t *Obj); 00256 ES_WIFI_Status_t ES_WIFI_GetMACAddress(ES_WIFIObject_t *Obj, uint8_t *mac); 00257 ES_WIFI_Status_t ES_WIFI_GetIPAddress(ES_WIFIObject_t *Obj, uint8_t *ipaddr); 00258 ES_WIFI_Status_t ES_WIFI_GetProductID(ES_WIFIObject_t *Obj, uint8_t *productID); 00259 ES_WIFI_Status_t ES_WIFI_GetFWRevID(ES_WIFIObject_t *Obj, uint8_t *FWRev); 00260 ES_WIFI_Status_t ES_WIFI_GetRTOSRev(ES_WIFIObject_t *Obj, uint8_t *RTOSRev); 00261 ES_WIFI_Status_t ES_WIFI_GetProductName(ES_WIFIObject_t *Obj, uint8_t *productName); 00262 ES_WIFI_Status_t ES_WIFI_GetAPIRev(ES_WIFIObject_t *Obj, uint8_t *APIRev); 00263 ES_WIFI_Status_t ES_WIFI_GetStackRev(ES_WIFIObject_t *Obj, uint8_t *StackRev); 00264 00265 00266 ES_WIFI_Status_t ES_WIFI_SetMACAddress(ES_WIFIObject_t *Obj, uint8_t *mac); 00267 ES_WIFI_Status_t ES_WIFI_ResetToFactoryDefault(ES_WIFIObject_t *Obj); 00268 ES_WIFI_Status_t ES_WIFI_ResetModule(ES_WIFIObject_t *Obj); 00269 ES_WIFI_Status_t ES_WIFI_SetProductName(ES_WIFIObject_t *Obj, uint8_t *ProductName); 00270 #if (ES_WIFI_USE_PING == 1) 00271 ES_WIFI_Status_t ES_WIFI_Ping(ES_WIFIObject_t *Obj, uint8_t *address, uint16_t count, uint16_t interval_ms); 00272 #endif 00273 ES_WIFI_Status_t ES_WIFI_DNS_LookUp(ES_WIFIObject_t *Obj, const char *url, uint8_t *ipaddress); 00274 ES_WIFI_Status_t ES_WIFI_StartClientConnection(ES_WIFIObject_t *Obj, ES_WIFI_Conn_t *conn); 00275 ES_WIFI_Status_t ES_WIFI_StopClientConnection(ES_WIFIObject_t *Obj, ES_WIFI_Conn_t *conn); 00276 #if (ES_WIFI_USE_AWS == 1) 00277 ES_WIFI_Status_t ES_WIFI_StartAWSClientConnection(ES_WIFIObject_t *Obj, ES_WIFI_AWS_Conn_t *conn); 00278 #endif 00279 ES_WIFI_Status_t ES_WIFI_StartServerSingleConn(ES_WIFIObject_t *Obj, ES_WIFI_Conn_t *conn); 00280 ES_WIFI_Status_t ES_WIFI_StopServerSingleConn(ES_WIFIObject_t *Obj); 00281 ES_WIFI_Status_t ES_WIFI_StartServerMultiConn(ES_WIFIObject_t *Obj, ES_WIFI_Conn_t *conn); 00282 ES_WIFI_Status_t ES_WIFI_StopServerMultiConn(ES_WIFIObject_t *Obj); 00283 ES_WIFI_Status_t ES_WIFI_SendData(ES_WIFIObject_t *Obj, uint8_t Socket, uint8_t *pdata, uint16_t Reqlen , uint16_t *SentLen, uint32_t timeout); 00284 ES_WIFI_Status_t ES_WIFI_ReceiveData(ES_WIFIObject_t *Obj, uint8_t Socket, uint8_t *pdata, uint16_t Reqlen, uint16_t *Receivedlen, uint32_t timeout); 00285 ES_WIFI_Status_t ES_WIFI_ActivateAP(ES_WIFIObject_t *Obj, ES_WIFI_APConfig_t *ApConfig); 00286 ES_WIFI_APState_t ES_WIFI_WaitAPStateChange(ES_WIFIObject_t *Obj); 00287 00288 #if (ES_WIFI_USE_FIRMWAREUPDATE == 1) 00289 ES_WIFI_Status_t ES_WIFI_OTA_Upgrade(ES_WIFIObject_t *Obj, uint8_t *link); 00290 #endif 00291 00292 #if (ES_WIFI_USE_UART == 1) 00293 ES_WIFI_Status_t ES_WIFI_SetUARTBaudRate(ES_WIFIObject_t *Obj, uint16_t BaudRate); 00294 ES_WIFI_Status_t ES_WIFI_GetUARTConfig(ES_WIFIObject_t *Obj, ES_WIFI_UARTConfig_t *pconf); 00295 #endif 00296 00297 ES_WIFI_Status_t ES_WIFI_GetSystemConfig(ES_WIFIObject_t *Obj, ES_WIFI_SystemConfig_t *pconf); 00298 00299 ES_WIFI_Status_t ES_WIFI_RegisterBusIO(ES_WIFIObject_t *Obj, IO_Init_Func IO_Init, 00300 IO_DeInit_Func IO_DeInit, 00301 IO_Delay_Func IO_Delay, 00302 IO_Send_Func IO_Send, 00303 IO_Receive_Func IO_Receive); 00304 #ifdef __cplusplus 00305 } 00306 #endif 00307 #endif /*__ES_WIFI_H*/ 00308 00309 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Generated on Fri Jul 29 2022 17:05:21 by
1.7.2