migrate to sdk 0.9.5 release version
This commit is contained in:
parent
360fb59e63
commit
ad966146fc
53
README.md
53
README.md
|
@ -1,7 +1,7 @@
|
|||
# **NodeMcu** #
|
||||
version 0.9.5
|
||||
###A lua based firmware for wifi-soc esp8266
|
||||
Build on [ESP8266 sdk 0.9.5](http://bbs.espressif.com/viewtopic.php?f=7&t=104)<br />
|
||||
Build on [ESP8266 sdk 0.9.5](http://bbs.espressif.com/viewtopic.php?f=5&t=154)<br />
|
||||
Lua core based on [eLua project](http://www.eluaproject.net/)<br />
|
||||
File system based on [spiffs](https://github.com/pellepl/spiffs)<br />
|
||||
Open source development kit for NodeMCU [nodemcu-devkit](https://github.com/nodemcu/nodemcu-devkit)<br />
|
||||
|
@ -16,16 +16,22 @@ Tencent QQ group: 309957875<br />
|
|||
- Easy to access wireless router
|
||||
- Based on Lua 5.1.4 (without *io, math, debug, os* module.)
|
||||
- Event-Drive programming preferred.
|
||||
- Build-in file, timer, pwm, i2c, 1-wire, net, gpio, wifi, adc, uart and system api.
|
||||
- Build-in file, timer, pwm, i2c, spi, 1-wire, net, mqtt, gpio, wifi, adc, uart and system api.
|
||||
- GPIO pin re-mapped, use the index to access gpio, i2c, pwm.
|
||||
|
||||
# To Do List (pull requests are very welcomed)
|
||||
- fix wifi smart connect
|
||||
- add spi module
|
||||
- add mqtt module
|
||||
- add spi module (done)
|
||||
- add mqtt module (done)
|
||||
- add coap module
|
||||
- cross compiler
|
||||
|
||||
# Change log
|
||||
2015-01-24<br />
|
||||
migrate to sdk 0.9.5 release.<br />
|
||||
tmr.time() now return second(not precise yet). <br />
|
||||
build pre_build bin.
|
||||
|
||||
2015-01-23<br />
|
||||
merge mqtt branch to master.<br />
|
||||
build pre_build bin.
|
||||
|
@ -80,39 +86,6 @@ pre_build/latest/nodemcu_512k_latest.bin is removed. use pre_build/latest/nodemc
|
|||
</table>
|
||||
#### [*] D0(GPIO16) can only be used as gpio read/write. no interrupt supported. no pwm/i2c/ow supported.
|
||||
|
||||
##GPIO OLD TABLE (Before build 20141212)
|
||||
|
||||
<a id="old_gpio_map"></a>
|
||||
<table>
|
||||
<tr>
|
||||
<th scope="col">IO index</th><th scope="col">ESP8266 pin</th><th scope="col">IO index</th><th scope="col">ESP8266 pin</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>0</td><td>GPIO12</td><td>8</td><td>GPIO0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td><td>GPIO13</td><td>9</td><td>GPIO2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2</td><td>GPIO14</td><td>10</td><td>GPIO4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3</td><td>GPIO15</td><td>11</td><td>GPIO5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>4</td><td>GPIO3</td><td></td><td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>5</td><td>GPIO1</td><td></td><td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>6</td><td>GPIO9</td><td></td><td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>7</td><td>GPIO10</td<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
#Build option
|
||||
####file ./app/include/user_config.h
|
||||
```c
|
||||
|
@ -145,10 +118,8 @@ for most esp8266 modules, just pull GPIO0 down and restart.<br />
|
|||
You can use the [nodemcu-flasher](https://github.com/nodemcu/nodemcu-flasher) to burn the firmware.
|
||||
|
||||
Or, if you build your own bin from source code.<br />
|
||||
eagle.app.v6.flash.bin: 0x00000<br />
|
||||
eagle.app.v6.irom0text.bin: 0x10000<br />
|
||||
esp_init_data_default.bin: 0x7c000<br />
|
||||
blank.bin: 0x7e000<br />
|
||||
0x00000.bin: 0x00000<br />
|
||||
0x10000.bin: 0x10000<br />
|
||||
|
||||
*Better run file.format() after flash*
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ endif # } PDIR
|
|||
APPDIR = .
|
||||
LDDIR = ../ld
|
||||
|
||||
CCFLAGS += -Os
|
||||
|
||||
TARGET_LDFLAGS = \
|
||||
-nostdlib \
|
||||
|
@ -49,7 +50,6 @@ TARGET_LDFLAGS = \
|
|||
--longcalls \
|
||||
--text-section-literals
|
||||
|
||||
|
||||
ifeq ($(FLAVOR),debug)
|
||||
TARGET_LDFLAGS += -g -O2
|
||||
endif
|
||||
|
@ -101,6 +101,7 @@ LINKFLAGS_eagle.app.v6 = \
|
|||
-lwpa \
|
||||
-lmain \
|
||||
-ljson \
|
||||
-lsmartconfig \
|
||||
$(DEP_LIBS_eagle.app.v6) \
|
||||
-Wl,--end-group
|
||||
|
||||
|
|
|
@ -219,6 +219,45 @@ i2c_master_getAck(void)
|
|||
return retVal;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* FunctionName : i2c_master_checkAck
|
||||
* Description : get dev response
|
||||
* Parameters : NONE
|
||||
* Returns : true : get ack ; false : get nack
|
||||
*******************************************************************************/
|
||||
bool ICACHE_FLASH_ATTR
|
||||
i2c_master_checkAck(void)
|
||||
{
|
||||
if(i2c_master_getAck()){
|
||||
return FALSE;
|
||||
}else{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* FunctionName : i2c_master_send_ack
|
||||
* Description : response ack
|
||||
* Parameters : NONE
|
||||
* Returns : NONE
|
||||
*******************************************************************************/
|
||||
void ICACHE_FLASH_ATTR
|
||||
i2c_master_send_ack(void)
|
||||
{
|
||||
i2c_master_setAck(0x0);
|
||||
}
|
||||
/******************************************************************************
|
||||
* FunctionName : i2c_master_send_nack
|
||||
* Description : response nack
|
||||
* Parameters : NONE
|
||||
* Returns : NONE
|
||||
*******************************************************************************/
|
||||
void ICACHE_FLASH_ATTR
|
||||
i2c_master_send_nack(void)
|
||||
{
|
||||
i2c_master_setAck(0x1);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* FunctionName : i2c_master_readByte
|
||||
* Description : read Byte from i2c bus
|
||||
|
|
|
@ -349,11 +349,6 @@ pwm_init(uint16 freq, uint16 *duty)
|
|||
{
|
||||
uint8 i;
|
||||
|
||||
ETS_FRC_TIMER1_INTR_ATTACH(pwm_tim1_intr_handler, NULL);
|
||||
TM1_EDGE_INT_ENABLE();
|
||||
ETS_FRC1_INTR_ENABLE();
|
||||
|
||||
RTC_CLR_REG_MASK(FRC1_INT_ADDRESS, FRC1_INT_CLR_MASK);
|
||||
RTC_REG_WRITE(FRC1_CTRL_ADDRESS, //FRC2_AUTO_RELOAD|
|
||||
DIVDED_BY_16
|
||||
| FRC1_ENABLE_TIMER
|
||||
|
@ -377,6 +372,10 @@ pwm_init(uint16 freq, uint16 *duty)
|
|||
// pwm_set_freq_duty(freq, duty);
|
||||
|
||||
pwm_start();
|
||||
|
||||
ETS_FRC_TIMER1_INTR_ATTACH(pwm_tim1_intr_handler, NULL);
|
||||
TM1_EDGE_INT_ENABLE();
|
||||
ETS_FRC1_INTR_ENABLE();
|
||||
}
|
||||
|
||||
bool ICACHE_FLASH_ATTR
|
||||
|
|
|
@ -63,6 +63,11 @@ void i2c_master_setAck(uint8 level);
|
|||
uint8 i2c_master_getAck(void);
|
||||
uint8 i2c_master_readByte(void);
|
||||
void i2c_master_writeByte(uint8 wrdata);
|
||||
|
||||
bool i2c_master_checkAck(void);
|
||||
void i2c_master_send_ack(void);
|
||||
void i2c_master_send_nack(void);
|
||||
|
||||
uint8 i2c_master_get_pinSDA();
|
||||
uint8 i2c_master_get_pinSCL();
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#define NODE_VERSION_INTERNAL 0U
|
||||
|
||||
#define NODE_VERSION "NodeMCU 0.9.5"
|
||||
#define BUILD_DATE "build 20150123"
|
||||
#define BUILD_DATE "build 20150124"
|
||||
|
||||
// #define FLASH_512K
|
||||
// #define FLASH_1M
|
||||
|
@ -18,6 +18,9 @@
|
|||
#define FULL_VERSION_FOR_USER
|
||||
|
||||
#ifdef DEVELOP_VERSION
|
||||
|
||||
#define USE_OPTIMIZE_PRINTF
|
||||
|
||||
#define NODE_DEBUG
|
||||
#endif /* DEVELOP_VERSION */
|
||||
|
||||
|
@ -38,7 +41,7 @@
|
|||
#define ICACHE_STORE_TYPEDEF_ATTR __attribute__((aligned(4),packed))
|
||||
#define ICACHE_STORE_ATTR __attribute__((aligned(4)))
|
||||
#define ICACHE_RAM_ATTR __attribute__((section(".iram0.text")))
|
||||
#define ICACHE_RODATA_ATTR __attribute__((section(".rodata2.text")))
|
||||
// #define ICACHE_RODATA_ATTR __attribute__((section(".rodata2.text")))
|
||||
|
||||
#define CLIENT_SSL_ENABLE
|
||||
#define GPIO_INTERRUPT_ENABLE
|
||||
|
|
|
@ -47,6 +47,10 @@ extern int c_stderr;
|
|||
#define SEEK_END 2 /* set file offset to EOF plus offset */
|
||||
#endif
|
||||
|
||||
#define c_malloc os_malloc
|
||||
#define c_zalloc os_zalloc
|
||||
#define c_free os_free
|
||||
|
||||
extern void output_redirect(const char *str);
|
||||
#define c_puts output_redirect
|
||||
|
||||
|
|
|
@ -20,27 +20,27 @@ const char *c_getenv(const char *__string){
|
|||
}
|
||||
|
||||
// make sure there is enough memory before real malloc, otherwise malloc will panic and reset
|
||||
void *c_malloc(size_t __size){
|
||||
if(__size>system_get_free_heap_size()){
|
||||
NODE_ERR("malloc: not enough memory\n");
|
||||
return NULL;
|
||||
}
|
||||
return (void *)os_malloc(__size);
|
||||
}
|
||||
// void *c_malloc(size_t __size){
|
||||
// if(__size>system_get_free_heap_size()){
|
||||
// NODE_ERR("malloc: not enough memory\n");
|
||||
// return NULL;
|
||||
// }
|
||||
// return (void *)os_malloc(__size);
|
||||
// }
|
||||
|
||||
void *c_zalloc(size_t __size){
|
||||
if(__size>system_get_free_heap_size()){
|
||||
NODE_ERR("zalloc: not enough memory\n");
|
||||
return NULL;
|
||||
}
|
||||
return (void *)os_zalloc(__size);
|
||||
}
|
||||
// void *c_zalloc(size_t __size){
|
||||
// if(__size>system_get_free_heap_size()){
|
||||
// NODE_ERR("zalloc: not enough memory\n");
|
||||
// return NULL;
|
||||
// }
|
||||
// return (void *)os_zalloc(__size);
|
||||
// }
|
||||
|
||||
void c_free(void *p){
|
||||
// NODE_ERR("free1: %d\n", system_get_free_heap_size());
|
||||
os_free(p);
|
||||
// NODE_ERR("-free1: %d\n", system_get_free_heap_size());
|
||||
}
|
||||
// void c_free(void *p){
|
||||
// // NODE_ERR("free1: %d\n", system_get_free_heap_size());
|
||||
// os_free(p);
|
||||
// // NODE_ERR("-free1: %d\n", system_get_free_heap_size());
|
||||
// }
|
||||
|
||||
|
||||
// int c_rand(void){
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "c_string.h"
|
||||
#include "c_types.h"
|
||||
|
||||
#define lundump_c
|
||||
#define LUA_CORE
|
||||
|
@ -141,13 +142,11 @@ static lua_Number LoadNumber(LoadState* S)
|
|||
LoadVar(S,y);
|
||||
x = (lua_Number)y;
|
||||
} break;
|
||||
#if 0
|
||||
case 8: {
|
||||
int64_t y;
|
||||
LoadVar(S,y);
|
||||
x = (lua_Number)y;
|
||||
} break;
|
||||
#endif
|
||||
default: lua_assert(0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -812,10 +812,6 @@ espconn_tcp_accept(void *arg, struct tcp_pcb *pcb, err_t err)
|
|||
remot_info *pinfo = NULL;
|
||||
LWIP_UNUSED_ARG(err);
|
||||
|
||||
if(4096>system_get_free_heap_size()){
|
||||
return ERR_MEM;
|
||||
}
|
||||
|
||||
paccept = (espconn_msg *)os_zalloc(sizeof(espconn_msg));
|
||||
tcp_arg(pcb, paccept);
|
||||
tcp_err(pcb, esponn_server_err);
|
||||
|
|
|
@ -147,14 +147,33 @@ static int tmr_wdclr( lua_State* L )
|
|||
return 0;
|
||||
}
|
||||
|
||||
static os_timer_t rtc_timer_updator;
|
||||
static unsigned rtc_second = 0; // TODO: load from rtc memory
|
||||
static uint64_t cur_count = 0;
|
||||
static uint64_t rtc_count = 0;
|
||||
void rtc_timer_update_cb(void *arg){
|
||||
uint64_t t = (uint64_t)system_get_rtc_time();
|
||||
// NODE_ERR("%x\n",t);
|
||||
if(t>=cur_count){
|
||||
rtc_count += t - cur_count;
|
||||
cur_count = t;
|
||||
} else {
|
||||
rtc_count += 0x100000000 + t - cur_count;
|
||||
cur_count = t;
|
||||
}
|
||||
unsigned c = system_rtc_clock_cali_proc();
|
||||
uint64_t itg = c >> 12;
|
||||
uint64_t dec = c & 0xFFF;
|
||||
uint64_t second = (cur_count*itg + ((cur_count*dec)>>12)) / 1000000;
|
||||
// NODE_ERR("%x\n",second);
|
||||
rtc_second = (unsigned)second;
|
||||
// TODO: store rtc_count, rtc_second to rtc memory.
|
||||
}
|
||||
// Lua: time() , return rtc time in us
|
||||
static int tmr_time( lua_State* L )
|
||||
{
|
||||
unsigned t = 0xFFFFFFFF & system_get_rtc_time();
|
||||
unsigned c = 0xFFFFFFFF & system_rtc_clock_cali_proc();
|
||||
lua_pushinteger( L, t );
|
||||
lua_pushinteger( L, c );
|
||||
return 2;
|
||||
lua_pushinteger( L, rtc_second & 0x7FFFFFFF );
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Module function map
|
||||
|
@ -182,6 +201,10 @@ LUALIB_API int luaopen_tmr( lua_State *L )
|
|||
os_timer_setfn(&(alarm_timer[i]), (os_timer_func_t *)(alarm_timer_cb[i]), L);
|
||||
}
|
||||
|
||||
os_timer_disarm(&rtc_timer_updator);
|
||||
os_timer_setfn(&rtc_timer_updator, (os_timer_func_t *)(rtc_timer_update_cb), NULL);
|
||||
os_timer_arm(&rtc_timer_updator, 500, 1);
|
||||
|
||||
#if LUA_OPTIMIZE_MEMORY > 0
|
||||
return 0;
|
||||
#else // #if LUA_OPTIMIZE_MEMORY > 0
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "c_types.h"
|
||||
#include "user_interface.h"
|
||||
#include "smart.h"
|
||||
#include "smartconfig.h"
|
||||
|
||||
static int wifi_smart_succeed = LUA_NOREF;
|
||||
|
||||
|
@ -19,6 +20,13 @@ static void wifi_smart_succeed_cb(void *arg){
|
|||
NODE_DBG("wifi_smart_succeed_cb is called.\n");
|
||||
if( !arg )
|
||||
return;
|
||||
#if 0
|
||||
struct station_config *sta_conf = arg;
|
||||
wifi_station_set_config(sta_conf);
|
||||
wifi_station_disconnect();
|
||||
wifi_station_connect();
|
||||
smartconfig_stop();
|
||||
#endif
|
||||
if(wifi_smart_succeed == LUA_NOREF)
|
||||
return;
|
||||
lua_State* L = (lua_State *)arg;
|
||||
|
@ -81,6 +89,7 @@ static void wifi_scan_done(void *arg, STATUS status)
|
|||
}
|
||||
|
||||
// Lua: smart(channel, function succeed_cb)
|
||||
// Lua: smart(type, function succeed_cb)
|
||||
static int wifi_start_smart( lua_State* L )
|
||||
{
|
||||
unsigned channel;
|
||||
|
@ -109,13 +118,15 @@ static int wifi_start_smart( lua_State* L )
|
|||
}else{
|
||||
smart_begin(channel, (smart_succeed )wifi_smart_succeed_cb, L);
|
||||
}
|
||||
// smartconfig_start(0, wifi_smart_succeed_cb);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Lua: exit_smart(channel)
|
||||
// Lua: exit_smart()
|
||||
static int wifi_exit_smart( lua_State* L )
|
||||
{
|
||||
smart_end();
|
||||
// smartconfig_stop();
|
||||
if(wifi_smart_succeed != LUA_NOREF)
|
||||
luaL_unref(L, LUA_REGISTRYINDEX, wifi_smart_succeed);
|
||||
wifi_smart_succeed = LUA_NOREF;
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
|
||||
/*
|
||||
* custom_at.h
|
||||
*
|
||||
* This file is part of Espressif's AT+ command set program.
|
||||
* Copyright (C) 2013 - 2016, Espressif Systems
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of version 3 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CUSTOM_AT_H_
|
||||
#define CUSTOM_AT_H_
|
||||
|
||||
#include "c_types.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *at_cmdName;
|
||||
int8_t at_cmdLen;
|
||||
void (*at_testCmd)(uint8_t id);
|
||||
void (*at_queryCmd)(uint8_t id);
|
||||
void (*at_setupCmd)(uint8_t id, char *pPara);
|
||||
void (*at_exeCmd)(uint8_t id);
|
||||
}at_funcationType;
|
||||
|
||||
/**
|
||||
* @brief Response "OK" to uart.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void at_response_ok(void);
|
||||
/**
|
||||
* @brief Response "ERROR" to uart.
|
||||
* @param events: no used
|
||||
* @retval None
|
||||
*/
|
||||
void at_response_error(void);
|
||||
/**
|
||||
* @brief Task of process command or txdata.
|
||||
* @param custom_at_cmd_array: the array of at cmd that custom defined
|
||||
* cmd_num : the num of at cmd that custom defined
|
||||
* @retval None
|
||||
*/
|
||||
void at_cmd_array_regist(at_funcationType *custom_at_cmd_array,uint32 cmd_num);
|
||||
/**
|
||||
* @brief get digit form at cmd line.the maybe alter pSrc
|
||||
* @param p_src: at cmd line string
|
||||
* result:the buffer to be placed result
|
||||
* err : err num
|
||||
* @retval TRUE:
|
||||
* FALSE:
|
||||
*/
|
||||
bool at_get_next_int_dec(char **p_src,int*result,int* err);
|
||||
/**
|
||||
* @brief get string form at cmd line.the maybe alter pSrc
|
||||
* @param p_dest: the buffer to be placed result
|
||||
* p_src: at cmd line string
|
||||
* max_len :max len of string excepted to get
|
||||
* @retval None
|
||||
*/
|
||||
int32 at_data_str_copy(char *p_dest, char **p_src, int32 max_len);
|
||||
|
||||
/**
|
||||
* @brief initialize at module
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void at_init(void);
|
||||
/**
|
||||
* @brief print string to at port
|
||||
* @param string
|
||||
* @retval None
|
||||
*/
|
||||
void at_port_print(const char *str);
|
||||
#endif
|
|
@ -16,6 +16,7 @@ typedef unsigned long uint32_t;
|
|||
typedef signed long sint32_t;
|
||||
typedef signed long int32_t;
|
||||
typedef signed long long sint64_t;
|
||||
typedef signed long long int64_t;
|
||||
typedef unsigned long long uint64_t;
|
||||
typedef unsigned long long u_int64_t;
|
||||
typedef float real32_t;
|
||||
|
@ -78,6 +79,7 @@ typedef enum {
|
|||
|
||||
#ifdef ICACHE_FLASH
|
||||
#define ICACHE_FLASH_ATTR __attribute__((section(".irom0.text")))
|
||||
#define ICACHE_RODATA_ATTR __attribute__((section(".irom.text")))
|
||||
#else
|
||||
#define ICACHE_FLASH_ATTR
|
||||
#endif /* ICACHE_FLASH */
|
||||
|
|
|
@ -91,6 +91,7 @@ struct espconn {
|
|||
|
||||
enum espconn_option{
|
||||
ESPCONN_REUSEADDR = 1,
|
||||
ESPCONN_NODELAY,
|
||||
ESPCONN_END
|
||||
};
|
||||
|
||||
|
@ -371,5 +372,21 @@ sint8 espconn_igmp_join(ip_addr_t *host_ip, ip_addr_t *multicast_ip);
|
|||
*******************************************************************************/
|
||||
sint8 espconn_igmp_leave(ip_addr_t *host_ip, ip_addr_t *multicast_ip);
|
||||
|
||||
/******************************************************************************
|
||||
* FunctionName : espconn_recv_hold
|
||||
* Description : hold tcp receive
|
||||
* Parameters : espconn -- espconn to hold
|
||||
* Returns : none
|
||||
*******************************************************************************/
|
||||
sint8 espconn_recv_hold(struct espconn *pespconn);
|
||||
|
||||
/******************************************************************************
|
||||
* FunctionName : espconn_recv_unhold
|
||||
* Description : unhold tcp receive
|
||||
* Parameters : espconn -- espconn to unhold
|
||||
* Returns : none
|
||||
*******************************************************************************/
|
||||
sint8 espconn_recv_unhold(struct espconn *pespconn);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -52,6 +52,11 @@ struct ip_info {
|
|||
#define ip4_addr3_16(ipaddr) ((uint16)ip4_addr3(ipaddr))
|
||||
#define ip4_addr4_16(ipaddr) ((uint16)ip4_addr4(ipaddr))
|
||||
|
||||
|
||||
/** 255.255.255.255 */
|
||||
#define IPADDR_NONE ((uint32)0xffffffffUL)
|
||||
/** 0.0.0.0 */
|
||||
#define IPADDR_ANY ((uint32)0x00000000UL)
|
||||
uint32 ipaddr_addr(const char *cp);
|
||||
|
||||
#define IP2STR(ipaddr) ip4_addr1_16(ipaddr), \
|
||||
|
|
|
@ -44,5 +44,14 @@
|
|||
#define os_sprintf ets_sprintf
|
||||
#define os_update_cpu_frequency ets_update_cpu_frequency
|
||||
|
||||
#ifdef USE_OPTIMIZE_PRINTF
|
||||
#define os_printf(fmt, ...) do { \
|
||||
static const char flash_str[] ICACHE_RODATA_ATTR = fmt; \
|
||||
os_printf_plus(flash_str, ##__VA_ARGS__); \
|
||||
} while(0)
|
||||
#else
|
||||
#define os_printf os_printf_plus
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
#ifndef __PING_H__
|
||||
#define __PING_H__
|
||||
|
||||
|
||||
typedef void (* ping_recv_function)(void* arg, void *pdata);
|
||||
typedef void (* ping_sent_function)(void* arg, void *pdata);
|
||||
|
||||
struct ping_option{
|
||||
uint32 count;
|
||||
uint32 ip;
|
||||
uint32 coarse_time;
|
||||
ping_recv_function recv_function;
|
||||
ping_sent_function sent_function;
|
||||
void* reverse;
|
||||
};
|
||||
|
||||
struct ping_resp{
|
||||
uint32 total_count;
|
||||
uint32 resp_time;
|
||||
uint32 seqno;
|
||||
uint32 timeout_count;
|
||||
uint32 bytes;
|
||||
uint32 total_bytes;
|
||||
uint32 total_time;
|
||||
sint8 ping_err;
|
||||
};
|
||||
|
||||
bool ping_start(struct ping_option *ping_opt);
|
||||
bool ping_regist_recv(struct ping_option *ping_opt, ping_recv_function ping_recv);
|
||||
bool ping_regist_sent(struct ping_option *ping_opt, ping_sent_function ping_sent);
|
||||
|
||||
#endif /* __PING_H__ */
|
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* Copyright (C) 2015 -2018 Espressif System
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __SMARTCONFIG_H__
|
||||
#define __SMARTCONFIG_H__
|
||||
|
||||
typedef void (*sc_callback_t)(void *data);
|
||||
|
||||
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;
|
||||
|
||||
sc_status smartconfig_get_status(void);
|
||||
const char *smartconfig_get_version(void);
|
||||
bool smartconfig_start(sc_type type, sc_callback_t cb);
|
||||
bool smartconfig_stop(void);
|
||||
|
||||
#endif
|
|
@ -24,8 +24,6 @@ typedef struct{
|
|||
#define SPI_FLASH_SEC_SIZE 4096
|
||||
|
||||
uint32 spi_flash_get_id(void);
|
||||
SpiFlashOpResult spi_flash_read_status(uint32 *status);
|
||||
SpiFlashOpResult spi_flash_write_status(uint32 status_value);
|
||||
SpiFlashOpResult spi_flash_erase_sector(uint16 sec);
|
||||
SpiFlashOpResult spi_flash_write(uint32 des_addr, uint32 *src_addr, uint32 size);
|
||||
SpiFlashOpResult spi_flash_read(uint32 src_addr, uint32 *des_addr, uint32 size);
|
||||
|
|
|
@ -43,11 +43,15 @@ struct rst_info{
|
|||
|
||||
void system_restore(void);
|
||||
void system_restart(void);
|
||||
|
||||
bool system_deep_sleep_set_option(uint8 option);
|
||||
void system_deep_sleep(uint32 time_in_us);
|
||||
|
||||
uint8 system_upgrade_userbin_check(void);
|
||||
void system_upgrade_reboot(void);
|
||||
uint8 system_upgrade_flag_check();
|
||||
void system_upgrade_flag_set(uint8 flag);
|
||||
|
||||
void system_timer_reinit(void);
|
||||
uint32 system_get_time(void);
|
||||
|
||||
|
@ -59,13 +63,14 @@ enum {
|
|||
USER_TASK_PRIO_MAX
|
||||
};
|
||||
|
||||
void system_os_task(os_task_t task, uint8 prio, os_event_t *queue, uint8 qlen);
|
||||
void system_os_post(uint8 prio, os_signal_t sig, os_param_t par);
|
||||
bool system_os_task(os_task_t task, uint8 prio, os_event_t *queue, uint8 qlen);
|
||||
bool system_os_post(uint8 prio, os_signal_t sig, os_param_t par);
|
||||
|
||||
void system_print_meminfo(void);
|
||||
uint32 system_get_free_heap_size(void);
|
||||
|
||||
void system_set_os_print(uint8 onoff);
|
||||
uint8 system_get_os_print();
|
||||
|
||||
uint64 system_mktime(uint32 year, uint32 mon, uint32 day, uint32 hour, uint32 min, uint32 sec);
|
||||
|
||||
|
@ -92,6 +97,15 @@ const char *system_get_sdk_version(void);
|
|||
#define SOFTAP_MODE 0x02
|
||||
#define STATIONAP_MODE 0x03
|
||||
|
||||
typedef enum _auth_mode {
|
||||
AUTH_OPEN = 0,
|
||||
AUTH_WEP,
|
||||
AUTH_WPA_PSK,
|
||||
AUTH_WPA2_PSK,
|
||||
AUTH_WPA_WPA2_PSK,
|
||||
AUTH_MAX
|
||||
} AUTH_MODE;
|
||||
|
||||
uint8 wifi_get_opmode(void);
|
||||
bool wifi_set_opmode(uint8 opmode);
|
||||
|
||||
|
@ -102,7 +116,7 @@ struct bss_info {
|
|||
uint8 ssid[32];
|
||||
uint8 channel;
|
||||
sint8 rssi;
|
||||
uint8 authmode;
|
||||
AUTH_MODE authmode;
|
||||
uint8 is_hidden;
|
||||
};
|
||||
|
||||
|
@ -120,7 +134,8 @@ typedef void (* scan_done_cb_t)(void *arg, STATUS status);
|
|||
struct station_config {
|
||||
uint8 ssid[32];
|
||||
uint8 password[64];
|
||||
uint8 bssid_set;
|
||||
uint8 bssid_set; // Note: If bssid_set is 1, station will just connect to the router
|
||||
// with both ssid[] and bssid[] matched. Please check about this.
|
||||
uint8 bssid[6];
|
||||
};
|
||||
|
||||
|
@ -131,10 +146,10 @@ bool wifi_station_connect(void);
|
|||
bool wifi_station_disconnect(void);
|
||||
|
||||
struct scan_config {
|
||||
uint8 *ssid;
|
||||
uint8 *bssid;
|
||||
uint8 channel;
|
||||
uint8 show_hidden;
|
||||
uint8 *ssid; // Note: ssid == NULL, don't filter ssid.
|
||||
uint8 *bssid; // Note: bssid == NULL, don't filter bssid.
|
||||
uint8 channel; // Note: channel == 0, scan all channels, otherwise scan set channel.
|
||||
uint8 show_hidden; // Note: show_hidden == 1, can get hidden ssid routers' info.
|
||||
};
|
||||
|
||||
bool wifi_station_scan(struct scan_config *config, scan_done_cb_t cb);
|
||||
|
@ -166,22 +181,15 @@ bool wifi_station_dhcpc_start(void);
|
|||
bool wifi_station_dhcpc_stop(void);
|
||||
enum dhcp_status wifi_station_dhcpc_status(void);
|
||||
|
||||
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 ssid_len; // Note: Recommend to set it according to your ssid
|
||||
uint8 channel; // Note: support 1 ~ 13
|
||||
AUTH_MODE authmode; // Note: Don't support AUTH_WEP in softAP mode.
|
||||
uint8 ssid_hidden; // Note: default 0
|
||||
uint8 max_connection; // Note: default 4, max 4
|
||||
uint8 beacon_interval; // Note: support 100 ~ 60000 ms, default 100
|
||||
};
|
||||
|
||||
bool wifi_softap_get_config(struct softap_config *config);
|
||||
|
@ -220,6 +228,7 @@ uint8 wifi_get_channel(void);
|
|||
bool wifi_set_channel(uint8 channel);
|
||||
|
||||
void wifi_status_led_install(uint8 gpio_id, uint32 gpio_name, uint8 gpio_func);
|
||||
void wifi_status_led_uninstall();
|
||||
|
||||
/** Get the absolute difference between 2 u32_t values (correcting overflows)
|
||||
* 'a' is expected to be 'higher' (without overflow) than 'b'. */
|
||||
|
|
|
@ -18,6 +18,7 @@ PROVIDE ( SHA1Transform = 0x4000a364 );
|
|||
PROVIDE ( SHA1Update = 0x4000b5a8 );
|
||||
PROVIDE ( SPI_read_status = 0x400043c8 );
|
||||
PROVIDE ( SPI_write_status = 0x40004400 );
|
||||
PROVIDE ( SPI_write_enable = 0x4000443c );
|
||||
PROVIDE ( Wait_SPI_Idle = 0x4000448c );
|
||||
PROVIDE ( SPIEraseArea = 0x40004b44 );
|
||||
PROVIDE ( SPIEraseBlock = 0x400049b4 );
|
||||
|
|
Binary file not shown.
BIN
lib/libjson.a
BIN
lib/libjson.a
Binary file not shown.
BIN
lib/liblwip.a
BIN
lib/liblwip.a
Binary file not shown.
BIN
lib/libmain.a
BIN
lib/libmain.a
Binary file not shown.
Binary file not shown.
BIN
lib/libphy.a
BIN
lib/libphy.a
Binary file not shown.
BIN
lib/libpp.a
BIN
lib/libpp.a
Binary file not shown.
Binary file not shown.
BIN
lib/libssl.a
BIN
lib/libssl.a
Binary file not shown.
BIN
lib/libupgrade.a
BIN
lib/libupgrade.a
Binary file not shown.
BIN
lib/libwpa.a
BIN
lib/libwpa.a
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue