Extending the X_NUCLEO_IDW01M1 to allow configuration of the board as an access point
Dependents: X_NUCLEO_IDW01M1_AP_Test
Fork of X_NUCLEO_IDW01M1 by
Spwf/wifi_interface.c@18:b265b3b696f1, 2016-06-21 (annotated)
- Committer:
- scsims
- Date:
- Tue Jun 21 20:20:50 2016 +0000
- Revision:
- 18:b265b3b696f1
- Parent:
- 8:0f302a13e21b
- Child:
- 22:a1276b7d3b2d
Added SPWFInterface::start_access_point() to allow the module to be put into AP mode. Operational data rates are configurable as is the channel number. AP's have to be open as the underlying driver only appears to support open APs at the moment
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mridup | 0:dc55f40eb04f | 1 | /** |
mridup | 0:dc55f40eb04f | 2 | ****************************************************************************** |
mridup | 0:dc55f40eb04f | 3 | * @file wifi_interface.c |
mridup | 0:dc55f40eb04f | 4 | * @author Central LAB |
mridup | 0:dc55f40eb04f | 5 | * @version V2.0.0 |
mridup | 0:dc55f40eb04f | 6 | * @date 10-February-2016 |
mridup | 0:dc55f40eb04f | 7 | * @brief User APIs implementation for X-CUBE-WIFI1 |
mridup | 0:dc55f40eb04f | 8 | ****************************************************************************** |
mridup | 0:dc55f40eb04f | 9 | * @attention |
mridup | 0:dc55f40eb04f | 10 | * |
mridup | 0:dc55f40eb04f | 11 | * <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2> |
mridup | 0:dc55f40eb04f | 12 | * |
mridup | 0:dc55f40eb04f | 13 | * Redistribution and use in source and binary forms, with or without modification, |
mridup | 0:dc55f40eb04f | 14 | * are permitted provided that the following conditions are met: |
mridup | 0:dc55f40eb04f | 15 | * 1. Redistributions of source code must retain the above copyright notice, |
mridup | 0:dc55f40eb04f | 16 | * this list of conditions and the following disclaimer. |
mridup | 0:dc55f40eb04f | 17 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
mridup | 0:dc55f40eb04f | 18 | * this list of conditions and the following disclaimer in the documentation |
mridup | 0:dc55f40eb04f | 19 | * and/or other materials provided with the distribution. |
mridup | 0:dc55f40eb04f | 20 | * 3. Neither the name of STMicroelectronics nor the names of its contributors |
mridup | 0:dc55f40eb04f | 21 | * may be used to endorse or promote products derived from this software |
mridup | 0:dc55f40eb04f | 22 | * without specific prior written permission. |
mridup | 0:dc55f40eb04f | 23 | * |
mridup | 0:dc55f40eb04f | 24 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
mridup | 0:dc55f40eb04f | 25 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
mridup | 0:dc55f40eb04f | 26 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
mridup | 0:dc55f40eb04f | 27 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
mridup | 0:dc55f40eb04f | 28 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
mridup | 0:dc55f40eb04f | 29 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
mridup | 0:dc55f40eb04f | 30 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
mridup | 0:dc55f40eb04f | 31 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
mridup | 0:dc55f40eb04f | 32 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
mridup | 0:dc55f40eb04f | 33 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
mridup | 0:dc55f40eb04f | 34 | * |
mridup | 0:dc55f40eb04f | 35 | ****************************************************************************** |
mridup | 0:dc55f40eb04f | 36 | */ |
mridup | 0:dc55f40eb04f | 37 | |
mridup | 0:dc55f40eb04f | 38 | /* Includes ------------------------------------------------------------------*/ |
mridup | 0:dc55f40eb04f | 39 | #include "wifi_module.h" |
mridup | 0:dc55f40eb04f | 40 | //#include "stm32_spwf_wifi.h" |
mridup | 0:dc55f40eb04f | 41 | #include "ring_buffer.h" |
mridup | 0:dc55f40eb04f | 42 | #include "stdio.h" |
mridup | 0:dc55f40eb04f | 43 | #include "string.h" |
mridup | 0:dc55f40eb04f | 44 | #include "gpio_irq_api.h" |
mridup | 0:dc55f40eb04f | 45 | #include "gpio_api.h" |
mridup | 0:dc55f40eb04f | 46 | #include "wait_api.h" |
mridup | 0:dc55f40eb04f | 47 | #include "serial_api.h" |
mridup | 0:dc55f40eb04f | 48 | |
mridup | 0:dc55f40eb04f | 49 | /** @addtogroup MIDDLEWARES |
mridup | 0:dc55f40eb04f | 50 | * @{ |
mridup | 0:dc55f40eb04f | 51 | */ |
mridup | 0:dc55f40eb04f | 52 | |
mridup | 0:dc55f40eb04f | 53 | |
mridup | 0:dc55f40eb04f | 54 | /** @defgroup NUCLEO_WIFI_INTERFACE |
mridup | 0:dc55f40eb04f | 55 | * @brief Wi-Fi User API modules |
mridup | 0:dc55f40eb04f | 56 | * @{ |
mridup | 0:dc55f40eb04f | 57 | */ |
mridup | 0:dc55f40eb04f | 58 | |
mridup | 0:dc55f40eb04f | 59 | |
mridup | 0:dc55f40eb04f | 60 | /** @defgroup NUCLEO_WIFI_INTERFACE_Private_Defines |
mridup | 0:dc55f40eb04f | 61 | * @{ |
mridup | 0:dc55f40eb04f | 62 | */ |
mridup | 0:dc55f40eb04f | 63 | |
mridup | 0:dc55f40eb04f | 64 | |
mridup | 0:dc55f40eb04f | 65 | /** |
mridup | 0:dc55f40eb04f | 66 | * @} |
mridup | 0:dc55f40eb04f | 67 | */ |
mridup | 0:dc55f40eb04f | 68 | |
mridup | 0:dc55f40eb04f | 69 | /** @addtogroup NUCLEO_WIFI_INTERFACE_Private_Variables |
mridup | 0:dc55f40eb04f | 70 | * @{ |
mridup | 0:dc55f40eb04f | 71 | */ |
mridup | 0:dc55f40eb04f | 72 | /* Private variables ---------------------------------------------------------*/ |
mridup | 0:dc55f40eb04f | 73 | |
mridup | 8:0f302a13e21b | 74 | extern uint8_t WiFi_AT_Cmd_Buff[2052]; |
mridup | 0:dc55f40eb04f | 75 | |
mridup | 0:dc55f40eb04f | 76 | extern volatile Wifi_Status_Var status_flag; |
mridup | 0:dc55f40eb04f | 77 | |
mridup | 0:dc55f40eb04f | 78 | extern char UserDataBuff[MAX_BUFFER_GLOBAL]; |
mridup | 5:c83ffd44f40a | 79 | extern buffer_e event_buff; |
mridup | 0:dc55f40eb04f | 80 | extern wifi_scan *wifi_scanned_list;//[15]; |
mridup | 0:dc55f40eb04f | 81 | extern char print_msg_buff[MAX_BUFFER_GLOBAL]; |
mridup | 0:dc55f40eb04f | 82 | extern uint8_t user_scan_number; |
mridup | 0:dc55f40eb04f | 83 | extern uint8_t no_of_open_client_sockets; |
mridup | 0:dc55f40eb04f | 84 | extern wifi_bool open_sockets[8];//Max open sockets allowed is 8. Each array element depicts one socket (true=open, false=closed) |
mridup | 0:dc55f40eb04f | 85 | extern WiFi_AT_CMD_Response_t WiFi_Module_State; |
mridup | 0:dc55f40eb04f | 86 | extern volatile uint8_t wifi_client_connected; |
mridup | 0:dc55f40eb04f | 87 | extern uint8_t gpio_value, gpio_direc; |
mridup | 0:dc55f40eb04f | 88 | extern volatile uint8_t wifi_connected; |
mridup | 0:dc55f40eb04f | 89 | extern uint32_t SockON_Data_Length; |
mridup | 0:dc55f40eb04f | 90 | extern uint8_t Socket_Open_ID, sockon_query_id; |
mridup | 0:dc55f40eb04f | 91 | extern volatile uint32_t WIND64_count; |
mridup | 0:dc55f40eb04f | 92 | extern uint32_t process_buffer_index; |
mridup | 0:dc55f40eb04f | 93 | extern uint32_t epoch_time; |
mridup | 8:0f302a13e21b | 94 | extern int write_size; |
mridup | 0:dc55f40eb04f | 95 | /*SPWFSADevice Class functions and variables*/ |
mridup | 0:dc55f40eb04f | 96 | void * spwf_device_class; |
mridup | 0:dc55f40eb04f | 97 | extern void callSpwfSADevice_wakeup(void* object, int wake); |
mridup | 0:dc55f40eb04f | 98 | extern void callSpwfSADevice_debug(void* object, const char * string); |
mridup | 0:dc55f40eb04f | 99 | /** |
mridup | 0:dc55f40eb04f | 100 | * @} |
mridup | 0:dc55f40eb04f | 101 | */ |
mridup | 0:dc55f40eb04f | 102 | |
mridup | 0:dc55f40eb04f | 103 | /** @defgroup NUCLEO_WIFI_INTERFACE_Private_Functions |
mridup | 0:dc55f40eb04f | 104 | * @{ |
mridup | 0:dc55f40eb04f | 105 | */ |
mridup | 0:dc55f40eb04f | 106 | #ifdef USART_PRINT_MSG |
mridup | 0:dc55f40eb04f | 107 | #define printf(arg) {sprintf((char*)print_msg_buff,arg); \ |
mridup | 0:dc55f40eb04f | 108 | HAL_UART_Transmit(&UartMsgHandle, (uint8_t*)print_msg_buff, strlen(print_msg_buff), 1000);} |
mridup | 0:dc55f40eb04f | 109 | #endif |
mridup | 0:dc55f40eb04f | 110 | |
mridup | 0:dc55f40eb04f | 111 | /** |
mridup | 0:dc55f40eb04f | 112 | *Changed/introduced functions for MBED implementation: |
mridup | 0:dc55f40eb04f | 113 | |
mridup | 0:dc55f40eb04f | 114 | - WiFi_Status_t wifi_init(wifi_config* config) |
mridup | 0:dc55f40eb04f | 115 | - WiFi_Status_t wifi_wakeup(wifi_bool wakeup) |
mridup | 0:dc55f40eb04f | 116 | - WiFi_Status_t wifi_socket_server_write(uint16_t DataLength,char * pData) |
mridup | 0:dc55f40eb04f | 117 | - void wifi_reset(void); |
mridup | 0:dc55f40eb04f | 118 | - WiFi_Status_t wifi_enable(wifi_bool enable) |
mridup | 0:dc55f40eb04f | 119 | |
mridup | 0:dc55f40eb04f | 120 | */ |
mridup | 0:dc55f40eb04f | 121 | |
mridup | 0:dc55f40eb04f | 122 | |
mridup | 0:dc55f40eb04f | 123 | /** |
mridup | 0:dc55f40eb04f | 124 | * @brief wifi_init |
mridup | 0:dc55f40eb04f | 125 | * User API for wifi init |
mridup | 0:dc55f40eb04f | 126 | * @param None |
mridup | 0:dc55f40eb04f | 127 | * @retval None |
mridup | 0:dc55f40eb04f | 128 | */ |
mridup | 0:dc55f40eb04f | 129 | WiFi_Status_t wifi_init(wifi_config* config) |
mridup | 0:dc55f40eb04f | 130 | { |
mridup | 0:dc55f40eb04f | 131 | #ifndef WIFI_USE_VCOM |
mridup | 0:dc55f40eb04f | 132 | uint8_t tx_level; |
mridup | 0:dc55f40eb04f | 133 | #endif |
mridup | 0:dc55f40eb04f | 134 | |
mridup | 0:dc55f40eb04f | 135 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 136 | |
mridup | 0:dc55f40eb04f | 137 | #if DEBUG_PRINT |
mridup | 0:dc55f40eb04f | 138 | printf("\r\n[SPWF]Initializing SPWF01SA1 Interface\r\n"); |
mridup | 0:dc55f40eb04f | 139 | #endif |
mridup | 0:dc55f40eb04f | 140 | //callSpwfSADevice_debug(spwf_device_class, "\r\n[SPWF] Initializing mbed SPWF01SA1 Interface\r\n"); |
mridup | 0:dc55f40eb04f | 141 | |
mridup | 0:dc55f40eb04f | 142 | WiFi_Module_Init(); |
mridup | 0:dc55f40eb04f | 143 | |
mridup | 0:dc55f40eb04f | 144 | //callSpwfSADevice_debug(spwf_device_class, "\r\n[SPWF] Module Init done\r\n"); |
mridup | 0:dc55f40eb04f | 145 | |
mridup | 0:dc55f40eb04f | 146 | #ifndef WIFI_USE_VCOM |
mridup | 0:dc55f40eb04f | 147 | |
mridup | 0:dc55f40eb04f | 148 | wifi_wakeup(WIFI_TRUE);//Prevent from going to sleep during configuration |
mridup | 0:dc55f40eb04f | 149 | |
mridup | 0:dc55f40eb04f | 150 | /* Soft reset the module */ |
mridup | 0:dc55f40eb04f | 151 | wifi_reset(); |
mridup | 0:dc55f40eb04f | 152 | |
mridup | 0:dc55f40eb04f | 153 | //callSpwfSADevice_debug(spwf_device_class, "\r\n[SPWF] Hardware started\r\n"); |
mridup | 0:dc55f40eb04f | 154 | |
mridup | 0:dc55f40eb04f | 155 | /* Set localecho1 to 0*/ |
mridup | 0:dc55f40eb04f | 156 | status = SET_Configuration_Value(LOCALECHO1, 0); |
mridup | 0:dc55f40eb04f | 157 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 158 | |
mridup | 0:dc55f40eb04f | 159 | /* Restore default setting*/ |
mridup | 0:dc55f40eb04f | 160 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 161 | sprintf((char*)WiFi_AT_Cmd_Buff,AT_RESTORE_DEFAULT_SETTING); |
mridup | 0:dc55f40eb04f | 162 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 163 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 164 | { |
mridup | 0:dc55f40eb04f | 165 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 166 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 167 | } |
mridup | 0:dc55f40eb04f | 168 | |
mridup | 0:dc55f40eb04f | 169 | /* Switch on HW Flow Control*/ |
mridup | 0:dc55f40eb04f | 170 | status = SET_Configuration_Value(CONSOLE1_HWFC, 1); |
mridup | 0:dc55f40eb04f | 171 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 172 | |
mridup | 0:dc55f40eb04f | 173 | if(config->wifi_baud_rate) |
mridup | 0:dc55f40eb04f | 174 | { |
mridup | 0:dc55f40eb04f | 175 | /* Set USART Speed*/ |
mridup | 0:dc55f40eb04f | 176 | status = SET_Configuration_Value(CONSOLE1_SPEED, config->wifi_baud_rate); |
mridup | 0:dc55f40eb04f | 177 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 178 | } |
mridup | 0:dc55f40eb04f | 179 | |
mridup | 0:dc55f40eb04f | 180 | /* Set wifi_mode to idle*/ |
mridup | 0:dc55f40eb04f | 181 | status = SET_Configuration_Value(WIFI_MODE, WiFi_IDLE_MODE); |
mridup | 0:dc55f40eb04f | 182 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 183 | |
mridup | 0:dc55f40eb04f | 184 | switch(config->ht_mode) |
mridup | 0:dc55f40eb04f | 185 | { |
mridup | 0:dc55f40eb04f | 186 | case WIFI_FALSE: |
mridup | 0:dc55f40eb04f | 187 | status = SET_Configuration_Value(WIFI_HT_MODE, 0); |
mridup | 0:dc55f40eb04f | 188 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 189 | status = SET_Configuration_Addr(WIFI_OPR_RATE_MASK, "0x00003FCF"); |
mridup | 0:dc55f40eb04f | 190 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 191 | break; |
mridup | 0:dc55f40eb04f | 192 | case WIFI_TRUE: |
mridup | 0:dc55f40eb04f | 193 | status = SET_Configuration_Value(WIFI_HT_MODE, 1); |
mridup | 0:dc55f40eb04f | 194 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 195 | status = SET_Configuration_Addr(WIFI_OPR_RATE_MASK, "0x003FFFCF"); |
mridup | 0:dc55f40eb04f | 196 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 197 | break; |
mridup | 0:dc55f40eb04f | 198 | default: |
mridup | 0:dc55f40eb04f | 199 | break; |
mridup | 0:dc55f40eb04f | 200 | } |
mridup | 0:dc55f40eb04f | 201 | |
mridup | 0:dc55f40eb04f | 202 | switch(config->power) |
mridup | 0:dc55f40eb04f | 203 | { |
mridup | 0:dc55f40eb04f | 204 | case wifi_active: |
mridup | 0:dc55f40eb04f | 205 | status = SET_Configuration_Value(WIFI_POWERSAVE, 0); |
mridup | 0:dc55f40eb04f | 206 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 207 | status = SET_Configuration_Value(WIFI_SLEEP_ENABLED, 0); |
mridup | 0:dc55f40eb04f | 208 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 209 | break; |
mridup | 0:dc55f40eb04f | 210 | case wifi_reactive: |
mridup | 0:dc55f40eb04f | 211 | status = SET_Configuration_Value(WIFI_POWERSAVE, 1); |
mridup | 0:dc55f40eb04f | 212 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 213 | status = SET_Configuration_Value(WIFI_OPERATIONAL_MODE, 11); |
mridup | 0:dc55f40eb04f | 214 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 215 | status = SET_Configuration_Value(WIFI_BEACON_WAKEUP, 0); |
mridup | 0:dc55f40eb04f | 216 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 217 | status = SET_Configuration_Value(WIFI_LISTEN_INTERVAL, 0); |
mridup | 0:dc55f40eb04f | 218 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 219 | status = SET_Configuration_Value(WIFI_SLEEP_ENABLED, 0); |
mridup | 0:dc55f40eb04f | 220 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 221 | break; |
mridup | 0:dc55f40eb04f | 222 | case wifi_sleep: |
mridup | 0:dc55f40eb04f | 223 | status = SET_Configuration_Value(WIFI_POWERSAVE, 1); |
mridup | 0:dc55f40eb04f | 224 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 225 | status = SET_Configuration_Value(WIFI_OPERATIONAL_MODE, 12); |
mridup | 0:dc55f40eb04f | 226 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 227 | status = SET_Configuration_Value(WIFI_BEACON_WAKEUP, 10); |
mridup | 0:dc55f40eb04f | 228 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 229 | status = SET_Configuration_Value(WIFI_LISTEN_INTERVAL, 1); |
mridup | 0:dc55f40eb04f | 230 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 231 | status = SET_Configuration_Value(WIFI_SLEEP_ENABLED, 1); |
mridup | 0:dc55f40eb04f | 232 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 233 | break; |
mridup | 0:dc55f40eb04f | 234 | default: |
mridup | 0:dc55f40eb04f | 235 | break; |
mridup | 0:dc55f40eb04f | 236 | } |
mridup | 0:dc55f40eb04f | 237 | |
mridup | 0:dc55f40eb04f | 238 | switch(config->power_level) |
mridup | 0:dc55f40eb04f | 239 | { |
mridup | 0:dc55f40eb04f | 240 | case low: |
mridup | 0:dc55f40eb04f | 241 | case medium: |
mridup | 0:dc55f40eb04f | 242 | case high: |
mridup | 0:dc55f40eb04f | 243 | case max: |
mridup | 0:dc55f40eb04f | 244 | tx_level=config->power_level*6; |
mridup | 0:dc55f40eb04f | 245 | status = SET_Configuration_Value(WIFI_TX_POWER, tx_level); |
mridup | 0:dc55f40eb04f | 246 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 247 | break; |
mridup | 0:dc55f40eb04f | 248 | default: |
mridup | 0:dc55f40eb04f | 249 | break; |
mridup | 0:dc55f40eb04f | 250 | } |
mridup | 0:dc55f40eb04f | 251 | |
mridup | 0:dc55f40eb04f | 252 | switch(config->dhcp) |
mridup | 0:dc55f40eb04f | 253 | { |
mridup | 0:dc55f40eb04f | 254 | case off: |
mridup | 0:dc55f40eb04f | 255 | case on: |
mridup | 0:dc55f40eb04f | 256 | case custom: |
mridup | 0:dc55f40eb04f | 257 | status = SET_Configuration_Value(IP_USE_DHCP_SERVER, config->dhcp); |
mridup | 0:dc55f40eb04f | 258 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 259 | break; |
mridup | 0:dc55f40eb04f | 260 | default: |
mridup | 0:dc55f40eb04f | 261 | break; |
mridup | 0:dc55f40eb04f | 262 | } |
mridup | 0:dc55f40eb04f | 263 | |
mridup | 0:dc55f40eb04f | 264 | /* Set IP address */ |
mridup | 0:dc55f40eb04f | 265 | if(config->ip_addr) |
mridup | 0:dc55f40eb04f | 266 | { |
mridup | 0:dc55f40eb04f | 267 | status = SET_Configuration_Addr(WIFI_IP_ADDRESS, config->ip_addr); |
mridup | 0:dc55f40eb04f | 268 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 269 | } |
mridup | 0:dc55f40eb04f | 270 | /* Set netmask address */ |
mridup | 0:dc55f40eb04f | 271 | if(config->netmask_addr) |
mridup | 0:dc55f40eb04f | 272 | { |
mridup | 0:dc55f40eb04f | 273 | status = SET_Configuration_Addr(WIFI_IP_NETMASK, config->netmask_addr); |
mridup | 0:dc55f40eb04f | 274 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 275 | } |
mridup | 0:dc55f40eb04f | 276 | /* Set default gateway address */ |
mridup | 0:dc55f40eb04f | 277 | if(config->gateway_addr) |
mridup | 0:dc55f40eb04f | 278 | { |
mridup | 0:dc55f40eb04f | 279 | status = SET_Configuration_Addr(WIFI_IP_DEFAULT_GATEWAY, config->gateway_addr); |
mridup | 0:dc55f40eb04f | 280 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 281 | } |
mridup | 0:dc55f40eb04f | 282 | /* Set dns address */ |
mridup | 0:dc55f40eb04f | 283 | if(config->dns_addr) |
mridup | 0:dc55f40eb04f | 284 | { |
mridup | 0:dc55f40eb04f | 285 | status = SET_Configuration_Addr(WIFI_IP_DNS, config->dns_addr); |
mridup | 0:dc55f40eb04f | 286 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 287 | } |
mridup | 0:dc55f40eb04f | 288 | /* Set hostname */ |
mridup | 0:dc55f40eb04f | 289 | if(config->host_name) |
mridup | 0:dc55f40eb04f | 290 | { |
mridup | 0:dc55f40eb04f | 291 | status = SET_Configuration_Addr(WIFI_IP_HOSTNAME, config->host_name); |
mridup | 0:dc55f40eb04f | 292 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 293 | } |
mridup | 0:dc55f40eb04f | 294 | |
mridup | 0:dc55f40eb04f | 295 | if(config->ap_domain_name) |
mridup | 0:dc55f40eb04f | 296 | { |
mridup | 0:dc55f40eb04f | 297 | status = SET_Configuration_Addr(WIFI_IP_APDOMAINNAME, config->ap_domain_name); |
mridup | 0:dc55f40eb04f | 298 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 299 | } |
mridup | 0:dc55f40eb04f | 300 | |
mridup | 0:dc55f40eb04f | 301 | if(config->ap_config_page_name) |
mridup | 0:dc55f40eb04f | 302 | { |
mridup | 0:dc55f40eb04f | 303 | status = SET_Configuration_Addr(WIFI_IP_APREDIRECT, config->ap_config_page_name); |
mridup | 0:dc55f40eb04f | 304 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 305 | } |
mridup | 0:dc55f40eb04f | 306 | |
mridup | 0:dc55f40eb04f | 307 | if(config->http_timeout) |
mridup | 0:dc55f40eb04f | 308 | { |
mridup | 0:dc55f40eb04f | 309 | status = SET_Configuration_Value(WIFI_IP_HTTP_TIMEOUT, config->http_timeout*1000); |
mridup | 0:dc55f40eb04f | 310 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 311 | } |
mridup | 0:dc55f40eb04f | 312 | if(config->dhcp_timeout) |
mridup | 0:dc55f40eb04f | 313 | { |
mridup | 0:dc55f40eb04f | 314 | status = SET_Configuration_Value(WIFI_IP_DHCP_TIMEOUT, config->dhcp_timeout); |
mridup | 0:dc55f40eb04f | 315 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 316 | } |
mridup | 0:dc55f40eb04f | 317 | |
mridup | 0:dc55f40eb04f | 318 | #ifdef MODULE_VERSION_SPWF01Sx_1y |
mridup | 0:dc55f40eb04f | 319 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 320 | sprintf((char*)WiFi_AT_Cmd_Buff,AT_HTTPD, config->web_server); |
mridup | 0:dc55f40eb04f | 321 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 322 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 323 | { |
mridup | 0:dc55f40eb04f | 324 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 325 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 326 | } |
mridup | 0:dc55f40eb04f | 327 | #endif |
mridup | 0:dc55f40eb04f | 328 | |
mridup | 0:dc55f40eb04f | 329 | /*AT+S.TLSCERT2=clean,all */ |
mridup | 0:dc55f40eb04f | 330 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 331 | sprintf((char*)WiFi_AT_Cmd_Buff,"AT+S.TLSCERT2=clean,all\r"); |
mridup | 0:dc55f40eb04f | 332 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 333 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 334 | { |
mridup | 0:dc55f40eb04f | 335 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 336 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 337 | } |
mridup | 0:dc55f40eb04f | 338 | |
mridup | 0:dc55f40eb04f | 339 | /* save current setting in flash */ |
mridup | 0:dc55f40eb04f | 340 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 341 | sprintf((char*)WiFi_AT_Cmd_Buff,AT_SAVE_CURRENT_SETTING); |
mridup | 0:dc55f40eb04f | 342 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 343 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 344 | { |
mridup | 0:dc55f40eb04f | 345 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 346 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 347 | } |
mridup | 0:dc55f40eb04f | 348 | |
mridup | 0:dc55f40eb04f | 349 | if(config->wifi_baud_rate) |
mridup | 0:dc55f40eb04f | 350 | { |
mridup | 0:dc55f40eb04f | 351 | UART_Configuration(config->wifi_baud_rate); |
mridup | 0:dc55f40eb04f | 352 | Receive_Data();//Restart data reception |
mridup | 0:dc55f40eb04f | 353 | } |
mridup | 0:dc55f40eb04f | 354 | |
mridup | 0:dc55f40eb04f | 355 | /* Soft reset the module, Do the second reset after setting all parameters and saving in flash */ |
mridup | 0:dc55f40eb04f | 356 | wifi_reset(); |
mridup | 0:dc55f40eb04f | 357 | |
mridup | 0:dc55f40eb04f | 358 | wifi_wakeup(WIFI_FALSE);//De-assert wakeup signal (PC8) to allow sleep if enabled |
mridup | 0:dc55f40eb04f | 359 | #endif //WIFI_USE_VCOM |
mridup | 0:dc55f40eb04f | 360 | |
mridup | 0:dc55f40eb04f | 361 | #if DEBUG_PRINT |
mridup | 0:dc55f40eb04f | 362 | printf("\r\nEnd of Initialization..\r\n"); |
mridup | 0:dc55f40eb04f | 363 | #endif |
mridup | 0:dc55f40eb04f | 364 | //callSpwfSADevice_debug(spwf_device_class, "\r\n[SPWF] End of mbed Initialization\r\n"); |
mridup | 0:dc55f40eb04f | 365 | |
mridup | 0:dc55f40eb04f | 366 | return status; |
mridup | 0:dc55f40eb04f | 367 | } |
mridup | 0:dc55f40eb04f | 368 | |
mridup | 0:dc55f40eb04f | 369 | |
mridup | 0:dc55f40eb04f | 370 | /** |
mridup | 0:dc55f40eb04f | 371 | * @brief wifi_socket_client_security |
mridup | 0:dc55f40eb04f | 372 | * Set the security certificates and key for secure socket (TLS) |
mridup | 0:dc55f40eb04f | 373 | * @param None |
mridup | 0:dc55f40eb04f | 374 | * @retval WiFi_Status_t : return status |
mridup | 0:dc55f40eb04f | 375 | */ |
mridup | 0:dc55f40eb04f | 376 | WiFi_Status_t wifi_socket_client_security(uint8_t* tls_mode, uint8_t* root_ca_server, uint8_t* client_cert, uint8_t* client_key, uint8_t* client_domain, uint32_t tls_epoch_time) |
mridup | 0:dc55f40eb04f | 377 | { |
mridup | 0:dc55f40eb04f | 378 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 379 | |
mridup | 0:dc55f40eb04f | 380 | /*AT+S.TLSCERT2=clean,all */ |
mridup | 0:dc55f40eb04f | 381 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 382 | sprintf((char*)WiFi_AT_Cmd_Buff,"AT+S.TLSCERT2=clean,all\r"); |
mridup | 0:dc55f40eb04f | 383 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 384 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 385 | { |
mridup | 0:dc55f40eb04f | 386 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 387 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 388 | } |
mridup | 0:dc55f40eb04f | 389 | |
mridup | 0:dc55f40eb04f | 390 | /* AT+S.SETTIME=<seconds> */ |
mridup | 0:dc55f40eb04f | 391 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 392 | if(tls_epoch_time==0) |
mridup | 0:dc55f40eb04f | 393 | epoch_time = EPOCH_TIME; |
mridup | 0:dc55f40eb04f | 394 | else |
mridup | 0:dc55f40eb04f | 395 | epoch_time = tls_epoch_time; |
mridup | 0:dc55f40eb04f | 396 | |
mridup | 0:dc55f40eb04f | 397 | sprintf((char*)WiFi_AT_Cmd_Buff,"AT+S.SETTIME=%lu\r",(unsigned long)epoch_time); |
mridup | 0:dc55f40eb04f | 398 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 399 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 400 | { |
mridup | 0:dc55f40eb04f | 401 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 402 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 403 | } |
mridup | 0:dc55f40eb04f | 404 | |
mridup | 0:dc55f40eb04f | 405 | /*AT+S.TLSCERT=f_ca,<size><CR><data>*/ |
mridup | 0:dc55f40eb04f | 406 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 407 | sprintf((char*)WiFi_AT_Cmd_Buff,"AT+S.TLSCERT=f_ca,%d\r%s",strlen((const char *)root_ca_server) - 1, root_ca_server); |
mridup | 0:dc55f40eb04f | 408 | |
mridup | 0:dc55f40eb04f | 409 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 410 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 411 | { |
mridup | 0:dc55f40eb04f | 412 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 413 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 414 | } |
mridup | 0:dc55f40eb04f | 415 | |
mridup | 0:dc55f40eb04f | 416 | /*AT+S.TLSCERT=f_cert,<size><CR><data>*/ |
mridup | 0:dc55f40eb04f | 417 | if(tls_mode[0]=='m') |
mridup | 0:dc55f40eb04f | 418 | { |
mridup | 0:dc55f40eb04f | 419 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 420 | sprintf((char*)WiFi_AT_Cmd_Buff,"AT+S.TLSCERT=f_cert,%d\r%s",strlen((const char *)client_cert) - 1, client_cert); |
mridup | 0:dc55f40eb04f | 421 | |
mridup | 0:dc55f40eb04f | 422 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 423 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 424 | { |
mridup | 0:dc55f40eb04f | 425 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 426 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 427 | } |
mridup | 0:dc55f40eb04f | 428 | |
mridup | 0:dc55f40eb04f | 429 | /*AT+S.TLSCERT=f_key,<size><CR><data>*/ |
mridup | 0:dc55f40eb04f | 430 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 431 | sprintf((char*)WiFi_AT_Cmd_Buff,"AT+S.TLSCERT=f_key,%d\r%s",strlen((const char *)client_key) - 1, client_key); |
mridup | 0:dc55f40eb04f | 432 | |
mridup | 0:dc55f40eb04f | 433 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 434 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 435 | { |
mridup | 0:dc55f40eb04f | 436 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 437 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 438 | } |
mridup | 0:dc55f40eb04f | 439 | } |
mridup | 0:dc55f40eb04f | 440 | |
mridup | 0:dc55f40eb04f | 441 | /*AT+S.TLSDOMAIN=f_domain,<server domain>*/ |
mridup | 0:dc55f40eb04f | 442 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 443 | sprintf((char*)WiFi_AT_Cmd_Buff,"AT+S.TLSDOMAIN=f_domain,%s\r", client_domain); |
mridup | 0:dc55f40eb04f | 444 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 445 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 446 | { |
mridup | 0:dc55f40eb04f | 447 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 448 | if(status != WiFi_MODULE_SUCCESS) return status; |
mridup | 0:dc55f40eb04f | 449 | } |
mridup | 0:dc55f40eb04f | 450 | |
mridup | 0:dc55f40eb04f | 451 | return status; |
mridup | 0:dc55f40eb04f | 452 | } |
mridup | 0:dc55f40eb04f | 453 | |
mridup | 0:dc55f40eb04f | 454 | /** |
mridup | 0:dc55f40eb04f | 455 | * @brief wifi_socket_client_open |
mridup | 0:dc55f40eb04f | 456 | * Open a network socket |
mridup | 0:dc55f40eb04f | 457 | * @param Hostname hostname to connect to |
mridup | 0:dc55f40eb04f | 458 | * portnumber portnumber of the Host to connect to |
mridup | 0:dc55f40eb04f | 459 | * protocol tcp or udp protocol |
mridup | 0:dc55f40eb04f | 460 | * sock_id socket id of the opened socket returned to the user |
mridup | 0:dc55f40eb04f | 461 | * @retval WiFi_Status_t : return status of socket open request |
mridup | 0:dc55f40eb04f | 462 | */ |
mridup | 0:dc55f40eb04f | 463 | WiFi_Status_t wifi_socket_client_open(uint8_t * hostname, uint32_t port_number, uint8_t * protocol, uint8_t * sock_id) |
mridup | 0:dc55f40eb04f | 464 | { |
mridup | 0:dc55f40eb04f | 465 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 466 | |
mridup | 0:dc55f40eb04f | 467 | Queue_Client_Open_Event(hostname,port_number,protocol); |
mridup | 0:dc55f40eb04f | 468 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 469 | |
mridup | 0:dc55f40eb04f | 470 | *sock_id = Socket_Open_ID; //return the socket id to the user |
mridup | 0:dc55f40eb04f | 471 | |
mridup | 0:dc55f40eb04f | 472 | return status; |
mridup | 0:dc55f40eb04f | 473 | } |
mridup | 0:dc55f40eb04f | 474 | |
mridup | 0:dc55f40eb04f | 475 | /** |
mridup | 0:dc55f40eb04f | 476 | * @brief Open_Serial_Port |
mridup | 0:dc55f40eb04f | 477 | * Open a network socket |
mridup | 0:dc55f40eb04f | 478 | * @param None |
mridup | 0:dc55f40eb04f | 479 | * @retval WiFi_Status_t : Wifi status |
mridup | 0:dc55f40eb04f | 480 | */ |
mridup | 0:dc55f40eb04f | 481 | WiFi_Status_t Open_Serial_Port() |
mridup | 0:dc55f40eb04f | 482 | { |
mridup | 0:dc55f40eb04f | 483 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 484 | /* AT+S.SOCKOS=2<cr> */ |
mridup | 0:dc55f40eb04f | 485 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 486 | //sprintf((char*)WiFi_AT_Cmd_Buff,"\rAT+S.SOCKOS=%d\r",SerialPortNo); |
mridup | 0:dc55f40eb04f | 487 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 488 | |
mridup | 0:dc55f40eb04f | 489 | if(status==WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 490 | { |
mridup | 0:dc55f40eb04f | 491 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 492 | } |
mridup | 0:dc55f40eb04f | 493 | return status; |
mridup | 0:dc55f40eb04f | 494 | } |
mridup | 0:dc55f40eb04f | 495 | |
mridup | 0:dc55f40eb04f | 496 | /** |
mridup | 0:dc55f40eb04f | 497 | * @brief wifi_socket_client_write |
mridup | 0:dc55f40eb04f | 498 | * Write len bytes of data to socket |
mridup | 0:dc55f40eb04f | 499 | * @param sock_id socket ID of the socket to write to |
mridup | 0:dc55f40eb04f | 500 | * DataLength: data length to send |
mridup | 0:dc55f40eb04f | 501 | * pData : pointer of data buffer to be written |
mridup | 8:0f302a13e21b | 502 | * @retval int : return number of bytes sent |
mridup | 0:dc55f40eb04f | 503 | */ |
mridup | 8:0f302a13e21b | 504 | int wifi_socket_client_write(uint8_t sock_id, uint16_t DataLength, char * pData) |
mridup | 0:dc55f40eb04f | 505 | { |
mridup | 0:dc55f40eb04f | 506 | /* AT+S.SOCKW=00,11<cr> */ |
mridup | 0:dc55f40eb04f | 507 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 508 | |
mridup | 0:dc55f40eb04f | 509 | //Check if sock_id is open |
mridup | 0:dc55f40eb04f | 510 | if(!open_sockets[sock_id]) |
mridup | 8:0f302a13e21b | 511 | return -1; |
mridup | 0:dc55f40eb04f | 512 | |
mridup | 8:0f302a13e21b | 513 | if(DataLength>2048 || DataLength<=0) |
mridup | 8:0f302a13e21b | 514 | return -1; |
mridup | 0:dc55f40eb04f | 515 | |
mridup | 0:dc55f40eb04f | 516 | Queue_Client_Write_Event(sock_id,DataLength,pData); |
mridup | 0:dc55f40eb04f | 517 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 8:0f302a13e21b | 518 | |
mridup | 8:0f302a13e21b | 519 | if(status==WiFi_MODULE_SUCCESS) |
mridup | 8:0f302a13e21b | 520 | return write_size; |
mridup | 8:0f302a13e21b | 521 | else |
mridup | 8:0f302a13e21b | 522 | return -1; |
mridup | 0:dc55f40eb04f | 523 | } |
mridup | 0:dc55f40eb04f | 524 | |
mridup | 0:dc55f40eb04f | 525 | /** |
mridup | 0:dc55f40eb04f | 526 | * @brief Socket_Read |
mridup | 0:dc55f40eb04f | 527 | * Return len bytes of data from socket |
mridup | 0:dc55f40eb04f | 528 | * @param DataLength: data length to read |
mridup | 0:dc55f40eb04f | 529 | * @retval WiFi_Status_t : return status of socket read request |
mridup | 0:dc55f40eb04f | 530 | */ |
mridup | 0:dc55f40eb04f | 531 | WiFi_Status_t Socket_Read(uint16_t DataLength) |
mridup | 0:dc55f40eb04f | 532 | { |
mridup | 0:dc55f40eb04f | 533 | /* AT+S.SOCKR=01,12<cr> */ |
mridup | 0:dc55f40eb04f | 534 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 535 | wait_for_command_mode(); |
mridup | 0:dc55f40eb04f | 536 | |
mridup | 0:dc55f40eb04f | 537 | /* AT+S.SOCKON=myserver,1234,t<cr> */ |
mridup | 0:dc55f40eb04f | 538 | sprintf((char*)WiFi_AT_Cmd_Buff,AT_SOCKET_READ,sockon_query_id,DataLength); |
mridup | 0:dc55f40eb04f | 539 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 540 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 541 | { |
mridup | 0:dc55f40eb04f | 542 | if(status_flag.stop_event_dequeue == WIFI_FALSE) |
mridup | 0:dc55f40eb04f | 543 | status_flag.stop_event_dequeue = WIFI_TRUE; |
mridup | 0:dc55f40eb04f | 544 | SockON_Data_Length = DataLength; |
mridup | 0:dc55f40eb04f | 545 | status_flag.enable_sock_read = WIFI_TRUE; |
mridup | 0:dc55f40eb04f | 546 | process_buffer_index =5; |
mridup | 0:dc55f40eb04f | 547 | status_flag.enable_receive_data_chunk = WIFI_TRUE; |
mridup | 0:dc55f40eb04f | 548 | WiFi_Module_State = Process_Event; |
mridup | 0:dc55f40eb04f | 549 | status_flag.Set_AT_Cmd_Response_False = WIFI_TRUE; |
mridup | 0:dc55f40eb04f | 550 | memset(UserDataBuff, 0x00, MAX_BUFFER_GLOBAL); |
mridup | 0:dc55f40eb04f | 551 | } |
mridup | 0:dc55f40eb04f | 552 | return status; |
mridup | 0:dc55f40eb04f | 553 | } |
mridup | 0:dc55f40eb04f | 554 | |
mridup | 0:dc55f40eb04f | 555 | /** |
mridup | 0:dc55f40eb04f | 556 | * @brief wifi_socket_client_close |
mridup | 0:dc55f40eb04f | 557 | * The SOCKC command allows to close socket |
mridup | 0:dc55f40eb04f | 558 | * @param sock_close_id the socket ID of the socket which needs to be closed. |
mridup | 0:dc55f40eb04f | 559 | * @retval WiFi_Status_t : return status of socket close request |
mridup | 0:dc55f40eb04f | 560 | */ |
mridup | 0:dc55f40eb04f | 561 | WiFi_Status_t wifi_socket_client_close(uint8_t sock_close_id) |
mridup | 0:dc55f40eb04f | 562 | { |
mridup | 0:dc55f40eb04f | 563 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 564 | |
mridup | 0:dc55f40eb04f | 565 | if(open_sockets[sock_close_id]) |
mridup | 0:dc55f40eb04f | 566 | { |
mridup | 0:dc55f40eb04f | 567 | Queue_Client_Close_Event(sock_close_id); |
mridup | 0:dc55f40eb04f | 568 | return status; |
mridup | 0:dc55f40eb04f | 569 | } |
mridup | 0:dc55f40eb04f | 570 | else |
mridup | 0:dc55f40eb04f | 571 | return WiFi_MODULE_ERROR; |
mridup | 0:dc55f40eb04f | 572 | |
mridup | 0:dc55f40eb04f | 573 | } |
mridup | 0:dc55f40eb04f | 574 | |
mridup | 0:dc55f40eb04f | 575 | /** |
mridup | 0:dc55f40eb04f | 576 | * @brief Socket_Pending_Data |
mridup | 0:dc55f40eb04f | 577 | * Query pending data.It will returns the number of bytes of data waiting on socket |
mridup | 0:dc55f40eb04f | 578 | * @param None |
mridup | 0:dc55f40eb04f | 579 | * @retval uint8_t :number of bytes of data waiting on socket |
mridup | 0:dc55f40eb04f | 580 | */ |
mridup | 0:dc55f40eb04f | 581 | void Socket_Pending_Data() |
mridup | 0:dc55f40eb04f | 582 | { |
mridup | 0:dc55f40eb04f | 583 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 584 | |
mridup | 0:dc55f40eb04f | 585 | /* AT+S.SOCKQ=01<cr> */ |
mridup | 0:dc55f40eb04f | 586 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 587 | |
mridup | 0:dc55f40eb04f | 588 | wait_for_command_mode(); |
mridup | 0:dc55f40eb04f | 589 | |
mridup | 0:dc55f40eb04f | 590 | if(open_sockets[sockon_query_id]) |
mridup | 0:dc55f40eb04f | 591 | { |
mridup | 0:dc55f40eb04f | 592 | if(status_flag.stop_event_dequeue == WIFI_FALSE) |
mridup | 0:dc55f40eb04f | 593 | status_flag.stop_event_dequeue = WIFI_TRUE; |
mridup | 0:dc55f40eb04f | 594 | |
mridup | 0:dc55f40eb04f | 595 | sprintf((char*)WiFi_AT_Cmd_Buff,AT_QUERY_PENDING_DATA,sockon_query_id); |
mridup | 0:dc55f40eb04f | 596 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 597 | if(status==WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 598 | { |
mridup | 0:dc55f40eb04f | 599 | /* EQ. Set state to Process_Event */ |
mridup | 0:dc55f40eb04f | 600 | WiFi_Module_State = Process_Event; |
mridup | 0:dc55f40eb04f | 601 | status_flag.Set_AT_Cmd_Response_False = WIFI_TRUE; |
mridup | 0:dc55f40eb04f | 602 | } |
mridup | 0:dc55f40eb04f | 603 | } |
mridup | 0:dc55f40eb04f | 604 | } |
mridup | 0:dc55f40eb04f | 605 | |
mridup | 0:dc55f40eb04f | 606 | /** |
mridup | 0:dc55f40eb04f | 607 | * @brief wifi_socket_server_open |
mridup | 0:dc55f40eb04f | 608 | * Open a Server socket |
mridup | 0:dc55f40eb04f | 609 | * @param None |
mridup | 0:dc55f40eb04f | 610 | * @retval WiFi_Status_t : return status of server socket request |
mridup | 0:dc55f40eb04f | 611 | */ |
mridup | 0:dc55f40eb04f | 612 | WiFi_Status_t wifi_socket_server_open(uint32_t port_number, uint8_t * protocol) |
mridup | 0:dc55f40eb04f | 613 | { |
mridup | 0:dc55f40eb04f | 614 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 7:0fdd186a7d90 | 615 | |
mridup | 7:0fdd186a7d90 | 616 | //Wait till all queued events are executed |
mridup | 7:0fdd186a7d90 | 617 | while(!event_empty(&event_buff)); |
mridup | 7:0fdd186a7d90 | 618 | Wait_For_Sock_Read_To_Complete(); |
mridup | 7:0fdd186a7d90 | 619 | |
mridup | 0:dc55f40eb04f | 620 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 621 | |
mridup | 0:dc55f40eb04f | 622 | /* AT+S.SOCKD=portNo,t<cr> */ |
mridup | 0:dc55f40eb04f | 623 | sprintf((char*)WiFi_AT_Cmd_Buff,AT_SERVER_SOCKET_OPEN,(int)port_number,protocol); |
mridup | 0:dc55f40eb04f | 624 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 625 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 626 | { |
mridup | 0:dc55f40eb04f | 627 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 628 | } |
mridup | 0:dc55f40eb04f | 629 | return status; |
mridup | 0:dc55f40eb04f | 630 | } |
mridup | 0:dc55f40eb04f | 631 | |
mridup | 0:dc55f40eb04f | 632 | |
mridup | 0:dc55f40eb04f | 633 | |
mridup | 0:dc55f40eb04f | 634 | /** |
mridup | 0:dc55f40eb04f | 635 | * @brief Server Socket Close |
mridup | 0:dc55f40eb04f | 636 | * Close a Server socket |
mridup | 0:dc55f40eb04f | 637 | * @param None |
mridup | 0:dc55f40eb04f | 638 | * @retval WiFi_Status_t : return status of server socket request |
mridup | 0:dc55f40eb04f | 639 | */ |
mridup | 0:dc55f40eb04f | 640 | WiFi_Status_t wifi_socket_server_close() |
mridup | 0:dc55f40eb04f | 641 | { |
mridup | 0:dc55f40eb04f | 642 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 7:0fdd186a7d90 | 643 | |
mridup | 7:0fdd186a7d90 | 644 | //Wait till all queued events are executed |
mridup | 7:0fdd186a7d90 | 645 | while(!event_empty(&event_buff)); |
mridup | 7:0fdd186a7d90 | 646 | Wait_For_Sock_Read_To_Complete(); |
mridup | 7:0fdd186a7d90 | 647 | |
mridup | 0:dc55f40eb04f | 648 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 649 | |
mridup | 0:dc55f40eb04f | 650 | /* AT+S.SOCKD=portNo,t<cr> */ |
mridup | 0:dc55f40eb04f | 651 | sprintf((char*)WiFi_AT_Cmd_Buff,AT_SERVER_SOCKET_CLOSE); |
mridup | 0:dc55f40eb04f | 652 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 653 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 654 | { |
mridup | 0:dc55f40eb04f | 655 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 656 | } |
mridup | 0:dc55f40eb04f | 657 | |
mridup | 0:dc55f40eb04f | 658 | return status; |
mridup | 0:dc55f40eb04f | 659 | } |
mridup | 0:dc55f40eb04f | 660 | |
mridup | 0:dc55f40eb04f | 661 | |
mridup | 0:dc55f40eb04f | 662 | /** |
mridup | 0:dc55f40eb04f | 663 | * @brief wait_for_command_mode |
mridup | 0:dc55f40eb04f | 664 | * Waits till we are in command mode |
mridup | 0:dc55f40eb04f | 665 | * @param None |
mridup | 0:dc55f40eb04f | 666 | * @retval None |
mridup | 0:dc55f40eb04f | 667 | */ |
mridup | 0:dc55f40eb04f | 668 | void wait_for_command_mode(void) |
mridup | 0:dc55f40eb04f | 669 | { |
mridup | 0:dc55f40eb04f | 670 | while(!status_flag.command_mode) |
mridup | 0:dc55f40eb04f | 671 | { |
mridup | 0:dc55f40eb04f | 672 | //Make sure we are in command mode, ideally we should do this in every User API? |
mridup | 0:dc55f40eb04f | 673 | asm("NOP"); |
mridup | 0:dc55f40eb04f | 674 | } |
mridup | 0:dc55f40eb04f | 675 | } |
mridup | 0:dc55f40eb04f | 676 | |
mridup | 0:dc55f40eb04f | 677 | |
mridup | 0:dc55f40eb04f | 678 | /** |
mridup | 0:dc55f40eb04f | 679 | * @brief wifi_file_delete |
mridup | 0:dc55f40eb04f | 680 | * Delete a file |
mridup | 0:dc55f40eb04f | 681 | * @param pFileName : File Name to be deleted |
mridup | 0:dc55f40eb04f | 682 | * @retval WiFi_Status_t : return status of delete file request |
mridup | 0:dc55f40eb04f | 683 | */ |
mridup | 0:dc55f40eb04f | 684 | WiFi_Status_t wifi_file_delete(char * pFileName) |
mridup | 0:dc55f40eb04f | 685 | { |
mridup | 0:dc55f40eb04f | 686 | /* AT+S.FSD: delete an existing file */ |
mridup | 0:dc55f40eb04f | 687 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 688 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 689 | /* AT+S.FSL */ |
mridup | 0:dc55f40eb04f | 690 | sprintf((char*)WiFi_AT_Cmd_Buff,AT_DELETE_FILE,pFileName); |
mridup | 0:dc55f40eb04f | 691 | |
mridup | 0:dc55f40eb04f | 692 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 693 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 694 | { |
mridup | 0:dc55f40eb04f | 695 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 696 | } |
mridup | 0:dc55f40eb04f | 697 | return status; |
mridup | 0:dc55f40eb04f | 698 | } |
mridup | 0:dc55f40eb04f | 699 | |
mridup | 0:dc55f40eb04f | 700 | /** |
mridup | 0:dc55f40eb04f | 701 | * @brief wifi_file_list |
mridup | 0:dc55f40eb04f | 702 | * List existing filename |
mridup | 0:dc55f40eb04f | 703 | * @param None |
mridup | 0:dc55f40eb04f | 704 | * @retval WiFi_Status_t : return status of AT cmd request |
mridup | 0:dc55f40eb04f | 705 | */ |
mridup | 0:dc55f40eb04f | 706 | |
mridup | 0:dc55f40eb04f | 707 | WiFi_Status_t wifi_file_list() |
mridup | 0:dc55f40eb04f | 708 | { |
mridup | 0:dc55f40eb04f | 709 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 710 | Queue_Wifi_File_Event(NULL,NULL,0); |
mridup | 0:dc55f40eb04f | 711 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 712 | return status; |
mridup | 0:dc55f40eb04f | 713 | } |
mridup | 0:dc55f40eb04f | 714 | |
mridup | 0:dc55f40eb04f | 715 | /** |
mridup | 0:dc55f40eb04f | 716 | * @brief wifi_file_show |
mridup | 0:dc55f40eb04f | 717 | * Print the contents of an existing file |
mridup | 0:dc55f40eb04f | 718 | * @param pFileName : pinter of file name |
mridup | 0:dc55f40eb04f | 719 | * @retval WiFi_Status_t : return status of AT cmd request |
mridup | 0:dc55f40eb04f | 720 | */ |
mridup | 0:dc55f40eb04f | 721 | |
mridup | 0:dc55f40eb04f | 722 | WiFi_Status_t wifi_file_show(uint8_t * pFileName) |
mridup | 0:dc55f40eb04f | 723 | { |
mridup | 0:dc55f40eb04f | 724 | if(pFileName==NULL) |
mridup | 0:dc55f40eb04f | 725 | return WiFi_MODULE_ERROR; |
mridup | 0:dc55f40eb04f | 726 | |
mridup | 0:dc55f40eb04f | 727 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 728 | Queue_Wifi_File_Event(NULL,pFileName,0); |
mridup | 0:dc55f40eb04f | 729 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 730 | return status; |
mridup | 0:dc55f40eb04f | 731 | } |
mridup | 0:dc55f40eb04f | 732 | |
mridup | 0:dc55f40eb04f | 733 | /** |
mridup | 0:dc55f40eb04f | 734 | * @brief wifi_file_create |
mridup | 0:dc55f40eb04f | 735 | * Create file for HTTP server |
mridup | 0:dc55f40eb04f | 736 | * @param pFileName : pointer of file name to be created |
mridup | 0:dc55f40eb04f | 737 | * alength : length of file |
mridup | 0:dc55f40eb04f | 738 | * @retval WiFi_Status_t : return status of AT cmd request |
mridup | 0:dc55f40eb04f | 739 | */ |
mridup | 0:dc55f40eb04f | 740 | |
mridup | 0:dc55f40eb04f | 741 | WiFi_Status_t wifi_file_create(char *pFileName, uint16_t alength, char * pUserFileBuff) |
mridup | 0:dc55f40eb04f | 742 | { |
mridup | 0:dc55f40eb04f | 743 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 744 | |
mridup | 0:dc55f40eb04f | 745 | if(alength >1024) |
mridup | 0:dc55f40eb04f | 746 | return WiFi_AT_FILE_LENGTH_ERROR; |
mridup | 0:dc55f40eb04f | 747 | |
mridup | 0:dc55f40eb04f | 748 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 749 | |
mridup | 0:dc55f40eb04f | 750 | /* AT+S.FSC=/index.html */ |
mridup | 0:dc55f40eb04f | 751 | sprintf((char*)WiFi_AT_Cmd_Buff, AT_CREATE_NEW_HTML_FILE, pFileName, alength); |
mridup | 0:dc55f40eb04f | 752 | |
mridup | 0:dc55f40eb04f | 753 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 754 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 755 | { |
mridup | 0:dc55f40eb04f | 756 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 757 | int len = strlen(pUserFileBuff); |
mridup | 0:dc55f40eb04f | 758 | |
mridup | 0:dc55f40eb04f | 759 | if(len >= 1024) |
mridup | 0:dc55f40eb04f | 760 | return WiFi_AT_FILE_LENGTH_ERROR; |
mridup | 0:dc55f40eb04f | 761 | |
mridup | 0:dc55f40eb04f | 762 | /* AT+S.FSA=/index.html */ |
mridup | 0:dc55f40eb04f | 763 | sprintf((char*)WiFi_AT_Cmd_Buff,AT_APPEND_FILE,pFileName,len); |
mridup | 0:dc55f40eb04f | 764 | |
mridup | 0:dc55f40eb04f | 765 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 766 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 767 | { |
mridup | 0:dc55f40eb04f | 768 | memset(WiFi_AT_Cmd_Buff, 0x00, sizeof WiFi_AT_Cmd_Buff); |
mridup | 0:dc55f40eb04f | 769 | memcpy((char*)(char*)WiFi_AT_Cmd_Buff, (char*) pUserFileBuff,len); |
mridup | 0:dc55f40eb04f | 770 | WiFi_AT_Cmd_Buff[len+1]='\r'; |
mridup | 0:dc55f40eb04f | 771 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 772 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 773 | { |
mridup | 0:dc55f40eb04f | 774 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 775 | } |
mridup | 0:dc55f40eb04f | 776 | } |
mridup | 0:dc55f40eb04f | 777 | } |
mridup | 0:dc55f40eb04f | 778 | return status; |
mridup | 0:dc55f40eb04f | 779 | } |
mridup | 0:dc55f40eb04f | 780 | |
mridup | 0:dc55f40eb04f | 781 | /** |
mridup | 0:dc55f40eb04f | 782 | * @brief wifi_http_get |
mridup | 0:dc55f40eb04f | 783 | * Issue an HTTP GET of the given path to the specified host |
mridup | 0:dc55f40eb04f | 784 | * @param None |
mridup | 0:dc55f40eb04f | 785 | * @retval WiFi_Status_t : return status of AT cmd response |
mridup | 0:dc55f40eb04f | 786 | */ |
mridup | 0:dc55f40eb04f | 787 | |
mridup | 0:dc55f40eb04f | 788 | WiFi_Status_t wifi_http_get(uint8_t * hostname, uint8_t * path, uint32_t port_number) |
mridup | 0:dc55f40eb04f | 789 | { |
mridup | 0:dc55f40eb04f | 790 | if(hostname == NULL || path == NULL) |
mridup | 0:dc55f40eb04f | 791 | return WiFi_MODULE_ERROR; |
mridup | 0:dc55f40eb04f | 792 | |
mridup | 0:dc55f40eb04f | 793 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 794 | |
mridup | 0:dc55f40eb04f | 795 | while(status_flag.sock_read_ongoing || WIND64_count!= 0); //wait till any pending data is read |
mridup | 0:dc55f40eb04f | 796 | { |
mridup | 0:dc55f40eb04f | 797 | asm("NOP"); |
mridup | 0:dc55f40eb04f | 798 | } |
mridup | 0:dc55f40eb04f | 799 | |
mridup | 0:dc55f40eb04f | 800 | // AT+S.HTTPGET=host.example.com,/index.html, port_number<cr> |
mridup | 0:dc55f40eb04f | 801 | //Queue the http-get command |
mridup | 0:dc55f40eb04f | 802 | Queue_Http_Event(hostname, path, port_number,NULL); |
mridup | 0:dc55f40eb04f | 803 | |
mridup | 0:dc55f40eb04f | 804 | //Make the user wait anyway |
mridup | 0:dc55f40eb04f | 805 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 806 | |
mridup | 0:dc55f40eb04f | 807 | return status; |
mridup | 0:dc55f40eb04f | 808 | |
mridup | 0:dc55f40eb04f | 809 | } |
mridup | 0:dc55f40eb04f | 810 | |
mridup | 0:dc55f40eb04f | 811 | /** |
mridup | 0:dc55f40eb04f | 812 | * @brief wifi_http_post |
mridup | 0:dc55f40eb04f | 813 | * Issue an HTTP GET of the given path to the specified host |
mridup | 0:dc55f40eb04f | 814 | * @param None |
mridup | 0:dc55f40eb04f | 815 | * @retval WiFi_Status_t : status of Http Post Request |
mridup | 0:dc55f40eb04f | 816 | */ |
mridup | 0:dc55f40eb04f | 817 | |
mridup | 0:dc55f40eb04f | 818 | WiFi_Status_t wifi_http_post(uint8_t * pURL_path) |
mridup | 0:dc55f40eb04f | 819 | { |
mridup | 0:dc55f40eb04f | 820 | if(pURL_path == NULL) |
mridup | 0:dc55f40eb04f | 821 | return WiFi_MODULE_ERROR; |
mridup | 0:dc55f40eb04f | 822 | |
mridup | 0:dc55f40eb04f | 823 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 824 | |
mridup | 0:dc55f40eb04f | 825 | while(status_flag.sock_read_ongoing || WIND64_count!= 0);//wait till any pending data is read |
mridup | 0:dc55f40eb04f | 826 | { |
mridup | 0:dc55f40eb04f | 827 | asm("NOP"); |
mridup | 0:dc55f40eb04f | 828 | } |
mridup | 0:dc55f40eb04f | 829 | |
mridup | 0:dc55f40eb04f | 830 | // AT+S.HTTPPOST = posttestserver.com,/post.php,name=demo&email=mymail&subject=subj&body=message<cr> |
mridup | 0:dc55f40eb04f | 831 | Queue_Http_Event(NULL,NULL,0,pURL_path); |
mridup | 0:dc55f40eb04f | 832 | |
mridup | 0:dc55f40eb04f | 833 | //Make the user wait anyway |
mridup | 0:dc55f40eb04f | 834 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 835 | return status; |
mridup | 0:dc55f40eb04f | 836 | } |
mridup | 0:dc55f40eb04f | 837 | |
mridup | 0:dc55f40eb04f | 838 | /** |
mridup | 0:dc55f40eb04f | 839 | * @brief wifi_file_image_create |
mridup | 0:dc55f40eb04f | 840 | * Downloads an updated file system via a single HTTP GET request to the |
mridup | 0:dc55f40eb04f | 841 | * named host and path. |
mridup | 0:dc55f40eb04f | 842 | * @param None |
mridup | 0:dc55f40eb04f | 843 | * @retval WiFi_Status_t |
mridup | 0:dc55f40eb04f | 844 | */ |
mridup | 0:dc55f40eb04f | 845 | WiFi_Status_t wifi_file_image_create(uint8_t * pHostName, uint8_t * pFileName, uint32_t port_number) |
mridup | 0:dc55f40eb04f | 846 | { |
mridup | 0:dc55f40eb04f | 847 | if(pHostName == NULL || pFileName == NULL || port_number ==0) |
mridup | 0:dc55f40eb04f | 848 | return WiFi_MODULE_ERROR; |
mridup | 0:dc55f40eb04f | 849 | |
mridup | 0:dc55f40eb04f | 850 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 851 | Queue_Wifi_File_Event(pHostName,pFileName,port_number); |
mridup | 0:dc55f40eb04f | 852 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 853 | |
mridup | 0:dc55f40eb04f | 854 | /* Soft reset the module */ |
mridup | 0:dc55f40eb04f | 855 | SET_Power_State(PowerSave_State); |
mridup | 0:dc55f40eb04f | 856 | return status; |
mridup | 0:dc55f40eb04f | 857 | } |
mridup | 0:dc55f40eb04f | 858 | |
mridup | 0:dc55f40eb04f | 859 | /** |
mridup | 0:dc55f40eb04f | 860 | * @brief wifi_file_erase_external_flash |
mridup | 0:dc55f40eb04f | 861 | * This API allows to erase the content of the external flash |
mridup | 0:dc55f40eb04f | 862 | * @param None |
mridup | 0:dc55f40eb04f | 863 | * @retval WiFi_Status_t |
mridup | 0:dc55f40eb04f | 864 | */ |
mridup | 0:dc55f40eb04f | 865 | WiFi_Status_t wifi_file_erase_external_flash() |
mridup | 0:dc55f40eb04f | 866 | { |
mridup | 0:dc55f40eb04f | 867 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 868 | |
mridup | 0:dc55f40eb04f | 869 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 870 | ResetBuffer(); |
mridup | 0:dc55f40eb04f | 871 | |
mridup | 0:dc55f40eb04f | 872 | /* AT+S.HTTPDFSERASE */ |
mridup | 0:dc55f40eb04f | 873 | sprintf((char*)WiFi_AT_Cmd_Buff,AT_ERASE_FLASH_MEMORY); |
mridup | 0:dc55f40eb04f | 874 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 875 | |
mridup | 0:dc55f40eb04f | 876 | /* Soft reset the module */ |
mridup | 0:dc55f40eb04f | 877 | SET_Power_State(PowerSave_State); |
mridup | 0:dc55f40eb04f | 878 | |
mridup | 0:dc55f40eb04f | 879 | return status; |
mridup | 0:dc55f40eb04f | 880 | } |
mridup | 0:dc55f40eb04f | 881 | |
mridup | 0:dc55f40eb04f | 882 | /** |
mridup | 0:dc55f40eb04f | 883 | * @brief wifi_fw_update |
mridup | 0:dc55f40eb04f | 884 | * Issue an HTTP GET of the given path to the specified host and get the firmware updated |
mridup | 0:dc55f40eb04f | 885 | * @param None |
mridup | 0:dc55f40eb04f | 886 | * @retval None |
mridup | 0:dc55f40eb04f | 887 | */ |
mridup | 0:dc55f40eb04f | 888 | WiFi_Status_t wifi_fw_update(uint8_t * hostname, uint8_t * filename_path, uint32_t port_number) |
mridup | 0:dc55f40eb04f | 889 | { |
mridup | 0:dc55f40eb04f | 890 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 891 | Queue_Wifi_FW_Update_Event(hostname,filename_path,port_number); |
mridup | 0:dc55f40eb04f | 892 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 893 | /* Soft reset the module */ |
mridup | 0:dc55f40eb04f | 894 | SET_Power_State(PowerSave_State); |
mridup | 0:dc55f40eb04f | 895 | return status; |
mridup | 0:dc55f40eb04f | 896 | } |
mridup | 0:dc55f40eb04f | 897 | |
mridup | 0:dc55f40eb04f | 898 | /** |
mridup | 0:dc55f40eb04f | 899 | * @brief wifi_network_scan |
mridup | 0:dc55f40eb04f | 900 | * Performs an immediate scan for available network |
mridup | 0:dc55f40eb04f | 901 | * @param None |
mridup | 0:dc55f40eb04f | 902 | * @retval WiFi_Status_t : WiFi status error |
mridup | 0:dc55f40eb04f | 903 | */ |
mridup | 0:dc55f40eb04f | 904 | WiFi_Status_t wifi_network_scan(wifi_scan *scan_result, uint16_t max_scan_number) |
mridup | 0:dc55f40eb04f | 905 | { |
mridup | 0:dc55f40eb04f | 906 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 907 | wifi_scanned_list = scan_result; |
mridup | 0:dc55f40eb04f | 908 | if(max_scan_number>MAX_WIFI_SCAN_NETWORK) |
mridup | 0:dc55f40eb04f | 909 | return WiFi_NOT_SUPPORTED; |
mridup | 0:dc55f40eb04f | 910 | user_scan_number = max_scan_number; |
mridup | 0:dc55f40eb04f | 911 | |
mridup | 0:dc55f40eb04f | 912 | if(status_flag.Scan_Ongoing) |
mridup | 0:dc55f40eb04f | 913 | { |
mridup | 0:dc55f40eb04f | 914 | return WiFi_AT_CMD_BUSY; |
mridup | 0:dc55f40eb04f | 915 | } |
mridup | 0:dc55f40eb04f | 916 | |
mridup | 0:dc55f40eb04f | 917 | status_flag.Scan_Ongoing = WIFI_TRUE; |
mridup | 0:dc55f40eb04f | 918 | |
mridup | 0:dc55f40eb04f | 919 | #if 0 //TBD |
mridup | 0:dc55f40eb04f | 920 | if(WiFi_Param.WiFi_Module_State == WiFi_MiniAP_MODE) |
mridup | 0:dc55f40eb04f | 921 | return WiFi_NOT_SUPPORTED; |
mridup | 0:dc55f40eb04f | 922 | #endif |
mridup | 0:dc55f40eb04f | 923 | |
mridup | 0:dc55f40eb04f | 924 | /* AT+S.SCAN: performs an immediate scan for available networks */ |
mridup | 0:dc55f40eb04f | 925 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 926 | sprintf((char*)WiFi_AT_Cmd_Buff,AT_WiFi_SCAN); |
mridup | 0:dc55f40eb04f | 927 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 928 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 929 | { |
mridup | 0:dc55f40eb04f | 930 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 931 | } |
mridup | 0:dc55f40eb04f | 932 | |
mridup | 0:dc55f40eb04f | 933 | /*At this point we have WiFi_Scan_Buffer filled with RSSI and SSID values*/ |
mridup | 0:dc55f40eb04f | 934 | return status; |
mridup | 0:dc55f40eb04f | 935 | } |
mridup | 0:dc55f40eb04f | 936 | |
mridup | 0:dc55f40eb04f | 937 | /** |
mridup | 0:dc55f40eb04f | 938 | * @brief Set_MiniAP_Mode |
mridup | 0:dc55f40eb04f | 939 | * Configure Wi-Fi module in AP mode. |
mridup | 0:dc55f40eb04f | 940 | MiniAP is always configured in open mode (WEP not supported) |
mridup | 0:dc55f40eb04f | 941 | * @param None |
mridup | 0:dc55f40eb04f | 942 | * @retval WiFi_Status_t : status of AT cmd |
mridup | 0:dc55f40eb04f | 943 | */ |
mridup | 0:dc55f40eb04f | 944 | WiFi_Status_t wifi_ap_start(uint8_t * ssid, uint8_t channel_num) |
mridup | 0:dc55f40eb04f | 945 | { |
mridup | 0:dc55f40eb04f | 946 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 947 | |
mridup | 0:dc55f40eb04f | 948 | /* Set the SSID : AT+S.SSIDTXT=<SSID>*/ |
mridup | 0:dc55f40eb04f | 949 | //if(ssid) |
mridup | 0:dc55f40eb04f | 950 | status = SET_SSID((char*)ssid); |
mridup | 0:dc55f40eb04f | 951 | |
mridup | 0:dc55f40eb04f | 952 | |
mridup | 0:dc55f40eb04f | 953 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 954 | return WiFi_SSID_ERROR; |
mridup | 0:dc55f40eb04f | 955 | |
mridup | 0:dc55f40eb04f | 956 | /* Set the network privacy mode : AT+S.SCFG=wifi_priv_mode,0*/ |
mridup | 0:dc55f40eb04f | 957 | status = SET_Configuration_Value(WIFI_PRIV_MODE, None); |
mridup | 0:dc55f40eb04f | 958 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 959 | return WiFi_CONFIG_ERROR; |
mridup | 0:dc55f40eb04f | 960 | |
mridup | 0:dc55f40eb04f | 961 | /* Set the network mode (1 = STA, 2 = IBSS, 3 = MiniAP) :: AT+S.SCFG=wifi_mode,3*/ |
mridup | 0:dc55f40eb04f | 962 | status = SET_Configuration_Value(WIFI_MODE, WiFi_MiniAP_MODE); |
mridup | 0:dc55f40eb04f | 963 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 964 | return WiFi_CONFIG_ERROR; |
mridup | 0:dc55f40eb04f | 965 | |
scsims | 18:b265b3b696f1 | 966 | /* Set the ip parameters up */ |
scsims | 18:b265b3b696f1 | 967 | status = SET_Configuration_Addr(WIFI_IP_ADDRESS, "192.168.0.1"); |
scsims | 18:b265b3b696f1 | 968 | if (status != WiFi_MODULE_SUCCESS) return WiFi_CONFIG_ERROR; |
scsims | 18:b265b3b696f1 | 969 | status = SET_Configuration_Addr(WIFI_IP_NETMASK, "255.255.255.0"); |
scsims | 18:b265b3b696f1 | 970 | if (status != WiFi_MODULE_SUCCESS) return WiFi_CONFIG_ERROR; |
scsims | 18:b265b3b696f1 | 971 | status = SET_Configuration_Addr(WIFI_IP_HOSTNAME, "idw01m1"); |
scsims | 18:b265b3b696f1 | 972 | if (status != WiFi_MODULE_SUCCESS) return WiFi_CONFIG_ERROR; |
scsims | 18:b265b3b696f1 | 973 | status = SET_Configuration_Value(IP_USE_DHCP_SERVER, custom); |
scsims | 18:b265b3b696f1 | 974 | if (status != WiFi_MODULE_SUCCESS) return WiFi_CONFIG_ERROR; |
scsims | 18:b265b3b696f1 | 975 | |
mridup | 0:dc55f40eb04f | 976 | /* Set the channel number */ |
mridup | 0:dc55f40eb04f | 977 | status = SET_Configuration_Value(WIFI_CHANNEL_NUMBER, channel_num); |
mridup | 0:dc55f40eb04f | 978 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 979 | return WiFi_CONFIG_ERROR; |
mridup | 0:dc55f40eb04f | 980 | |
mridup | 0:dc55f40eb04f | 981 | /* Save the settings on the flash memory : AT&W*/ |
mridup | 0:dc55f40eb04f | 982 | Save_Current_Setting(); |
mridup | 0:dc55f40eb04f | 983 | |
mridup | 0:dc55f40eb04f | 984 | status_flag.WiFi_Configuration_Done = WIFI_TRUE; |
mridup | 0:dc55f40eb04f | 985 | WiFi_Module_State = Process_Event; |
mridup | 0:dc55f40eb04f | 986 | |
mridup | 0:dc55f40eb04f | 987 | /* Soft reset the module */ |
mridup | 0:dc55f40eb04f | 988 | SET_Power_State(PowerSave_State); |
mridup | 0:dc55f40eb04f | 989 | |
mridup | 0:dc55f40eb04f | 990 | return status; |
mridup | 0:dc55f40eb04f | 991 | } |
mridup | 0:dc55f40eb04f | 992 | |
mridup | 0:dc55f40eb04f | 993 | |
mridup | 0:dc55f40eb04f | 994 | /** |
mridup | 0:dc55f40eb04f | 995 | * @brief SET_WiFi_STA_Mode |
mridup | 0:dc55f40eb04f | 996 | * Configure Wi-Fi module in STA mode |
mridup | 0:dc55f40eb04f | 997 | * @param SSID : SSID name |
mridup | 0:dc55f40eb04f | 998 | * @param sec_key : security key |
mridup | 0:dc55f40eb04f | 999 | * @param priv_mode : network privecy mode |
mridup | 0:dc55f40eb04f | 1000 | * @retval WiFi_Status_t : status of AT cmd |
mridup | 0:dc55f40eb04f | 1001 | */ |
mridup | 0:dc55f40eb04f | 1002 | WiFi_Status_t wifi_connect(char * ssid, char * sec_key, WiFi_Priv_Mode priv_mode) |
mridup | 0:dc55f40eb04f | 1003 | { |
mridup | 0:dc55f40eb04f | 1004 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 1005 | if(status_flag.AT_Cmd_Ongoing == WIFI_FALSE) |
mridup | 0:dc55f40eb04f | 1006 | status_flag.AT_Cmd_Ongoing = WIFI_TRUE; |
mridup | 0:dc55f40eb04f | 1007 | else |
mridup | 0:dc55f40eb04f | 1008 | { |
mridup | 0:dc55f40eb04f | 1009 | return WiFi_AT_CMD_BUSY; |
mridup | 0:dc55f40eb04f | 1010 | } |
mridup | 0:dc55f40eb04f | 1011 | |
mridup | 0:dc55f40eb04f | 1012 | if(sec_key) { |
mridup | 0:dc55f40eb04f | 1013 | status = SET_WiFi_SecKey((char*)sec_key); |
mridup | 0:dc55f40eb04f | 1014 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1015 | return WiFi_SecKey_ERROR; |
mridup | 0:dc55f40eb04f | 1016 | } |
mridup | 0:dc55f40eb04f | 1017 | |
mridup | 0:dc55f40eb04f | 1018 | /* Set the SSID : AT+S.SSIDTXT=<SSID>*/ |
mridup | 0:dc55f40eb04f | 1019 | |
mridup | 0:dc55f40eb04f | 1020 | status = SET_SSID((char*)ssid); |
mridup | 0:dc55f40eb04f | 1021 | |
mridup | 0:dc55f40eb04f | 1022 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1023 | return WiFi_SSID_ERROR; |
mridup | 0:dc55f40eb04f | 1024 | |
mridup | 0:dc55f40eb04f | 1025 | /* Set the network privacy mode : AT+S.SCFG=wifi_priv_mode,2*/ |
mridup | 0:dc55f40eb04f | 1026 | status = SET_Configuration_Value(WIFI_PRIV_MODE, priv_mode); |
mridup | 0:dc55f40eb04f | 1027 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1028 | return WiFi_CONFIG_ERROR; |
mridup | 0:dc55f40eb04f | 1029 | |
mridup | 0:dc55f40eb04f | 1030 | /* Set the network mode (1 = STA, 2 = IBSS, 3 = MiniAP) :: AT+S.SCFG=wifi_mode,1*/ |
mridup | 0:dc55f40eb04f | 1031 | status = SET_Configuration_Value(WIFI_MODE, WiFi_STA_MODE); |
mridup | 0:dc55f40eb04f | 1032 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1033 | return WiFi_CONFIG_ERROR; |
mridup | 0:dc55f40eb04f | 1034 | |
mridup | 0:dc55f40eb04f | 1035 | /* Save the settings on the flash memory : AT&W*/ |
mridup | 0:dc55f40eb04f | 1036 | Save_Current_Setting(); |
mridup | 0:dc55f40eb04f | 1037 | |
mridup | 0:dc55f40eb04f | 1038 | status_flag.WiFi_Configuration_Done = WIFI_TRUE; |
mridup | 0:dc55f40eb04f | 1039 | //WiFi_Module_State = WiFi_Process_Event; |
mridup | 0:dc55f40eb04f | 1040 | |
mridup | 0:dc55f40eb04f | 1041 | /* Soft reset the module */ |
mridup | 0:dc55f40eb04f | 1042 | SET_Power_State(PowerSave_State); |
mridup | 0:dc55f40eb04f | 1043 | |
mridup | 0:dc55f40eb04f | 1044 | status_flag.AT_Cmd_Ongoing = WIFI_FALSE; |
mridup | 0:dc55f40eb04f | 1045 | |
mridup | 0:dc55f40eb04f | 1046 | return status; |
mridup | 0:dc55f40eb04f | 1047 | } |
mridup | 0:dc55f40eb04f | 1048 | |
mridup | 0:dc55f40eb04f | 1049 | /** |
mridup | 0:dc55f40eb04f | 1050 | * @brief SET_WiFi_IBSS_Mode |
mridup | 0:dc55f40eb04f | 1051 | * Configure Wi-Fi module in IBSS mode |
mridup | 0:dc55f40eb04f | 1052 | * @param SSID : SSID name |
mridup | 0:dc55f40eb04f | 1053 | * @param priv_mode : network privecy mode |
mridup | 0:dc55f40eb04f | 1054 | * @retval WiFi_Status_t : status of AT cmd |
mridup | 0:dc55f40eb04f | 1055 | */ |
mridup | 0:dc55f40eb04f | 1056 | WiFi_Status_t wifi_adhoc_create(uint8_t * ssid, WiFi_Priv_Mode priv_mode) |
mridup | 0:dc55f40eb04f | 1057 | { |
mridup | 0:dc55f40eb04f | 1058 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 1059 | |
mridup | 0:dc55f40eb04f | 1060 | Attention_Cmd(); |
mridup | 0:dc55f40eb04f | 1061 | /* Set the SSID : AT+S.SSIDTXT=<SSID>*/ |
mridup | 0:dc55f40eb04f | 1062 | status = SET_SSID((char*)ssid); |
mridup | 0:dc55f40eb04f | 1063 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1064 | return WiFi_SSID_ERROR; |
mridup | 0:dc55f40eb04f | 1065 | |
mridup | 0:dc55f40eb04f | 1066 | /* Set the network privacy mode : AT+S.SCFG=wifi_priv_mode,0*/ |
mridup | 0:dc55f40eb04f | 1067 | status = SET_Configuration_Value(WIFI_PRIV_MODE, priv_mode); |
mridup | 0:dc55f40eb04f | 1068 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1069 | return WiFi_CONFIG_ERROR; |
mridup | 0:dc55f40eb04f | 1070 | |
mridup | 0:dc55f40eb04f | 1071 | |
mridup | 0:dc55f40eb04f | 1072 | /* Set the network mode (1 = STA, 2 = IBSS, 3 = MiniAP) :: AT+S.SCFG=wifi_mode,2*/ |
mridup | 0:dc55f40eb04f | 1073 | status = SET_Configuration_Value(WIFI_MODE, WiFi_IBSS_MODE); |
mridup | 0:dc55f40eb04f | 1074 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1075 | return WiFi_CONFIG_ERROR; |
mridup | 0:dc55f40eb04f | 1076 | |
mridup | 0:dc55f40eb04f | 1077 | /* Set IP address */ |
mridup | 0:dc55f40eb04f | 1078 | status = SET_Configuration_Addr(WIFI_IP_ADDRESS, WIFI_IBSS_IP_ADDR); |
mridup | 0:dc55f40eb04f | 1079 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1080 | return WiFi_CONFIG_ERROR; |
mridup | 0:dc55f40eb04f | 1081 | |
mridup | 0:dc55f40eb04f | 1082 | /* Set IP default gateway */ |
mridup | 0:dc55f40eb04f | 1083 | status = SET_Configuration_Addr(WIFI_IP_DEFAULT_GATEWAY, WIFI_IBSS_DEFAULT_GATEWAY); |
mridup | 0:dc55f40eb04f | 1084 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1085 | return WiFi_CONFIG_ERROR; |
mridup | 0:dc55f40eb04f | 1086 | |
mridup | 0:dc55f40eb04f | 1087 | |
mridup | 0:dc55f40eb04f | 1088 | /* Set IP DNS */ |
mridup | 0:dc55f40eb04f | 1089 | status = SET_Configuration_Addr(WIFI_IP_DNS, WIFI_IBSS_IP_DNS_ADDR); |
mridup | 0:dc55f40eb04f | 1090 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1091 | return WiFi_CONFIG_ERROR; |
mridup | 0:dc55f40eb04f | 1092 | |
mridup | 0:dc55f40eb04f | 1093 | /* Set IP netmask */ |
mridup | 0:dc55f40eb04f | 1094 | status = SET_Configuration_Addr(WIFI_IP_NETMASK, WIFI_IBSS_IP_MASK); |
mridup | 0:dc55f40eb04f | 1095 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1096 | return WiFi_CONFIG_ERROR; |
mridup | 0:dc55f40eb04f | 1097 | |
mridup | 0:dc55f40eb04f | 1098 | /* Turn OFF the DHCP */ |
mridup | 0:dc55f40eb04f | 1099 | SET_Configuration_Value(IP_USE_DHCP_SERVER, WIFI_IP_USE_DHCP); |
mridup | 0:dc55f40eb04f | 1100 | if(status != WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1101 | return WiFi_CONFIG_ERROR; |
mridup | 0:dc55f40eb04f | 1102 | |
mridup | 0:dc55f40eb04f | 1103 | /* Save the settings on the flash memory : AT&W*/ |
mridup | 0:dc55f40eb04f | 1104 | Save_Current_Setting(); |
mridup | 0:dc55f40eb04f | 1105 | |
mridup | 0:dc55f40eb04f | 1106 | /* Soft reset the module */ |
mridup | 0:dc55f40eb04f | 1107 | SET_Power_State(PowerSave_State); |
mridup | 0:dc55f40eb04f | 1108 | return status; |
mridup | 0:dc55f40eb04f | 1109 | } |
mridup | 0:dc55f40eb04f | 1110 | |
mridup | 0:dc55f40eb04f | 1111 | |
mridup | 0:dc55f40eb04f | 1112 | /** |
mridup | 0:dc55f40eb04f | 1113 | * @brief wifi_standby |
mridup | 0:dc55f40eb04f | 1114 | * Configured WiFi module to enter standby |
mridup | 0:dc55f40eb04f | 1115 | * @param arg_standby_time: standby time |
mridup | 0:dc55f40eb04f | 1116 | * @retval WiFi_Status_t : status of AT cmd |
mridup | 0:dc55f40eb04f | 1117 | */ |
mridup | 0:dc55f40eb04f | 1118 | WiFi_Status_t wifi_standby(uint8_t arg_standby_time) |
mridup | 0:dc55f40eb04f | 1119 | { |
mridup | 0:dc55f40eb04f | 1120 | /* |
mridup | 0:dc55f40eb04f | 1121 | For Standby, the presence of Jumpers on JP4 and JP3 has the following behaviour: |
mridup | 0:dc55f40eb04f | 1122 | JP3 (middle and bottom): prevents standby and immediately wakes-up module |
mridup | 0:dc55f40eb04f | 1123 | JP3 (middle and top): no effect on standby |
mridup | 0:dc55f40eb04f | 1124 | JP4 (middle and right): prevents wakeup and standby runs forever |
mridup | 0:dc55f40eb04f | 1125 | JP4 (middle and left): no effect on standby |
mridup | 0:dc55f40eb04f | 1126 | */ |
mridup | 0:dc55f40eb04f | 1127 | |
mridup | 0:dc55f40eb04f | 1128 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 1129 | |
mridup | 0:dc55f40eb04f | 1130 | /*if(arg_standby_time<2) |
mridup | 0:dc55f40eb04f | 1131 | return WiFi_NOT_SUPPORTED;*/ |
mridup | 0:dc55f40eb04f | 1132 | |
mridup | 0:dc55f40eb04f | 1133 | SET_Configuration_Value(WIFI_SLEEP_ENABLED, 0); |
mridup | 0:dc55f40eb04f | 1134 | SET_Configuration_Value(WIFI_STANDBY_ENABLED, 1); |
mridup | 0:dc55f40eb04f | 1135 | status = SET_Configuration_Value(WIFI_STANDBY_TIME, arg_standby_time); |
mridup | 0:dc55f40eb04f | 1136 | |
mridup | 0:dc55f40eb04f | 1137 | /* save current setting in flash */ |
mridup | 0:dc55f40eb04f | 1138 | Save_Current_Setting(); |
mridup | 0:dc55f40eb04f | 1139 | |
mridup | 0:dc55f40eb04f | 1140 | /* AT : send AT command */ |
mridup | 0:dc55f40eb04f | 1141 | sprintf((char*)WiFi_AT_Cmd_Buff,AT_SET_POWER_STATE,1); //cfun=4 |
mridup | 0:dc55f40eb04f | 1142 | WiFi_Module_State = Process_Event; //make sure the WiFi module is in this state to receive WINDS after wakeup |
mridup | 0:dc55f40eb04f | 1143 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 1144 | |
mridup | 0:dc55f40eb04f | 1145 | if(status == WiFi_MODULE_SUCCESS)//if transmit is success, prepare for resume |
mridup | 0:dc55f40eb04f | 1146 | { |
mridup | 0:dc55f40eb04f | 1147 | /* |
mridup | 0:dc55f40eb04f | 1148 | status_flag.AT_Cmd_Processing = WIFI_TRUE;//We do not want the next UART data_byte fetch to be done |
mridup | 0:dc55f40eb04f | 1149 | HAL_NVIC_DisableIRQ(USARTx_IRQn);//Disable UART IRQ |
mridup | 0:dc55f40eb04f | 1150 | status_flag.Standby_Timer_Running=WIFI_TRUE; |
mridup | 0:dc55f40eb04f | 1151 | printf("\r\nGoing into Standby Mode...\r\n");*/ |
mridup | 0:dc55f40eb04f | 1152 | } |
mridup | 0:dc55f40eb04f | 1153 | |
mridup | 0:dc55f40eb04f | 1154 | return status; |
mridup | 0:dc55f40eb04f | 1155 | |
mridup | 0:dc55f40eb04f | 1156 | } |
mridup | 0:dc55f40eb04f | 1157 | |
mridup | 0:dc55f40eb04f | 1158 | /** |
mridup | 0:dc55f40eb04f | 1159 | * @brief wifi_wakeup |
mridup | 0:dc55f40eb04f | 1160 | * wakeup the module from sleep by setting the GPIO6 through PC13 |
mridup | 0:dc55f40eb04f | 1161 | * or allow it to go to sleep |
mridup | 0:dc55f40eb04f | 1162 | * Jumper needed on JP4 |
mridup | 0:dc55f40eb04f | 1163 | * @param wakeup wakeup (WIFI_TRUE) or allow sleep(WIFI_FALSE) |
mridup | 0:dc55f40eb04f | 1164 | * @retval WiFi_Status_t : status of function call |
mridup | 0:dc55f40eb04f | 1165 | */ |
mridup | 0:dc55f40eb04f | 1166 | WiFi_Status_t wifi_wakeup(wifi_bool wakeup) |
mridup | 0:dc55f40eb04f | 1167 | { |
mridup | 0:dc55f40eb04f | 1168 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 1169 | |
mridup | 0:dc55f40eb04f | 1170 | if(wakeup) |
mridup | 1:bd9db471d47d | 1171 | callSpwfSADevice_wakeup(spwf_device_class, 0); |
mridup | 0:dc55f40eb04f | 1172 | else |
mridup | 0:dc55f40eb04f | 1173 | callSpwfSADevice_wakeup(spwf_device_class, 0); |
mridup | 0:dc55f40eb04f | 1174 | wait_ms(100); |
mridup | 0:dc55f40eb04f | 1175 | return status; |
mridup | 0:dc55f40eb04f | 1176 | } |
mridup | 0:dc55f40eb04f | 1177 | |
mridup | 0:dc55f40eb04f | 1178 | |
mridup | 0:dc55f40eb04f | 1179 | /** |
mridup | 0:dc55f40eb04f | 1180 | * @brief wifi_disconnect |
mridup | 0:dc55f40eb04f | 1181 | * disconnect the module from any AP |
mridup | 0:dc55f40eb04f | 1182 | * @param None |
mridup | 0:dc55f40eb04f | 1183 | * @retval WiFi_Status_t : status of AT cmd |
mridup | 0:dc55f40eb04f | 1184 | */ |
mridup | 0:dc55f40eb04f | 1185 | WiFi_Status_t wifi_disconnect(void) |
mridup | 0:dc55f40eb04f | 1186 | { |
mridup | 0:dc55f40eb04f | 1187 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 1188 | |
mridup | 5:c83ffd44f40a | 1189 | //Wait till all queued events are executed |
mridup | 5:c83ffd44f40a | 1190 | while(!event_empty(&event_buff)); |
mridup | 5:c83ffd44f40a | 1191 | Wait_For_Sock_Read_To_Complete(); |
mridup | 5:c83ffd44f40a | 1192 | |
mridup | 0:dc55f40eb04f | 1193 | /* Set wifi_mode to idle*/ |
mridup | 0:dc55f40eb04f | 1194 | status = SET_Configuration_Value(WIFI_MODE, WiFi_IDLE_MODE); |
mridup | 0:dc55f40eb04f | 1195 | |
mridup | 0:dc55f40eb04f | 1196 | /*If module was connected, reset the status*/ |
mridup | 0:dc55f40eb04f | 1197 | if(wifi_connected == 1) |
mridup | 0:dc55f40eb04f | 1198 | { |
mridup | 0:dc55f40eb04f | 1199 | wifi_connected = 0;//this will allow the TIM handler to make the callback on connection(WiFiUp) |
mridup | 0:dc55f40eb04f | 1200 | } |
mridup | 0:dc55f40eb04f | 1201 | |
mridup | 0:dc55f40eb04f | 1202 | /* save current setting in flash */ |
mridup | 0:dc55f40eb04f | 1203 | Save_Current_Setting(); |
mridup | 0:dc55f40eb04f | 1204 | |
mridup | 0:dc55f40eb04f | 1205 | /* Soft reset the module */ |
mridup | 0:dc55f40eb04f | 1206 | status = SET_Power_State(PowerSave_State);//CFUN=1 |
mridup | 0:dc55f40eb04f | 1207 | |
mridup | 0:dc55f40eb04f | 1208 | return status; |
mridup | 0:dc55f40eb04f | 1209 | } |
mridup | 0:dc55f40eb04f | 1210 | |
mridup | 0:dc55f40eb04f | 1211 | /** |
mridup | 0:dc55f40eb04f | 1212 | * @brief wifi_enable |
mridup | 0:dc55f40eb04f | 1213 | * Enable/Disable the Wi-Fi interface |
mridup | 0:dc55f40eb04f | 1214 | * @param enable enable Wi-Fi (WIFI_TRUE) disable Wi-Fi (WIFI_FALSE) |
mridup | 0:dc55f40eb04f | 1215 | * @retval WiFi_Status_t : status of AT cmd |
mridup | 0:dc55f40eb04f | 1216 | */ |
mridup | 0:dc55f40eb04f | 1217 | WiFi_Status_t wifi_enable(wifi_bool enable) |
mridup | 0:dc55f40eb04f | 1218 | { |
mridup | 0:dc55f40eb04f | 1219 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 1220 | |
mridup | 0:dc55f40eb04f | 1221 | /* Enable or Disable wifi interface*/ |
mridup | 0:dc55f40eb04f | 1222 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 1223 | sprintf((char*)WiFi_AT_Cmd_Buff,AT_WIFI_ENABLE, enable); |
mridup | 0:dc55f40eb04f | 1224 | |
mridup | 0:dc55f40eb04f | 1225 | /*if(HAL_UART_Transmit(&UartWiFiHandle, (uint8_t *)WiFi_AT_Cmd_Buff, strlen((char*)WiFi_AT_Cmd_Buff),1000)!= HAL_OK) |
mridup | 0:dc55f40eb04f | 1226 | { |
mridup | 0:dc55f40eb04f | 1227 | Error_Handler(); |
mridup | 0:dc55f40eb04f | 1228 | #if DEBUG_PRINT |
mridup | 0:dc55f40eb04f | 1229 | printf("HAL_UART_Transmit Error"); |
mridup | 0:dc55f40eb04f | 1230 | #endif |
mridup | 0:dc55f40eb04f | 1231 | return WiFi_HAL_UART_ERROR; |
mridup | 0:dc55f40eb04f | 1232 | } */ |
mridup | 0:dc55f40eb04f | 1233 | |
mridup | 0:dc55f40eb04f | 1234 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 1235 | |
mridup | 0:dc55f40eb04f | 1236 | //wait for power down/hw started |
mridup | 0:dc55f40eb04f | 1237 | if(enable) |
mridup | 0:dc55f40eb04f | 1238 | while(status_flag.WiFi_Enabled != WIFI_TRUE) |
mridup | 0:dc55f40eb04f | 1239 | { |
mridup | 0:dc55f40eb04f | 1240 | asm("NOP"); |
mridup | 0:dc55f40eb04f | 1241 | } |
mridup | 0:dc55f40eb04f | 1242 | else |
mridup | 0:dc55f40eb04f | 1243 | while(status_flag.WiFi_Enabled != WIFI_FALSE) |
mridup | 0:dc55f40eb04f | 1244 | { |
mridup | 0:dc55f40eb04f | 1245 | asm("NOP"); |
mridup | 0:dc55f40eb04f | 1246 | } |
mridup | 0:dc55f40eb04f | 1247 | |
mridup | 0:dc55f40eb04f | 1248 | return status; |
mridup | 0:dc55f40eb04f | 1249 | |
mridup | 0:dc55f40eb04f | 1250 | } |
mridup | 0:dc55f40eb04f | 1251 | |
mridup | 0:dc55f40eb04f | 1252 | |
mridup | 0:dc55f40eb04f | 1253 | |
mridup | 0:dc55f40eb04f | 1254 | /** |
mridup | 0:dc55f40eb04f | 1255 | * @brief wifi_restore |
mridup | 0:dc55f40eb04f | 1256 | * Restore the Wi-Fi with default values. |
mridup | 0:dc55f40eb04f | 1257 | * @param None |
mridup | 0:dc55f40eb04f | 1258 | * @retval WiFi_Status_t : status of AT cmd |
mridup | 0:dc55f40eb04f | 1259 | */ |
mridup | 0:dc55f40eb04f | 1260 | WiFi_Status_t wifi_restore() |
mridup | 0:dc55f40eb04f | 1261 | { |
mridup | 0:dc55f40eb04f | 1262 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 1263 | |
mridup | 0:dc55f40eb04f | 1264 | /* Restore default setting*/ |
mridup | 0:dc55f40eb04f | 1265 | Restore_Default_Setting(); |
mridup | 0:dc55f40eb04f | 1266 | |
mridup | 0:dc55f40eb04f | 1267 | /* Set wifi_mode to idle*/ |
mridup | 0:dc55f40eb04f | 1268 | SET_Configuration_Value(WIFI_MODE, WiFi_IDLE_MODE); |
mridup | 0:dc55f40eb04f | 1269 | |
mridup | 0:dc55f40eb04f | 1270 | /* set the local echo */ |
mridup | 0:dc55f40eb04f | 1271 | SET_Configuration_Value(LOCALECHO1, 0); |
mridup | 0:dc55f40eb04f | 1272 | |
mridup | 0:dc55f40eb04f | 1273 | /* save current setting in flash */ |
mridup | 0:dc55f40eb04f | 1274 | Save_Current_Setting(); |
mridup | 0:dc55f40eb04f | 1275 | |
mridup | 0:dc55f40eb04f | 1276 | /* Soft reset the module */ |
mridup | 0:dc55f40eb04f | 1277 | status = SET_Power_State(PowerSave_State);//CFUN=1 |
mridup | 0:dc55f40eb04f | 1278 | |
mridup | 0:dc55f40eb04f | 1279 | return status; |
mridup | 0:dc55f40eb04f | 1280 | } |
mridup | 0:dc55f40eb04f | 1281 | |
mridup | 0:dc55f40eb04f | 1282 | /*GPIO Configuration Functions*/ |
mridup | 0:dc55f40eb04f | 1283 | |
mridup | 0:dc55f40eb04f | 1284 | /** |
mridup | 0:dc55f40eb04f | 1285 | * @brief wifi_gpio_init |
mridup | 0:dc55f40eb04f | 1286 | * Configure a GPIO pin as in or out with IRQ setting |
mridup | 0:dc55f40eb04f | 1287 | * @param pin GPIO pin number |
mridup | 0:dc55f40eb04f | 1288 | * @param irq configuration of the pin |
mridup | 0:dc55f40eb04f | 1289 | * @retval WiFi_Status_t : status of AT cmd |
mridup | 0:dc55f40eb04f | 1290 | */ |
mridup | 0:dc55f40eb04f | 1291 | uint8_t wifi_gpio_init(GpioPin pin, char* dir, char irq) |
mridup | 0:dc55f40eb04f | 1292 | { |
mridup | 0:dc55f40eb04f | 1293 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 1294 | |
mridup | 0:dc55f40eb04f | 1295 | /* AT+S.GPIOC=pin,dir,irq */ |
mridup | 0:dc55f40eb04f | 1296 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 1297 | |
mridup | 0:dc55f40eb04f | 1298 | memset(WiFi_AT_Cmd_Buff, 0x00, sizeof WiFi_AT_Cmd_Buff); |
mridup | 0:dc55f40eb04f | 1299 | |
mridup | 0:dc55f40eb04f | 1300 | if(irq!=GPIO_Off) |
mridup | 0:dc55f40eb04f | 1301 | sprintf((char*)WiFi_AT_Cmd_Buff,"AT+S.GPIOC=%d,%s,%c\r", pin, dir, irq); |
mridup | 0:dc55f40eb04f | 1302 | else |
mridup | 0:dc55f40eb04f | 1303 | sprintf((char*)WiFi_AT_Cmd_Buff,"AT+S.GPIOC=%d,%s\r", pin, dir); |
mridup | 0:dc55f40eb04f | 1304 | |
mridup | 0:dc55f40eb04f | 1305 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 1306 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1307 | { |
mridup | 0:dc55f40eb04f | 1308 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 1309 | } |
mridup | 0:dc55f40eb04f | 1310 | |
mridup | 0:dc55f40eb04f | 1311 | |
mridup | 0:dc55f40eb04f | 1312 | return status; |
mridup | 0:dc55f40eb04f | 1313 | |
mridup | 0:dc55f40eb04f | 1314 | } |
mridup | 0:dc55f40eb04f | 1315 | |
mridup | 0:dc55f40eb04f | 1316 | /** |
mridup | 0:dc55f40eb04f | 1317 | * @brief wifi_gpio_read |
mridup | 0:dc55f40eb04f | 1318 | * Read the configuration of a GPIO pin |
mridup | 0:dc55f40eb04f | 1319 | * @param pin GPIO pin number |
mridup | 0:dc55f40eb04f | 1320 | * @param val value returned |
mridup | 0:dc55f40eb04f | 1321 | * @param dir configuration direction returned |
mridup | 0:dc55f40eb04f | 1322 | * @retval WiFi_Status_t : status of AT cmd |
mridup | 0:dc55f40eb04f | 1323 | */ |
mridup | 0:dc55f40eb04f | 1324 | uint8_t wifi_gpio_read(GpioPin pin, uint8_t *val, uint8_t *dir) |
mridup | 0:dc55f40eb04f | 1325 | { |
mridup | 0:dc55f40eb04f | 1326 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 1327 | |
mridup | 0:dc55f40eb04f | 1328 | /* AT+S.GPIOR=pin */ |
mridup | 0:dc55f40eb04f | 1329 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 1330 | |
mridup | 0:dc55f40eb04f | 1331 | sprintf((char*)WiFi_AT_Cmd_Buff,"AT+S.GPIOR=%d\r", pin); |
mridup | 0:dc55f40eb04f | 1332 | |
mridup | 0:dc55f40eb04f | 1333 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 1334 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1335 | { |
mridup | 0:dc55f40eb04f | 1336 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 1337 | } |
mridup | 0:dc55f40eb04f | 1338 | *val = gpio_value; |
mridup | 0:dc55f40eb04f | 1339 | *dir = gpio_direc; |
mridup | 0:dc55f40eb04f | 1340 | |
mridup | 0:dc55f40eb04f | 1341 | return status; |
mridup | 0:dc55f40eb04f | 1342 | } |
mridup | 0:dc55f40eb04f | 1343 | |
mridup | 0:dc55f40eb04f | 1344 | /** |
mridup | 0:dc55f40eb04f | 1345 | * @brief wifi_gpio_write |
mridup | 0:dc55f40eb04f | 1346 | * Read the value of a GPIO pin |
mridup | 0:dc55f40eb04f | 1347 | * @param pin GPIO pin number |
mridup | 0:dc55f40eb04f | 1348 | * @param val value to be configured |
mridup | 0:dc55f40eb04f | 1349 | * @retval WiFi_Status_t : status of AT cmd |
mridup | 0:dc55f40eb04f | 1350 | */ |
mridup | 0:dc55f40eb04f | 1351 | uint8_t wifi_gpio_write(GpioPin pin, GpioWriteValue value) |
mridup | 0:dc55f40eb04f | 1352 | { |
mridup | 0:dc55f40eb04f | 1353 | WiFi_Status_t status = WiFi_MODULE_SUCCESS; |
mridup | 0:dc55f40eb04f | 1354 | |
mridup | 0:dc55f40eb04f | 1355 | /* AT+S.GPIOW=pin,value */ |
mridup | 0:dc55f40eb04f | 1356 | Reset_AT_CMD_Buffer(); |
mridup | 0:dc55f40eb04f | 1357 | |
mridup | 0:dc55f40eb04f | 1358 | sprintf((char*)WiFi_AT_Cmd_Buff,"AT+S.GPIOW=%d,%d\r", pin, value); |
mridup | 0:dc55f40eb04f | 1359 | |
mridup | 0:dc55f40eb04f | 1360 | status = USART_Transmit_AT_Cmd(strlen((char*)WiFi_AT_Cmd_Buff)); |
mridup | 0:dc55f40eb04f | 1361 | if(status == WiFi_MODULE_SUCCESS) |
mridup | 0:dc55f40eb04f | 1362 | { |
mridup | 0:dc55f40eb04f | 1363 | status = USART_Receive_AT_Resp(Process_Event); |
mridup | 0:dc55f40eb04f | 1364 | } |
mridup | 0:dc55f40eb04f | 1365 | |
mridup | 0:dc55f40eb04f | 1366 | return status; |
mridup | 0:dc55f40eb04f | 1367 | } |
mridup | 0:dc55f40eb04f | 1368 | |
mridup | 0:dc55f40eb04f | 1369 | void UART_Configuration(uint32_t baud_rate) |
mridup | 0:dc55f40eb04f | 1370 | { |
mridup | 0:dc55f40eb04f | 1371 | } |
mridup | 0:dc55f40eb04f | 1372 | |
mridup | 0:dc55f40eb04f | 1373 | #ifdef USART_PRINT_MSG |
mridup | 0:dc55f40eb04f | 1374 | void USART_PRINT_MSG_Configuration(uint32_t baud_rate) |
mridup | 0:dc55f40eb04f | 1375 | { |
mridup | 0:dc55f40eb04f | 1376 | } |
mridup | 0:dc55f40eb04f | 1377 | #endif |
mridup | 0:dc55f40eb04f | 1378 | |
mridup | 0:dc55f40eb04f | 1379 | /** |
mridup | 0:dc55f40eb04f | 1380 | * @} |
mridup | 0:dc55f40eb04f | 1381 | */ |
mridup | 0:dc55f40eb04f | 1382 | |
mridup | 0:dc55f40eb04f | 1383 | /** |
mridup | 0:dc55f40eb04f | 1384 | * @} |
mridup | 0:dc55f40eb04f | 1385 | */ |
mridup | 0:dc55f40eb04f | 1386 | |
mridup | 0:dc55f40eb04f | 1387 | |
mridup | 0:dc55f40eb04f | 1388 | /** |
mridup | 0:dc55f40eb04f | 1389 | * @} |
mridup | 0:dc55f40eb04f | 1390 | */ |
mridup | 0:dc55f40eb04f | 1391 | |
mridup | 0:dc55f40eb04f | 1392 | /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/ |
mridup | 0:dc55f40eb04f | 1393 | |
mridup | 0:dc55f40eb04f | 1394 |