Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of DISCO_L475VG_IOT01A_wifi by
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 Thu Jul 21 2022 00:11:26 by
1.7.2
