espressif iot sdk manual in chinese v0.9.5
DESCRIPTION
ESP8266TRANSCRIPT
-
ESP8266EX
1 / 91 Espressif Systems February 9, 2015
Espressif IoT SDK
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
2 / 91 Espressif Systems February 9, 2015
2013.12.25 0.1 JG Wu
2013.12.25 0.1.1 Han Liu json API
2014.1.15 0.2 JG Wu
2014.1.29 0.3 Han Liu client/server
2014.3.20 0.4 JG Wu / Han
Liu
1. uart
2. i2c master
3. client/server
4.
5. upgrade
2014.4.17 0.5 JG Wu / Han
Liu
1. espconn
2. gpio api
3.
2014.5.14 0.6 JG Wu API
2014.6.18 0.7 JG Wu 1. dns
2.
3.
4. softap
5.
heap
6.
2014.7.10 0.8 Fei Yu 1. upgrade
2.
3. station
4. SSL Server
client
2014.8.13 0.9 Fei Yu 1. espconn
2. sniffer
3. chip
4. mac&ip
2014.9.23 0.9.1 Fei Yu 1
2 flash
3 AP
4 UDP
2014.11.07 0.9.3 Fei Yu 1 DHCP
-
ESP8266EX
3 / 91 Espressif Systems February 9, 2015
2 RTC
3 ADC
4 stationsoftAP
2014.12.19 0.9.4 Fei Yu 1
2 igmp
2015.01.22 0.9.5 Fei Yu
1Upgrade
2DHCP
3 ap
4smart config
5TCP
6AT
URL
Wi-FiWi-Fi
2014
-
ESP8266EX
4 / 91 Espressif Systems February 9, 2015
........................................................................................................................ 2
................................................................................................................................ 4
1. .................................................................................................... 9
2. .......................................................................................... 10
3. SDK API .................................................................... 11
3.1. ...................................................................................... 11
3.1.1. os_timer_arm .................................................................................. 11
3.1.2. os_timer_disarm .............................................................................. 11
3.1.3. os_timer_setfn ................................................................................. 12
3.2. .................................................................................. 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 ........................................................................ 15
3.2.9. system_print_meminfo .................................................................... 16
3.2.10. system_get_free_heap_size ............................................................ 16
3.2.11. system_os_task ................................................................................ 16
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 ................................................................... 19
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 ......................................................................... 22
3.3.1. spi_flash_get_id ............................................................................... 22
3.3.2. spi_flash_erase_sector .................................................................... 22
3.3.3. spi_flash_write ................................................................................. 22
3.3.4. spi_flash_read .................................................................................. 23
3.4. WIFI ................................................................................. 24
3.4.1. wifi_get_opmode ............................................................................. 24
3.4.2. wifi_set_opmode ............................................................................. 24
3.4.3. wifi_station_get_config ................................................................... 25
3.4.4. wifi_station_set_config .................................................................... 25
3.4.5. wifi_station_connect ....................................................................... 25
-
ESP8266EX
5 / 91 Espressif Systems February 9, 2015
3.4.6. wifi_station_disconnect ................................................................... 26
3.4.7. wifi_station_get_connect_status..................................................... 26
3.4.8. wifi_station_scan ............................................................................. 27
3.4.9. scan_done_cb_t ............................................................................... 28
3.4.10. wifi_station_ap_number_set ........................................................... 28
3.4.11. wifi_station_get_ap_info ................................................................. 29
3.4.12. wifi_station_ap_change ................................................................... 29
3.4.13. wifi_station_get_current_ap_id ...................................................... 29
3.4.14. wifi_station_get_auto_connect ....................................................... 30
3.4.15. wifi_station_set_auto_connect ....................................................... 30
3.4.16. wifi_station_dhcpc_start ................................................................. 31
3.4.17. wifi_station_dhcpc_stop .................................................................. 31
3.4.18. wifi_station_dhcpc_status ............................................................... 31
3.4.19. wifi_softap_get_config .................................................................... 32
3.4.20. wifi_softap_set_config ..................................................................... 32
3.4.21. wifi_softap_get_station_info ........................................................... 32
3.4.22. wifi_softap_free_station_info ......................................................... 33
3.4.23. wifi_softap_dhcps_start .................................................................. 34
3.4.24. wifi_softap_dhcps_stop ................................................................... 34
3.4.25. wifi_softap_set_dhcps_lease........................................................... 34
3.4.26. wifi_softap_dhcps_status ................................................................ 35
3.4.27. wifi_set_phy_mode ......................................................................... 35
3.4.28. wifi_get_phy_mode ......................................................................... 36
3.4.29. wifi_get_ip_info ............................................................................... 36
3.4.30. wifi_set_ip_info ............................................................................... 37
3.4.31. wifi_set_macaddr ............................................................................ 38
3.4.32. wifi_get_macaddr ............................................................................ 38
3.4.33. wifi_set_sleep_type ......................................................................... 39
3.4.34. wifi_get_sleep_type ......................................................................... 39
3.4.35. wifi_status_led_install ..................................................................... 40
3.4.36. wifi_status_led_uninstall ................................................................. 40
3.5. .................................................................................. 41
3.5.1. system_upgrade_userbin_check ..................................................... 41
3.5.2. system_upgrade_flag_set ................................................................ 41
3.5.3. system_upgrade_flag_check............................................................ 42
3.5.4. system_upgrade_start ..................................................................... 42
3.5.5. system_upgrade_reboot .................................................................. 42
3.6. sniffer ............................................................................. 43
3.6.1. wifi_promiscuous_enable ................................................................ 43
3.6.2. wifi_set_promiscuous_rx_cb ........................................................... 43
3.6.3. wifi_get_channel .............................................................................. 43
3.6.4. wifi_set_channel .............................................................................. 44
3.7. smart config ............................................................................ 44
-
ESP8266EX
6 / 91 Espressif Systems February 9, 2015
3.7.1. smartconfig_start ............................................................................. 44
3.7.2. smartconfig_stop ............................................................................. 45
3.7.3. get_smartconfig_status ................................................................... 46
3.8. .......................................................................... 46
3.8.1. ......................................................................................... 46
3.8.1.1. espconn_delete ...................................................................... 46
3.8.1.2. espconn_gethostbyname ...................................................... 47
3.8.1.3. espconn_port .......................................................................... 48
3.8.1.4. espconn_regist_sentcb ......................................................... 48
3.8.1.5. espconn_regist_recvcb ......................................................... 49
3.8.1.6. espconn_sent_callback ......................................................... 49
3.8.1.7. espconn_recv_callback ......................................................... 50
3.8.1.8. espconn_sent .......................................................................... 50
3.8.2. TCP ................................................................................. 51
3.8.2.1. espconn_accept ..................................................................... 51
3.8.2.2. espconn_secure_accept ....................................................... 51
3.8.2.3. espconn_regist_time .............................................................. 51
3.8.2.4. espconn_get_connection_info ............................................. 52
3.8.2.5. espconn_connect ................................................................... 53
3.8.2.6. espconn_connect_callback .................................................. 53
3.8.2.7. espconn_set_opt .................................................................... 53
3.8.2.8. espconn_disconnect .............................................................. 54
3.8.2.9. espconn_regist_connectcb ................................................... 54
3.8.2.10. espconn_regist_reconcb ....................................................... 55
3.8.2.11. espconn_regist_disconcb ..................................................... 55
3.8.2.12. espconn_secure_connect ..................................................... 56
3.8.2.13. espconn_secure_sent ........................................................... 56
3.8.2.14. espconn_secure_disconnect ................................................ 57
3.8.2.15. espconn_tcp_get_max_con .................................................. 57
3.8.2.16. espconn_tcp_set_max_con .................................................. 57
3.8.2.17. espconn_tcp_get_max_con_allow ...................................... 58
3.8.2.18. espconn_tcp_set_max_con_allow ...................................... 58
3.8.2.19. espconn_recv_hold ................................................................ 59
3.8.2.20. espconn_recv_unhold ........................................................... 59
3.8.3. UDP ........................................................................................ 60
3.8.3.1. espconn_create ...................................................................... 60
3.8.3.2. espconn_igmp_join ................................................................ 60
3.8.3.3. espconn_igmp_leave ............................................................. 60
3.9. AT ............................................................................................. 62
3.9.1. at_response_ok ................................................................................ 62
3.9.2. at_response_error ........................................................................... 62
3.9.3. at_cmd_array_regist ........................................................................ 62
3.9.4. at_get_next_int_dec ........................................................................ 63
-
ESP8266EX
7 / 91 Espressif Systems February 9, 2015
3.9.5. at_data_str_copy ............................................................................. 63
3.9.6. at_init ............................................................................................... 64
3.9.7. at_port_print ................................................................................... 64
3.10. json API ................................................................................... 65
3.10.1. jsonparse_setup ............................................................................... 65
3.10.2. jsonparse_next ................................................................................. 65
3.10.3. jsonparse_copy_value ..................................................................... 65
3.10.4. jsonparse_get_value_as_int ............................................................ 66
3.10.5. jsonparse_get_value_as_long.......................................................... 66
3.10.6. jsonparse_get_len ............................................................................ 66
3.10.7. jsonparse_get_value_as_type ......................................................... 67
3.10.8. jsonparse_strcmp_value .................................................................. 67
3.10.9. jsontree_set_up ............................................................................... 67
3.10.10. jsontree_reset .................................................................................. 68
3.10.11. jsontree_path_name ....................................................................... 68
3.10.12. jsontree_write_int ........................................................................... 69
3.10.13. jsontree_write_int_array ................................................................. 69
3.10.14. jsontree_write_string ...................................................................... 69
3.10.15. jsontree_print_next ......................................................................... 70
3.10.16. jsontree_find_next ........................................................................... 70
4. .................................................................................. 71
4.1. ...................................................................................... 71
4.2. wifi ........................................................................................... 71
4.2.1. station ............................................................................. 71
4.2.2. softap .............................................................................. 72
4.2.3. scan ......................................................................................... 72
4.3. smart config ....................................................................... 73
4.4. json .................................................................................. 74
4.3.1. json .......................................................................................... 74
4.3.2. json ...................................................................................... 75
4.5. espconn ................................................................................... 76
4.4.1 function ................................................................................... 76
4.4.2 espconn ............................................................................................ 76
5. .......................................................................................... 79
5.1. GPIO API .................................................................................. 79
5.1.1. PIN ........................................................................... 79
5.1.2. gpio_output_set .............................................................................. 79
5.1.3. GPIO .................................................................... 80
5.1.4. GPIO .................................................................... 80
5.1.5. gpio_pin_intr_state_set ................................................................... 81
5.1.6. GPIO ........................................................................ 81
5.2. UART API ............................................................................ 81
5.2.1. uart_init ........................................................................................... 82
-
ESP8266EX
8 / 91 Espressif Systems February 9, 2015
5.2.2. uart0_tx_buffer ................................................................................ 82
5.2.3. uart0_rx_intr_handler ..................................................................... 83
5.3. i2c master ................................................................................ 83
5.3.1. i2c_master_gpio_init ....................................................................... 83
5.3.2. i2c_master_init ................................................................................ 84
5.3.3. i2c_master_start .............................................................................. 84
5.3.4. i2c_master_stop .............................................................................. 84
5.3.5. i2c_master_send_ack ...................................................................... 85
5.3.6. i2c_master_send_nack .................................................................... 85
5.3.7. i2c_master_checkAck ...................................................................... 85
5.3.8. i2c_master_readByte ....................................................................... 86
5.3.9. i2c_master_writeByte ...................................................................... 86
5.4. pwm ................................................................................................. 87
5.4.1. pwm_init .......................................................................................... 87
5.4.2. pwm_start ........................................................................................ 87
5.4.3. pwm_set_duty ................................................................................. 87
5.4.4. pwm_set_freq .................................................................................. 88
5.4.5. pwm_get_duty ................................................................................. 88
5.4.6. pwm_get_freq.................................................................................. 88
6. .................................................................................................. 89
A. ESPCONN ................................................................................. 89
A.1. TCP client ................................................................................. 89
A.1.1. ................................................................................................. 89
A.1.2. ................................................................................................. 89
A.2. TCP server ............................................................................... 89
A.2.1. ................................................................................................. 89
A.2.2. ................................................................................................. 90
B. RTC ......................................................................... 90
-
ESP8266EX
9 / 91 Espressif Systems February 9, 2015
1.
ESP8266 SDK
SDK API
ESP8266
-
ESP8266EX
10 / 91 Espressif Systems February 9, 2015
2.
WIFITCP/IP
SDK
ESP8266
user_main.c
void usre_init(void)
SDK json API
-
ESP8266EX
11 / 91 Espressif Systems February 9, 2015
3. SDK API
3.1.
\include\osapi.h
3.1.1. os_timer_arm
Void os_timer_arm(ETSTimer *ptimer,uint32_t milliseconds, bool
repeat_flag)
ETSTimer*ptimer 4.1
uint32_t milliseconds
bool repeat_flag
3.1.2. os_timer_disarm
Void os_timer_disarm(ETSTimer *ptimer)
ETSTimer *ptimer 4.1
-
ESP8266EX
12 / 91 Espressif Systems February 9, 2015
3.1.3. os_timer_setfn
Void os_timer_setfn(ETSTimer *ptimer, ETSTimerFunc *pfunction, void
*parg)
ETSTimer *ptimer 4.1
TESTimerFunc *pfunction
void*parg
3.2.
3.2.1. system_restore
void system_restore(void)
3.2.2. system_restart
void system_restart(void)
-
ESP8266EX
13 / 91 Espressif Systems February 9, 2015
3.2.3. system_timer_reinit
us timer timer
1 USE_US_TIMER
2system_timer_reinit user_init
Void system_timer_reinit (void)
3.2.4. system_init_done_cb
user_init
wifi_station_scan station
void system_init_done_cb(init_done_cb_t cb)
init_done_cb_t cb -
void to_scan(void)
{
wifi_station_scan(NULL,scan_done);
-
ESP8266EX
14 / 91 Espressif Systems February 9, 2015
}
void user_init(void)
{
wifi_set_opmode(STATION_MODE);
system_init_done_cb(to_scan);
}
3.2.5. system_get_chip_id
id
uint32 system_get_chip_id(void)
id
3.2.6. system_deep_sleep
deep sleep us
user_init
void system_deep_sleep(uint32 time_in_us)
uint32 time_in_us us
XPD_DCDC 0R EXT_RSTB Deep sleep
-
ESP8266EX
15 / 91 Espressif Systems February 9, 2015
system_deep_sleep(0) GPIO RST
3.2.7. system_deep_sleep_set_option
deep sleep deep sleep
init esp_init_data_default.bin
bool system_deep_sleep_set_option(uint8 option)
uint8 option - option=0 init byte 108
option>0 init byte 108
deep_sleep_set_option(0) init byte 108 deep sleep
RF_CAL
deep_sleep_set_option(1) deep sleep
RF_CAL
deep_sleep_set_option(2) deep sleep RF_cal
deep_sleep_set_option(4) deep sleep RF modem
sleep
TrueFalse
3.2.8. system_set_os_print
log
Void system_set_os_print(uint8 onoff)
Uint8 onoff /
-
ESP8266EX
16 / 91 Espressif Systems February 9, 2015
0x00
0x01
3.2.9. system_print_meminfo
data/rodata/bss/heap
Void system_print_meminfo (void)
3.2.10. system_get_free_heap_size
heap
Uint32 system_get_free_heap_size(void)
Uint32 heap
3.2.11. system_os_task
bool system_os_task(os_task_t task, uint8 prio, os_event_t *queue, uint8
qlen)
-
ESP8266EX
17 / 91 Espressif Systems February 9, 2015
Os_task_t task
Uint8 prio 3 0/1/20
Os_event_t *queue
Uint8 qlen
TrueFalse
#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;
}
}
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);
}
-
ESP8266EX
18 / 91 Espressif Systems February 9, 2015
3.2.12. system_os_post
bool system_os_post (uint8 prio, os_signal_t sig, os_param_t par)
Uint8 prio
Os_signal_t sig
Os_param_t par
TrueFalse
void task_post(void)
{
system_os_post(USER_TASK_PRIO_0, SIG_RX, a);
}
sig_rx a
3.2.13. system_get_time
us
uint32 system_get_time(void)
Null
-
ESP8266EX
19 / 91 Espressif Systems February 9, 2015
3.2.14. system_get_rtc_time
RTC RTC
system_get_rtc_time() 10 10 RTC
system_rtc_clock_cali_proc 5 RTC 5 us
10 x 5 = 50 us
deep sleep system_restart RTC
uint32 system_get_rtc_time(void)
Null
RTC
3.2.15. system_rtc_clock_cali_proc
RTC
uint32 system_rtc_clock_cali_proc(void)
Null
RTC usbit11 bit0
RTC
3.2.16. system_rtc_mem_write
deep sleep RTC RTC
memory user data 512 bytes
-
ESP8266EX
20 / 91 Espressif Systems February 9, 2015
|_ _ _ _ _system data _ _ _ _ _|_ _ _ _ _ _ _ _ _ user data _ _ _ _ _ _ _ _ _|
| 256 bytes | 512 bytes |
RTC memory 4 des_addr block
number4 block user data des_addr
256/4 = 64save size
bool system_rtc_mem_write (uint32 des_addr, void * src_addr, uint32
save_size)
uint32 des_addr rtc memory des_addr >=64
void * src_addr
uint32 save_size byte
True False
3.2.17. system_rtc_mem_read
RTC memory user data 512 bytes
|_ _ _ _ _system data _ _ _ _ _|_ _ _ _ _ _ _ _ _ user data _ _ _ _ _ _ _ _ _|
| 256 bytes | 512 bytes |
RTC memory 4 src_addr block
number4 block user data src_addr
256/4 = 64save size
bool system_rtc_mem_read (uint32 src_addr, void * des_addr, uint32
save_size)
uint32 src_addr rtc memory src_addr >=64
void * des_addr
-
ESP8266EX
21 / 91 Espressif Systems February 9, 2015
uint32 save_size byte
True False
3.2.18. system_uart_swap
UART0 MTCK UART0 RXMTDO UART0 TX
MTDO(U0CTS) MTCK(U0RTS) UART0
UART0 ROM LOG
void system_uart_swap (void)
NULL
NULL
3.2.19. system_adc_read
adc
Uint16 system_adc_read (void)
NULL
Adc
-
ESP8266EX
22 / 91 Espressif Systems February 9, 2015
3.3. SPI Flash
3.3.1. spi_flash_get_id
spi flash id
Uint32 spi_flash_get_id (void)
Null
SPI Flash id
3.3.2. spi_flash_erase_sector
Flash
flash Espressif IOT Flash
SpiFlashOpResult spi_flash_erase_sector (uint16 sec)
uint16 sec 0 4KB
Typedef enum{
SPI_FLASH_RESULT_OK,
SPI_FLASH_RESULT_ERR,
SPI_FLASH_RESULT_TIMEOUT
}SpiFlashOpResult
3.3.3. spi_flash_write
Flash
flash Espressif IOT Flash
-
ESP8266EX
23 / 91 Espressif Systems February 9, 2015
SpiFlashOpResult spi_flash_write (uint32 des_addr, uint32 *src_addr,
uint32 size)
uint32 des_addr - Flash
uint32 *src_addr - Flash
Uint32 size -
Typedef enum{
SPI_FLASH_RESULT_OK,
SPI_FLASH_RESULT_ERR,
SPI_FLASH_RESULT_TIMEOUT
}SpiFlashOpResult
3.3.4. spi_flash_read
flash
flash Espressif IOT Flash
SpiFlashOpResult spi_flash_read(uint32 src_addr, uint32 * des_addr,
uint32 size)
uint32 src_addr - Flash
uint32 * des_addr
Uint32 size -
Typedef enum{
SPI_FLASH_RESULT_OK,
-
ESP8266EX
24 / 91 Espressif Systems February 9, 2015
SPI_FLASH_RESULT_ERR,
SPI_FLASH_RESULT_TIMEOUT
}SpiFlashOpResult
3.4. WIFI
3.4.1. wifi_get_opmode
wifi
uint8 wifi_get_opmode (void)
wifi
#define STATION_MODE 0x01
#define SOFTAP_MODE 0x02
#define STATIONAP_MODE 0x03
3.4.2. wifi_set_opmode
wifi STATIONSOFTAPSTATION+SOFTAP
esp_iot_sdk_v0.9.2 v0.9.2
bool wifi_set_opmode (uint8 opmode)
uint8 opmodewifi
-
ESP8266EX
25 / 91 Espressif Systems February 9, 2015
#define STATION_MODE 0x01
#define SOFTAP_MODE 0x02
#define STATIONAP_MODE 0x03
True False
3.4.3. wifi_station_get_config
wifi station
bool wifi_station_get_config (struct station_config *config)
struct station_config *configwifi station
True False
3.4.4. wifi_station_set_config
wifi station
user_init wifi_station_set_config
wifi_station_connect
station_config.bssid_set 0
bool wifi_station_set_config (struct station_config *config)
struct station_config *configwifi station
True False
3.4.5. wifi_station_connect
wifi station
-
ESP8266EX
26 / 91 Espressif Systems February 9, 2015
wifi_station_disconnect
wifi_station_connect
bool wifi_station_connect(void)
True False
3.4.6. wifi_station_disconnect
wifi station
bool wifi_station_disconnect(void)
True False
3.4.7. wifi_station_get_connect_status
wifi station AP
uint8 wifi_station_get_connect_status (void)
enum{
STATION_IDLE = 0,
STATION_CONNECTING,
STATION_WRONG_PASSWORD,
-
ESP8266EX
27 / 91 Espressif Systems February 9, 2015
STATION_NO_AP_FOUND,
STATION_CONNECT_FAIL,
STATION_GOT_IP
};
3.4.8. wifi_station_scan
AP
user_init station
bool wifi_station_scan (struct scan_config *config, scan_done_cb_t cb);
struct scan_config{
uint8 *ssid; // AP ssid
uint8 *bssid; // AP bssid
uint8 channel; //
uint8 show_hidden; // ssid AP
};
struct scan_config *config AP NULL
config NULL AP
config ssidbssid NULL channel
channel AP
config ssid bssid NULLchannel 0
AP
scan_done_cb_t cb - AP function
True False
-
ESP8266EX
28 / 91 Espressif Systems February 9, 2015
3.4.9. scan_done_cb_t
scan function
void scan_done_cb_t (void *arg, STATUS status);
void *arg AP arg struct
bss_info AP AP
struct bss_info
STATUS status
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
}
}
3.4.10. wifi_station_ap_number_set
ESP8266 station AP
bool wifi_station_ap_number_set (uint8 ap_number);
-
ESP8266EX
29 / 91 Espressif Systems February 9, 2015
uint8 ap_number AP MAX: 5
True False
3.4.11. wifi_station_get_ap_info
ESP8266 station AP 5
uint8 wifi_station_get_ap_info(struct station_config config[])
struct station_config config[] AP 5
5
AP
struct station_config config[5];
int i = wifi_station_get_ap_info(config);
3.4.12. wifi_station_ap_change
ESP8266 station AP
bool wifi_station_ap_change (uint8 current_ap_id);
uint8 current_ap_id AP 0
True False
3.4.13. wifi_station_get_current_ap_id
APESP8266 AP
-
ESP8266EX
30 / 91 Espressif Systems February 9, 2015
0 AP ESP8266
AP
Uint8 wifi_station_get_current_ap_id ();
AP id AP ESP8266
3.4.14. wifi_station_get_auto_connect
ESP8266 station AP ()
uint8 wifi_station_get_auto_connect(void)
Null
0 0
3.4.15. wifi_station_set_auto_connect
ESP8266 station AP ()
api user_init
bool wifi_station_set_auto_connect(uint8 set)
uint8 set 01
True False
-
ESP8266EX
31 / 91 Espressif Systems February 9, 2015
3.4.16. wifi_station_dhcpc_start
ESP8266 station dhcp client.
dhcp
bool wifi_station_dhcpc_start(void)
Null
True False
3.4.17. wifi_station_dhcpc_stop
ESP8266 station dhcp client.
dhcp
bool wifi_station_dhcpc_stop(void)
Null
True False
3.4.18. wifi_station_dhcpc_status
ESP8266 station dhcp client
enum dhcp_status wifi_station_dhcpc_status(void)
Null
enum dhcp_status {
-
ESP8266EX
32 / 91 Espressif Systems February 9, 2015
DHCP_STOPPED,
DHCP_STARTED
};
3.4.19. wifi_softap_get_config
wifi softap
bool wifi_softap_get_config(struct softap_config *config)
struct softap_config *configwifi softap
softap_config
True False
3.4.20. wifi_softap_set_config
wifi softap
bool wifi_softap_set_config (struct softap_config *config)
struct softap_config *configwifi softap
softap_config
True False
3.4.21. wifi_softap_get_station_info
softap station mac ip
struct station_info * wifi_softap_get_station_info(void)
-
ESP8266EX
33 / 91 Espressif Systems February 9, 2015
struct station_info * station
3.4.22. wifi_softap_free_station_info
wifi_softap_get_station_info struct station_info
void wifi_softap_free_station_info (void)
macip
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); //
station = next_station;
}
struct station_info * station = wifi_softap_get_station_info();
while(station){
os_printf("bssid : "MACSTR", ip : "IPSTR"\n", MAC2STR(station->bssid),
IP2STR(&station->ip));
-
ESP8266EX
34 / 91 Espressif Systems February 9, 2015
station = STAILQ_NEXT(station, next);
}
wifi_softap_free_station_info(); //
3.4.23. wifi_softap_dhcps_start
ESP8266 softAP dhcp server.
dhcp
bool wifi_softap_dhcps_start(void)
Null
True False
3.4.24. wifi_softap_dhcps_stop
ESP8266 softAP dhcp server.
dhcp
bool wifi_softap_dhcps_stop(void)
Null
True False
3.4.25. wifi_softap_set_dhcps_lease
ESP8266 softAP dhcp server IP
dhcp server
bool wifi_softap_set_dhcps_lease(struct dhcps_lease *please)
-
ESP8266EX
35 / 91 Espressif Systems February 9, 2015
struct dhcps_lease {
uint32 start_ip;
uint32 end_ip;
};
True False
3.4.26. wifi_softap_dhcps_status
ESP8266 softAP dhcp server
enum dhcp_status wifi_softap_dhcps_status(void)
NULL
enum dhcp_status {
DHCP_STOPPED,
DHCP_STARTED
};
3.4.27. wifi_set_phy_mode
ESP8266 802.11b/g/n.
ESP8266 softAP bg
bool wifi_set_phy_mode(enum phy_mode mode)
enum phy_mode mode
enum phy_mode{
PHY_MODE_11B = 1,
-
ESP8266EX
36 / 91 Espressif Systems February 9, 2015
PHY_MODE_11G = 2,
PHY_MODE_11N = 3
};
True False
3.4.28. wifi_get_phy_mode
ESP8266 802.11b/g/n
Enum phy_mode wifi_get_phy_mode(void)
Null
enum phy_mode{
PHY_MODE_11B = 1,
PHY_MODE_11G = 2,
PHY_MODE_11N = 3
};
3.4.29. wifi_get_ip_info
wifi station softap ip
station ip 0
DHCP AP() softap ip
192.168.4.1
bool wifi_get_ip_info(uint8 if_index, struct ip_info *info)
uint8 if_index ip STATION_IF 0x00
-
ESP8266EX
37 / 91 Espressif Systems February 9, 2015
SOFTAP_IF 0x01
struct ip_info *info ip
True False
3.4.30. wifi_set_ip_info
ip
bool wifi_set_ip_info(uint8 if_index, struct ip_info *info)
uint8 if_index station ip softAP ip
#define STATION_IF 0x00
#define SOFTAP_IF 0x01
struct ip_info *info ip
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);
True False
-
ESP8266EX
38 / 91 Espressif Systems February 9, 2015
3.4.31. wifi_set_macaddr
mac
user_init mac
bool wifi_set_macaddr(uint8 if_index, uint8 *macaddr)
uint8 if_index station mac softAP mac
#define STATION_IF 0x00
#define SOFTAP_IF 0x01
uint8 *macaddr mac
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);
True False
3.4.32. wifi_get_macaddr
wifi station softap mac
Bool wifi_get_macaddr(uint8 if_index , uint8 *macaddr)
uint8 if_index mac STATION_IF 0x00
SOFTAP_IF 0x01
uint8 *macaddr mac
-
ESP8266EX
39 / 91 Espressif Systems February 9, 2015
True False
3.4.33. wifi_set_sleep_type
NONE_SLEEP_T
ESP8266 station Modem sleeplight
sleepdeep sleep Modem sleep Deep sleep
system_deep_sleep
Bool wifi_set_sleep_type(enum sleep_type type)
enum sleep_type type
True False
3.4.34. wifi_get_sleep_type
Enum sleep_type wifi_get_sleep_type(void)
NULL
Enum sleep_type{
NONE_SLEEP_T = 0;
LIGHT_SLEEP_T,
MODEM_SLEEP_T
};
-
ESP8266EX
40 / 91 Espressif Systems February 9, 2015
3.4.35. wifi_status_led_install
wifi led led
Void wifi_status_led_install (uint8 gpio_id, uint32 gpio_name, uint8
gpio_func)
uint8 gpio_idgpio
uint8 gpio_namegpio mux
uint8 gpio_funcgpio
GPIO0 wifi 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
wifi led led
Void wifi_status_led_uninstall ()
NULL
NULL
-
ESP8266EX
41 / 91 Espressif Systems February 9, 2015
3.5.
3.5.1. system_upgrade_userbin_check
firmware user1 user2
uint8 system_upgrade_userbin_check()
0x00 : UPGRADE_FW_BIN1 user1.bin
0x01 : UPGRADE_FW_BIN2 user2.bin
3.5.2. system_upgrade_flag_set
upgrade flag
system_upgrade_start Espressif
SDK flag
spi_flash_write
UPGRADE_FLAG_FINISH system_upgrade_reboot
void system_upgrade_flag_set(uint8 flag)
uint8 flag
#define UPGRADE_FLAG_IDLE 0x00
#define UPGRADE_FLAG_START 0x01
#define UPGRADE_FLAG_FINISH 0x02
-
ESP8266EX
42 / 91 Espressif Systems February 9, 2015
3.5.3. system_upgrade_flag_check
upgrade flag
uint8 system_upgrade_flag_check()
#define UPGRADE_FLAG_IDLE 0x00
#define UPGRADE_FLAG_START 0x01
#define UPGRADE_FLAG_FINISH 0x02
3.5.4. system_upgrade_start
bool system_upgrade_start (struct upgrade_server_info *server)
struct upgrade_server_info *server - server
True
False upgrade start
3.5.5. system_upgrade_reboot
void system_upgrade_reboot (void)
-
ESP8266EX
43 / 91 Espressif Systems February 9, 2015
3.6. sniffer
3.6.1. wifi_promiscuous_enable
sniffer
Void wifi_promiscuous_enable(uint8 promiscuous)
uint8 promiscuous 0, disable promiscuous
1, enable promiscuous
Espressif sniffer demo
3.6.2. wifi_set_promiscuous_rx_cb
wifi call back
Void wifi_set_promiscuous_rx_cb(wifi_promiscuous_cb_t cb)
wifi_promiscuous_cb_t cb
3.6.3. wifi_get_channel
sniffer
-
ESP8266EX
44 / 91 Espressif Systems February 9, 2015
Uint8 wifi_get_channel (void)
3.6.4. wifi_set_channel
sniffer
bool wifi_set_channel (uint8 channel)
uint8 channel
True False
3.7. smart config
3.7.1. smartconfig_start
AP
station APP
AP ssid passwordsmartconfig_start
smartconfig_start
bool smartconfig_start(sc_type type, sc_callback_t cb)
sc_type type AirKiss ESP-TOUCH
sc_callback_t cb ssid password
-
ESP8266EX
45 / 91 Espressif Systems February 9, 2015
struct station_config
True False
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
smartconfig_start
AP
bool smartconfig_stop(void)
NULL
True False
-
ESP8266EX
46 / 91 Espressif Systems February 9, 2015
3.7.3. get_smartconfig_status
smartconfig_stop smartconfig_stop
sc_status get_smartconfig_status(void)
NULL
typedef enum {
SC_STATUS_FIND_CHANNEL = 0,
SC_STATUS_GETTING_SSID_PSWD,
SC_STATUS_GOT_SSID_PSWD,
SC_STATUS_LINK,
} sc_status;
3.8.
\include\espconn.h
TCP UDP
TCP TCP
UDP UDP
3.8.1.
3.8.1.1. espconn_delete
TCP espconn_accept , UDPespconn_create
-
ESP8266EX
47 / 91 Espressif Systems February 9, 2015
Sin8 espconn_delete(struct espconn *espconn)
struct espconn *espconn
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.1.2. espconn_gethostbyname
Err_t espconn_gethostbyname(struct espconn *pespconn, const char
*hostname, ip_addr_t *addr, dns_found_callback found)
struct espconn *espconn
const char *hostname string
ip_addr_t *addrip
dns_found_callback found
Err_tESPCONN_OK
ESPCONN_INPROGRESS
ESPCONN_ARG
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;
-
ESP8266EX
48 / 91 Espressif Systems February 9, 2015
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
uint32 espconn_port(void);
uint32
3.8.1.4. espconn_regist_sentcb
Sint8 espconn_regist_sentcb(struct espconn *espconn,
espconn_sent_callback sent_cb)
struct espconn *espconn
-
ESP8266EX
49 / 91 Espressif Systems February 9, 2015
espconn_sent_callback sent_cb
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.1.5. espconn_regist_recvcb
Sint8 espconn_regist_recvcb(struct espconn *espconn,
espconn_recv_callback recv_cb)
struct espconn *espconn
espconn_connect_callback connect_cb
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.1.6. espconn_sent_callback
void espconn_sent_callback (void *arg)
void *arg
-
ESP8266EX
50 / 91 Espressif Systems February 9, 2015
3.8.1.7. espconn_recv_callback
void espconn_recv_callback (void *arg, char *pdata, unsigned short len)
void *arg
char *pdata
unsigned short len
3.8.1.8. espconn_sent
espconn_sent_callback
espconn_sent
Sint8 espconn_sent(struct espconn *espconn, uint8 *psent, uint16 length)
struct espconn *espconn
uint8 *psentsent
uint16 lengthsent
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
-
ESP8266EX
51 / 91 Espressif Systems February 9, 2015
3.8.2. TCP
3.8.2.1. espconn_accept
TCP server
Sin8 espconn_accept(struct espconn *espconn)
struct espconn *espconn
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.2.2. espconn_secure_accept
TCP server SSL
Sint8 espconn_secure_accept(struct espconn *espconn)
struct espconn *espconn
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.2.3. espconn_regist_time
ESP8266 TCP Server
-
ESP8266EX
52 / 91 Espressif Systems February 9, 2015
Sin8 espconn_regist_time(struct espconn *espconn, uint32 interval, uint8
type_flag)
struct espconn *espconn
uint32 interval 7200
uint8 type_flag 01
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.2.4. espconn_get_connection_info
TCP TCP server TCP client
Sin8 espconn_get_connection_info (struct espconn *espconn, remot_info
**pcon_info, uint8 typeflags)
struct espconn *espconn
remot_info **pcon_info client
uint8 typeflags 0 server1ssl server
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
-
ESP8266EX
53 / 91 Espressif Systems February 9, 2015
3.8.2.5. espconn_connect
ESP8266 TCP client TCP
Sint8 espconn_connect(struct espconn *espconn)
struct espconn *espconn
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.2.6. espconn_connect_callback
TCP
Void espconn_connect_callback (void *arg)
void *arg
3.8.2.7. espconn_set_opt
TCP
sint8 espconn_set_opt(struct espconn *espconn, uint8 opt)
struct espconn *espconn
-
ESP8266EX
54 / 91 Espressif Systems February 9, 2015
uint8 opt 0, TCP 2min
1 TCP nalgo
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
espconn_set_opt(espconn, 0) connected callback
espconn_set_opt(espconn, 1) disconnect
3.8.2.8. espconn_disconnect
TCP
Sin8 espconn_disconnect(struct espconn *espconn);
struct espconn *espconn
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.2.9. espconn_regist_connectcb
TCP
Sint8 espconn_regist_connectcb(struct espconn *espconn,
espconn_connect_callback connect_cb)
-
ESP8266EX
55 / 91 Espressif Systems February 9, 2015
struct espconn *espconn
espconn_connect_callback connect_cb
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.2.10. espconn_regist_reconcb
TCP
reconnect callback
reconnect callbackespconn_sent
reconnect callback reconnect callback
Sint8 espconn_regist_reconcb(struct espconn *espconn,
espconn_connect_callback recon_cb)
struct espconn *espconn
espconn_connect_callback connect_cb
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.2.11. espconn_regist_disconcb
TCP
Sint8 espconn_regist_disconcb(struct espconn *espconn,
espconn_connect_callback discon_cb)
-
ESP8266EX
56 / 91 Espressif Systems February 9, 2015
struct espconn *espconn
espconn_connect_callback connect_cb
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.2.12. espconn_secure_connect
ESP8266 TCP client TCP SSL
Sint8 espconn_secure_connect (struct espconn *espconn)
struct espconn *espconn
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.2.13. espconn_secure_sent
TCP SSL
Sint8 espconn_secure_sent (struct espconn *espconn, uint8 *psent, uint16
length)
struct espconn *espconn
uint8 *psentsent
-
ESP8266EX
57 / 91 Espressif Systems February 9, 2015
uint16 lengthsent
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.2.14. espconn_secure_disconnect
TCP SSL
Sint8 espconn_secure_disconnect(struct espconn *espconn)
struct espconn *espconn
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.2.15. espconn_tcp_get_max_con
TCP
uint8 espconn_tcp_get_max_con(void)
TCP
3.8.2.16. espconn_tcp_set_max_con
TCP
-
ESP8266EX
58 / 91 Espressif Systems February 9, 2015
Sint8 espconn_tcp_set_max_con(uint8 num)
uint8 num TCP
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.2.17. espconn_tcp_get_max_con_allow
ESP8266 TCP server TCP client
Sint8 espconn_tcp_get_max_con_allow(struct espconn *espconn)
struct espconn *espconn
TCP server TCP client
3.8.2.18. espconn_tcp_set_max_con_allow
ESP8266 TCP server TCP client
Sint8 espconn_tcp_set_max_con_allow(struct espconn *espconn, uint8
num)
struct espconn *espconn
uint8 num -- TCP client
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
-
ESP8266EX
59 / 91 Espressif Systems February 9, 2015
3.8.2.19. espconn_recv_hold
TCP
tcp 1460*5
Byte
Sint8 espconn_recv_hold(struct espconn *espconn)
struct espconn *espconn
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h ESPCONN_ARG ,
espconn tcp .
3.8.2.20. espconn_recv_unhold
TCP
Sint8 espconn_recv_unhold(struct espconn *espconn)
struct espconn *espconn
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h ESPCONN_ARG ,
espconn tcp .
-
ESP8266EX
60 / 91 Espressif Systems February 9, 2015
3.8.3. UDP
3.8.3.1. espconn_create
UDP
Sin8 espconn_create(struct espconn *espconn)
struct espconn *espconn
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.3.2. espconn_igmp_join
Sin8 espconn_igmp_join(ip_addr_t *host_ip, ip_addr_t *multicast_ip)
ip_addr_t *host_ip ip
ip_addr_t *multicast_ip ip
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
3.8.3.3. espconn_igmp_leave
-
ESP8266EX
61 / 91 Espressif Systems February 9, 2015
Sin8 espconn_igmp_leave(ip_addr_t *host_ip, ip_addr_t *multicast_ip)
ip_addr_t *host_ip ip
ip_addr_t *multicast_ip ip
0 - succeed#define ESPCONN_OK 0
0 - Erro espconn.h
-
ESP8266EX
62 / 91 Espressif Systems February 9, 2015
3.9. AT
AT esp_iot_sdk/examples/5.at/user/user_main.c
3.9.1. at_response_ok
OK AT Port (UART0)
void at_response_ok(void)
NULL
NULL
3.9.2. at_response_error
ERROR AT Port (UART0)
void at_response_error(void)
NULL
NULL
3.9.3. at_cmd_array_regist
AT
void at_cmd_array_regist (at_funcation * custom_at_cmd_arrar, uint32
cmd_num)
-
ESP8266EX
63 / 91 Espressif Systems February 9, 2015
at_funcation * custom_at_cmd_arrar - AT
uint32 cmd_num -
NULL
esp_iot_sdk/examples/5.at/user/user_main.c
3.9.4. at_get_next_int_dec
AT int
bool at_get_next_int_dec (char **p_src,int* result,int* err)
char **p_src - *p_src at
int* result - int
int* err -
1 1
3- 3
TRUE( True 1)
FALSE 10 bytes\r
-
esp_iot_sdk/examples/5.at/user/user_main.c
3.9.5. at_data_str_copy
AT
Int32 at_data_str_copy (char * p_dest, char ** p_src,int32 max_len)
char * p_dest -
char ** p_src - *p_src AT
-
ESP8266EX
64 / 91 Espressif Systems February 9, 2015
int32 max_len -
-1
esp_iot_sdk/examples/5.at/user/user_main.c
3.9.6. at_init
AT
void at_init (void)
NULL
NULL
esp_iot_sdk/examples/5.at/user/user_main.c
3.9.7. at_port_print
AT PORT(UART0)
void at_port_print(const char *str)
const char *str -
NULL
esp_iot_sdk/examples/5.at/user/user_main.c
-
ESP8266EX
65 / 91 Espressif Systems February 9, 2015
3.10. json API
jsonparse \include\json\jsonparse.h
jsontree \include\json\jsontree.h
3.10.1. jsonparse_setup
json
void jsonparse_setup(struct jsonparse_state *state, const char *json,int
len)
struct jsonparse_state *statejson
const char *jsonjson
int len
3.10.2. jsonparse_next
json
Int jsonparse_next(struct jsonparse_state *state)
struct jsonparse_state *statejson
int
3.10.3. jsonparse_copy_value
-
ESP8266EX
66 / 91 Espressif Systems February 9, 2015
Int jsonparse_copy_value(struct jsonparse_state *state, char *str, int size)
struct jsonparse_state *statejson
char *str
int size
int
3.10.4. jsonparse_get_value_as_int
json
Int jsonparse_get_value_as_int(struct jsonparse_state *state)
struct jsonparse_state *statejson
int
3.10.5. jsonparse_get_value_as_long
json
Long jsonparse_get_value_as_long(struct jsonparse_state *state)
struct jsonparse_state *statejson
long
3.10.6. jsonparse_get_len
json
-
ESP8266EX
67 / 91 Espressif Systems February 9, 2015
Int jsonparse_get_value_len(struct jsonparse_state *state)
struct jsonparse_state *statejson
int json
3.10.7. jsonparse_get_value_as_type
json
Int jsonparse_get_value_as_type(struct jsonparse_state *state)
struct jsonparse_state *statejson
intjson
3.10.8. jsonparse_strcmp_value
json
Int jsonparse_strcmp_value(struct jsonparse_state *state, const char *str)
struct jsonparse_state *statejson
const char *str
int
3.10.9. jsontree_set_up
json
void jsontree_setup(struct jsontree_context *js_ctx,
-
ESP8266EX
68 / 91 Espressif Systems February 9, 2015
struct jsontree_value *root, int (* putchar)(int))
struct jsontree_context *js_ctxjson
struct jsontree_value *root
int (* putchar)(int)
3.10.10. jsontree_reset
json
void jsontree_reset(struct jsontree_context *js_ctx)
struct jsontree_context *js_ctxjson
3.10.11. jsontree_path_name
json
const char *jsontree_path_name(const struct jsontree_cotext *js_ctx,int
depth)
struct jsontree_context *js_ctxjson
int depthjson
char*
-
ESP8266EX
69 / 91 Espressif Systems February 9, 2015
3.10.12. jsontree_write_int
json
void jsontree_write_int(const struct jsontree_context *js_ctx, int value)
struct jsontree_context *js_ctxjson
int value
3.10.13. jsontree_write_int_array
json
void jsontree_write_int_array(const struct jsontree_context *js_ctx, const
int *text, uint32 length)
struct jsontree_context *js_ctxjson
int *text
uint32 length
3.10.14. jsontree_write_string
json
void jsontree_write_string(const struct jsontree_context *js_ctx, const char
*text)
-
ESP8266EX
70 / 91 Espressif Systems February 9, 2015
struct jsontree_context *js_ctxjson
const char* text
3.10.15. jsontree_print_next
json
int jsontree_print_next(struct jsontree_context *js_ctx)
struct jsontree_context *js_ctxjson
intjson
3.10.16. jsontree_find_next
json
struct jsontree_value *jsontree_find_next(struct jsontree_context *js_ctx,
int type)
struct jsontree_context *js_ctxjson
int
struct jsontree_value *json
-
ESP8266EX
71 / 91 Espressif Systems February 9, 2015
4.
4.1.
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
4.2.1. station
struct station_config {
uint8 ssid[32];
uint8 password[64];
uint8 bssid_set;
uint8 bssid[6];
};
bssid AP ssid bssid
bssid_set 1 bssid
bssid_set 0 ssid
-
ESP8266EX
72 / 91 Espressif Systems February 9, 2015
4.2.2. softap
typedef enum _auth_mode {
AUTH_OPEN = 0,
AUTH_WEP,
AUTH_WPA_PSK,
AUTH_WPA2_PSK,
AUTH_WPA_WPA2_PSK
} AUTH_MODE;
struct softap_config {
uint8 ssid[32];
uint8 password[64];
uint8 ssid_len;
uint8 channel;
uint8 authmode;
uint8 ssid_hidden;
uint8 max_connection;
uint8 beacon_interval; // 100 ~ 60000 ms, default 100
};
struct softap_config ssid_len 0 ssid
ssid_len 0 ssid_len ssid
4.2.3. scan
struct scan_config {
uint8 *ssid;
uint8 *bssid;
uint8 channel;
uint8 show_hidden; // ssid AP
-
ESP8266EX
73 / 91 Espressif Systems February 9, 2015
};
struct bss_info {
STAILQ_ENTRY(bss_info) next;
u8 bssid[6];
u8 ssid[32];
u8 channel;
s8 rssi;
u8 authmode;
uint8 is_hidden; // AP SSID .
};
typedef void (* scan_done_cb_t)(void *arg, STATUS status);
4.3. smart config
typedef enum {
SC_STATUS_FIND_CHANNEL = 0,
SC_STATUS_GETTING_SSID_PSWD,
SC_STATUS_GOT_SSID_PSWD,
SC_STATUS_LINK,
} sc_status;
typedef enum {
SC_TYPE_ESPTOUCH = 0,
SC_TYPE_AIRKISS,
} sc_type;
-
ESP8266EX
74 / 91 Espressif Systems February 9, 2015
4.4. json
4.3.1. json
struct jsontree_value {
uint8_t type;
};
struct jsontree_pair {
const char *name;
struct jsontree_value *value;
};
struct jsontree_context {
struct jsontree_value *values[JSONTREE_MAX_DEPTH];
uint16_t index[JSONTREE_MAX_DEPTH];
int (* putchar)(int);
uint8_t depth;
uint8_t path;
int callback_state;
};
struct jsontree_callback {
uint8_t type;
int (* output)(struct jsontree_context *js_ctx);
int (* set)(struct jsontree_context *js_ctx, struct jsonparse_state *parser);
};
struct jsontree_object {
-
ESP8266EX
75 / 91 Espressif Systems February 9, 2015
uint8_t type;
uint8_t count;
struct jsontree_pair *pairs;
};
struct jsontree_array {
uint8_t type;
uint8_t count;
struct jsontree_value **values;
};
struct jsonparse_state {
const char *json;
int pos;
int len;
int depth;
int vstart;
int vlen;
char vtype;
char error;
char stack[JSONPARSE_MAX_DEPTH];
};
4.3.2. json
#define JSONTREE_OBJECT(name, ...)
\
static struct jsontree_pair jsontree_pair_##name[] = {__VA_ARGS__}; \
static struct jsontree_object name = { \
-
ESP8266EX
76 / 91 Espressif Systems February 9, 2015
JSON_TYPE_OBJECT, \
sizeof(jsontree_pair_##name)/sizeof(struct jsontree_pair), \
jsontree_pair_##name }
#define JSONTREE_PAIR_ARRAY(value) (struct jsontree_value *)(value)
#define JSONTREE_ARRAY(name, ...)
\
static struct jsontree_value* jsontree_value_##name[] = {__VA_ARGS__}; \
static struct jsontree_array name = { \
JSON_TYPE_ARRAY, \
sizeof(jsontree_value_##name)/sizeof(struct jsontree_value*), \
jsontree_value_##name }
4.5. espconn
4.4.1 function
/** callback prototype to inform about events for a espconn */
typedef void (* espconn_recv_callback)(void *arg, char *pdata, unsigned short
len);
typedef void (* espconn_callback)(void *arg, char *pdata, unsigned short len);
typedef void (* espconn_connect_callback)(void *arg);
4.4.2 espconn
typedef void* espconn_handle;
typedef struct _esp_tcp {
int client_port;
int server_port;
char ipaddr[4];
espconn_connect_callback connect_callback;
-
ESP8266EX
77 / 91 Espressif Systems February 9, 2015
espconn_connect_callback reconnect_callback;
espconn_connect_callback disconnect_callback;
} esp_tcp;
typedef struct _esp_udp {
int _port;
char ipaddr[4];
} esp_udp;
/** Protocol family and type of the espconn */
enum espconn_type {
ESPCONN_INVALID = 0,
/* ESPCONN_TCP Group */
ESPCONN_TCP = 0x10,
/* ESPCONN_UDP Group */
ESPCONN_UDP = 0x20,
};
/** Current state of the espconn. Non-TCP espconn are always in state
ESPCONN_NONE! */
enum espconn_state {
ESPCONN_NONE,
ESPCONN_WAIT,
ESPCONN_LISTEN,
ESPCONN_CONNECT,
ESPCONN_WRITE,
ESPCONN_READ,
ESPCONN_CLOSE
};
-
ESP8266EX
78 / 91 Espressif Systems February 9, 2015
/** A espconn descriptor */
struct espconn {
/** type of the espconn (TCP, UDP) */
enum espconn_type type;
/** current state of the espconn */
enum espconn_state state;
union {
esp_tcp *tcp;
esp_udp *udp;
} proto;
/** A callback function that is informed about events for this espconn */
espconn_recv_callback recv_callback;
espconn_sent_callback sent_callback;
espconn_handle esp_pcb;
uint8 *ptrbuf;
uint16 cntr;
};
-
ESP8266EX
79 / 91 Espressif Systems February 9, 2015
5.
5.1. GPIO API
gpio API \user\ user_plug.c
5.1.1. PIN
PIN_PULLUP_DIS(PIN_NAME)
PIN_PULLUP_EN(PIN_NAME)
PIN_PULLDWN_DIS(PIN_NAME)
PIN_PULLDWN_EN(PIN_NAME)
PIN_FUNC_SELECT(PIN_NAME, FUNC)
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,
FUNC_GPIO12);
MTDI GPIO12
5.1.2. gpio_output_set
gpio
void gpio_output_set(uint32 set_mask, uint32 clear_mask, uint32
enable_mask, uint32 disable_mask)
uint32 set_mask 1 0
-
ESP8266EX
80 / 91 Espressif Systems February 9, 2015
uint32 clear_mask 1
0
uint32 enable_mask
uint32 disable_mask
GPIO12 gpio_output_set(BIT12, 0, BIT12, 0);
GPIO12 gpio_output_set(0, BIT12, BIT12, 0);
GPIO12 GPIO13
gpio_output_set(BIT12, BIT13, BIT12|BIT13, 0);
GPIO12 gpio_output_set(0, 0, 0, BIT12);
5.1.3. GPIO
GPIO_OUTPUT_SET(gpio_no, bit_value)
gpio_no bit_value 5.1.2
GPIO_DIS_OUTPUT(gpio_no)
gpio_no 5.1.2
GPIO_INPUT_GET(gpio_no)
gpio_no
5.1.4. GPIO
ETS_GPIO_INTR_ATTACH(func, arg)
GPIO
ETS_GPIO_INTR_DISABLE()
GPIO
ETS_GPIO_INTR_ENABLE()
GPIO
-
ESP8266EX
81 / 91 Espressif Systems February 9, 2015
5.1.5. gpio_pin_intr_state_set
gpio
void gpio_pin_intr_state_set(uint32 i, GPIO_INT_TYPE intr_state)
uint32 iGPIO ID GPIO14 GPIO_ID_PIN(14)
GPIO_INT_TYPE intr_state
typedef enum{
GPIO_PIN_INTR_DISABLE = 0,
GPIO_PIN_INTR_POSEDGE= 1,
GPIO_PIN_INTR_NEGEDGE= 2,
GPIO_PIN_INTR_ANYEGDE=3,
GPIO_PIN_INTR_LOLEVEL= 4,
GPIO_PIN_INTR_HILEVEL = 5
}GPIO_INT_TYPE;
5.1.6. GPIO
GPIO
uint32 gpio_status;
gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);
//clear interrupt status
GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status);
5.2. UART API
UART0 debug UART
UART0 UART1 debug
-
ESP8266EX
82 / 91 Espressif Systems February 9, 2015
5.2.1. uart_init
uart uart
void uart_init(UartBautRate uart0_br, UartBautRate uart1_br)
UartBautRate uart0_bruart0
UartBautRate uart1_bruart1
typedef enum {
BIT_RATE_9600 = 9600,
BIT_RATE_19200 = 19200,
BIT_RATE_38400 = 38400,
BIT_RATE_57600 = 57600,
BIT_RATE_74880 = 74880,
BIT_RATE_115200 = 115200,
BIT_RATE_230400 = 230400,
BIT_RATE_460800 = 460800,
BIT_RATE_921600 = 921600
} UartBautRate;
5.2.2. uart0_tx_buffer
UART0
Void uart0_tx_buffer(uint8 *buf, uint16 len)
Uint8 *buf
Uint16 len
-
ESP8266EX
83 / 91 Espressif Systems February 9, 2015
5.2.3. uart0_rx_intr_handler
UART0
0x100 0x100
Void uart0_rx_intr_handler(void *para)
Void*para RcvMsgBuff
5.3. i2c master
ESP8266 I2C I2C I2C
GPIO open-drain)
GPIO I2C data clock
5.3.1. i2c_master_gpio_init
i2c master GPIO
Void i2c_master_gpio_init (void)
-
ESP8266EX
84 / 91 Espressif Systems February 9, 2015
5.3.2. i2c_master_init
i2c
Void i2c_master_init(void)
5.3.3. i2c_master_start
i2c
Void i2c_master_start(void)
5.3.4. i2c_master_stop
i2c
Void i2c_master_stop(void)
-
ESP8266EX
85 / 91 Espressif Systems February 9, 2015
5.3.5. i2c_master_send_ack
i2c ACK
Void i2c_master_send_ack (void)
NULL
5.3.6. i2c_master_send_nack
i2c NACK
Void i2c_master_send_nack (void)
NULL
5.3.7. i2c_master_checkAck
slave ACK
bool i2c_master_checkAck (void)
NULL
TRUE slave ACK
FALSE slave NACK
-
ESP8266EX
86 / 91 Espressif Systems February 9, 2015
5.3.8. i2c_master_readByte
slave
Uint8 i2c_master_readByte (void)
uint8
5.3.9. i2c_master_writeByte
slave
Void i2c_master_writeByte (uint8 wrdata)
uint8 wrdata
-
ESP8266EX
87 / 91 Espressif Systems February 9, 2015
5.4. pwm
4 PWM pwm.h GPIO
5.4.1. pwm_init
pwm gpio
Void pwm_init(uint16 freq, uint8 *duty)
Uint16 freqpwm
uint8 *duty
5.4.2. pwm_start
pwm pwm
Void pwm_start (void)
5.4.3. pwm_set_duty
Void pwm_set_duty(uint8 duty, uint8 channel)
uint8 duty
-
ESP8266EX
88 / 91 Espressif Systems February 9, 2015
uint8 channel
5.4.4. pwm_set_freq
pwm
Void pwm_set_freq(uint16 freq)
Uint16 freqpwm
5.4.5. pwm_get_duty
uint8 pwm_get_duty(uint8 channel)
uint8 channel channel
uint8
5.4.6. pwm_get_freq
pwm
Uint16 pwm_get_freq(void)
-
ESP8266EX
89 / 91 Espressif Systems February 9, 2015
Uint16
6.
A. ESPCONN
ESP8266 TCP client TCP server
A.1. TCP client
A.1.1.
ESP8266 Station ESP8266 AP()
IP client
ESP8266 softap ESP8266 ip
client
A.1.2.
1) espconn
2) connect recv
3) espconn_connect TCP server
4) connect
disconnect
5) recv sent disconnect
A.2. TCP server
A.2.1.
ESP8266 Station ESP8266 IP
-
ESP8266EX
90 / 91 Espressif Systems February 9, 2015
server
ESP8266 softap server
A.2.2.
1) espconn
2) connect recv
3) espconn_accept host
connect
B. RTC
RTC system_restart
RTC memory
void user_init(void)
{
os_printf("clk cal : %d \n\r",system_rtc_clock_cali_proc()>>12);
uint32 rtc_time = 0, rtc_reg_val = 0,stime = 0,rtc_time2 = 0,stime2 = 0;
rtc_time = system_get_rtc_time(); // RTC
stime = system_get_time(); //
os_printf("rtc time : %d \n\r",rtc_time);
os_printf("system time : %d \n\r",stime);
// RTC memory
if( system_rtc_mem_read(0, &rtc_reg_val, 4) ){
os_printf("rtc mem val : 0x%08x\n\r",rtc_reg_val);
}else{
-
ESP8266EX
91 / 91 Espressif Systems February 9, 2015
os_printf("rtc mem val error\n\r");
}
rtc_reg_val++;
os_printf("rtc mem val write\n\r");
system_rtc_mem_write(0, &rtc_reg_val, 4) ; // RTC memory
if( system_rtc_mem_read(0, &rtc_reg_val, 4) ){
os_printf("rtc mem val : 0x%08x\n\r",rtc_reg_val);
}else{
os_printf("rtc mem val error\n\r");
}
rtc_time2 = system_get_rtc_time();
stime2 = system_get_time();
os_printf("rtc time : %d \n\r",rtc_time2);
os_printf("system time : %d \n\r",stime2);
os_printf("delta time rtc: %d \n\r",rtc_time2-rtc_time);
os_printf("delta system time rtc: %d \n\r",stime2-stime);
os_printf("clk cal : %d \n\r",system_rtc_clock_cali_proc()>>12);
os_delay_us(500000);
system_restart();
}
1. 2. 3. SDKAPI3.1. 3.1.1. os_timer_arm3.1.2. os_timer_disarm3.1.3. os_timer_setfn
3.2. 3.2.1. system_restore3.2.2. system_restart3.2.3. system_timer_reinit3.2.4. system_init_done_cb3.2.5. system_get_chip_id3.2.6. system_deep_sleep3.2.7. system_deep_sleep_set_option3.2.8. system_set_os_print3.2.9. system_print_meminfo3.2.10. system_get_free_heap_size3.2.11. system_os_task3.2.12. system_os_post3.2.13. system_get_time3.2.14. system_get_rtc_time3.2.15. system_rtc_clock_cali_proc3.2.16. system_rtc_mem_write3.2.17. system_rtc_mem_read3.2.18. system_uart_swap3.2.19. system_adc_read
3.3. SPI Flash 3.3.1. spi_flash_get_id3.3.2. spi_flash_erase_sector3.3.3. spi_flash_write3.3.4. spi_flash_read
3.4. WIFI3.4.1. wifi_get_opmode3.4.2. wifi_set_opmode3.4.3. wifi_station_get_config3.4.4. wifi_station_set_config3.4.5. wifi_station_connect3.4.6. wifi_station_disconnect3.4.7. wifi_station_get_connect_status3.4.8. wifi_station_scan3.4.9. scan_done_cb_t3.4.10. wifi_station_ap_number_set3.4.11. wifi_station_get_ap_info3.4.12. wifi_station_ap_change3.4.13. wifi_station_get_current_ap_id3.4.14. wifi_station_get_auto_connect3.4.15. wifi_station_set_auto_connect3.4.16. wifi_station_dhcpc_start3.4.17. wifi_station_dhcpc_stop3.4.18. wifi_station_dhcpc_status3.4.19. wifi_softap_get_config3.4.20. wifi_softap_set_config3.4.21. wifi_softap_get_station_info3.4.22. wifi_softap_free_station_info3.4.23. wifi_softap_dhcps_start3.4.24. wifi_softap_dhcps_stop3.4.25. wifi_softap_set_dhcps_lease3.4.26. wifi_softap_dhcps_status3.4.27. wifi_set_phy_mode3.4.28. wifi_get_phy_mode3.4.29. wifi_get_ip_info3.4.30. wifi_set_ip_info3.4.31. wifi_set_macaddr3.4.32. wifi_get_macaddr3.4.33. wifi_set_sleep_type3.4.34. wifi_get_sleep_type3.4.35. wifi_status_led_install3.4.36. wifi_status_led_uninstall
3.5. 3.5.1. system_upgrade_userbin_check3.5.2. system_upgrade_flag_set3.5.3. system_upgrade_flag_check3.5.4. system_upgrade_start3.5.5. system_upgrade_reboot
3.6. sniffer 3.6.1. wifi_promiscuous_enable3.6.2. wifi_set_promiscuous_rx_cb3.6.3. wifi_get_channel3.6.4. wifi_set_channel
3.7. smart config3.7.1. smartconfig_start3.7.2. smartconfig_stop3.7.3. get_smartconfig_status
3.8. 3.8.1. 3.8.1.1. espconn_delete3.8.1.2. espconn_gethostbyname3.8.1.3. espconn_port3.8.1.4. espconn_regist_sentcb3.8.1.5. espconn_regist_recvcb3.8.1.6. espconn_sent_callback3.8.1.7. espconn_recv_callback3.8.1.8. espconn_sent
3.8.2. TCP 3.8.2.1. espconn_accept3.8.2.2. espconn_secure_accept3.8.2.3. espconn_regist_time3.8.2.4. espconn_get_connection_info3.8.2.5. espconn_connect3.8.2.6. espconn_connect_callback3.8.2.7. espconn_set_opt3.8.2.8. espconn_disconnect3.8.2.9. espconn_regist_connectcb3.8.2.10. espconn_regist_reconcb3.8.2.11. espconn_regist_disconcb3.8.2.12. espconn_secure_connect3.8.2.13. espconn_secure_sent3.8.2.14. espconn_secure_disconnect3.8.2.15. espconn_tcp_get_max_con3.8.2.16. espconn_tcp_set_max_con3.8.2.17. espconn_tcp_get_max_con_allow3.8.2.18. espconn_tcp_set_max_con_allow3.8.2.19. espconn_recv_hold3.8.2.20. espconn_recv_unhold
3.8.3. UDP 3.8.3.1. espconn_create3.8.3.2. espconn_igmp_join3.8.3.3. espconn_igmp_leave
3.9. AT3.9.1. at_response_ok3.9.2. at_response_error3.9.3. at_cmd_array_regist3.9.4. at_get_next_int_dec3.9.5. at_data_str_copy3.9.6. at_init3.9.7. at_port_print
3.10. json API3.10.1. jsonparse_setup3.10.2. jsonparse_next3.10.3. jsonparse_copy_value3.10.4. jsonparse_get_value_as_int3.10.5. jsonparse_get_value_as_long3.10.6. jsonparse_get_len3.10.7. jsonparse_get_value_as_type3.10.8. jsonparse_strcmp_value3.10.9. jsontree_set_up3.10.10. jsontree_reset3.10.11. jsontree_path_name3.10.12. jsontree_write_int3.10.13. jsontree_write_int_array3.10.14. jsontree_write_string3.10.15. jsontree_print_next3.10.16. jsontree_find_next
4. 4.1. 4.2. wifi1.2.3.4.4.1.4.2.4.2.1. station4.2.2. softap4.2.3. scan
4.3. smart config 4.4. json4.3.4.3.1. json4.3.2. json
4.5. espconn4.4.1 function4.4.2 espconn
5. 5.1. GPIOAPI5.1.1. PIN5.1.2. gpio_output_set5.1.3. GPIO5.1.4. GPIO5.1.5. gpio_pin_intr_state_set5.1.6. GPIO
5.2. UARTAPI5.2.1. uart_init5.2.2. uart0_tx_buffer5.2.3. uart0_rx_intr_handler
5.3. i2c master5.3.1. i2c_master_gpio_init5.3.2. i2c_master_init5.3.3. i2c_master_start5.3.4. i2c_master_stop5.3.5. i2c_master_send_ack5.3.6. i2c_master_send_nack5.3.7. i2c_master_checkAck5.3.8. i2c_master_readByte5.3.9. i2c_master_writeByte
5.4. pwm5.4.1. pwm_init5.4.2. pwm_start5.4.3. pwm_set_duty5.4.4. pwm_set_freq5.4.5. pwm_get_duty5.4.6. pwm_get_freq
6. A. ESPCONNA.1. TCP clientA.1.1. A.1.2.
A.2. TCP serverA.2.1. A.2.2.
B. RTC