2C SDK Espressif IoT SDK Programming Guide v0.9.5

95
ESP8266EX SDK Programming Guide 1 / 95 Espressif Systems February 9, 2015 Espressif IoT SDK: Programming Guide Status Released Current version V0.9.5 Author Fei Yu Completion Date 2015.01.22 Reviewer JG Wu Completion Date 2015.01.22 [ ] CONFIDENTIAL [ ] INTERNAL [ ] PUBLIC

description

ESP8266 SDK Programming Guide

Transcript of 2C SDK Espressif IoT SDK Programming Guide v0.9.5

  • ESP8266EX SDK Programming Guide

    1 / 95 Espressif Systems February 9, 2015

    Espressif IoT SDK:

    Programming Guide

    Status Released

    Current version V0.9.5

    Author Fei Yu

    Completion Date 2015.01.22

    Reviewer JG Wu

    Completion Date 2015.01.22

    [ ] CONFIDENTIAL

    [ ] INTERNAL

    [ ] PUBLIC

  • ESP8266EX SDK Programming Guide

    2 / 95 Espressif Systems February 9, 2015

    Version Info

    Date Version Author Comments/Changes

    2013.12.25

    ~2014.7.10

    0.1~0.8 JG Wu /

    Han Liu/

    Fei Yu

    Draft and changes

    2014.8.13 0.9 Fei Yu 1.Revise espconn APIs

    2.Add sniffer APIs

    3.Add system_get_chip_id

    4.Add APIs to read/ write mac&ip

    2014.9.23 0.9.1 Fei Yu 1Add system_deep_sleep;

    2Revise APIs to read/write flash;

    3Add APIs for AP_CHE

    4Revise UDP APIs

    2014.11.20 0.9.3 Fei Yu Introduce esp_iot_sdk_v0.9.3

    1Add APIs for auto connecting to

    router when power on or not;

    2Add APIs for UART swap;

    3Add APIs for DHCP;

    4Add APIs for RTC

    2014.12.19 0.9.4 Fei Yu Introduce esp_iot_sdk_v0.9.4

    1Add APIs for sleep type;

    2Add APIs for igmp

    2015.01.22 0.9.5 Fei Yu Introduce esp_iot_sdk_v0.9.5

    1Revised upgrade APIs

    2Add more DHCP APIs

    3Add API to get recorded AP info

    4Add smart config APIs

    5Add API to block TCP receiving

    data

    6Add API for AT commands

  • ESP8266EX SDK Programming Guide

    3 / 95 Espressif Systems February 9, 2015

    Disclaimer and Copyright Notice

    Information in this document, including URL references, is subject to change without

    notice.

    THIS DOCUMENT IS PROVIDED "AS IS" WITH NO WARRANTIES

    WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY,

    NONINFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY

    WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL,

    SPECIFICATION OR SAMPLE. All liability, including liability for infringement of

    any proprietary rights, relating to use of information in this document is disclaimed. No

    licenses express or implied, by estoppel or otherwise, to any intellectual property rights

    are granted herein.

    The Wi-Fi Alliance Member Logo is a trademark of the Wi-Fi Alliance.

    All trade names, trademarks and registered trademarks mentioned in this document are

    property of their respective owners, and are hereby acknowledged.

    Copyright 2013 Espressif Systems Inc. All rights reserved.

  • ESP8266EX SDK Programming Guide

    4 / 95 Espressif Systems February 9, 2015

    Table of Contents

    Version Info .................................................................................................................. 2

    Table of Contents ........................................................................................................ 4

    1. Foreword ........................................................................................... 9

    2. Overview ......................................................................................... 10

    3. Application Programming Interface (APIs) ................................ 11

    3.1. Timer ................................................................................................ 11

    3.1.1. os_timer_arm .................................................................................. 11

    3.1.2. os_timer_disarm .............................................................................. 11

    3.1.3. os_timer_setfn ................................................................................. 12

    3.2. System APIs ...................................................................................... 12

    3.2.1. system_restore ................................................................................. 12

    3.2.2. system_restart ................................................................................. 12

    3.2.3. system_timer_reinit ......................................................................... 13

    3.2.4. system_init_done_cb ....................................................................... 13

    3.2.5. system_get_chip_id ......................................................................... 14

    3.2.6. system_deep_sleep ......................................................................... 14

    3.2.7. system_deep_sleep_set_option ...................................................... 15

    3.2.8. system_set_os_print ........................................................................ 16

    3.2.9. system_print_meminfo .................................................................... 16

    3.2.10. system_get_free_heap_size ............................................................ 16

    3.2.11. system_os_task ................................................................................ 17

    3.2.12. system_os_post ............................................................................... 18

    3.2.13. system_get_time .............................................................................. 18

    3.2.14. system_get_rtc_time ....................................................................... 19

    3.2.15. system_rtc_clock_cali_proc ............................................................. 19

    3.2.16. system_rtc_mem_write ................................................................... 20

    3.2.17. system_rtc_mem_read .................................................................... 20

    3.2.18. system_uart_swap ........................................................................... 21

    3.2.19. system_adc_read ............................................................................. 21

    3.3. SPI Flash Related APIs ...................................................................... 22

    3.3.1. spi_flash_get_id ............................................................................... 22

    3.3.2. spi_flash_erase_sector .................................................................... 22

    3.3.3. spi_flash_write ................................................................................. 23

    3.3.4. spi_flash_read .................................................................................. 23

    3.4. WIFI Related APIs ............................................................................. 25

    3.4.1. wifi_get_opmode ............................................................................. 25

    3.4.2. wifi_set_opmode ............................................................................. 25

    3.4.3. wifi_station_get_config ................................................................... 26

    3.4.4. wifi_station_set_config .................................................................... 26

    3.4.5. wifi_station_connect ....................................................................... 27

  • ESP8266EX SDK Programming Guide

    5 / 95 Espressif Systems February 9, 2015

    3.4.6. wifi_station_disconnect ................................................................... 27

    3.4.7. wifi_station_get_connect_status..................................................... 27

    3.4.8. wifi_station_scan ............................................................................. 28

    3.4.9. scan_done_cb_t ............................................................................... 29

    3.4.10. wifi_station_ap_number_set ........................................................... 30

    3.4.11. wifi_station_get_ap_info ................................................................. 30

    3.4.12. wifi_station_ap_change ................................................................... 31

    3.4.13. wifi_station_get_current_ap_id ...................................................... 31

    3.4.14. wifi_station_get_auto_connect ....................................................... 31

    3.4.15. wifi_station_set_auto_connect ....................................................... 32

    3.4.16. wifi_station_dhcpc_start ................................................................. 32

    3.4.17. wifi_station_dhcpc_stop .................................................................. 32

    3.4.18. wifi_station_dhcpc_status ............................................................... 33

    3.4.19. wifi_softap_get_config .................................................................... 33

    3.4.20. wifi_softap_set_config ..................................................................... 34

    3.4.21. wifi_softap_get_station_info ........................................................... 34

    3.4.22. wifi_softap_free_station_info ......................................................... 34

    3.4.23. wifi_softap_dhcps_start .................................................................. 35

    3.4.24. wifi_softap_dhcps_stop ................................................................... 36

    3.4.25. wifi_softap_set_dhcps_lease........................................................... 36

    3.4.26. wifi_softap_dhcps_status ................................................................ 37

    3.4.27. wifi_set_phy_mode ......................................................................... 37

    3.4.28. wifi_get_phy_mode ......................................................................... 38

    3.4.29. wifi_get_ip_info ............................................................................... 38

    3.4.30. wifi_set_ip_info ............................................................................... 39

    3.4.31. wifi_set_macaddr ............................................................................ 40

    3.4.32. wifi_get_macaddr ............................................................................ 40

    3.4.33. wifi_set_sleep_type ......................................................................... 41

    3.4.34. wifi_get_sleep_type ......................................................................... 41

    3.4.35. wifi_status_led_install ..................................................................... 42

    3.4.36. wifi_status_led_uninstall ................................................................. 42

    3.5. Upgrade(FOTA) APIs ......................................................................... 43

    3.5.1. system_upgrade_userbin_check ..................................................... 43

    3.5.2. system_upgrade_flag_set ................................................................ 43

    3.5.3. system_upgrade_flag_check............................................................ 44

    3.5.4. system_upgrade_start ..................................................................... 44

    3.5.5. system_upgrade_reboot .................................................................. 44

    3.6. Sniffer Related APIs .......................................................................... 45

    3.6.1. wifi_promiscuous_enable ................................................................ 45

    3.6.2. wifi_set_promiscuous_rx_cb ........................................................... 45

    3.6.3. wifi_get_channel .............................................................................. 45

    3.6.4. wifi_set_channel .............................................................................. 46

    3.7. smart config APIs ............................................................................. 46

  • ESP8266EX SDK Programming Guide

    6 / 95 Espressif Systems February 9, 2015

    3.7.1. smartconfig_start ............................................................................. 46

    3.7.2. smartconfig_stop ............................................................................. 47

    3.7.3. get_smartconfig_status ................................................................... 48

    3.8. Network APIs .................................................................................... 49

    3.8.1. General APIs ..................................................................................... 49

    3.8.1.1. espconn_delete ...................................................................... 49

    3.8.1.2. espconn_gethostbyname ...................................................... 49

    3.8.1.3. espconn_port .......................................................................... 50

    3.8.1.4. espconn_regist_sentcb ......................................................... 51

    3.8.1.5. espconn_regist_recvcb ......................................................... 51

    3.8.1.6. espconn_sent_callback ......................................................... 52

    3.8.1.7. espconn_recv_callback ......................................................... 52

    3.8.1.8. espconn_sent .......................................................................... 53

    3.8.2. TCP APIs............................................................................................ 53

    3.8.2.1. espconn_accept ..................................................................... 53

    3.8.2.2. espconn_secure_accept ....................................................... 54

    3.8.2.3. espconn_regist_time .............................................................. 54

    3.8.2.4. espconn_get_connection_info ............................................. 55

    3.8.2.5. espconn_connect ................................................................... 55

    3.8.2.6. espconn_connect_callback .................................................. 55

    3.8.2.7. espconn_set_opt .................................................................... 56

    3.8.2.8. espconn_disconnect .............................................................. 57

    3.8.2.9. espconn_regist_connectcb ................................................... 57

    3.8.2.10. espconn_regist_reconcb ....................................................... 57

    3.8.2.11. espconn_regist_disconcb ..................................................... 58

    3.8.2.12. espconn_secure_connect ..................................................... 59

    3.8.2.13. espconn_secure_sent ........................................................... 59

    3.8.2.14. espconn_secure_disconnect ................................................ 60

    3.8.2.15. espconn_tcp_get_max_con .................................................. 60

    3.8.2.16. espconn_tcp_set_max_con .................................................. 60

    3.8.2.17. espconn_tcp_get_max_con_allow ...................................... 61

    3.8.2.18. espconn_tcp_set_max_con_allow ...................................... 61

    3.8.2.19. espconn_recv_hold ................................................................ 62

    3.8.2.20. espconn_recv_unhold ........................................................... 62

    3.8.3. UDP APIs .......................................................................................... 63

    3.8.3.1. espconn_create ...................................................................... 63

    3.8.3.2. espconn_igmp_join ................................................................ 63

    3.8.3.3. espconn_igmp_leave ............................................................. 64

    3.9. AT APIs .............................................................................................. 65

    3.9.1. at_response_ok ................................................................................ 65

    3.9.2. at_response_error ........................................................................... 65

    3.9.3. at_cmd_array_regist ........................................................................ 65

    3.9.4. at_get_next_int_dec ........................................................................ 66

  • ESP8266EX SDK Programming Guide

    7 / 95 Espressif Systems February 9, 2015

    3.9.5. at_data_str_copy ............................................................................. 66

    3.9.6. at_init ............................................................................................... 67

    3.9.7. at_port_print ................................................................................... 67

    3.10. json APIs ........................................................................................... 68

    3.10.1. jsonparse_setup ............................................................................... 68

    3.10.2. jsonparse_next ................................................................................. 68

    3.10.3. jsonparse_copy_value ..................................................................... 68

    3.10.4. jsonparse_get_value_as_int ............................................................ 69

    3.10.5. jsonparse_get_value_as_long.......................................................... 69

    3.10.6. jsonparse_get_len ............................................................................ 69

    3.10.7. jsonparse_get_value_as_type ......................................................... 70

    3.10.8. jsonparse_strcmp_value .................................................................. 70

    3.10.9. jsontree_set_up ............................................................................... 70

    3.10.10. jsontree_reset .................................................................................. 71

    3.10.11. jsontree_path_name ....................................................................... 71

    3.10.12. jsontree_write_int ........................................................................... 72

    3.10.13. jsontree_write_int_array ................................................................. 72

    3.10.14. jsontree_write_string ...................................................................... 72

    3.10.15. jsontree_print_next ......................................................................... 73

    3.10.16. jsontree_find_next ........................................................................... 73

    4. Structure definition ........................................................................ 74

    4.1. Timer ................................................................................................ 74

    4.2. Wifi related structure ....................................................................... 74

    4.2.1. station related .................................................................................. 74

    4.2.2. softap related ................................................................................... 75

    4.2.3. scan related ...................................................................................... 75

    4.3. smart config structure ...................................................................... 76

    4.4. json related structure ....................................................................... 77

    4.3.1. json structure ................................................................................... 77

    4.3.2. json macro definition ....................................................................... 78

    4.5. espconn parameters ........................................................................ 79

    4.4.1 callback function .............................................................................. 79

    4.4.2 espconn ............................................................................................ 79

    5. Driver ............................................................................................... 82

    5.1. GPIO APIs ......................................................................................... 82

    5.1.1. PIN setting macro ............................................................................. 82

    5.1.2. gpio_output_set .............................................................................. 82

    5.1.3. GPIO input and output macro .......................................................... 83

    5.1.4. GPIO interrupt .................................................................................. 83

    5.1.5. gpio_pin_intr_state_set ................................................................... 84

    5.1.6. GPIO interrupt handler .................................................................... 84

    5.2. UART APIs ......................................................................................... 84

    5.2.1. uart_init ........................................................................................... 85

  • ESP8266EX SDK Programming Guide

    8 / 95 Espressif Systems February 9, 2015

    5.2.2. uart0_tx_buffer ................................................................................ 85

    5.2.3. uart0_rx_intr_handler ..................................................................... 86

    5.3. i2c master APIs ................................................................................. 86

    5.3.1. i2c_master_gpio_init ....................................................................... 86

    5.3.2. i2c_master_init ................................................................................ 86

    5.3.3. i2c_master_start .............................................................................. 87

    5.3.4. i2c_master_stop .............................................................................. 87

    5.3.5. i2c_master_send_ack ...................................................................... 87

    5.3.6. i2c_master_send_nack .................................................................... 88

    5.3.7. i2c_master_checkAck ...................................................................... 88

    5.3.8. i2c_master_readByte ....................................................................... 88

    5.3.9. i2c_master_writeByte ...................................................................... 89

    5.4. pwm ................................................................................................. 90

    5.4.1. pwm_init .......................................................................................... 90

    5.4.2. pwm_start ........................................................................................ 90

    5.4.3. pwm_set_duty ................................................................................. 90

    5.4.4. pwm_set_freq .................................................................................. 91

    5.4.5. pwm_get_duty ................................................................................. 91

    5.4.6. pwm_get_freq.................................................................................. 91

    6. Appendix ......................................................................................... 92

    A. ESPCONN Programming ................................................................... 92

    A.1. TCP Client Mode ............................................................................... 92

    A.1.1. Instructions ...................................................................................... 92

    A.1.2. Steps ................................................................................................. 92

    A.2. TCP Server Mode .............................................................................. 93

    A.2.1. Instructions ...................................................................................... 93

    A.2.2. Steps ................................................................................................. 93

    B. RTC APIs Example ............................................................................. 93

  • ESP8266EX SDK Programming Guide

    9 / 95 Espressif Systems February 9, 2015

    1. Foreword

    The SDK based on ESP8266 IoT platform offers users an easy, fast and

    efficient way to develop IoT devices.

    The programming guide provides overview of the SDK as well as details on

    the API. It is written for embedded software developers to help them program

    on ESP8266 IoT platform.

  • ESP8266EX SDK Programming Guide

    10 / 95 Espressif Systems February 9, 2015

    2. Overview

    The SDK provides a set of interfaces for data receive and transmit

    functions over the Wi-Fi and TCP/IP layer so programmers can focus on

    application development on the high level. Users can easily make use of the

    corresponding interfaces to realize data receive and transmit.

    All networking functions on the ESP8266 IoT platform are realized in the

    library, and are not transparent to users. Instead, users can initialize the

    interface in user_main.c

    void usre_init(void) is the default method provided. Users can add

    functions like firmware initialization, network parameters setting, and timer

    initialization in the interface.

    The SDK provides an API to handle json, and users can also use self-

    defined data types to handle the them.

  • ESP8266EX SDK Programming Guide

    11 / 95 Espressif Systems February 9, 2015

    3. Application Programming Interface

    (APIs)

    3.1. Timer

    Locate in \esp_iot_sdk\include\osapi.h

    3.1.1. os_timer_arm

    Function: arm timer

    Prototype:

    void os_timer_arm(ETSTimer *ptimer, uint32_t milliseconds,

    boolrepeat_flag)

    Input parameters:

    ETSTimer*ptimerTimer structure

    uint32_t millisecondsTiming, Unit: milisecond

    boolrepeat_flagWhether to repeat the timing

    Return:

    null

    3.1.2. os_timer_disarm

    Function: Disarm timer

    Prototype:

    void os_timer_disarm (ETSTimer *ptimer)

    Input parameters:

    ETSTimer*ptimerTimer structure

    Return:

    null

  • ESP8266EX SDK Programming Guide

    12 / 95 Espressif Systems February 9, 2015

    3.1.3. os_timer_setfn

    Function: Set timer callback function

    Prototype:

    void os_timer_setfn (ETSTimer *ptimer, ETSTimerFunc *pfunction, void

    *parg)

    Input parameters:

    ETSTimer*ptimerTimer structure

    TESTimerFunc*pfunctiontimer callback function

    void*pargcallback function parameter

    Return:

    null

    3.2. System APIs

    3.2.1. system_restore

    Function: Reset to default settings

    Prototype:

    void system_restore(void)

    Input parameters:

    null

    Return:

    null

    3.2.2. system_restart

    Function: Restart

    Prototype:

    void system_restart(void)

    Input parameters:

  • ESP8266EX SDK Programming Guide

    13 / 95 Espressif Systems February 9, 2015

    null

    Return:

    null

    3.2.3. system_timer_reinit

    Function: Reinitiate the timer when you need to use microsecond timer

    Not es: 1. Define USE_US_TIMER;

    2. Put system_timer_reinit at the beginning and user_init in the first

    sentence.

    Function definition:

    void system_timer_reinit (void)

    Input parameters:

    null

    Return:

    Null

    3.2.4. system_init_done_cb

    Functioncall this API in user_init to register a system-init-done callback.

    Notewifi_station_scan need to be called after system init done and station

    enable.

    Prototype

    void system_init_done_cb(init_done_cb_t cb)

    Parameter

    init_done_cb_t cb - system-init-done callback

    Return

    NULL

    Example

  • ESP8266EX SDK Programming Guide

    14 / 95 Espressif Systems February 9, 2015

    void to_scan(void)

    {

    wifi_station_scan(NULL,scan_done);

    }

    void user_init(void)

    {

    wifi_set_opmode(STATION_MODE);

    system_init_done_cb(to_scan);

    }

    3.2.5. system_get_chip_id

    Function: Get chip id

    Prototype:

    uint32 system_get_chip_id (void)

    Input parameters:

    null

    Return:

    Chip id

    3.2.6. system_deep_sleep

    Function: Set for deep-sleep mode. Device in deep-sleep mode automatically,

    every X us wake up once. Everytime device wakes up, it starts from user_init.

    Prototype

    void system_deep_sleep(uint32 time_in_us)

    parameters

    uint32 time_in_us during the time (us) device is in deep-sleep

    Return

  • ESP8266EX SDK Programming Guide

    15 / 95 Espressif Systems February 9, 2015

    NULL

    Note:

    Hardware has to support deep-sleep wake up (XPD_DCDC connects to

    EXT_RSTB with 0R).

    system_deep_sleep(0) set no wake up timerconnect a GPIO to pin RST,

    the chip will wake up by a falling-edge on pin RST

    3.2.7. system_deep_sleep_set_option

    Function: Call this API before system_deep_sleep to set what the chip will do

    when deep-sleep wake up.

    Note: following init data means esp_init_data_default.bin.

    Prototype

    bool system_deep_sleep_set_option(uint8 option)

    Parameter

    uint8 option - option=0, init data byte 108 is valuable;

    option>0, init data byte 108 is valueless.

    More details as follows

    deep_sleep_set_option(0), RF_CAL or not after deep-sleep wake up,

    depends on init data byte 108.

    deep_sleep_set_option(1), RF_CAL after deep-sleep wake up, there will be

    large current.

    deep_sleep_set_option(2) , no RF_CAL after deep-sleep wake up, there will

    only be small current.

    deep_sleep_set_option(4) , disable RF after deep-sleep wake up, just like

    modem sleep, there will be the smallest current.

    Return:

    True - succeed

    False - fail.

  • ESP8266EX SDK Programming Guide

    16 / 95 Espressif Systems February 9, 2015

    3.2.8. system_set_os_print

    Function: Turn on/off print logFunction

    Function definition:

    void system_set_os_print (uint8onoff)

    Input parameters:

    uint8 onoff turn on/off print function;

    0x00 : print function off

    0x01: print function on

    Defaut: print function on

    Return:

    null

    3.2.9. system_print_meminfo

    Function: Print memory information, including data/rodata/bss/heap

    Function definition:

    void system_print_meminfo (void)

    Input parameters:

    null

    Return:

    null

    3.2.10. system_get_free_heap_size

    Function: Get free heap size

    Function definition:

    uint32 system_get_free_heap_size(void)

    Input parameters:

    null

    Return:

  • ESP8266EX SDK Programming Guide

    17 / 95 Espressif Systems February 9, 2015

    uint32 available heap size

    3.2.11. system_os_task

    Function: Set up tasks

    Function definition:

    bool system_os_task(os_task_t task, uint8 prio, os_event_t *queue,

    uint8 qlen)

    Input parameters:

    os_task_t tasktask function

    uint8 priotask priority. 3 priorities are supported, 0/1/2, 0 is the lowest

    priority.

    os_event_t *queuemessage queue pointer

    uint8 qlenmessage queue depth

    Return

    True - succeed

    False - fail.

    Example:

    #define SIG_RX 0

    #define TEST_QUEUE_LEN 4

    os_event_t *testQueue;

    void test_task (os_event_t *e)

    {

    switch (e->sig) {

    case SIG_RX:

    os_printf(sig_rx %c\n, (char)e->par);

    break;

    default:

    break;

    }

  • ESP8266EX SDK Programming Guide

    18 / 95 Espressif Systems February 9, 2015

    }

    void task_init(void)

    {

    testQueue=(os_event_t *)os_malloc(sizeof(os_event_t)*TEST_QUEUE_LEN);

    system_os_task(test_task,USER_TASK_PRIO_0,testQueue,TEST_QUEUE_

    LEN);

    }

    3.2.12. system_os_post

    Function: send message to task

    Function definition:

    bool system_os_post (uint8 prio, os_signal_t sig, os_param_t par)

    Input parameters:

    uint8 priotask priority, corresponding to that you set up

    os_signal_t sigmessage type

    os_param_t parmessage parameters

    Return

    True - succeed

    False - fail.

    Refer to the example above:

    void task_post(void)

    {

    system_os_post(USER_TASK_PRIO_0, SIG_RX, a);

    }

    Printout: sig_rx a

    3.2.13. system_get_time

    FunctionGet system time (us).

    Prototype

  • ESP8266EX SDK Programming Guide

    19 / 95 Espressif Systems February 9, 2015

    uint32 system_get_time(void)

    Parameter

    Null

    Return

    System time in us.

    3.2.14. system_get_rtc_time

    FunctionGet RTC time , count by RTC clock period.

    Example: If system_get_rtc_time returns 10 (means 10 RTC cycles),

    system_rtc_clock_cali_proc returns 5 (means 5us per RTC cycle), then real

    time is 10 x 5 = 50 us.

    Note: System time will return to zero because of deep sleep or system_restart,

    but RTC still goes on.

    Prototype

    uint32 system_get_rtc_time(void)

    Parameter

    Null

    Return

    RTC time.

    3.2.15. system_rtc_clock_cali_proc

    Function: Get RTC clock period.

    Prototype

    uint32 system_rtc_clock_cali_proc(void)

    Parameter

    Null

    Return

  • ESP8266EX SDK Programming Guide

    20 / 95 Espressif Systems February 9, 2015

    RTC clock period (in us), bit11~ bit0 are decimal.

    Note: RTC demo in Appendix.

    3.2.16. system_rtc_mem_write

    Function: During deep sleep, only RTC still working, so maybe we need to save

    some user data in RTC memory. Only user data area can be used by user.

    |_ _ _ _ _system data _ _ _ _ _|_ _ _ _ _ _ _ _ _ user data _ _ _ _ _ _ _ _ _|

    | 256 bytes | 512 bytes |

    Note: RTC memory is 4 bytes aligned for read and write operations. Parameter

    des_addr means block number(4 bytes per block). So, if we want to save

    some data at the beginning of user data area, des_addr will be 256/4 = 64,

    save_size will be data length.

    Prototype

    bool system_rtc_mem_write (uint32 des_addr, void * src_addr, uint32

    save_size)

    Parameter

    uint32 des_addr destination address (block number) in RTC memory,

    des_addr >=64

    void * src_addr data pointer.

    uint32 save_size data length ( byte)

    Return

    True succeedFalsefail.

    3.2.17. system_rtc_mem_read

    Function: Read user data from RTC memory. Only user data area here can

    be used by user.

    |_ _ _ _ _system data _ _ _ _ _|_ _ _ _ _ _ _ _ _ user data _ _ _ _ _ _ _ _ _|

    | 256 bytes | 512 bytes |

  • ESP8266EX SDK Programming Guide

    21 / 95 Espressif Systems February 9, 2015

    Note: RTC memory is 4 bytes aligned for read and write operations. Parameter

    src_addr means block number(4 bytes per block). So, if we want to read some

    data from the beginning of user data area, src_addr will be 256/4 = 64,

    save_size will be data length.

    Prototype

    bool system_rtc_mem_read (uint32 src_addr, void * des_addr, uint32

    save_size)

    Parameter

    uint32 src_addr source address (block number) in rtc memory

    src_addr >=64

    void * des_addr data pointer

    uint32 save_size data lengthbyte

    Return

    True succeedFalsefail.

    3.2.18. system_uart_swap

    Function: UART0 swap. Use MTCK as UART0 RXMTDO as UART0 TX, so

    ROM log wont output from this new UART0. We also need to use

    MTDO(U0CTS) and MTCK(U0RTS) as UART0 in hardware.

    Prototype

    void system_uart_swap (void)

    Parameter

    NULL

    Return

    NULL

    3.2.19. system_adc_read

    Function: Get the value of ADC.

  • ESP8266EX SDK Programming Guide

    22 / 95 Espressif Systems February 9, 2015

    Prototype

    Uint16 system_adc_read (void)

    Paratmeter

    NULL

    Return

    Value of ADC.

    3.3. SPI Flash Related APIs

    3.3.1. spi_flash_get_id

    Function: Get id info of spi flash

    Prototype

    Uint32 spi_flash_get_id (void)

    Parameters

    Null

    Return

    SPI Flash id

    3.3.2. spi_flash_erase_sector

    Function: erase sector in flash

    Note: More details in document Espressif IOT Flash RW Operation

    Prototype

    SpiFlashOpResult spi_flash_erase_sector (uint16 sec)

    Parameters

    uint16 sec Sector number, the count starts at sector 0, 4KB per sector.

    Return

    Typedef enum{

  • ESP8266EX SDK Programming Guide

    23 / 95 Espressif Systems February 9, 2015

    SPI_FLASH_RESULT_OK,

    SPI_FLASH_RESULT_ERR,

    SPI_FLASH_RESULT_TIMEOUT

    }SpiFlashOpResult

    3.3.3. spi_flash_write

    FunctionWrite data to flash

    Note: More details in document

    Prototype

    SpiFlashOpResult spi_flash_write (uint32 des_addr, uint32 *src_addr,

    uint32 size)

    Parameters

    uint32 des_addr - destination address in flash.

    uint32 *src_addr source address of the data.

    Uint32 size - length of data

    Return

    Typedef enum{

    SPI_FLASH_RESULT_OK,

    SPI_FLASH_RESULT_ERR,

    SPI_FLASH_RESULT_TIMEOUT

    }SpiFlashOpResult

    3.3.4. spi_flash_read

    Function Read data from flash.

    Note: More details in document

  • ESP8266EX SDK Programming Guide

    24 / 95 Espressif Systems February 9, 2015

    Prototype

    SpiFlashOpResult spi_flash_read(uint32 src_addr, uint32 * des_addr,

    uint32 size)

    Parameters

    uint32 src_addr - source address in flash

    uint32 * des_addr destination address to keep data.

    Uint32 size - length of data

    Return

    Typedef enum{

    SPI_FLASH_RESULT_OK,

    SPI_FLASH_RESULT_ERR,

    SPI_FLASH_RESULT_TIMEOUT

    }SpiFlashOpResult

  • ESP8266EX SDK Programming Guide

    25 / 95 Espressif Systems February 9, 2015

    3.4. WIFI Related APIs

    3.4.1. wifi_get_opmode

    Function: get wifi working mode

    Function definition:

    uint8 wifi_get_opmode (void)

    Input parameters:

    null

    Return:

    Wifi working modes:

    0x01 means STATION_MODE,

    0x02 means SOFTAP_MODE,

    0x03 means STATIONAP_MODE.

    3.4.2. wifi_set_opmode

    Function: set wifi working mode as STATION, SOFTAP or STATION+SOFTAP

    Note:

    Versions before esp_iot_sdk_v0.9.2, need to call system_restart() after this api;

    after esp_iot_sdk_v0.9.2, need not to restart.

    Function definition:

    bool wifi_set_opmode (uint8 opmode)

    Input parameters:

    uint8 opmodeWifi working modes: 0x01 means STATION_MODE,

    0x02

    means SOFTAP_MODE, 0x03 means STATIONAP_MODE.

    Return:

    True - succeed

    False - fail.

  • ESP8266EX SDK Programming Guide

    26 / 95 Espressif Systems February 9, 2015

    3.4.3. wifi_station_get_config

    Function: get wifi station configuration

    Function definition:

    bool wifi_station_get_config (struct station_config *config)

    Input parameters:

    struct station_config *configwifi station configuration pointer

    Return:

    True - succeed

    False - fail.

    3.4.4. wifi_station_set_config

    Function: Set wifi station configuration

    Note: If wifi_station_set_config is called in user_init , there is no need to call

    wifi_station_connect after that, ESP8266 will connect to router automatically;

    otherwise, need wifi_station_connect to connect.

    In general, station_config.bssid_set need to be 0, otherwise it will check bssid

    which is the mac address of AP.

    Function definition:

    bool wifi_station_set_config (struct station_config *config)

    Input parameters:

    struct station_config *configwifi station configuration pointer

    Return:

    True - succeed

    False - fail.

  • ESP8266EX SDK Programming Guide

    27 / 95 Espressif Systems February 9, 2015

    3.4.5. wifi_station_connect

    Function: wifi station connected AP

    Noteif ESP8266 has already connected to a routerits necessary to call

    wifi_station_disconnect firstthen call wifi_station_connect to connect.

    Function definition:

    bool wifi_station_connect (void)

    Input parameters:

    null

    Return:

    True - succeed

    False - fail.

    3.4.6. wifi_station_disconnect

    Function: wifi station disconnected AP

    Function definition:

    bool wifi_station_disconnect (void)

    Input parameters:

    null

    Return:

    True - succeed

    False - fail.

    3.4.7. wifi_station_get_connect_status

    Function: get the connection status between wifi station and AP

    Function definition:

    uint8 wifi_station_get_connect_status (void)

  • ESP8266EX SDK Programming Guide

    28 / 95 Espressif Systems February 9, 2015

    Input parameters:

    null

    Return:

    enum{

    STATION_IDLE = 0,

    STATION_CONNECTING,

    STATION_WRONG_PASSWORD,

    STATION_NO_AP_FOUND,

    STATION_CONNECT_FAIL,

    STATION_GOT_IP

    };

    3.4.8. wifi_station_scan

    Function: Scan AP

    Note: Do not call this API in user_init. This API need to be called after system

    initialize done and station enable.

    Function definition:

    bool wifi_station_scan (struct scan_config *config, scan_done_cb_t cb);

    Structure

    struct scan_config{

    uint8 *ssid; // APs ssid

    uint8 *bssid; // APs bssid

    uint8 channel; //scan a specific channel

    uint8 show_hidden; //scan APs of which ssid is hidden.

    };

    Parameters:

    struct scan_config *config AP config for scan

    if config = Null scan all APs

    if config.ssidconfig.bssid are nullconfig.channel isnt null, ESP8266

  • ESP8266EX SDK Programming Guide

    29 / 95 Espressif Systems February 9, 2015

    will scan the specific channel.

    scan_done_cb_t cb - callback function after scan

    Return:

    True - succeed

    False - fail.

    3.4.9. scan_done_cb_t

    Function: scan callback function

    Function definition:

    void scan_done_cb_t (void *arg, STATUS status);

    Input parameters:

    void *arginformation of APs that be found, refer to struct bss_info

    STATUS statusget status

    Return:

    NULL

    Example:

    wifi_station_scan(&config, scan_done);

    static void ICACHE_FLASH_ATTR

    scan_done(void *arg, STATUS status)

    {

    if (status == OK)

    {

    struct bss_info *bss_link = (struct bss_info *)arg;

    bss_link = bss_link->next.stqe_next;//ignore first

    }

    }

  • ESP8266EX SDK Programming Guide

    30 / 95 Espressif Systems February 9, 2015

    3.4.10. wifi_station_ap_number_set

    Function: Set the number of APs that can be recorded for ESP8266 station.

    When ESP8266 station connects to an AP, ESP8266 keeps a record of this AP.

    Record id starts counting from 0.

    Prototype

    bool wifi_station_ap_number_set (uint8 ap_number);

    Parameters

    uint8 ap_number how many APs can be recordedMAX: 5

    eg: if ap_number is 5, record id : 0 ~ 4

    Return

    True - succeed

    False - fail.

    3.4.11. wifi_station_get_ap_info

    Function: Get information of APs recorded by ESP8266 station.

    Prototype

    uint8 wifi_station_get_ap_info(struct station_config config[])

    Parameters

    struct station_config config[] information of APs, array size has to be 5.

    Return

    How many APs that is actually recorded.

    Example

    struct station_config config[5];

    int i = wifi_station_get_ap_info(config);

  • ESP8266EX SDK Programming Guide

    31 / 95 Espressif Systems February 9, 2015

    3.4.12. wifi_station_ap_change

    Function: ESP8266 station change to connect to the AP which is recorded in

    specific id.

    Prototype

    bool wifi_station_ap_change (uint8 current_ap_id);

    Parameters

    uint8 current_ap_id APs record id, start counting from 0.

    Return

    True - succeed

    False - fail.

    3.4.13. wifi_station_get_current_ap_id

    Function: Get the current record id of AP.

    Prototype

    Uint8 wifi_station_get_current_ap_id ();

    Parameter

    Null

    Return

    The record id of the AP which ESP8266 is connected with right now.

    3.4.14. wifi_station_get_auto_connect

    Function: Check whether ESP8266 station will connect to AP (which is

    recorded) automatically or not when power on.

    Prototype

    uint8 wifi_station_get_auto_connect(void)

    Parameter

    Null

    Return

  • ESP8266EX SDK Programming Guide

    32 / 95 Espressif Systems February 9, 2015

    0 , wont connect to AP automatically

    Non-0 , will connect to AP automatically.

    3.4.15. wifi_station_set_auto_connect

    Function: Set whether ESP8266 station will connect to AP (which is recorded)

    automatically or not when power on.

    Note: Call this API in user_init , it is effective in this current power on; call it in

    other place, it will be effective in next power on.

    Prototype

    bool wifi_station_set_auto_connect(uint8 set)

    Parameter

    uint8 set Automatically connect or not

    0wont connect automatically1will connect automatically.

    Return

    True succeedFalse fail.

    3.4.16. wifi_station_dhcpc_start

    FunctionEnable ESP8266 station dhcp client.

    NoteDHCP default enable

    Prototype

    bool wifi_station_dhcpc_start(void)

    Parameter

    Null

    Return

    True succeedFalse fail.

    3.4.17. wifi_station_dhcpc_stop

    FunctionDisable ESP8266 station dhcp client.

    NoteDHCP default enable.

  • ESP8266EX SDK Programming Guide

    33 / 95 Espressif Systems February 9, 2015

    Prototype

    bool wifi_station_dhcpc_stop(void)

    Parameter

    Null

    Return

    True succeedFalse fail.

    3.4.18. wifi_station_dhcpc_status

    FunctionGet ESP8266 station dhcp client status.

    Prototype

    enum dhcp_status wifi_station_dhcpc_status(void)

    Parameter

    Null

    Return

    enum dhcp_status {

    DHCP_STOPPED,

    DHCP_STARTED

    };

    3.4.19. wifi_softap_get_config

    Function: set wifi softap configuration

    Function definition:

    bool wifi_softap_get_config(struct softap_config *config)

    Parameter

    struct softap_config *configESP8266 softap config

    Return

    True - succeed

    False - fail.

  • ESP8266EX SDK Programming Guide

    34 / 95 Espressif Systems February 9, 2015

    3.4.20. wifi_softap_set_config

    Function: set wifi softap configuration

    Function definition:

    bool wifi_softap_set_config (struct softap_config *config)

    Parameter

    struct softap_config *config wifi softap configuration pointer

    Return

    True - succeed

    False - fail.

    3.4.21. wifi_softap_get_station_info

    Function: get connected station devices under softap mode, including mac

    and ip

    Function definition

    struct station_info * wifi_softap_get_station_info(void)

    Input parameters:

    null

    Return:

    struct station_info*station information structure

    3.4.22. wifi_softap_free_station_info

    Function: free the struct station_info by calling the wifi_softap_get_station_info

    function

    Function definition:

    void wifi_softap_free_station_info(void)

    Input parameters:

    null

    Return:

  • ESP8266EX SDK Programming Guide

    35 / 95 Espressif Systems February 9, 2015

    null

    Examples of getting mac and ip information:

    Method 1:

    struct station_info * station = wifi_softap_get_station_info();

    struct station_info * next_station;

    while(station){

    os_printf("bssid : "MACSTR", ip : "IPSTR"\n",

    MAC2STR(station->bssid), IP2STR(&station->ip));

    next_station = STAILQ_NEXT(station, next);

    os_free(station); // Free it directly

    station = next_station;

    }

    Method 2

    struct station_info * station = wifi_softap_get_station_info();

    while(station){

    os_printf("bssid : "MACSTR", ip : "IPSTR"\n", MAC2STR(station->bssid),

    IP2STR(&station->ip));

    station = STAILQ_NEXT(station, next);

    }

    wifi_softap_free_station_info(); // Free it by calling functions

    3.4.23. wifi_softap_dhcps_start

    FunctionEnable ESP8266 softAP dhcp server.

    NoteDHCP default enable.

    Prototype

    bool wifi_softap_dhcps_start(void)

    Parameter

    Null

    Return

  • ESP8266EX SDK Programming Guide

    36 / 95 Espressif Systems February 9, 2015

    True - succeed

    False - fail.

    3.4.24. wifi_softap_dhcps_stop

    FunctionDisable ESP8266 softAP dhcp server.

    NoteDHCP default enable.

    Prototype

    bool wifi_softap_dhcps_stop(void)

    Parameter

    Null

    Return

    True - succeed

    False - fail.

    3.4.25. wifi_softap_set_dhcps_lease

    FunctionSet the IP range that can be got from ESP8266 softAP dhcp server.

    NoteThis API need to be called during DHCP server disable.

    Prototype

    bool wifi_softap_set_dhcps_lease(struct dhcps_lease *please)

    Parameter

    struct dhcps_lease {

    uint32 start_ip;

    uint32 end_ip;

    };

    Return

    True - succeed

    False - fail.

  • ESP8266EX SDK Programming Guide

    37 / 95 Espressif Systems February 9, 2015

    3.4.26. wifi_softap_dhcps_status

    FunctionGet ESP8266 softAP dhcp server status.

    Prototype

    enum dhcp_status wifi_softap_dhcps_status(void)

    Parameter

    NULL

    Return

    enum dhcp_status {

    DHCP_STOPPED,

    DHCP_STARTED

    };

    3.4.27. wifi_set_phy_mode

    FuctionSet ESP8266 physical mode802.11b/g/n.

    NoteESP8266 softAP only support bg.

    Prototype

    bool wifi_set_phy_mode(enum phy_mode mode)

    Parameter

    enum phy_mode mode physical mode

    enum phy_mode{

    PHY_MODE_11B = 1,

    PHY_MODE_11G = 2,

    PHY_MODE_11N = 3

    };

    Return

    True - succeed

    False - fail.

  • ESP8266EX SDK Programming Guide

    38 / 95 Espressif Systems February 9, 2015

    3.4.28. wifi_get_phy_mode

    FunctionGet ESP8266 physical mode802.11b/g/n

    Prototype

    Enum phy_mode wifi_get_phy_mode(void)

    Parameter

    Null

    Return

    enum phy_mode{

    PHY_MODE_11B = 1,

    PHY_MODE_11G = 2,

    PHY_MODE_11N = 3

    };

    3.4.29. wifi_get_ip_info

    Function: Get ip info of wifi station or softap interface

    Function definition:

    bool wifi_get_ip_info(uint8 if_index, struct ip_info *info)

    Parameters:

    uint8 if_indexthe interface to get ip info: 0x00 for STATION_IF, 0x01

    for

    SOFTAP_IF.

    struct ip_info *infopointer to get ip info of a certain interface

    Return

    True - succeed

    False - fail.

  • ESP8266EX SDK Programming Guide

    39 / 95 Espressif Systems February 9, 2015

    3.4.30. wifi_set_ip_info

    Function: Set ip address of ESP8266 station or softAP

    Note: only can be used in user_init.

    Function definition:

    bool wifi_set_ip_info(uint8 if_index, struct ip_info *info)

    Prototype

    uint8 if_index set station ip or softAP ip

    #define STATION_IF 0x00

    #define SOFTAP_IF 0x01

    struct ip_info *info ip information

    Example

    struct ip_info info;

    IP4_ADDR(&info.ip, 192, 168, 3, 200);

    IP4_ADDR(&info.gw, 192, 168, 3, 1);

    IP4_ADDR(&info.netmask, 255, 255, 255, 0);

    wifi_set_ip_info(STATION_IF, &info);

    IP4_ADDR(&info.ip, 10, 10, 10, 1);

    IP4_ADDR(&info.gw, 10, 10, 10, 1);

    IP4_ADDR(&info.netmask, 255, 255, 255, 0);

    wifi_set_ip_info(SOFTAP_IF, &info);

    Return

    True - succeed

    False - fail.

  • ESP8266EX SDK Programming Guide

    40 / 95 Espressif Systems February 9, 2015

    3.4.31. wifi_set_macaddr

    Function: set mac address

    Note: only can be used in user_init

    Function definition:

    bool wifi_set_macaddr(uint8 if_index, uint8 *macaddr)

    Parameter

    uint8 if_index set station mac or softAP mac

    #define STATION_IF 0x00

    #define SOFTAP_IF 0x01

    uint8 *macaddr mac address

    Example

    char sofap_mac[6] = {0x16, 0x34, 0x56, 0x78, 0x90, 0xab};

    char sta_mac[6] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab};

    wifi_set_macaddr(SOFTAP_IF, sofap_mac);

    wifi_set_macaddr(STATION_IF, sta_mac);

    Return

    True - succeed

    False - fail.

    3.4.32. wifi_get_macaddr

    Function: get mac address

    Function definition:

    Bool wifi_get_macaddr(uint8 if_index , uint8 *macaddr)

    Parameter

    uint8 if_index set station mac or softAP mac

    #define STATION_IF 0x00

    #define SOFTAP_IF 0x01

  • ESP8266EX SDK Programming Guide

    41 / 95 Espressif Systems February 9, 2015

    uint8 *macaddr mac address

    Return

    True - succeed

    False - fail.

    3.4.33. wifi_set_sleep_type

    FunctionSet sleep type for power saving. Set NONE_SLEEP_T to disable

    power saving

    Note: Default to be Modem sleep.

    Prototype

    Bool wifi_set_sleep_type(enum sleep_type type)

    Parameters

    enum sleep_type type sleep type

    Return

    True succeedFalse fail.

    3.4.34. wifi_get_sleep_type

    Function: Get sleep type.

    Prototype

    Enum sleep_type wifi_get_sleep_type(void)

    Parameters

    NULL

    Return

    Enum sleep_type{

    NONE_SLEEP_T = 0;

    LIGHT_SLEEP_T,

    MODEM_SLEEP_T

    };

  • ESP8266EX SDK Programming Guide

    42 / 95 Espressif Systems February 9, 2015

    3.4.35. wifi_status_led_install

    Function: Install wifi status LED

    Function definition:

    Void wifi_status_led_install (uint8 gpio_id, uint32 gpio_name, uint8

    gpio_func)

    Parameter

    uint8 gpio_idgpio number

    uint8 gpio_namegpio mux name

    uint8 gpio_funcgpio function

    Return

    NULL

    Example

    Use GPIO0 as wifi status LED

    #define HUMITURE_WIFI_LED_IO_MUX PERIPHS_IO_MUX_GPIO0_U

    #define HUMITURE_WIFI_LED_IO_NUM 0

    #define HUMITURE_WIFI_LED_IO_FUNC FUNC_GPIO0

    wifi_status_led_install(HUMITURE_WIFI_LED_IO_NUM,

    HUMITURE_WIFI_LED_IO_MUX, HUMITURE_WIFI_LED_IO_FUNC)

    3.4.36. wifi_status_led_uninstall

    Function: Uninstall wifi status LED

    Function definition:

    Void wifi_status_led_uninstall ()

    Parameter

    NULL

    Return

    NULL

  • ESP8266EX SDK Programming Guide

    43 / 95 Espressif Systems February 9, 2015

    3.5. Upgrade(FOTA) APIs

    3.5.1. system_upgrade_userbin_check

    Function: Check userbin

    Function definition:

    uint8 system_upgrade_userbin_check()

    Input parameters:

    null

    Return:

    0x00 : UPGRADE_FW_BIN1 , i.e., user1.bin

    0x01 : UPGRADE_FW_BIN2 , i.e., user2.bin

    3.5.2. system_upgrade_flag_set

    Function: Set upgrade status flag.

    Note:

    If you using system_upgrade_start to upgrade, this API need not be called;

    If you using spi_flash_write to upgrade firmware yourself, this flag need to be

    set to UPGRADE_FLAG_FINISH, then call system_upgrade_reboot to reboot

    to run new firmware.

    Prototype:

    void system_upgrade_flag_set(uint8 flag)

    Parameter

    uint8 flag #define UPGRADE_FLAG_IDLE 0x00

    #define UPGRADE_FLAG_START 0x01

    #define UPGRADE_FLAG_FINISH 0x02

    Return

    NULL

  • ESP8266EX SDK Programming Guide

    44 / 95 Espressif Systems February 9, 2015

    3.5.3. system_upgrade_flag_check

    Function: Get upgrade status flag.

    Prototype

    uint8 system_upgrade_flag_check()

    Parameter

    NULL

    Return

    #define UPGRADE_FLAG_IDLE 0x00

    #define UPGRADE_FLAG_START 0x01

    #define UPGRADE_FLAG_FINISH 0x02

    3.5.4. system_upgrade_start

    Function: Configure parameters and start upgrade

    Function definition:

    bool system_upgrade_start (struct upgrade_server_info *server)

    Parameters:

    struct upgrade_server_info *server server related parameters

    Return

    true: start upgrade

    false: upgrade cant be started.

    3.5.5. system_upgrade_reboot

    Function: reboot system and use new version

    Function definition:

    void system_upgrade_reboot (void)

    Input parameters:

    null

    Return:

  • ESP8266EX SDK Programming Guide

    45 / 95 Espressif Systems February 9, 2015

    Null

    3.6. Sniffer Related APIs

    3.6.1. wifi_promiscuous_enable

    Function: Enable promiscuous mode for sniffer

    Function definition:

    Void wifi_promiscuous_enable(uint8 promiscuous)

    Parameter

    uint8 promiscuous 0, disable promiscuous

    1, enable promiscuous

    Return:

    null

    Example: apply for a demo of sniffer function from Espressif

    3.6.2. wifi_set_promiscuous_rx_cb

    Function: register a rx callback function in promiscuous mode, which will be

    called when data packet is received.

    Function definition:

    Void wifi_set_promiscuous_rx_cb(wifi_promiscuous_cb_t cb)

    Parameter

    wifi_promiscuous_cb_t cb callback

    Return:

    null

    3.6.3. wifi_get_channel

    Function: get channel number, for sniffer

    Function definition:

  • ESP8266EX SDK Programming Guide

    46 / 95 Espressif Systems February 9, 2015

    uint8 wifi_get_channel(void)

    parameters:

    null

    Return:

    Channel number

    3.6.4. wifi_set_channel

    Function: set channel number, for sniffer

    Function definition:

    bool wifi_set_channel (uint8 channel)

    Parameters

    uint8 channel channel number

    Return

    True - succeed

    False - fail.

    3.7. smart config APIs

    3.7.1. smartconfig_start

    FunctionMake ESP8266 station connect to AP

    NoteIn this APIESP8266 will be set to station mode. Run phone APP to

    make device listen to the SSID and password of targeting AP. Can not call

    smartconfig_start twice before it finish.

    Prototype

    bool smartconfig_start(sc_type type, sc_callback_t cb)

    Parameter

    sc_type type smart config protocol typeAirKiss or ESP-TOUCH

    sc_callback_t cb smart config callbackgo into it when ESP8266 got

    SSID and password of targeting APparameter of this callback refer to the

  • ESP8266EX SDK Programming Guide

    47 / 95 Espressif Systems February 9, 2015

    examplea pointer of struct station_config

    Return

    True - succeed

    False - fail.

    Example

    void ICACHE_FLASH_ATTR

    smartconfig_done(void *data)

    {

    struct station_config *sta_conf = data;

    wifi_station_set_config(sta_conf);

    wifi_station_disconnect();

    wifi_station_connect();

    user_devicefind_init();

    user_esp_platform_init();

    }

    smartconfig_start(SC_TYPE_ESPTOUCH,smartconfig_done);

    3.7.2. smartconfig_stop

    Functionstop smart configfree the buffer taken by smartconfig_start.

    Note: When connect to AP succeed, this API should be called to free memory

    taken by smartconfig_start.

    Prototype

    bool smartconfig_stop(void)

    Parameter

    NULL

    Return

    True - succeed

    False - fail.

  • ESP8266EX SDK Programming Guide

    48 / 95 Espressif Systems February 9, 2015

    3.7.3. get_smartconfig_status

    Functionget smart config status

    NoteCan not call this API after smartconfig_stopbecause smartconfig_stop

    will free memory which contains this smart config status

    Prototype

    sc_status get_smartconfig_status(void)

    Parameter

    NULL

    Return

    typedef enum {

    SC_STATUS_FIND_CHANNEL = 0,

    SC_STATUS_GETTING_SSID_PSWD,

    SC_STATUS_GOT_SSID_PSWD,

    SC_STATUS_LINK,

    } sc_status;

  • ESP8266EX SDK Programming Guide

    49 / 95 Espressif Systems February 9, 2015

    3.8. Network APIs

    Locate in esp_iot_sdk\include\espconn.h

    General APIsAPIs can be used for both TCP and UDP .

    TCP APIsAPIs that are only used for TCP.

    UDP APIsAPIs that are only used for UDP.

    3.8.1. General APIs

    3.8.1.1. espconn_delete

    Function: Delete a transmission.

    Note: Correspondence create api : TCP espconn_accept, UDP espconn_create

    Prototype

    Sin8 espconn_delete(struct espconn *espconn)

    Parameter

    struct espconn *espconn corresponding connected control block

    structure

    Return

    0 - succeed#define ESPCONN_OK 0

    Not 0 - Erropls refer to espconn.h

    3.8.1.2. espconn_gethostbyname

    Function: DNS

    Function definition:

    Err_t espconn_gethostbyname(struct espconn *pespconn, const char

    *hostname, ip_addr_t *addr, dns_found_callback found)

    Parameters:

    struct espconn *espconncorresponding connected control block

  • ESP8266EX SDK Programming Guide

    50 / 95 Espressif Systems February 9, 2015

    structure

    const char *hostnamedomain name string pointer

    ip_addr_t *addrip address

    dns_found_callback foundcallback

    Return:

    Err_tESPCONN_OK

    ESPCONN_INPROGRESS

    ESPCONN_ARG

    Example as follows. Pls refer to source code of IoT_Demo

    ip_addr_t esp_server_ip;

    LOCAL void ICACHE_FLASH_ATTR

    user_esp_platform_dns_found(const char *name, ip_addr_t *ipaddr, void *arg)

    {

    struct espconn *pespconn = (struct espconn *)arg;

    os_printf("user_esp_platform_dns_found %d.%d.%d.%d\n",

    *((uint8 *)&ipaddr->addr), *((uint8 *)&ipaddr->addr + 1),

    *((uint8 *)&ipaddr->addr + 2), *((uint8 *)&ipaddr->addr + 3));

    }

    Void dns_test(void)

    {

    espconn_gethostbyname(pespconn,iot.espressif.cn,&esp_server_ip,user_es

    p_platform_dns_found);

    }

    3.8.1.3. espconn_port

    Function: get void ports

    Function definition:

  • ESP8266EX SDK Programming Guide

    51 / 95 Espressif Systems February 9, 2015

    uint32 espconn_port(void);

    Input parameters:

    null

    Return:

    uint32id of the port you get

    3.8.1.4. espconn_regist_sentcb

    Function: register data sent function which will be called back when data are

    successfully sent.

    Function definition:

    Sint8 espconn_regist_sentcb(struct espconn *espconn,

    espconn_sent_callback sent_cb)

    Parameters

    struct espconn *espconncorresponding connected control block

    structure

    espconn_sent_callback sent_cbregistered callback function

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

    3.8.1.5. espconn_regist_recvcb

    Function: register data receive function which will be called back when data are

    received

    Function definition:

    Sint8 espconn_regist_recvcb(struct espconn *espconn,

    espconn_recv_callback recv_cb)

    Input parameters:

    struct espconn *espconncorresponding connected control block

  • ESP8266EX SDK Programming Guide

    52 / 95 Espressif Systems February 9, 2015

    structure

    espconn_connect_callback connect_cbregistered callback function

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

    3.8.1.6. espconn_sent_callback

    Function: callback after the data are sent

    Function definition:

    void espconn_sent_callback (void *arg)

    Input parameters:

    void *argcall back function parameters

    Return:

    null

    3.8.1.7. espconn_recv_callback

    Function: callback after data are received

    Function definition:

    void espconn_recv_callback (void *arg, char *pdata, unsigned short len)

    Input parameters:

    void *argcallback function parameters

    char *pdatareceived data entry parameters

    unsigned short lenreceived data length

    Return:

    null

  • ESP8266EX SDK Programming Guide

    53 / 95 Espressif Systems February 9, 2015

    3.8.1.8. espconn_sent

    Function: send data through wifi

    Note: Please call espconn_sent after espconn_sent_callback of the pre-packet.

    Function definition:

    sint8 espconn_sent(struct espconn *espconn, uint8 *psent, uint16 length)

    Input parameters:

    struct espconn *espconncorresponding connected control block

    structure

    uint8 *psentsent data pointer

    uint16 lengthsent data length

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

    3.8.2. TCP APIs

    3.8.2.1. espconn_accept

    Function: listening connection. This function is used when create a TCP server.

    Function definition:

    sint8 espconn_accept(struct espconn *espconn)

    Input parameters:

    struct espconn *espconncorresponding connected control block

    structure

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

  • ESP8266EX SDK Programming Guide

    54 / 95 Espressif Systems February 9, 2015

    3.8.2.2. espconn_secure_accept

    Function: encrypted listening connection. This function is used when create a

    TCP server which support SSL.

    Function definition:

    sint8 espconn_secure_accept(struct espconn *espconn)

    Input parameters:

    struct espconn *espconncorresponding connected control block

    structure

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

    3.8.2.3. espconn_regist_time

    Function: register timeout interval when ESP8266 is TCP server

    Function definition:

    sint8 espconn_regist_time(struct espconn *espconn, uint32 interval, uint8

    type_flag)

    Input parameters:

    struct espconn *espconncorresponding connected control block

    structure

    uint32 interval timeout interval, unit: second, maximum: 7200

    seconds

    uint8 type_flag 0, set all connections; 1, set a single connection

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

  • ESP8266EX SDK Programming Guide

    55 / 95 Espressif Systems February 9, 2015

    3.8.2.4. espconn_get_connection_info

    Function: get a connections info in TCP multi-connection case

    Function definition:

    sint8 espconn_get_connection_info(struct espconn *espconn, remot_info

    **pcon_info, uint8 typeflags)

    Input parameters:

    struct espconn *espconncorresponding connected control block

    structure

    remot_info **pcon_infoconnect to client info

    uint8 typeflags 0, regular server;1, ssl server

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

    3.8.2.5. espconn_connect

    Function: connect to a TCP server, and ESP8266 is the TCP client.

    Function definition:

    sint8 espconn_connect(struct espconn *espconn)

    Input parameters:

    struct espconn *espconncorresponding connected control block

    structure

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

    3.8.2.6. espconn_connect_callback

    Function: successful listening(ESP8266 as TCP server) or

  • ESP8266EX SDK Programming Guide

    56 / 95 Espressif Systems February 9, 2015

    connection(ESP8266 as TCP client) callback

    Function definition:

    void espconn_connect_callback (void *arg)

    Input parameters:

    void *argcallback function parameters

    Return:

    null

    3.8.2.7. espconn_set_opt

    Function: Set option of TCP connection

    Prototype

    sint8 espconn_set_opt(struct espconn *espconn, uint8 opt)

    Parameter

    struct espconn *espconncorresponding connected control structure

    uint8 opt

    0, free memory after TCP disconnection happen need not wait 2

    minutes

    1disable nalgo algorithm during TCP data transmission, quiken the

    data transmission.

    Return

    0 - succeed#define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

    Note

    In general, we need not call this API

    If call espconn_set_opt(espconn, 0)please call it in connected callback

    If call espconn_set_opt(espconn, 1)please call it before disconnect

  • ESP8266EX SDK Programming Guide

    57 / 95 Espressif Systems February 9, 2015

    3.8.2.8. espconn_disconnect

    Function: disconnect a TCP connection

    Function definition:

    sint8 espconn_disconnect(struct espconn *espconn);

    Input parameters:

    struct espconn *espconncorresponding connected control structure

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

    3.8.2.9. espconn_regist_connectcb

    Function: register connection function which will be called back under

    successful TCP connection

    Function definition:

    Sint8 espconn_regist_connectcb(struct espconn *espconn,

    espconn_connect_callback connect_cb)

    Input parameters:

    struct espconn *espconncorresponding connected control block

    structure

    espconn_connect_callback connect_cbregistered callback function

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

    3.8.2.10. espconn_regist_reconcb

    Function: register reconnect callback

    Note: Reconnect callback is more like a network error handler, no matter error

  • ESP8266EX SDK Programming Guide

    58 / 95 Espressif Systems February 9, 2015

    occurred in any phase, it will go into reconnect callback. For example, if

    espconn_sent fail, it will go into reconnect callback as network is broken.

    Function definition:

    sint8 espconn_regist_reconcb(struct espconn *espconn,

    espconn_connect_callback recon_cb)

    Input parameters:

    struct espconn *espconncorresponding connected control block

    structure

    espconn_connect_callback connect_cbregistered callback function

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

    3.8.2.11. espconn_regist_disconcb

    Function: register disconnection function which will be called back under

    successful TCP disconnection

    Function definition:

    Sint8 espconn_regist_disconcb(struct espconn *espconn,

    espconn_connect_callback discon_cb)

    Input parameters:

    struct espconn *espconncorresponding connected control block

    structure

    espconn_connect_callback connect_cbregistered callback function

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

  • ESP8266EX SDK Programming Guide

    59 / 95 Espressif Systems February 9, 2015

    3.8.2.12. espconn_secure_connect

    Function: Secure connect(SSL) to a TCP server, and ESP8266 is the TCP

    client.

    Function definition:

    Sint8 espconn_secure_connect (struct espconn *espconn)

    Input parameters:

    struct espconn *espconncorresponding connected control block

    structure

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

    3.8.2.13. espconn_secure_sent

    Function: send encrypted dataSSL

    Function definition:

    Sint8 espconn_secure_sent (struct espconn *espconn, uint8 *psent, uint16

    length)

    Input parameters:

    struct espconn *espconncorresponding connected control block

    structure

    uint8 *psentsent data pointer

    uint16 lengthsent data length

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

  • ESP8266EX SDK Programming Guide

    60 / 95 Espressif Systems February 9, 2015

    3.8.2.14. espconn_secure_disconnect

    Function: secure TCP disconnection(SSL)

    Function definition:

    Sint8 espconn_secure_disconnect(struct espconn *espconn)

    Input parameters:

    struct espconn *espconncorresponding connected control block

    structure

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

    3.8.2.15. espconn_tcp_get_max_con

    FunctionGet maximum number of how many TCP connection is allowed.

    Prototype

    uint8 espconn_tcp_get_max_con(void)

    Parameter

    NULL

    Return

    Maximum number of how many TCP connection is allowed.

    3.8.2.16. espconn_tcp_set_max_con

    FunctionSet the maximum number of how many TCP connection is allowed.

    Prototype

    Sint8 espconn_tcp_set_max_con(uint8 num)

    Parameter

    uint8 num Maximum number of how many TCP connection is allowed.

    Return:

  • ESP8266EX SDK Programming Guide

    61 / 95 Espressif Systems February 9, 2015

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

    3.8.2.17. espconn_tcp_get_max_con_allow

    Function: Get the maximum number of TCP clients which are allowed to

    connect to ESP8266 TCP server.

    Prototype

    Sint8 espconn_tcp_get_max_con_allow(struct espconn *espconn)

    Parameter:

    struct espconn *espconncorresponding connected control structure

    Return:

    Maximum number of TCP clients which are allowed.

    3.8.2.18. espconn_tcp_set_max_con_allow

    Function: Set the maximum number of TCP clients which are allowed to

    connect to ESP8266 TCP server.

    Prototype

    Sint8 espconn_tcp_set_max_con_allow(struct espconn *espconn, uint8

    num)

    Parameter:

    struct espconn *espconncorresponding connected control structure

    uint8 num -- Maximum number of TCP clients which are allowed.

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.h

  • ESP8266EX SDK Programming Guide

    62 / 95 Espressif Systems February 9, 2015

    3.8.2.19. espconn_recv_hold

    FunctionBlock TCP receiving data

    NoteThis API block TCP receiving data eventuallynot immediatelyso we

    recommended to call it while reserving 1460*5 Bytes memory. This API can be

    called more than once.

    Prototype

    Sint8 espconn_recv_hold(struct espconn *espconn)

    Parameter:

    struct espconn *espconncorresponding connected control structure

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.hESPCONN_ARG means could not

    find the TCP connection according to parameter espconn

    3.8.2.20. espconn_recv_unhold

    FunctionStop blocking TCP receiving data

    NoteThis API take effect immediately

    Prototype

    Sint8 espconn_recv_unhold(struct espconn *espconn)

    Parameter:

    struct espconn *espconncorresponding connected control structure

    Return:

    0 - succeed, #define ESPCONN_OK 0

    Not 0 - error, pls refer to espconn.hESPCONN_ARG means could not

    find the TCP connection according to parameter espconn

  • ESP8266EX SDK Programming Guide

    63 / 95 Espressif Systems February 9, 2015

    3.8.3. UDP APIs

    3.8.3.1. espconn_create

    Functioncreate UDP transmission.

    Prototype

    Sin8 espconn_create(struct espconn *espconn)

    Parameter

    struct espconn *espconn corresponding connected control block

    structure

    Return

    0 - succeed#define ESPCONN_OK 0

    Not 0 - Erropls refer to espconn.h

    3.8.3.2. espconn_igmp_join

    FunctionJoin a multicast group

    Prototype

    Sin8 espconn_igmp_join(ip_addr_t *host_ip, ip_addr_t *multicast_ip)

    Parameters

    ip_addr_t *host_ip ip of host

    ip_addr_t *multicast_ip ip of multicast group

    Return

    0 - succeed#define ESPCONN_OK 0

    Not 0 - Erropls refer to espconn.h

  • ESP8266EX SDK Programming Guide

    64 / 95 Espressif Systems February 9, 2015

    3.8.3.3. espconn_igmp_leave

    FunctionQuit a multicast group

    Prototype

    Sin8 espconn_igmp_leave(ip_addr_t *host_ip, ip_addr_t *multicast_ip)

    Parameters

    ip_addr_t *host_ip ip of host

    ip_addr_t *multicast_ip ip of multicast group

    Return

    0 - succeed#define ESPCONN_OK 0

    Not 0 - Erropls refer to espconn.h

  • ESP8266EX SDK Programming Guide

    65 / 95 Espressif Systems February 9, 2015

    3.9. AT APIs

    AT APIs example refer to esp_iot_sdk/examples/5.at/user/user_main.c

    3.9.1. at_response_ok

    Functionoutput OK to AT Port (UART0)

    Prototype

    void at_response_ok(void)

    Parameter

    NULL

    Return

    NULL

    3.9.2. at_response_error

    Functionoutput ERROR to AT Port (UART0)

    Prototype

    void at_response_error(void)

    Parameter

    NULL

    Return

    NULL

    3.9.3. at_cmd_array_regist

    Functionregister user-define AT commands

    Prototype

    void at_cmd_array_regist (at_funcation * custom_at_cmd_arrar, uint32

    cmd_num)

    Parameter

  • ESP8266EX SDK Programming Guide

    66 / 95 Espressif Systems February 9, 2015

    at_funcation * custom_at_cmd_arrar Array of user-define AT commands

    uint32 cmd_num Number counts of user-define AT commands

    Return

    NULL

    Examplerefer to esp_iot_sdk/examples/5.at/user/user_main.c

    3.9.4. at_get_next_int_dec

    Functionparse int from AT command

    Prototype

    bool at_get_next_int_dec (char **p_src,int* result,int* err)

    Parameter

    char **p_src - *p_src is the AT command that need to be parsed

    int* result int number parsed from the AT command

    int* err - error code

    1int number is omitreturn error code 1

    3only -be found, return error code 3

    Return

    TRUEparser succeed (if int number default omitit will return Truebut

    error code to be 1)

    FALSEparser error with error code, probable causeint number more than

    10 bytescontains termination characters\r only contains -

    Example: refer to esp_iot_sdk/examples/5.at/user/user_main.c

    3.9.5. at_data_str_copy

    Functionparse string from AT command

    Prototype

    Int32 at_data_str_copy (char * p_dest, char ** p_src,int32 max_len)

    Parameter

    char * p_dest - string parsed from the AT command

  • ESP8266EX SDK Programming Guide

    67 / 95 Espressif Systems February 9, 2015

    char ** p_src - *p_src is the AT command that need to be parsed

    int32 max_len max string length that allowed

    Return

    If succeedreturns the length of the string

    If failreturns -1

    Example: refer to esp_iot_sdk/examples/5.at/user/user_main.c

    3.9.6. at_init

    Function: AT initialize

    Prototype

    void at_init (void)

    Parameter

    NULL

    Return

    NULL

    Example: refer to esp_iot_sdk/examples/5.at/user/user_main.c

    3.9.7. at_port_print

    Funtion: output string to AT PORT(UART0)

    Prototype

    void at_port_print(const char *str)

    Parameter

    const char *str string that need to output

    Return

    NULL

    Example: refer to esp_iot_sdk/examples/5.at/user/user_main.c

  • ESP8266EX SDK Programming Guide

    68 / 95 Espressif Systems February 9, 2015

    3.10. json APIs

    Locate in : esp_iot_sdk\include\json\jsonparse.h & jsontree.h

    3.10.1. jsonparse_setup

    Function:json initialize parsing

    Function definition:

    void jsonparse_setup(struct jsonparse_state *state, const char *json, int

    len)

    Input parameters:

    struct jsonparse_state *statejson parsing pointer

    const char *jsonjson parsing character string

    int lencharacter string length

    Return:

    null

    3.10.2. jsonparse_next

    Function: jsonparse next object

    Function definition:

    int jsonparse_next(struct jsonparse_state *state)

    Input parameters:

    struct jsonparse_state *statejson parsing pointer

    Return:

    intparsing result

    3.10.3. jsonparse_copy_value

    Function: copy current parsing character string to a certain buffer

    Function definition:

    int jsonparse_copy_value(struct jsonparse_state *state, char *str, int

  • ESP8266EX SDK Programming Guide

    69 / 95 Espressif Systems February 9, 2015

    size)

    Input parameters:

    struct jsonparse_state *statejson parsing pointer

    char *strbuffer pointer

    int sizebuffer size

    Return:

    intcopy result

    3.10.4. jsonparse_get_value_as_int

    Function: parse json to get integer

    Function definition:

    int jsonparse_get_value_as_int(struct jsonparse_state *state)

    Input parameters:

    struct jsonparse_state *statejson parsing pointer

    Return:

    intparsing result

    3.10.5. jsonparse_get_value_as_long

    Function: parse json to get long integer

    Function definition:

    long jsonparse_get_value_as_long(struct jsonparse_state *state)

    Input parameters:

    struct jsonparse_state *statejson parsing pointer

    Return:

    longparsing result

    3.10.6. jsonparse_get_len

    Function: get parsed json length

    Function definition:

  • ESP8266EX SDK Programming Guide

    70 / 95 Espressif Systems February 9, 2015

    int jsonparse_get_value_len(struct jsonparse_state *state)

    Input parameters:

    struct jsonparse_state *statejson parsing pointer

    Return:

    intparsed jason length

    3.10.7. jsonparse_get_value_as_type

    Function: parsed json data type

    Function definition:

    int jsonparse_get_value_as_type(struct jsonparse_state *state)

    Input parameters:

    struct jsonparse_state *statejson parsing pointer

    Return:

    intparsed json data type

    3.10.8. jsonparse_strcmp_value

    Function: compare parsed json and certain character string

    Function definition:

    int jsonparse_strcmp_value(struct jsonparse_state *state, const char *str)

    Input parameters:

    struct jsonparse_state *statejson parsing pointer

    const char *strcharacter buffer

    Return:

    intcomparison result

    3.10.9. jsontree_set_up

    Function: create json data tree

    Function definition:

    void jsontree_setup(struct jsontree_context *js_ctx,

  • ESP8266EX SDK Programming Guide

    71 / 95 Espressif Systems February 9, 2015

    struct jsontree_value *root, int (* putchar)(int))

    Input parameters:

    struct jsontree_context *js_ctxjson tree element pointer

    struct jsontree_value *rootroot element pointer

    int (* putchar)(int)input function

    Return:

    null

    3.10.10. jsontree_reset

    Function: reset json tree

    Function definition:

    void jsontree_reset(struct jsontree_context *js_ctx)

    Input parameters:

    struct jsontree_context *js_ctxjson data tree pointer

    Return:

    null

    3.10.11. jsontree_path_name

    Function: get json tree parameters

    Function definition:

    const char *jsontree_path_name(const struct jsontree_cotext *js_ctx, int

    depth)

    Input parameters:

    struct jsontree_context *js_ctxjson tree pointer

    int depthjson tree depth

    Return:

    char*parameter pointer

  • ESP8266EX SDK Programming Guide

    72 / 95 Espressif Systems February 9, 2015

    3.10.12. jsontree_write_int

    Function: write integer to joson tree

    Function definition:

    void jsontree_write_int(const struct jsontree_context *js_ctx, int value)

    Input parameters:

    struct jsontree_context *js_ctxjson tree pointer

    int valueinteger value

    Return:

    null

    3.10.13. jsontree_write_int_array

    Function: write integer array to json tree

    Function definition:

    void jsontree_write_int_array(const struct jsontree_context *js_ctx, const

    int *text, uint32 length)

    Input parameters:

    struct jsontree_context *js_ctxjson tree pointer

    int *textarray entry address

    uint32 lengtharray length

    Return:

    null

    3.10.14. jsontree_write_string

    Function: write string to json tree

    Function definition:

    void jsontree_write_string(const struct jsontree_context *js_ctx, const

    char *text)

    Input parameters:

    struct jsontree_context *js_ctxjson tree pointer

  • ESP8266EX SDK Programming Guide

    73 / 95 Espressif Systems February 9, 2015

    const char* textcharacter string pointer

    Return:

    null

    3.10.15. jsontree_print_next

    Function: json tree depth

    Function definition:

    int jsontree_print_next(struct jsontree_context *js_ctx)

    Input parameters:

    struct jsontree_context *js_ctxjson tree pointer

    Return:

    intjson tree depth

    3.10.16. jsontree_find_next

    Function: find json tree element

    Function definition:

    struct jsontree_value *jsontree_find_next(struct jsontree_context *js_ctx,

    int type)

    Input parameters:

    struct jsontree_context *js_ctxjson tree pointer

    inttype

    Return:

    struct jsontree_value *json tree element pointer

  • ESP8266EX SDK Programming Guide

    74 / 95 Espressif Systems February 9, 2015

    4. Structure definition

    4.1. Timer

    typedef void ETSTimerFunc(void *timer_arg);

    typedef struct _ETSTIMER_ {

    struct _ETSTIMER_ *timer_next;

    uint32_t timer_expire;

    uint32_t timer_period;

    ETSTimerFunc *timer_func;

    void *timer_arg;

    } ETSTimer;

    4.2. Wifi related structure

    4.2.1. station related

    struct station_config {

    uint8 ssid[32];

    uint8 password[64];

    uint8 bssid_set;

    uint8 bssid[6];

    };

    Note:

    Bssid as mac address of AP, will be used when serveral APs have the same

    ssid.

    If station_config.bssid_set