Demo

Dependencies:   mbed

PeripheralLayer/PeMod_ESP01.cpp

Committer:
nightseas
Date:
2016-05-19
Revision:
2:0ee90da44162
Parent:
1:0c1053275589

File content as of revision 2:0ee90da44162:

#include "SysConfig.h"

//ACK waiting time: 2000ms
#define ESP01_ACK_TIMEOUT    5000

#define uart_esp uart_sen
#define uart_db uart_pc

//For serial waiting timeout counting
Timer timer_esp;

string ESP01_CmdInitMixMode = "CWMODE=3";
string ESP01_CmdInitApInfo = "CWSAP=\"AirBoxProto01\",\"12345678\",6,3";
string ESP01_CmdReset = "AT+RST";
string ESP01_CmdMuxConnEn = "AT+CIPMUX=1";
string ESP01_CmdInitTcpSvr = "AT+CIPSERVER=1,2222";

int ESP01_Init(void)
{
    if(ESP01_InterfaceCheck() != 0)
    {
        #if defined uart_db
        uart_db.printf("ESP01_InterfaceCheck failed!\n\r");
        #endif
        return -1;   
    }
    
    ESP01_SendAtCmd(ESP01_CmdInitMixMode);
        
    ESP01_SendAtCmd(ESP01_CmdInitApInfo);
    
    ESP01_SendAtCmd(ESP01_CmdReset);
    
    wait_ms(8000);
    
    ESP01_SendAtCmd(ESP01_CmdMuxConnEn);
    
    ESP01_SendAtCmd(ESP01_CmdInitTcpSvr);
    
    return 0;   
}

int ESP01_AckCheck(void)
{   
    int timeStart;
    string data;
    timer_esp.start();
    timeStart = timer_esp.read_ms();
    
    while(timer_esp.read_ms() - timeStart < ESP01_ACK_TIMEOUT)
    {
        if(uart_esp.readable())
        {
            while(uart_esp.getc() == 'O')
            {
                if(uart_esp.getc() == 'K')
                    return 0;
            }     
        }  
    }
    
    timer_esp.stop();
    timer_esp.reset();
    uart_db.printf("ESP01_AckCheck timeout %dms!\n\r", ESP01_ACK_TIMEOUT); 
    return -2;
}

int ESP01_InterfaceCheck(void)
{
    uart_esp.printf("AT\r\n");
    return ESP01_AckCheck();
}

void ESP01_SendAtCmd(string strCmd)
{
    uart_esp.printf("AT+%s\r\n", strCmd.c_str());
}