You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
4.4 KiB
145 lines
4.4 KiB
/******************************************************************************
|
|
* Copyright 2013-2014 Espressif Systems (Wuxi)
|
|
*
|
|
* FileName: user_main.c
|
|
*
|
|
* Description: entry file of user application
|
|
*
|
|
* Modification history:
|
|
* 2015/1/23, v1.0 create this file.
|
|
*******************************************************************************/
|
|
|
|
#include "osapi.h"
|
|
#include "at_custom.h"
|
|
#include "user_interface.h"
|
|
#include "mem.h"
|
|
#include "espconn.h"
|
|
|
|
|
|
static struct espconn *at_espconn_demo_espconn_ptr = NULL;
|
|
|
|
#define AT_ESPCONN_DEMO_BUFFER_SIZE (2920)
|
|
static uint8 at_espconn_demo_buffer[AT_ESPCONN_DEMO_BUFFER_SIZE];
|
|
static uint32 at_espconn_demo_data_len = 0;
|
|
static bool at_espconn_demo_flag = FALSE;
|
|
|
|
static void ICACHE_FLASH_ATTR
|
|
at_espconn_demo_recon_cb(void *arg, sint8 errType)
|
|
{
|
|
struct espconn *espconn_ptr = (struct espconn *)arg;
|
|
|
|
os_printf("at demo espconn reconnect\r\n");
|
|
at_espconn_demo_flag = FALSE;
|
|
espconn_connect(espconn_ptr);
|
|
}
|
|
|
|
|
|
// notify at module that espconn has received data
|
|
static void ICACHE_FLASH_ATTR
|
|
at_espconn_demo_recv(void *arg, char *pusrdata, unsigned short len)
|
|
{
|
|
at_fake_uart_rx(pusrdata,len);
|
|
}
|
|
|
|
static void ICACHE_FLASH_ATTR
|
|
at_espconn_demo_send_cb(void *arg)
|
|
{
|
|
at_espconn_demo_flag = TRUE;
|
|
if(at_espconn_demo_data_len) {
|
|
espconn_send(at_espconn_demo_espconn_ptr,at_espconn_demo_buffer,at_espconn_demo_data_len);
|
|
at_espconn_demo_data_len = 0;
|
|
}
|
|
}
|
|
static void ICACHE_FLASH_ATTR
|
|
at_espconn_demo_discon_cb(void *arg)
|
|
{
|
|
struct espconn *espconn_ptr = (struct espconn *)arg;
|
|
|
|
os_printf("at demo espconn disconnected\r\n");
|
|
at_espconn_demo_flag = FALSE;
|
|
espconn_connect(espconn_ptr);
|
|
}
|
|
|
|
static void ICACHE_FLASH_ATTR
|
|
at_espconn_demo_connect_cb(void *arg)
|
|
{
|
|
os_printf("at demo espconn connected\r\n");
|
|
espconn_set_opt((struct espconn*)arg,ESPCONN_COPY);
|
|
at_espconn_demo_flag = TRUE;
|
|
at_espconn_demo_data_len = 0;
|
|
}
|
|
|
|
static void ICACHE_FLASH_ATTR at_espconn_demo_response(const uint8*data,uint32 length)
|
|
{
|
|
if((data == NULL) || (length == 0)) {
|
|
return;
|
|
}
|
|
|
|
if(at_espconn_demo_flag) {
|
|
espconn_send(at_espconn_demo_espconn_ptr,(uint8*)data,length);
|
|
at_espconn_demo_flag = FALSE;
|
|
} else {
|
|
if(length <= (AT_ESPCONN_DEMO_BUFFER_SIZE - at_espconn_demo_data_len)) {
|
|
os_memcpy(at_espconn_demo_buffer + at_espconn_demo_data_len,data,length);
|
|
at_espconn_demo_data_len += length;
|
|
} else {
|
|
os_printf("at espconn buffer full\r\n");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
static void ICACHE_FLASH_ATTR at_espconn_demo_init(void)
|
|
{
|
|
uint32 ip = 0;
|
|
at_espconn_demo_espconn_ptr = (struct espconn *)os_zalloc(sizeof(struct espconn));
|
|
at_espconn_demo_espconn_ptr->type = ESPCONN_TCP;
|
|
at_espconn_demo_espconn_ptr->state = ESPCONN_NONE;
|
|
at_espconn_demo_espconn_ptr->proto.tcp = (esp_tcp *)os_zalloc(sizeof(esp_tcp));
|
|
at_espconn_demo_espconn_ptr->proto.tcp->local_port = espconn_port();
|
|
at_espconn_demo_espconn_ptr->proto.tcp->remote_port = 8999;
|
|
|
|
ip = ipaddr_addr("192.168.1.120");
|
|
os_memcpy(at_espconn_demo_espconn_ptr->proto.tcp->remote_ip,&ip,sizeof(ip));
|
|
espconn_regist_connectcb(at_espconn_demo_espconn_ptr, at_espconn_demo_connect_cb);
|
|
espconn_regist_reconcb(at_espconn_demo_espconn_ptr, at_espconn_demo_recon_cb);
|
|
espconn_regist_disconcb(at_espconn_demo_espconn_ptr, at_espconn_demo_discon_cb);
|
|
espconn_regist_recvcb(at_espconn_demo_espconn_ptr, at_espconn_demo_recv);
|
|
espconn_regist_sentcb(at_espconn_demo_espconn_ptr, at_espconn_demo_send_cb);
|
|
|
|
espconn_connect(at_espconn_demo_espconn_ptr);
|
|
|
|
at_fake_uart_enable(TRUE,at_espconn_demo_response);
|
|
}
|
|
|
|
static void ICACHE_FLASH_ATTR
|
|
at_exeCmdTest(uint8_t id)
|
|
{
|
|
at_response_ok();
|
|
at_espconn_demo_init();
|
|
}
|
|
|
|
extern void at_exeCmdCiupdate(uint8_t id);
|
|
at_funcationType at_custom_cmd[] = {
|
|
{"+TEST", 5, NULL, NULL, NULL, at_exeCmdTest},
|
|
#ifdef AT_UPGRADE_SUPPORT
|
|
{"+CIUPDATE", 9, NULL, NULL, NULL, at_exeCmdCiupdate}
|
|
#endif
|
|
};
|
|
|
|
|
|
void ICACHE_FLASH_ATTR user_init(void)
|
|
{
|
|
char buf[64] = {0};
|
|
at_customLinkMax = 5;
|
|
at_init();
|
|
os_sprintf(buf,"compile time:%s %s",__DATE__,__TIME__);
|
|
at_set_custom_info(buf);
|
|
at_port_print("\r\nready\r\n");
|
|
at_cmd_array_regist(&at_custom_cmd[0], sizeof(at_custom_cmd)/sizeof(at_custom_cmd[0]));
|
|
at_port_print("\r\n***==================================***");
|
|
at_port_print("\r\n*** Welcome to at espconn demo!!! ***");
|
|
at_port_print("\r\n*** Please create a TCP Server on PC,***");
|
|
at_port_print("\r\n*** then enter command AT+TEST. ***");
|
|
at_port_print("\r\n***==================================***\r\n");
|
|
}
|
|
|