Files
QDAC-firmware/libraries/zf_device/zf_device_wifi_uart.c

1214 lines
48 KiB
C
Raw Permalink Normal View History

2023-12-11 21:45:06 +08:00
/*********************************************************************************************************************
* CH32V307VCT6 Opensourec Library <EFBFBD><EFBFBD><EFBFBD><EFBFBD>CH32V307VCT6 <EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹٷ<EFBFBD> SDK <EFBFBD>ӿڵĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>
* Copyright (c) 2022 SEEKFREE <EFBFBD><EFBFBD><EFBFBD>ɿƼ<EFBFBD>
*
* <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>CH32V307VCT6 <EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* CH32V307VCT6 <EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GPL<EFBFBD><EFBFBD>GNU General Public License<EFBFBD><EFBFBD><EFBFBD><EFBFBD> GNUͨ<EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> GPL <EFBFBD>ĵ<EFBFBD>3<EFBFBD><EFBFBD><EFBFBD> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD>
*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<EFBFBD>֤
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><EFBFBD>ʺ<EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
*
* <EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<EFBFBD>յ<EFBFBD>һ<EFBFBD><EFBFBD> GPL <EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD> GPL3.0 <EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤Э<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>İ
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><EFBFBD><EFBFBD> libraries/doc <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <EFBFBD>ļ<EFBFBD>
* <EFBFBD><EFBFBD>ӭ<EFBFBD><EFBFBD>λʹ<EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<EFBFBD><EFBFBD>İ<EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> zf_device_wifi_uart
* <EFBFBD><EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ɶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <EFBFBD><EFBFBD><EFBFBD>Ϣ <EFBFBD> libraries/doc <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> version <EFBFBD>ļ<EFBFBD> <EFBFBD>˵<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MounRiver Studio V1.8.1
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨ CH32V307VCT6
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <EFBFBD>޸ļ<EFBFBD>¼
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ע
* 2022-09-15 <EFBFBD><EFBFBD>W first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><EFBFBD>
* ------------------------------------
* ģ<EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD> <EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD>
* RX <EFBFBD> zf_device_wifi_uart.h <EFBFBD><EFBFBD> WRIELESS_UART_RX_PINx <EFBFBD><EFBFBD><EFBFBD>
* TX <EFBFBD> zf_device_wifi_uart.h <EFBFBD><EFBFBD> WRIELESS_UART_TX_PINx <EFBFBD><EFBFBD><EFBFBD>
* RTS <EFBFBD> zf_device_wifi_uart.h <EFBFBD><EFBFBD> WRIELESS_UART_RTS_PINx <EFBFBD><EFBFBD><EFBFBD>
* RST <EFBFBD> zf_device_wifi_uart.h <EFBFBD><EFBFBD> WRIELESS_UART_RST_PINx <EFBFBD><EFBFBD><EFBFBD>
* VCC 5V <EFBFBD><EFBFBD>Դ
* GND <EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ------------------------------------
*********************************************************************************************************************/
#include "zf_common_clock.h"
#include "zf_common_debug.h"
#include "zf_common_fifo.h"
#include "zf_common_function.h"
#include "zf_driver_delay.h"
#include "zf_driver_gpio.h"
#include "zf_driver_uart.h"
#include "zf_device_type.h"
#include "zf_device_wifi_uart.h"
#define WAIT_TIME_OUT (10000) // <20><>ָ<EFBFBD><D6B8><EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB>ms
wifi_uart_information_struct wifi_uart_information; // ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static fifo_struct wifi_uart_fifo;
static uint8 wifi_uart_buffer[WIFI_UART_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 wifi_uart_data;
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *wait_buffer <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> timeout <20><>ʱʱ<CAB1><CAB1>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧָ<D3A6><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31>ģ<EFBFBD><C4A3>δ<EFBFBD><CEB4>Ӧָ<D3A6><D6B8><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>ʱ
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
static uint8 wifi_uart_wait_ack (char *wait_buffer, uint32 timeout)
{
uint8 return_state = 1;
char receiver_buffer[8] = {0, 0, 0, 0, 0, 0, 0, 0};
uint32 receiver_len = 8;
do
{
system_delay_ms(1);
// <20>жϽ<D0B6><CFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>Ӧ<EFBFBD><D3A6>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>0
receiver_len = 8;
fifo_read_tail_buffer(&wifi_uart_fifo, (uint8 *)receiver_buffer, &receiver_len, FIFO_READ_ONLY);
if(strstr(receiver_buffer, wait_buffer))
{
return_state = 0;
break;
}
else if(strstr(receiver_buffer, "ERROR") || strstr(receiver_buffer, "busy"))
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>æ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>1
return_state = 1;
break;
}
}while(timeout --);
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_clear_receive_buffer();
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
static void wifi_uart_clear_receive_buffer (void)
{
// <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
fifo_clear(&wifi_uart_fifo);
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *target_buffer Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ַָ<D6B7><D6B8> <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *origin_buffer <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ַָ<D6B7><D6B8> <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> start_char <20><>ʼ<EFBFBD><CABC>ȡ<EFBFBD>ֽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "1234" <20>д<EFBFBD> '2' <20><>ʼ<EFBFBD><CABC>ȡ <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '2'
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> end_char <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "1234" <20><><EFBFBD><EFBFBD> '4' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '\0'(0x00 <20><><EFBFBD>ַ<EFBFBD> һ<><D2BB><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>β)
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_data_parse(wifi_uart_information.mac, wifi_uart_receive_buffer, '"', '"'); // <20><><EFBFBD>û<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>mac<61><63>ַ<EFBFBD>󣬵<EFBFBD><F3A3ACB5>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD>ȡmac<61><63>ַ
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
static uint8 wifi_data_parse (uint8 *target_buffer, uint8 *origin_buffer, char start_char, char end_char)
{
uint8 return_state = 0;
char *location1 = NULL;
char *location2 = NULL;
location1 = strchr((char *)origin_buffer, start_char);
if(location1)
{
location1 ++;
location2 = strchr(location1, end_char);
if(location2)
{
memcpy(target_buffer, location1, location2-location1);
}
else
{
return_state = 1;
}
}
else
{
return_state = 1;
}
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>鿴ģ<E9BFB4><C4A3><EFBFBD><EFBFBD><E6B1BE>Ϣ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_get_version();
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
static uint8 wifi_uart_get_version (void)
{
char *location1 = NULL;
uint8 return_state = 0;
uint8 receiver_buffer[256];
uint32 receiver_len = 256;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+GMR\r\n");
do
{
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT))
{
return_state = 1;
break;
}
fifo_read_buffer(&wifi_uart_fifo, receiver_buffer, &receiver_len, FIFO_READ_ONLY);
location1 = strrchr((char *)receiver_buffer, ':');
if(wifi_data_parse(wifi_uart_information.wifi_uart_version, (uint8 *)location1, ':', '('))
{
return_state = 1;
break;
}
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> model 0:<3A>ر<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Ļ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>д
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_echo_set("1");//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
static uint8 wifi_uart_echo_set (char *model)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "ATE");
uart_write_string(WIFI_UART_INDEX, model);
uart_write_string(WIFI_UART_INDEX, "\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> baudrate <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֧<>ַ<EFBFBD>ΧΪ 80 ~ 5000000
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> databits <20><><EFBFBD><EFBFBD>λ 5<><35>5 bit <20><><EFBFBD><EFBFBD>λ----6<><36>6 bit <20><><EFBFBD><EFBFBD>λ----7<><37>7 bit <20><><EFBFBD><EFBFBD>λ----8<><38>8 bit <20><><EFBFBD><EFBFBD>λ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> stopbits ֹͣλ 1<><31>1 bit ֹͣλ----2<><32>1.5 bit ֹͣλ----3<><33>2 bit ֹͣλ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> parity У<><D0A3>λ 0<><30>None----1<><31>Odd----2<><32>Even
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> flow_control <20><><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>----1<><31>ʹ<EFBFBD><CAB9> RTS----2<><32>ʹ<EFBFBD><CAB9> CTS----3<><33>ͬʱʹ<CAB1><CAB9> RTS <20><> CTS
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_uart_config_set("115200", "8", "1", "0", "1");
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7B2BB><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
static uint8 wifi_uart_uart_config_set (char *baudrate, char *databits, char *stopbits, char *parity, char *flow_control)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+UART_CUR=");
uart_write_string(WIFI_UART_INDEX, baudrate);
uart_write_string(WIFI_UART_INDEX, ",");
uart_write_string(WIFI_UART_INDEX, databits);
uart_write_string(WIFI_UART_INDEX, ",");
uart_write_string(WIFI_UART_INDEX, stopbits);
uart_write_string(WIFI_UART_INDEX, ",");
uart_write_string(WIFI_UART_INDEX, parity);
uart_write_string(WIFI_UART_INDEX, ",");
uart_write_string(WIFI_UART_INDEX, flow_control);
uart_write_string(WIFI_UART_INDEX, "\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѯģ<D1AF><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> MAC <20><>ַ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> if(wifi_uart_get_mac()){}
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
static uint8 wifi_uart_get_mac (void)
{
uint8 return_state = 0;
uint8 receiver_buffer[64];
uint32 receiver_len = 64;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPAPMAC?\r\n");
do
{
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT))
{
return_state = 1;
break;
}
fifo_read_buffer(&wifi_uart_fifo, receiver_buffer, &receiver_len, FIFO_READ_ONLY);
if(wifi_data_parse(wifi_uart_information.wifi_uart_mac, receiver_buffer, '"', '"'))
{
return_state = 1;
break;
}
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѯģ<D1AF><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>WIFI <20><> IP <20><>ַ(ȡ<><C8A1><EFBFBD><EFBFBD>ģ<EFBFBD>鵱ǰ<E9B5B1>Ĺ<EFBFBD><C4B9><EFBFBD>ģʽ)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> if(wifi_uart_get_ip()){}
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
static uint8 wifi_uart_get_ip (void)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(WIFI_UART_STATION == wifi_uart_information.wifi_uart_mode)
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPSTA?\r\n");
}
else if(WIFI_UART_SOFTAP == wifi_uart_information.wifi_uart_mode)
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPAP?\r\n");
}
do
{
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT))
{
return_state = 1;
break;
}
uint8 receiver_buffer[128];
uint32 receiver_len = 128;
fifo_read_buffer(&wifi_uart_fifo, receiver_buffer, &receiver_len, FIFO_READ_ONLY);
if(wifi_data_parse(wifi_uart_information.wifi_uart_local_ip, receiver_buffer, '"', '"'))
{
return_state = 1;
break;
}
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѯģ<D1AF><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> if(wifi_uart_get_information()){}
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
static uint8 wifi_uart_get_information (void)
{
uint8 return_state = 0;
do
{
// <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD><E6B1BE>
if(wifi_uart_get_version())
{
return_state = 1;
break;
}
// <20><>ȡģ<C8A1><C4A3>IP<49><50>ַ
if(wifi_uart_get_ip())
{
return_state = 1;
break;
}
// <20><>ȡģ<C8A1><C4A3>MAC<41><43>Ϣ
if(wifi_uart_get_mac())
{
return_state = 1;
break;
}
memcpy(wifi_uart_information.wifi_uart_local_port, "no port", 7);
}while(0);
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> WiFi
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> wifi_ssid WiFi<46><69><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> pass_word WiFi<46><69><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> model 0:<3A><>ѯWiFi<46><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WiFi
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_get_or_connect_wifi("WiFi_name", "Pass_word", 1);
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
static uint8 wifi_uart_set_wifi (char *wifi_ssid, char *pass_word)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(WIFI_UART_SOFTAP == wifi_uart_information.wifi_uart_mode)
{
uart_write_string(WIFI_UART_INDEX, "AT+CWSAP=\"");
uart_write_string(WIFI_UART_INDEX, wifi_ssid);
uart_write_string(WIFI_UART_INDEX, "\",\"");
uart_write_string(WIFI_UART_INDEX, pass_word);
uart_write_string(WIFI_UART_INDEX, "\",5,3\r\n");
}
else
{
uart_write_string(WIFI_UART_INDEX, "AT+CWJAP=\"");
uart_write_string(WIFI_UART_INDEX, wifi_ssid);
uart_write_string(WIFI_UART_INDEX, "\",\"");
uart_write_string(WIFI_UART_INDEX, pass_word);
uart_write_string(WIFI_UART_INDEX, "\"\r\n");
}
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϵ<EFBFBD><CFB5>Ƿ<EFBFBD><C7B7>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>WiFi
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> model 0:<3A>ϵ粻<CFB5>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>wifi <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>wifi
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_auto_connect_wifi(0); //<2F>ϵ粻<CFB5>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>wifi
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
static uint8 wifi_uart_auto_connect_wifi (char *model)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CWAUTOCONN=");
uart_write_string(WIFI_UART_INDEX, model);
uart_write_string(WIFI_UART_INDEX, "\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> model 0: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_set_connect_model("1");
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
static uint8 wifi_uart_set_connect_model (char *model)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPMUX=");
uart_write_string(WIFI_UART_INDEX, model);
uart_write_string(WIFI_UART_INDEX, "\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ģʽ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> model <20>C 0: <20><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ģʽ IP<49>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>C 1: Wi-Fi ͸<><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7> TCP <20><><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>UDP <20>̶<EFBFBD>ͨ<EFBFBD>ŶԶˡ<D4B6>SSL <20><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD> IP<49>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>ϳ<EFBFBD><CFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_set_transfer_model("1");
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
static uint8 wifi_uart_set_transfer_model (char *model)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPMODE=");
uart_write_string(WIFI_UART_INDEX, model);
uart_write_string(WIFI_UART_INDEX, "\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_soft_reset();
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_soft_reset (void)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "+++");
system_delay_ms(100);
uart_write_string(WIFI_UART_INDEX, "\r\n");
system_delay_ms(100);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+RST\r\n");
return_state = wifi_uart_wait_ack("ready", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>λ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_reset();
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_reset (void)
{
#if WIFI_UART_HARDWARE_RST
uint8 return_state = 0;
gpio_set_level(WIFI_UART_RST_PIN, 0);
system_delay_ms(50);
gpio_set_level(WIFI_UART_RST_PIN, 1);
system_delay_ms(200);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return_state = wifi_uart_wait_ack("ready", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
#else
return wifi_uart_soft_reset();
#endif
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>ģʽ (Station/SoftAP/Station+SoftAP)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> state 0:<3A><> Wi-Fi ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD>ҹر<D2B9> Wi-Fi RF----1: Station ģʽ----2: SoftAP ģʽ----3: SoftAP+Station ģʽ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_set_model("1");
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_set_model (wifi_uart_mode_enum mode)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(WIFI_UART_SOFTAP == mode)
{
uart_write_string(WIFI_UART_INDEX, "AT+CWMODE=2\r\n");
}
else
{
uart_write_string(WIFI_UART_INDEX, "AT+CWMODE=1\r\n");
}
// <20><><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><E9B9A4>ģʽ
wifi_uart_information.wifi_uart_mode = mode;
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ͽ<EFBFBD><CFBF><EFBFBD>wifi<66><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_disconnected_wifi();
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_disconnected_wifi (void)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CWQAP\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8>ģʽ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_entry_serianet();
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_entry_serianet (void)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPSEND\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˳<EFBFBD>͸<EFBFBD><CDB8>ģʽ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_exit_serianet();
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_exit_serianet (void)
{
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
system_delay_ms(20);
uart_write_string(WIFI_UART_INDEX, "+++");
system_delay_ms(1000);
return 0;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>TCP<43><50><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ip Զ<><D4B6> IPv4 <20><>ַ<EFBFBD><D6B7>IPv6 <20><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> port Զ<>˶˿<CBB6>ֵ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_connect_tcp_servers("192.168.101.110", "8080");
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2>ϵ<EFBFBD><CFB5>Ե<EFBFBD>TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>WiFi<46><69><EFBFBD><EFBFBD> <20><><EFBFBD>ܻᵼ<DCBB><E1B5BC>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4>ϳ<EFBFBD>ʱ<EFBFBD><CAB1>
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_connect_tcp_servers (char *ip, char *port, wifi_uart_transfer_mode_enum mode)
{
zf_assert(NULL != ip);
zf_assert(NULL != port);
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
do
{
if(wifi_uart_set_connect_model("0"))
{
return_state = 1;
break;
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPSTARTEX=\"TCP\",\"");
uart_write_string(WIFI_UART_INDEX, ip);
uart_write_string(WIFI_UART_INDEX, "\",");
uart_write_string(WIFI_UART_INDEX, port);
uart_write_string(WIFI_UART_INDEX, "\r\n");
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT))
{
return_state = 1;
wifi_uart_information.wifi_uart_connect_state = WIFI_UART_SERVER_OFF;
break;
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ģʽ
if(wifi_uart_set_transfer_model(WIFI_UART_COMMAND == mode ? "0" : "1"))
{
return_state = 1;
break;
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPSTATE?\r\n");
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT))
{
return_state = 1;
break;
}
else
{
uint8 receiver_buffer[128];
uint32 receiver_len = 128;
fifo_read_buffer(&wifi_uart_fifo, receiver_buffer, &receiver_len, FIFO_READ_ONLY);
char* buffer_index = (char *)receiver_buffer;
char* end_index = NULL;
buffer_index += 22;
buffer_index += strlen(ip);
buffer_index += strlen(port);
end_index = strchr(buffer_index, ',');
memcpy(wifi_uart_information.wifi_uart_local_port, " ", 7);
memcpy(wifi_uart_information.wifi_uart_local_port, buffer_index, (end_index - buffer_index));
}
wifi_uart_information.wifi_uart_connect_state = WIFI_UART_SERVER_ON;
wifi_uart_information.wifi_uart_connect_mode = WIFI_UART_TCP_CLIENT;
wifi_uart_information.wifi_uart_transfer_mode = mode;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(WIFI_UART_SERIANET == mode) // ͸<><CDB8>ģʽ<C4A3><CABD>ֱ<EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>͸<EFBFBD><CDB8>
{
if(wifi_uart_entry_serianet())
{
return_state = 1;
break;
}
}
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>UDP<44><50><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ip Զ<><D4B6> IPv4 <20><>ַ<EFBFBD><D6B7>IPv6 <20><>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *port Զ<>˶˿<CBB6>ֵ <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *local_port Զ<><D4B6> IPv4 <20><>ַ<EFBFBD><D6B7>IPv6 <20><>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> mode ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>ģʽ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_connect_udp_client("192.168.101.110", "8080", "8080", WIFI_UART_COMMAND);
// <20><>ע<EFBFBD><D7A2>Ϣ <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>ID
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_connect_udp_client (char *ip, char *port, char *local_port, wifi_uart_transfer_mode_enum mode)
{
zf_assert(NULL != ip);
zf_assert(NULL != port);
zf_assert(NULL != local_port);
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
do
{
if(wifi_uart_set_connect_model("0"))
{
return_state = 1;
break;
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPSTARTEX=\"UDP\",\"");
uart_write_string(WIFI_UART_INDEX, ip);
uart_write_string(WIFI_UART_INDEX, "\",");
uart_write_string(WIFI_UART_INDEX, port);
uart_write_string(WIFI_UART_INDEX, ",");
uart_write_string(WIFI_UART_INDEX, local_port);
uart_write_string(WIFI_UART_INDEX, "\r\n");
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT))
{
return_state = 1;
wifi_uart_information.wifi_uart_connect_state = WIFI_UART_SERVER_OFF;
break;
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(wifi_uart_set_transfer_model(WIFI_UART_COMMAND == mode ? "0" : "1")) // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ģʽ
{
return_state = 1;
break;
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(WIFI_UART_SERIANET == mode) // ͸<><CDB8>ģʽ<C4A3><CABD>ֱ<EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>͸<EFBFBD><CDB8>
{
if(wifi_uart_entry_serianet())
{
return_state = 1;
break;
}
}
memcpy(wifi_uart_information.wifi_uart_local_port, " ", 7);
memcpy(wifi_uart_information.wifi_uart_local_port, local_port, strlen(local_port));
wifi_uart_information.wifi_uart_connect_state = WIFI_UART_SERVER_ON;
wifi_uart_information.wifi_uart_connect_mode = WIFI_UART_UDP_CLIENT;
wifi_uart_information.wifi_uart_transfer_mode = mode;
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD> TCP Server ʹ<>ñ<EFBFBD><C3B1>ӿڽ<D3BF><DABD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_disconnect_link();
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_disconnect_link (void)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
do
{
if(WIFI_UART_TCP_SERVER == wifi_uart_information.wifi_uart_connect_mode)
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPCLOSE=5\r\n");
}
else
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPCLOSE\r\n");
}
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT))
{
return_state = 1;
wifi_uart_information.wifi_uart_connect_state = WIFI_UART_SERVER_OFF;
break;
}
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TCP Server <20>Ͽ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TCP/UDP Client <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>Ӧ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> link_id <20><>Ҫ<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_disconnect_link_with_id(WIFI_UART_LINK_0);
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_disconnect_link_with_id (wifi_uart_link_id_enum link_id)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
do
{
if(WIFI_UART_TCP_SERVER == wifi_uart_information.wifi_uart_connect_mode)
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPCLOSE=");
uart_write_byte(WIFI_UART_INDEX, link_id + 0x30);
uart_write_string(WIFI_UART_INDEX, "\r\n");
}
else
{
break;
}
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT))
{
return_state = 1;
wifi_uart_information.wifi_uart_connect_state = WIFI_UART_SERVER_OFF;
break;
}
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TCP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *port <20>˿<EFBFBD>ֵ <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_entry_tcp_servers("80");
// <20><>ע<EFBFBD><D7A2>Ϣ <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>ID
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_entry_tcp_servers (char *port)
{
zf_assert(NULL != port);
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
do
{
if(wifi_uart_set_transfer_model("0")) // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ģʽΪ<CABD><CEAA>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ģʽ
{
return_state = 1;
break;
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(wifi_uart_set_connect_model("1")) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽΪ<CABD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
{
return_state = 1;
break;
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPSERVER=1,");
uart_write_string(WIFI_UART_INDEX, port);
uart_write_string(WIFI_UART_INDEX, "\r\n");
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT))
{
return_state = 1;
wifi_uart_information.wifi_uart_connect_state = WIFI_UART_SERVER_OFF;
break;
}
memcpy(wifi_uart_information.wifi_uart_local_port, " ", 7);
memcpy(wifi_uart_information.wifi_uart_local_port, port, strlen(port));
wifi_uart_information.wifi_uart_connect_state = WIFI_UART_SERVER_ON;
wifi_uart_information.wifi_uart_transfer_mode = WIFI_UART_COMMAND;
wifi_uart_information.wifi_uart_connect_mode = WIFI_UART_TCP_SERVER;
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ر<EFBFBD> TCP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_exit_tcp_servers();
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_exit_tcp_servers (void)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPSERVER=0,1\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TCP Server ģʽ<C4A3>¼<EFBFBD><C2BC>鵱ǰ<E9B5B1><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȡ IP
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_tcp_servers_check_link();
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_tcp_servers_check_link (void)
{
uint8 return_value = 0;
uint8 loop_temp = 0;
uint8 linke_index = 0;
uint8 receiver_buffer[256];
uint32 receiver_len = 256;
char* buffer_index = NULL;
char* start_index = NULL;
char* end_index = NULL;
for(loop_temp = 0; 5 > loop_temp; loop_temp ++)
{
memset(wifi_uart_information.wifi_uart_remote_ip[loop_temp], 0, 15);
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPSTATE?\r\n");
if(0 == wifi_uart_wait_ack("OK", WAIT_TIME_OUT))
{
fifo_read_buffer(&wifi_uart_fifo, receiver_buffer, &receiver_len, FIFO_READ_ONLY);
buffer_index = (char *)receiver_buffer;
for(loop_temp = 0; 5 > loop_temp; loop_temp ++)
{
start_index = strchr(buffer_index, ':');
if(NULL == start_index)
{
break;
}
start_index ++;
linke_index = *(start_index) - 0x30;
start_index += 9;
end_index = strchr((const char *)(start_index), '"');
memset(wifi_uart_information.wifi_uart_remote_ip[linke_index], 0, 15);
memcpy(wifi_uart_information.wifi_uart_remote_ip[linke_index], start_index, (end_index - start_index));
buffer_index = end_index;
}
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_value;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WiFi ģ<><C4A3> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_send_buffer("123", 3);
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ΪTCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD>Ĭ<EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Ŀͻ<C4BF><CDBB><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
uint32 wifi_uart_send_buffer (const uint8 *buffer, uint32 len)
{
zf_assert(NULL != buffer);
int32 timeout = WAIT_TIME_OUT;
char lenth[32] = {0};
if(WIFI_UART_SERVER_ON == wifi_uart_information.wifi_uart_connect_state)
{
if(WIFI_UART_COMMAND == wifi_uart_information.wifi_uart_transfer_mode)
{
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
func_int_to_str(lenth,len);
if(8192 < len)
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPSENDL=");
}
else
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPSEND=");
}
if(WIFI_UART_TCP_SERVER == wifi_uart_information.wifi_uart_connect_mode)
{
uart_write_string(WIFI_UART_INDEX, "0,");
}
uart_write_string(WIFI_UART_INDEX, lenth);
uart_write_string(WIFI_UART_INDEX, "\r\n");
if(0 == wifi_uart_wait_ack("OK", WAIT_TIME_OUT)) // <20>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ
{
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_buffer(WIFI_UART_INDEX, buffer, len);
if(0 == wifi_uart_wait_ack("OK", WAIT_TIME_OUT)) // <20>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ
{
len = 0;
}
}
}
else
{
while(len --)
{
while(gpio_get_level(WIFI_UART_RTS_PIN) && 0 < timeout -- ); // <20><><EFBFBD><EFBFBD>RTSΪ<53>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(0 >= timeout)
{
break;
}
uart_write_byte(WIFI_UART_INDEX, *buffer); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
buffer ++;
}
}
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return len;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WiFi ģ<><C4A3><EFBFBD><EFBFBD>Ϊ TCP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ָ<EFBFBD><D6B8>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><E8B1B8><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> id Ŀ<><C4BF> client id
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0);
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ΪTCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD>Ĭ<EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Ŀͻ<C4BF><CDBB><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id)
{
zf_assert(NULL != buff);
char lenth[32] = {0};
if( WIFI_UART_COMMAND == wifi_uart_information.wifi_uart_transfer_mode && \
WIFI_UART_TCP_SERVER == wifi_uart_information.wifi_uart_connect_mode)
{
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
func_int_to_str(lenth,len);
if(8192 < len)
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPSENDL=");
}
else
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPSEND=");
}
uart_write_byte(WIFI_UART_INDEX, (id + '0'));
uart_write_string(WIFI_UART_INDEX, ",");
uart_write_string(WIFI_UART_INDEX, lenth);
uart_write_string(WIFI_UART_INDEX, "\r\n");
if(0 == wifi_uart_wait_ack("OK", WAIT_TIME_OUT)) // <20>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ
{
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_buffer(WIFI_UART_INDEX, buff, len);
if(0 == wifi_uart_wait_ack("OK", WAIT_TIME_OUT)) // <20>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ
{
len = 0;
}
}
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return len;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WiFi ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> buffer <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĴ<DDB5><C4B4>ŵ<EFBFBD>ַ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>sizeof<6F><66><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʽ<EFBFBD><CABD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer));
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len)
{
zf_assert(NULL != buffer);
uint32 read_len = len;
fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN);
return read_len;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WiFi <20><><EFBFBD>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wireless_uart_callback();
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD> ISR <20>ļ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6><CFB3>򱻵<EFBFBD><F2B1BBB5><EFBFBD>
// <20>ɴ<EFBFBD><C9B4><EFBFBD><EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> wireless_module_uart_handler() <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD> wireless_module_uart_handler() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
void wifi_uart_callback (void)
{
uart_query_byte(WIFI_UART_INDEX, &wifi_uart_data); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fifo_write_buffer(&wifi_uart_fifo, &wifi_uart_data, 1); // <20><><EFBFBD><EFBFBD> FIFO
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WiFi ģ<><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *wifi_ssid Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD> WiFi <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *pass_word Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD> WiFi <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> wifi_mode ģ<><C4A3><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD> zf_device_wireless_uart.h <20><> wifi_uart_mode_enum ö<><C3B6>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 ģ<><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>״̬ 0-<2D>ɹ<EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_init("SEEKFREE_2.4G", "SEEKFREEV2", WIFI_UART_STATION);
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> zf_device_wireless_uart.h <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>޸<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode)
{
zf_assert(NULL != wifi_ssid);
zf_assert(NULL != pass_word);
char uart_baud[32] = {0};
uint8 return_state = 0;
// <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
set_wireless_type(WIFI_UART, wifi_uart_callback);
fifo_init(&wifi_uart_fifo, FIFO_DATA_8BIT, wifi_uart_buffer, WIFI_UART_BUFFER_SIZE);
gpio_init(WIFI_UART_RTS_PIN, GPI, 0, GPI_PULL_UP); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#if WIFI_UART_HARDWARE_RST
gpio_init(WIFI_UART_RST_PIN, GPO, 1, GPO_PUSH_PULL); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
#endif
uart_init(WIFI_UART_INDEX, 115200, WIFI_UART_RX_PIN, WIFI_UART_TX_PIN); // <20><>ʼ<EFBFBD><CABC>WiFiģ<69><C4A3><EFBFBD><EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
uart_rx_interrupt(WIFI_UART_INDEX, 1);
do
{
if(wifi_uart_reset()) // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
{
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB> RST <20><><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>û<EFBFBD>н<EFBFBD> RST <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>λ
// <20>ͻ<EFBFBD>һֱ<D2BB><D6B1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>λ ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD>λ<EFBFBD>Ļ<EFBFBD><C4BB>Ͷϵ<CDB6><CFB5><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
zf_log(0, "reset failed");
return_state = 1;
break;
}
func_int_to_str(uart_baud, WIFI_UART_BAUD); // <20><><EFBFBD><EFBFBD>WiFiģ<69><C4A3><EFBFBD><EFBFBD>ʹ<EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD>ʲ<EFBFBD><CAB2><EFBFBD>
if(wifi_uart_uart_config_set(uart_baud, "8", "1", "0", "1")) // <20><><EFBFBD>ýӿ<C3BD><D3BF><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>
{
zf_log(0, "set config failed");
return_state = 1;
break;
}
// <20><><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>WiFiģ<69><C4A3><EFBFBD><EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
uart_init(WIFI_UART_INDEX, WIFI_UART_BAUD, WIFI_UART_RX_PIN, WIFI_UART_TX_PIN);
uart_rx_interrupt(WIFI_UART_INDEX, 1);
system_delay_ms(100);
if(wifi_uart_echo_set("0")) // <20>ر<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>д
{
zf_log(0, "exit echo failed");
return_state = 1;
break;
}
if(wifi_uart_auto_connect_wifi("0")) // <20>ر<EFBFBD><D8B1>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
{
zf_log(0, "close auto connect failed");
return_state = 1;
break;
}
if(wifi_uart_set_model(wifi_mode)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
{
zf_log(0, "set run mode failed");
return_state = 1;
break;
}
if(wifi_uart_set_wifi((char *)wifi_ssid, (char *)pass_word)) // <20><><EFBFBD><EFBFBD> wifi <20><><EFBFBD>߿<EFBFBD><DFBF><EFBFBD><EFBFBD>ȵ<EFBFBD>
{
zf_log(0, "wifi set failed");
return_state = 1;
break;
}
if(wifi_uart_get_information()) // ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
{
zf_log(0, "get module information failed");
return_state = 1;
break;
}
// zf_log(0, "seekfree wifi uart init succeed");
#if WIFI_UART_AUTO_CONNECT == 1
if(wifi_uart_connect_tcp_servers(WIFI_UART_TARGET_IP, WIFI_UART_TARGET_PORT,WIFI_UART_COMMAND)) // <20><><EFBFBD><EFBFBD>TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
zf_log(0, "connect TCP server failed");
return_state = 1;
break;
}
// zf_log(0, "connect TCP client succeed");
#endif
#if WIFI_UART_AUTO_CONNECT == 2
if(wifi_uart_connect_udp_transfer(WIFI_UART_TARGET_IP, WIFI_UART_TARGET_PORT, WIFI_UART_LOCAL_PORT, WIFI_UART_SERIANET))// <20><><EFBFBD><EFBFBD>UDP<44><50><EFBFBD><EFBFBD>
{
zf_log(0, "connect UDP server failed");
return_state = 1;
break;
}
// zf_log(0, "connect UDP server succeed");
#endif
#if WIFI_UART_AUTO_CONNECT == 3
if(wifi_uart_entry_tcp_servers(WIFI_UART_LOCAL_PORT)) // <20><><EFBFBD><EFBFBD>TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
zf_log(0, "build TCP server failed");
return_state = 1;
break;
}
// zf_log(0, "build TCP server succeed");
#endif
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}