Build using 1.4.0 SDK + remove old SDK includes/libs.
Leaving the linker scripts intact for now, as they're quite customised.
This commit is contained in:
parent
57d5e2072e
commit
c1cd58e096
8
Makefile
8
Makefile
|
@ -4,6 +4,14 @@ ifndef PDIR
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# SDK version NodeMCU is locked to
|
||||||
|
SDK_VER:=1.4.0
|
||||||
|
# Ensure we search "our" SDK before the tool-chain's SDK (if any)
|
||||||
|
TOP_DIR:=$(dir $(lastword $(MAKEFILE_LIST)))
|
||||||
|
SDK_DIR:=$(TOP_DIR)sdk/esp_iot_sdk_v$(SDK_VER)
|
||||||
|
CCFLAGS:= -I$(TOP_DIR)sdk-overrides/include -I$(SDK_DIR)/include
|
||||||
|
LDFLAGS:= -L$(SDK_DIR)/lib $(LDFLAGS)
|
||||||
|
|
||||||
#############################################################
|
#############################################################
|
||||||
# Select compile
|
# Select compile
|
||||||
#
|
#
|
||||||
|
|
|
@ -97,7 +97,6 @@ COMPONENTS_eagle.app.v6 = \
|
||||||
modules/libmodules.a
|
modules/libmodules.a
|
||||||
|
|
||||||
LINKFLAGS_eagle.app.v6 = \
|
LINKFLAGS_eagle.app.v6 = \
|
||||||
-L../lib \
|
|
||||||
-Wl,--gc-sections \
|
-Wl,--gc-sections \
|
||||||
-Xlinker -Map=mapfile \
|
-Xlinker -Map=mapfile \
|
||||||
-nostdlib \
|
-nostdlib \
|
||||||
|
|
|
@ -1,85 +0,0 @@
|
||||||
|
|
||||||
/*
|
|
||||||
* 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
|
|
|
@ -1,101 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2010 - 2011 Espressif System
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _C_TYPES_H_
|
|
||||||
#define _C_TYPES_H_
|
|
||||||
|
|
||||||
typedef unsigned char uint8_t;
|
|
||||||
typedef signed char sint8_t;
|
|
||||||
typedef signed char int8_t;
|
|
||||||
typedef unsigned short uint16_t;
|
|
||||||
typedef signed short sint16_t;
|
|
||||||
typedef signed short int16_t;
|
|
||||||
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;
|
|
||||||
typedef double real64_t;
|
|
||||||
|
|
||||||
typedef unsigned char uint8;
|
|
||||||
typedef unsigned char u8;
|
|
||||||
typedef signed char sint8;
|
|
||||||
typedef signed char int8;
|
|
||||||
typedef signed char s8;
|
|
||||||
typedef unsigned short uint16;
|
|
||||||
typedef unsigned short u16;
|
|
||||||
typedef signed short sint16;
|
|
||||||
typedef signed short s16;
|
|
||||||
typedef unsigned int uint32;
|
|
||||||
typedef unsigned int u_int;
|
|
||||||
typedef unsigned int u32;
|
|
||||||
typedef signed int sint32;
|
|
||||||
typedef signed int s32;
|
|
||||||
typedef int int32;
|
|
||||||
typedef signed long long sint64;
|
|
||||||
typedef unsigned long long uint64;
|
|
||||||
typedef unsigned long long u64;
|
|
||||||
typedef float real32;
|
|
||||||
typedef double real64;
|
|
||||||
|
|
||||||
#define __le16 u16
|
|
||||||
|
|
||||||
//typedef unsigned int size_t;
|
|
||||||
#if !defined(__size_t)
|
|
||||||
#define __size_t 1
|
|
||||||
typedef unsigned int size_t; /* others (e.g. <stdio.h>) also define */
|
|
||||||
/* the unsigned integral type of the result of the sizeof operator. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define __packed __attribute__((packed))
|
|
||||||
|
|
||||||
#define LOCAL static
|
|
||||||
|
|
||||||
#ifndef NULL
|
|
||||||
#define NULL (void *)0
|
|
||||||
#endif /* NULL */
|
|
||||||
|
|
||||||
/* probably should not put STATUS here */
|
|
||||||
typedef enum {
|
|
||||||
OK = 0,
|
|
||||||
FAIL,
|
|
||||||
PENDING,
|
|
||||||
BUSY,
|
|
||||||
CANCEL,
|
|
||||||
} STATUS;
|
|
||||||
|
|
||||||
#define BIT(nr) (1UL << (nr))
|
|
||||||
|
|
||||||
#define REG_SET_BIT(_r, _b) (*(volatile uint32_t*)(_r) |= (_b))
|
|
||||||
#define REG_CLR_BIT(_r, _b) (*(volatile uint32_t*)(_r) &= ~(_b))
|
|
||||||
|
|
||||||
#define DMEM_ATTR __attribute__((section(".bss")))
|
|
||||||
#define SHMEM_ATTR
|
|
||||||
|
|
||||||
#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 */
|
|
||||||
|
|
||||||
#define TEXT_SECTION_ATTR __attribute__((section(".text")))
|
|
||||||
#define RAM_CONST_ATTR __attribute__((section(".rodata")))
|
|
||||||
|
|
||||||
#ifndef __cplusplus
|
|
||||||
typedef unsigned char bool;
|
|
||||||
#define BOOL bool
|
|
||||||
#define true (1)
|
|
||||||
#define false (0)
|
|
||||||
#define TRUE true
|
|
||||||
#define FALSE false
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* !__cplusplus */
|
|
||||||
|
|
||||||
#endif /* _C_TYPES_H_ */
|
|
|
@ -1,256 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) Espressif System 2010 - 2012
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _EAGLE_SOC_H_
|
|
||||||
#define _EAGLE_SOC_H_
|
|
||||||
|
|
||||||
//Register Bits{{
|
|
||||||
#define BIT31 0x80000000
|
|
||||||
#define BIT30 0x40000000
|
|
||||||
#define BIT29 0x20000000
|
|
||||||
#define BIT28 0x10000000
|
|
||||||
#define BIT27 0x08000000
|
|
||||||
#define BIT26 0x04000000
|
|
||||||
#define BIT25 0x02000000
|
|
||||||
#define BIT24 0x01000000
|
|
||||||
#define BIT23 0x00800000
|
|
||||||
#define BIT22 0x00400000
|
|
||||||
#define BIT21 0x00200000
|
|
||||||
#define BIT20 0x00100000
|
|
||||||
#define BIT19 0x00080000
|
|
||||||
#define BIT18 0x00040000
|
|
||||||
#define BIT17 0x00020000
|
|
||||||
#define BIT16 0x00010000
|
|
||||||
#define BIT15 0x00008000
|
|
||||||
#define BIT14 0x00004000
|
|
||||||
#define BIT13 0x00002000
|
|
||||||
#define BIT12 0x00001000
|
|
||||||
#define BIT11 0x00000800
|
|
||||||
#define BIT10 0x00000400
|
|
||||||
#define BIT9 0x00000200
|
|
||||||
#define BIT8 0x00000100
|
|
||||||
#define BIT7 0x00000080
|
|
||||||
#define BIT6 0x00000040
|
|
||||||
#define BIT5 0x00000020
|
|
||||||
#define BIT4 0x00000010
|
|
||||||
#define BIT3 0x00000008
|
|
||||||
#define BIT2 0x00000004
|
|
||||||
#define BIT1 0x00000002
|
|
||||||
#define BIT0 0x00000001
|
|
||||||
//}}
|
|
||||||
|
|
||||||
//Registers Operation {{
|
|
||||||
#define ETS_UNCACHED_ADDR(addr) (addr)
|
|
||||||
#define ETS_CACHED_ADDR(addr) (addr)
|
|
||||||
|
|
||||||
|
|
||||||
#define READ_PERI_REG(addr) (*((volatile uint32_t *)ETS_UNCACHED_ADDR(addr)))
|
|
||||||
#define WRITE_PERI_REG(addr, val) (*((volatile uint32_t *)ETS_UNCACHED_ADDR(addr))) = (uint32_t)(val)
|
|
||||||
#define CLEAR_PERI_REG_MASK(reg, mask) WRITE_PERI_REG((reg), (READ_PERI_REG(reg)&(~(mask))))
|
|
||||||
#define SET_PERI_REG_MASK(reg, mask) WRITE_PERI_REG((reg), (READ_PERI_REG(reg)|(mask)))
|
|
||||||
#define GET_PERI_REG_BITS(reg, hipos,lowpos) ((READ_PERI_REG(reg)>>(lowpos))&((1<<((hipos)-(lowpos)+1))-1))
|
|
||||||
#define SET_PERI_REG_BITS(reg,bit_map,value,shift) (WRITE_PERI_REG((reg),(READ_PERI_REG(reg)&(~((bit_map)<<(shift))))|((value)<<(shift)) ))
|
|
||||||
//}}
|
|
||||||
|
|
||||||
//Periheral Clock {{
|
|
||||||
#define CPU_CLK_FREQ 80*1000000 //unit: Hz
|
|
||||||
#define APB_CLK_FREQ CPU_CLK_FREQ
|
|
||||||
#define UART_CLK_FREQ APB_CLK_FREQ
|
|
||||||
#define TIMER_CLK_FREQ (APB_CLK_FREQ>>8) //divided by 256
|
|
||||||
//}}
|
|
||||||
|
|
||||||
//Peripheral device base address define{{
|
|
||||||
#define PERIPHS_DPORT_BASEADDR 0x3ff00000
|
|
||||||
#define PERIPHS_GPIO_BASEADDR 0x60000300
|
|
||||||
#define PERIPHS_TIMER_BASEDDR 0x60000600
|
|
||||||
#define PERIPHS_RTC_BASEADDR 0x60000700
|
|
||||||
#define PERIPHS_IO_MUX 0x60000800
|
|
||||||
//}}
|
|
||||||
|
|
||||||
//Interrupt remap control registers define{{
|
|
||||||
#define EDGE_INT_ENABLE_REG (PERIPHS_DPORT_BASEADDR+0x04)
|
|
||||||
#define TM1_EDGE_INT_ENABLE() SET_PERI_REG_MASK(EDGE_INT_ENABLE_REG, BIT1)
|
|
||||||
#define TM1_EDGE_INT_DISABLE() CLEAR_PERI_REG_MASK(EDGE_INT_ENABLE_REG, BIT1)
|
|
||||||
//}}
|
|
||||||
|
|
||||||
//GPIO reg {{
|
|
||||||
#define GPIO_REG_READ(reg) READ_PERI_REG(PERIPHS_GPIO_BASEADDR + reg)
|
|
||||||
#define GPIO_REG_WRITE(reg, val) WRITE_PERI_REG(PERIPHS_GPIO_BASEADDR + reg, val)
|
|
||||||
#define GPIO_OUT_ADDRESS 0x00
|
|
||||||
#define GPIO_OUT_W1TS_ADDRESS 0x04
|
|
||||||
#define GPIO_OUT_W1TC_ADDRESS 0x08
|
|
||||||
|
|
||||||
#define GPIO_ENABLE_ADDRESS 0x0c
|
|
||||||
#define GPIO_ENABLE_W1TS_ADDRESS 0x10
|
|
||||||
#define GPIO_ENABLE_W1TC_ADDRESS 0x14
|
|
||||||
#define GPIO_OUT_W1TC_DATA_MASK 0x0000ffff
|
|
||||||
|
|
||||||
#define GPIO_IN_ADDRESS 0x18
|
|
||||||
|
|
||||||
#define GPIO_STATUS_ADDRESS 0x1c
|
|
||||||
#define GPIO_STATUS_W1TS_ADDRESS 0x20
|
|
||||||
#define GPIO_STATUS_W1TC_ADDRESS 0x24
|
|
||||||
#define GPIO_STATUS_INTERRUPT_MASK 0x0000ffff
|
|
||||||
|
|
||||||
#define GPIO_RTC_CALIB_SYNC PERIPHS_GPIO_BASEADDR+0x6c
|
|
||||||
#define RTC_CALIB_START BIT31 //first write to zero, then to one to start
|
|
||||||
#define RTC_PERIOD_NUM_MASK 0x3ff //max 8ms
|
|
||||||
#define GPIO_RTC_CALIB_VALUE PERIPHS_GPIO_BASEADDR+0x70
|
|
||||||
#define RTC_CALIB_RDY_S 31 //after measure, flag to one, when start from zero to one, turn to zero
|
|
||||||
#define RTC_CALIB_VALUE_MASK 0xfffff
|
|
||||||
|
|
||||||
#define GPIO_PIN0_ADDRESS 0x28
|
|
||||||
|
|
||||||
#define GPIO_ID_PIN0 0
|
|
||||||
#define GPIO_ID_PIN(n) (GPIO_ID_PIN0+(n))
|
|
||||||
#define GPIO_LAST_REGISTER_ID GPIO_ID_PIN(15)
|
|
||||||
#define GPIO_ID_NONE 0xffffffff
|
|
||||||
|
|
||||||
#define GPIO_PIN_COUNT 16
|
|
||||||
|
|
||||||
#define GPIO_PIN_CONFIG_MSB 12
|
|
||||||
#define GPIO_PIN_CONFIG_LSB 11
|
|
||||||
#define GPIO_PIN_CONFIG_MASK 0x00001800
|
|
||||||
#define GPIO_PIN_CONFIG_GET(x) (((x) & GPIO_PIN_CONFIG_MASK) >> GPIO_PIN_CONFIG_LSB)
|
|
||||||
#define GPIO_PIN_CONFIG_SET(x) (((x) << GPIO_PIN_CONFIG_LSB) & GPIO_PIN_CONFIG_MASK)
|
|
||||||
|
|
||||||
#define GPIO_WAKEUP_ENABLE 1
|
|
||||||
#define GPIO_WAKEUP_DISABLE (~GPIO_WAKEUP_ENABLE)
|
|
||||||
#define GPIO_PIN_WAKEUP_ENABLE_MSB 10
|
|
||||||
#define GPIO_PIN_WAKEUP_ENABLE_LSB 10
|
|
||||||
#define GPIO_PIN_WAKEUP_ENABLE_MASK 0x00000400
|
|
||||||
#define GPIO_PIN_WAKEUP_ENABLE_GET(x) (((x) & GPIO_PIN_WAKEUP_ENABLE_MASK) >> GPIO_PIN_WAKEUP_ENABLE_LSB)
|
|
||||||
#define GPIO_PIN_WAKEUP_ENABLE_SET(x) (((x) << GPIO_PIN_WAKEUP_ENABLE_LSB) & GPIO_PIN_WAKEUP_ENABLE_MASK)
|
|
||||||
|
|
||||||
#define GPIO_PIN_INT_TYPE_MASK 0x380
|
|
||||||
#define GPIO_PIN_INT_TYPE_MSB 9
|
|
||||||
#define GPIO_PIN_INT_TYPE_LSB 7
|
|
||||||
#define GPIO_PIN_INT_TYPE_GET(x) (((x) & GPIO_PIN_INT_TYPE_MASK) >> GPIO_PIN_INT_TYPE_LSB)
|
|
||||||
#define GPIO_PIN_INT_TYPE_SET(x) (((x) << GPIO_PIN_INT_TYPE_LSB) & GPIO_PIN_INT_TYPE_MASK)
|
|
||||||
|
|
||||||
#define GPIO_PAD_DRIVER_ENABLE 1
|
|
||||||
#define GPIO_PAD_DRIVER_DISABLE (~GPIO_PAD_DRIVER_ENABLE)
|
|
||||||
#define GPIO_PIN_PAD_DRIVER_MSB 2
|
|
||||||
#define GPIO_PIN_PAD_DRIVER_LSB 2
|
|
||||||
#define GPIO_PIN_PAD_DRIVER_MASK 0x00000004
|
|
||||||
#define GPIO_PIN_PAD_DRIVER_GET(x) (((x) & GPIO_PIN_PAD_DRIVER_MASK) >> GPIO_PIN_PAD_DRIVER_LSB)
|
|
||||||
#define GPIO_PIN_PAD_DRIVER_SET(x) (((x) << GPIO_PIN_PAD_DRIVER_LSB) & GPIO_PIN_PAD_DRIVER_MASK)
|
|
||||||
|
|
||||||
#define GPIO_AS_PIN_SOURCE 0
|
|
||||||
#define SIGMA_AS_PIN_SOURCE (~GPIO_AS_PIN_SOURCE)
|
|
||||||
#define GPIO_PIN_SOURCE_MSB 0
|
|
||||||
#define GPIO_PIN_SOURCE_LSB 0
|
|
||||||
#define GPIO_PIN_SOURCE_MASK 0x00000001
|
|
||||||
#define GPIO_PIN_SOURCE_GET(x) (((x) & GPIO_PIN_SOURCE_MASK) >> GPIO_PIN_SOURCE_LSB)
|
|
||||||
#define GPIO_PIN_SOURCE_SET(x) (((x) << GPIO_PIN_SOURCE_LSB) & GPIO_PIN_SOURCE_MASK)
|
|
||||||
// }}
|
|
||||||
|
|
||||||
// TIMER reg {{
|
|
||||||
#define RTC_REG_READ(addr) READ_PERI_REG(PERIPHS_TIMER_BASEDDR + addr)
|
|
||||||
#define RTC_REG_WRITE(addr, val) WRITE_PERI_REG(PERIPHS_TIMER_BASEDDR + addr, val)
|
|
||||||
#define RTC_CLR_REG_MASK(reg, mask) CLEAR_PERI_REG_MASK(PERIPHS_TIMER_BASEDDR +reg, mask)
|
|
||||||
/* Returns the current time according to the timer timer. */
|
|
||||||
#define NOW() RTC_REG_READ(FRC2_COUNT_ADDRESS)
|
|
||||||
|
|
||||||
//load initial_value to timer1
|
|
||||||
#define FRC1_LOAD_ADDRESS 0x00
|
|
||||||
|
|
||||||
//timer1's counter value(count from initial_value to 0)
|
|
||||||
#define FRC1_COUNT_ADDRESS 0x04
|
|
||||||
|
|
||||||
#define FRC1_CTRL_ADDRESS 0x08
|
|
||||||
|
|
||||||
//clear timer1's interrupt when write this address
|
|
||||||
#define FRC1_INT_ADDRESS 0x0c
|
|
||||||
#define FRC1_INT_CLR_MASK 0x00000001
|
|
||||||
|
|
||||||
//timer2's counter value(count from initial_value to 0)
|
|
||||||
#define FRC2_COUNT_ADDRESS 0x24
|
|
||||||
// }}
|
|
||||||
|
|
||||||
//RTC reg {{
|
|
||||||
#define REG_RTC_BASE PERIPHS_RTC_BASEADDR
|
|
||||||
|
|
||||||
#define RTC_GPIO_OUT (REG_RTC_BASE + 0x068)
|
|
||||||
#define RTC_GPIO_ENABLE (REG_RTC_BASE + 0x074)
|
|
||||||
#define RTC_GPIO_IN_DATA (REG_RTC_BASE + 0x08C)
|
|
||||||
#define RTC_GPIO_CONF (REG_RTC_BASE + 0x090)
|
|
||||||
#define PAD_XPD_DCDC_CONF (REG_RTC_BASE + 0x0A0)
|
|
||||||
//}}
|
|
||||||
|
|
||||||
//PIN Mux reg {{
|
|
||||||
#define PERIPHS_IO_MUX_FUNC 0x13
|
|
||||||
#define PERIPHS_IO_MUX_FUNC_S 4
|
|
||||||
#define PERIPHS_IO_MUX_PULLUP BIT7
|
|
||||||
#define PERIPHS_IO_MUX_PULLDWN BIT6
|
|
||||||
#define PERIPHS_IO_MUX_SLEEP_PULLUP BIT3
|
|
||||||
#define PERIPHS_IO_MUX_SLEEP_PULLDWN BIT2
|
|
||||||
#define PERIPHS_IO_MUX_SLEEP_OE BIT1
|
|
||||||
#define PERIPHS_IO_MUX_OE BIT0
|
|
||||||
|
|
||||||
#define PERIPHS_IO_MUX_CONF_U (PERIPHS_IO_MUX + 0x00)
|
|
||||||
#define SPI0_CLK_EQU_SYS_CLK BIT8
|
|
||||||
#define SPI1_CLK_EQU_SYS_CLK BIT9
|
|
||||||
#define PERIPHS_IO_MUX_MTDI_U (PERIPHS_IO_MUX + 0x04)
|
|
||||||
#define FUNC_GPIO12 3
|
|
||||||
#define PERIPHS_IO_MUX_MTCK_U (PERIPHS_IO_MUX + 0x08)
|
|
||||||
#define FUNC_GPIO13 3
|
|
||||||
#define PERIPHS_IO_MUX_MTMS_U (PERIPHS_IO_MUX + 0x0C)
|
|
||||||
#define FUNC_GPIO14 3
|
|
||||||
#define PERIPHS_IO_MUX_MTDO_U (PERIPHS_IO_MUX + 0x10)
|
|
||||||
#define FUNC_GPIO15 3
|
|
||||||
#define FUNC_U0RTS 4
|
|
||||||
#define PERIPHS_IO_MUX_U0RXD_U (PERIPHS_IO_MUX + 0x14)
|
|
||||||
#define FUNC_U0RXD 0
|
|
||||||
#define FUNC_GPIO3 3
|
|
||||||
#define PERIPHS_IO_MUX_U0TXD_U (PERIPHS_IO_MUX + 0x18)
|
|
||||||
#define FUNC_U0TXD 0
|
|
||||||
#define FUNC_GPIO1 3
|
|
||||||
#define PERIPHS_IO_MUX_SD_CLK_U (PERIPHS_IO_MUX + 0x1c)
|
|
||||||
#define FUNC_SDCLK 0
|
|
||||||
#define FUNC_SPICLK 1
|
|
||||||
#define PERIPHS_IO_MUX_SD_DATA0_U (PERIPHS_IO_MUX + 0x20)
|
|
||||||
#define FUNC_SDDATA0 0
|
|
||||||
#define FUNC_SPIQ 1
|
|
||||||
#define FUNC_U1TXD 4
|
|
||||||
#define PERIPHS_IO_MUX_SD_DATA1_U (PERIPHS_IO_MUX + 0x24)
|
|
||||||
#define FUNC_SDDATA1 0
|
|
||||||
#define FUNC_SPID 1
|
|
||||||
#define FUNC_U1RXD 4
|
|
||||||
#define FUNC_SDDATA1_U1RXD 7
|
|
||||||
#define PERIPHS_IO_MUX_SD_DATA2_U (PERIPHS_IO_MUX + 0x28)
|
|
||||||
#define FUNC_SDDATA2 0
|
|
||||||
#define FUNC_SPIHD 1
|
|
||||||
#define FUNC_GPIO9 3
|
|
||||||
#define PERIPHS_IO_MUX_SD_DATA3_U (PERIPHS_IO_MUX + 0x2c)
|
|
||||||
#define FUNC_SDDATA3 0
|
|
||||||
#define FUNC_SPIWP 1
|
|
||||||
#define FUNC_GPIO10 3
|
|
||||||
#define PERIPHS_IO_MUX_SD_CMD_U (PERIPHS_IO_MUX + 0x30)
|
|
||||||
#define FUNC_SDCMD 0
|
|
||||||
#define FUNC_SPICS0 1
|
|
||||||
#define PERIPHS_IO_MUX_GPIO0_U (PERIPHS_IO_MUX + 0x34)
|
|
||||||
#define FUNC_GPIO0 0
|
|
||||||
#define PERIPHS_IO_MUX_GPIO2_U (PERIPHS_IO_MUX + 0x38)
|
|
||||||
#define FUNC_GPIO2 0
|
|
||||||
#define FUNC_U1TXD_BK 2
|
|
||||||
#define FUNC_U0TXD_BK 4
|
|
||||||
#define PERIPHS_IO_MUX_GPIO4_U (PERIPHS_IO_MUX + 0x3C)
|
|
||||||
#define FUNC_GPIO4 0
|
|
||||||
#define PERIPHS_IO_MUX_GPIO5_U (PERIPHS_IO_MUX + 0x40)
|
|
||||||
#define FUNC_GPIO5 0
|
|
||||||
|
|
||||||
#define PIN_PULLUP_DIS(PIN_NAME) CLEAR_PERI_REG_MASK(PIN_NAME, PERIPHS_IO_MUX_PULLUP)
|
|
||||||
#define PIN_PULLUP_EN(PIN_NAME) SET_PERI_REG_MASK(PIN_NAME, PERIPHS_IO_MUX_PULLUP)
|
|
||||||
#define PIN_PULLDWN_DIS(PIN_NAME) CLEAR_PERI_REG_MASK(PIN_NAME, PERIPHS_IO_MUX_PULLDWN)
|
|
||||||
#define PIN_PULLDWN_EN(PIN_NAME) SET_PERI_REG_MASK(PIN_NAME, PERIPHS_IO_MUX_PULLDWN)
|
|
||||||
#define PIN_FUNC_SELECT(PIN_NAME, FUNC) do { \
|
|
||||||
CLEAR_PERI_REG_MASK(PIN_NAME, (PERIPHS_IO_MUX_FUNC<<PERIPHS_IO_MUX_FUNC_S)); \
|
|
||||||
SET_PERI_REG_MASK(PIN_NAME, (((FUNC&BIT2)<<2)|(FUNC&0x3))<<PERIPHS_IO_MUX_FUNC_S); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
//}}
|
|
||||||
|
|
||||||
#endif //_EAGLE_SOC_H_
|
|
|
@ -1,407 +0,0 @@
|
||||||
#ifndef __ESPCONN_H__
|
|
||||||
#define __ESPCONN_H__
|
|
||||||
|
|
||||||
#include "lwip/ip_addr.h"
|
|
||||||
|
|
||||||
typedef sint8 err_t;
|
|
||||||
|
|
||||||
typedef void *espconn_handle;
|
|
||||||
typedef void (* espconn_connect_callback)(void *arg);
|
|
||||||
typedef void (* espconn_reconnect_callback)(void *arg, sint8 err);
|
|
||||||
|
|
||||||
/* Definitions for error constants. */
|
|
||||||
|
|
||||||
#define ESPCONN_OK 0 /* No error, everything OK. */
|
|
||||||
#define ESPCONN_MEM -1 /* Out of memory error. */
|
|
||||||
#define ESPCONN_TIMEOUT -3 /* Timeout. */
|
|
||||||
#define ESPCONN_RTE -4 /* Routing problem. */
|
|
||||||
#define ESPCONN_INPROGRESS -5 /* Operation in progress */
|
|
||||||
|
|
||||||
#define ESPCONN_ABRT -8 /* Connection aborted. */
|
|
||||||
#define ESPCONN_RST -9 /* Connection reset. */
|
|
||||||
#define ESPCONN_CLSD -10 /* Connection closed. */
|
|
||||||
#define ESPCONN_CONN -11 /* Not connected. */
|
|
||||||
|
|
||||||
#define ESPCONN_ARG -12 /* Illegal argument. */
|
|
||||||
#define ESPCONN_ISCONN -15 /* Already connected. */
|
|
||||||
|
|
||||||
/** 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
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct _esp_tcp {
|
|
||||||
int remote_port;
|
|
||||||
int local_port;
|
|
||||||
uint8 local_ip[4];
|
|
||||||
uint8 remote_ip[4];
|
|
||||||
espconn_connect_callback connect_callback;
|
|
||||||
espconn_reconnect_callback reconnect_callback;
|
|
||||||
espconn_connect_callback disconnect_callback;
|
|
||||||
espconn_connect_callback write_finish_fn;
|
|
||||||
} esp_tcp;
|
|
||||||
|
|
||||||
typedef struct _esp_udp {
|
|
||||||
int remote_port;
|
|
||||||
int local_port;
|
|
||||||
uint8 local_ip[4];
|
|
||||||
uint8 remote_ip[4];
|
|
||||||
} esp_udp;
|
|
||||||
|
|
||||||
typedef struct _remot_info{
|
|
||||||
enum espconn_state state;
|
|
||||||
int remote_port;
|
|
||||||
uint8 remote_ip[4];
|
|
||||||
}remot_info;
|
|
||||||
|
|
||||||
/** A callback prototype to inform about events for a espconn */
|
|
||||||
typedef void (* espconn_recv_callback)(void *arg, char *pdata, unsigned short len);
|
|
||||||
typedef void (* espconn_sent_callback)(void *arg);
|
|
||||||
|
|
||||||
/** 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;
|
|
||||||
uint8 link_cnt;
|
|
||||||
void *reverse;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum espconn_option{
|
|
||||||
ESPCONN_START = 0x00,
|
|
||||||
ESPCONN_REUSEADDR = 0x01,
|
|
||||||
ESPCONN_NODELAY = 0x02,
|
|
||||||
ESPCONN_COPY = 0x04,
|
|
||||||
ESPCONN_END
|
|
||||||
};
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_connect
|
|
||||||
* Description : The function given as the connect
|
|
||||||
* Parameters : espconn -- the espconn used to listen the connection
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_connect(struct espconn *espconn);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_disconnect
|
|
||||||
* Description : disconnect with host
|
|
||||||
* Parameters : espconn -- the espconn used to disconnect the connection
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_disconnect(struct espconn *espconn);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_delete
|
|
||||||
* Description : disconnect with host
|
|
||||||
* Parameters : espconn -- the espconn used to disconnect the connection
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_delete(struct espconn *espconn);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_accept
|
|
||||||
* Description : The function given as the listen
|
|
||||||
* Parameters : espconn -- the espconn used to listen the connection
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_accept(struct espconn *espconn);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_create
|
|
||||||
* Description : sent data for client or server
|
|
||||||
* Parameters : espconn -- espconn to the data transmission
|
|
||||||
* Returns : result
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_create(struct espconn *espconn);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_tcp_get_max_con
|
|
||||||
* Description : get the number of simulatenously active TCP connections
|
|
||||||
* Parameters : none
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
uint8 espconn_tcp_get_max_con(void);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_tcp_set_max_con
|
|
||||||
* Description : set the number of simulatenously active TCP connections
|
|
||||||
* Parameters : num -- total number
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_tcp_set_max_con(uint8 num);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_tcp_get_max_con_allow
|
|
||||||
* Description : get the count of simulatenously active connections on the server
|
|
||||||
* Parameters : espconn -- espconn to get the count
|
|
||||||
* Returns : result
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_tcp_get_max_con_allow(struct espconn *espconn);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_tcp_set_max_con_allow
|
|
||||||
* Description : set the count of simulatenously active connections on the server
|
|
||||||
* Parameters : espconn -- espconn to set the count
|
|
||||||
* num -- support the connection number
|
|
||||||
* Returns : result
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_tcp_set_max_con_allow(struct espconn *espconn, uint8 num);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_regist_time
|
|
||||||
* Description : used to specify the time that should be called when don't recv data
|
|
||||||
* Parameters : espconn -- the espconn used to the connection
|
|
||||||
* interval -- the timer when don't recv data
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_regist_time(struct espconn *espconn, uint32 interval, uint8 type_flag);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_get_connection_info
|
|
||||||
* Description : used to specify the function that should be called when disconnect
|
|
||||||
* Parameters : espconn -- espconn to set the err callback
|
|
||||||
* discon_cb -- err callback function to call when err
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_get_connection_info(struct espconn *pespconn, remot_info **pcon_info, uint8 typeflags);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_regist_sentcb
|
|
||||||
* Description : Used to specify the function that should be called when data
|
|
||||||
* has been successfully delivered to the remote host.
|
|
||||||
* Parameters : struct espconn *espconn -- espconn to set the sent callback
|
|
||||||
* espconn_sent_callback sent_cb -- sent callback function to
|
|
||||||
* call for this espconn when data is successfully sent
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_regist_sentcb(struct espconn *espconn, espconn_sent_callback sent_cb);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_regist_sentcb
|
|
||||||
* Description : Used to specify the function that should be called when data
|
|
||||||
* has been successfully delivered to the remote host.
|
|
||||||
* Parameters : espconn -- espconn to set the sent callback
|
|
||||||
* sent_cb -- sent callback function to call for this espconn
|
|
||||||
* when data is successfully sent
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_regist_write_finish(struct espconn *espconn, espconn_connect_callback write_finish_fn);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_sent
|
|
||||||
* Description : sent data for client or server
|
|
||||||
* Parameters : espconn -- espconn to set for client or server
|
|
||||||
* psent -- data to send
|
|
||||||
* length -- length of data to send
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_sent(struct espconn *espconn, uint8 *psent, uint16 length);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_regist_connectcb
|
|
||||||
* Description : used to specify the function that should be called when
|
|
||||||
* connects to host.
|
|
||||||
* Parameters : espconn -- espconn to set the connect callback
|
|
||||||
* connect_cb -- connected callback function to call when connected
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_regist_connectcb(struct espconn *espconn, espconn_connect_callback connect_cb);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_regist_recvcb
|
|
||||||
* Description : used to specify the function that should be called when recv
|
|
||||||
* data from host.
|
|
||||||
* Parameters : espconn -- espconn to set the recv callback
|
|
||||||
* recv_cb -- recv callback function to call when recv data
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_regist_recvcb(struct espconn *espconn, espconn_recv_callback recv_cb);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_regist_reconcb
|
|
||||||
* Description : used to specify the function that should be called when connection
|
|
||||||
* because of err disconnect.
|
|
||||||
* Parameters : espconn -- espconn to set the err callback
|
|
||||||
* recon_cb -- err callback function to call when err
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_regist_reconcb(struct espconn *espconn, espconn_reconnect_callback recon_cb);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_regist_disconcb
|
|
||||||
* Description : used to specify the function that should be called when disconnect
|
|
||||||
* Parameters : espconn -- espconn to set the err callback
|
|
||||||
* discon_cb -- err callback function to call when err
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_regist_disconcb(struct espconn *espconn, espconn_connect_callback discon_cb);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_port
|
|
||||||
* Description : access port value for client so that we don't end up bouncing
|
|
||||||
* all connections at the same time .
|
|
||||||
* Parameters : none
|
|
||||||
* Returns : access port value
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
uint32 espconn_port(void);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_set_opt
|
|
||||||
* Description : access port value for client so that we don't end up bouncing
|
|
||||||
* all connections at the same time .
|
|
||||||
* Parameters : none
|
|
||||||
* Returns : access port value
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_set_opt(struct espconn *espconn, uint8 opt);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TypedefName : dns_found_callback
|
|
||||||
* Description : Callback which is invoked when a hostname is found.
|
|
||||||
* Parameters : name -- pointer to the name that was looked up.
|
|
||||||
* ipaddr -- pointer to an ip_addr_t containing the IP address of
|
|
||||||
* the hostname, or NULL if the name could not be found (or on any
|
|
||||||
* other error).
|
|
||||||
* callback_arg -- a user-specified callback argument passed to
|
|
||||||
* dns_gethostbyname
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
typedef void (*dns_found_callback)(const char *name, ip_addr_t *ipaddr, void *callback_arg);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_gethostbyname
|
|
||||||
* Description : Resolve a hostname (string) into an IP address.
|
|
||||||
* Parameters : pespconn -- espconn to resolve a hostname
|
|
||||||
* hostname -- the hostname that is to be queried
|
|
||||||
* addr -- pointer to a ip_addr_t where to store the address if
|
|
||||||
* it is already cached in the dns_table (only valid if ESPCONN_OK
|
|
||||||
* is returned!)
|
|
||||||
* found -- a callback function to be called on success, failure
|
|
||||||
* or timeout (only if ERR_INPROGRESS is returned!)
|
|
||||||
* Returns : err_t return code
|
|
||||||
* - ESPCONN_OK if hostname is a valid IP address string or the host
|
|
||||||
* name is already in the local names table.
|
|
||||||
* - ESPCONN_INPROGRESS enqueue a request to be sent to the DNS server
|
|
||||||
* for resolution if no errors are present.
|
|
||||||
* - ESPCONN_ARG: dns client not initialized or invalid hostname
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
err_t espconn_gethostbyname(struct espconn *pespconn, const char *hostname, ip_addr_t *addr, dns_found_callback found);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_encry_connect
|
|
||||||
* Description : The function given as connection
|
|
||||||
* Parameters : espconn -- the espconn used to connect with the host
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_secure_connect(struct espconn *espconn);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_encry_disconnect
|
|
||||||
* Description : The function given as the disconnection
|
|
||||||
* Parameters : espconn -- the espconn used to disconnect with the host
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_secure_disconnect(struct espconn *espconn);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_encry_sent
|
|
||||||
* Description : sent data for client or server
|
|
||||||
* Parameters : espconn -- espconn to set for client or server
|
|
||||||
* psent -- data to send
|
|
||||||
* length -- length of data to send
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_secure_sent(struct espconn *espconn, uint8 *psent, uint16 length);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_secure_accept
|
|
||||||
* Description : The function given as the listen
|
|
||||||
* Parameters : espconn -- the espconn used to listen the connection
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
sint8 espconn_secure_accept(struct espconn *espconn);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_igmp_join
|
|
||||||
* Description : join a multicast group
|
|
||||||
* Parameters : host_ip -- the ip address of udp server
|
|
||||||
* multicast_ip -- multicast ip given by user
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
sint8 espconn_igmp_join(ip_addr_t *host_ip, ip_addr_t *multicast_ip);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : espconn_igmp_leave
|
|
||||||
* Description : leave a multicast group
|
|
||||||
* Parameters : host_ip -- the ip address of udp server
|
|
||||||
* multicast_ip -- multicast ip given by user
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
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
|
|
||||||
|
|
|
@ -1,90 +0,0 @@
|
||||||
/*
|
|
||||||
* copyright (c) 2008 - 2011 Espressif System
|
|
||||||
*
|
|
||||||
* Define user specified Event signals and Task priorities here
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _ETS_SYS_H
|
|
||||||
#define _ETS_SYS_H
|
|
||||||
|
|
||||||
#include "c_types.h"
|
|
||||||
#include "eagle_soc.h"
|
|
||||||
|
|
||||||
typedef uint32_t ETSSignal;
|
|
||||||
typedef uint32_t ETSParam;
|
|
||||||
|
|
||||||
typedef struct ETSEventTag ETSEvent;
|
|
||||||
|
|
||||||
struct ETSEventTag {
|
|
||||||
ETSSignal sig;
|
|
||||||
ETSParam par;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef void (*ETSTask)(ETSEvent *e);
|
|
||||||
|
|
||||||
/* timer related */
|
|
||||||
typedef uint32_t ETSHandle;
|
|
||||||
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;
|
|
||||||
|
|
||||||
/* interrupt related */
|
|
||||||
#define ETS_SPI_INUM 2
|
|
||||||
#define ETS_GPIO_INUM 4
|
|
||||||
#define ETS_UART_INUM 5
|
|
||||||
#define ETS_UART1_INUM 5
|
|
||||||
#define ETS_FRC_TIMER1_INUM 9 /* use edge*/
|
|
||||||
|
|
||||||
#define ETS_INTR_LOCK() \
|
|
||||||
ets_intr_lock()
|
|
||||||
|
|
||||||
#define ETS_INTR_UNLOCK() \
|
|
||||||
ets_intr_unlock()
|
|
||||||
|
|
||||||
#define ETS_FRC_TIMER1_INTR_ATTACH(func, arg) \
|
|
||||||
ets_isr_attach(ETS_FRC_TIMER1_INUM, (func), (void *)(arg))
|
|
||||||
|
|
||||||
#define ETS_GPIO_INTR_ATTACH(func, arg) \
|
|
||||||
ets_isr_attach(ETS_GPIO_INUM, (func), (void *)(arg))
|
|
||||||
|
|
||||||
#define ETS_UART_INTR_ATTACH(func, arg) \
|
|
||||||
ets_isr_attach(ETS_UART_INUM, (func), (void *)(arg))
|
|
||||||
|
|
||||||
#define ETS_SPI_INTR_ATTACH(func, arg) \
|
|
||||||
ets_isr_attach(ETS_SPI_INUM, (func), (void *)(arg))
|
|
||||||
|
|
||||||
#define ETS_INTR_ENABLE(inum) \
|
|
||||||
ets_isr_unmask((1<<inum))
|
|
||||||
|
|
||||||
#define ETS_INTR_DISABLE(inum) \
|
|
||||||
ets_isr_mask((1<<inum))
|
|
||||||
|
|
||||||
#define ETS_SPI_INTR_ENABLE() \
|
|
||||||
ETS_INTR_ENABLE(ETS_SPI_INUM)
|
|
||||||
|
|
||||||
#define ETS_UART_INTR_ENABLE() \
|
|
||||||
ETS_INTR_ENABLE(ETS_UART_INUM)
|
|
||||||
|
|
||||||
#define ETS_UART_INTR_DISABLE() \
|
|
||||||
ETS_INTR_DISABLE(ETS_UART_INUM)
|
|
||||||
|
|
||||||
#define ETS_FRC1_INTR_ENABLE() \
|
|
||||||
ETS_INTR_ENABLE(ETS_FRC_TIMER1_INUM)
|
|
||||||
|
|
||||||
#define ETS_FRC1_INTR_DISABLE() \
|
|
||||||
ETS_INTR_DISABLE(ETS_FRC_TIMER1_INUM)
|
|
||||||
|
|
||||||
#define ETS_GPIO_INTR_ENABLE() \
|
|
||||||
ETS_INTR_ENABLE(ETS_GPIO_INUM)
|
|
||||||
|
|
||||||
#define ETS_GPIO_INTR_DISABLE() \
|
|
||||||
ETS_INTR_DISABLE(ETS_GPIO_INUM)
|
|
||||||
|
|
||||||
#endif /* _ETS_SYS_H */
|
|
100
include/gpio.h
100
include/gpio.h
|
@ -1,100 +0,0 @@
|
||||||
/*
|
|
||||||
* copyright (c) Espressif System 2010
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _GPIO_H_
|
|
||||||
#define _GPIO_H_
|
|
||||||
|
|
||||||
#define GPIO_PIN_ADDR(i) (GPIO_PIN0_ADDRESS + i*4)
|
|
||||||
|
|
||||||
#define GPIO_ID_IS_PIN_REGISTER(reg_id) \
|
|
||||||
((reg_id >= GPIO_ID_PIN0) && (reg_id <= GPIO_ID_PIN(GPIO_PIN_COUNT-1)))
|
|
||||||
|
|
||||||
#define GPIO_REGID_TO_PINIDX(reg_id) ((reg_id) - GPIO_ID_PIN0)
|
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
#define GPIO_OUTPUT_SET(gpio_no, bit_value) \
|
|
||||||
gpio_output_set(bit_value<<gpio_no, ((~bit_value)&0x01)<<gpio_no, 1<<gpio_no,0)
|
|
||||||
#define GPIO_DIS_OUTPUT(gpio_no) gpio_output_set(0,0,0, 1<<gpio_no)
|
|
||||||
#define GPIO_INPUT_GET(gpio_no) ((gpio_input_get()>>gpio_no)&BIT0)
|
|
||||||
|
|
||||||
/* GPIO interrupt handler, registered through gpio_intr_handler_register */
|
|
||||||
typedef void (* gpio_intr_handler_fn_t)(uint32 intr_mask, void *arg);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize GPIO. This includes reading the GPIO Configuration DataSet
|
|
||||||
* to initialize "output enables" and pin configurations for each gpio pin.
|
|
||||||
* Must be called once during startup.
|
|
||||||
*/
|
|
||||||
void gpio_init(void);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Change GPIO pin output by setting, clearing, or disabling pins.
|
|
||||||
* In general, it is expected that a bit will be set in at most one
|
|
||||||
* of these masks. If a bit is clear in all masks, the output state
|
|
||||||
* remains unchanged.
|
|
||||||
*
|
|
||||||
* There is no particular ordering guaranteed; so if the order of
|
|
||||||
* writes is significant, calling code should divide a single call
|
|
||||||
* into multiple calls.
|
|
||||||
*/
|
|
||||||
void gpio_output_set(uint32 set_mask,
|
|
||||||
uint32 clear_mask,
|
|
||||||
uint32 enable_mask,
|
|
||||||
uint32 disable_mask);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Sample the value of GPIO input pins and returns a bitmask.
|
|
||||||
*/
|
|
||||||
uint32 gpio_input_get(void);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Set the specified GPIO register to the specified value.
|
|
||||||
* This is a very general and powerful interface that is not
|
|
||||||
* expected to be used during normal operation. It is intended
|
|
||||||
* mainly for debug, or for unusual requirements.
|
|
||||||
*/
|
|
||||||
void gpio_register_set(uint32 reg_id, uint32 value);
|
|
||||||
|
|
||||||
/* Get the current value of the specified GPIO register. */
|
|
||||||
uint32 gpio_register_get(uint32 reg_id);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Register an application-specific interrupt handler for GPIO pin
|
|
||||||
* interrupts. Once the interrupt handler is called, it will not
|
|
||||||
* be called again until after a call to gpio_intr_ack. Any GPIO
|
|
||||||
* interrupts that occur during the interim are masked.
|
|
||||||
*
|
|
||||||
* The application-specific handler is called with a mask of
|
|
||||||
* pending GPIO interrupts. After processing pin interrupts, the
|
|
||||||
* application-specific handler may wish to use gpio_intr_pending
|
|
||||||
* to check for any additional pending interrupts before it returns.
|
|
||||||
*/
|
|
||||||
void gpio_intr_handler_register(gpio_intr_handler_fn_t fn, void *arg);
|
|
||||||
|
|
||||||
/* Determine which GPIO interrupts are pending. */
|
|
||||||
uint32 gpio_intr_pending(void);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Acknowledge GPIO interrupts.
|
|
||||||
* Intended to be called from the gpio_intr_handler_fn.
|
|
||||||
*/
|
|
||||||
void gpio_intr_ack(uint32 ack_mask);
|
|
||||||
|
|
||||||
void gpio_pin_wakeup_enable(uint32 i, GPIO_INT_TYPE intr_state);
|
|
||||||
|
|
||||||
void gpio_pin_wakeup_disable();
|
|
||||||
|
|
||||||
void gpio_pin_intr_state_set(uint32 i, GPIO_INT_TYPE intr_state);
|
|
||||||
|
|
||||||
#endif // _GPIO_H_
|
|
|
@ -1,69 +0,0 @@
|
||||||
#ifndef __IP_ADDR_H__
|
|
||||||
#define __IP_ADDR_H__
|
|
||||||
|
|
||||||
#include "c_types.h"
|
|
||||||
|
|
||||||
struct ip_addr {
|
|
||||||
uint32 addr;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct ip_addr ip_addr_t;
|
|
||||||
|
|
||||||
struct ip_info {
|
|
||||||
struct ip_addr ip;
|
|
||||||
struct ip_addr netmask;
|
|
||||||
struct ip_addr gw;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define IP4_ADDR(ipaddr, a,b,c,d) \
|
|
||||||
(ipaddr)->addr = ((uint32)((d) & 0xff) << 24) | \
|
|
||||||
((uint32)((c) & 0xff) << 16) | \
|
|
||||||
((uint32)((b) & 0xff) << 8) | \
|
|
||||||
(uint32)((a) & 0xff)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine if two address are on the same network.
|
|
||||||
*
|
|
||||||
* @arg addr1 IP address 1
|
|
||||||
* @arg addr2 IP address 2
|
|
||||||
* @arg mask network identifier mask
|
|
||||||
* @return !0 if the network identifiers of both address match
|
|
||||||
*/
|
|
||||||
#define ip_addr_netcmp(addr1, addr2, mask) (((addr1)->addr & \
|
|
||||||
(mask)->addr) == \
|
|
||||||
((addr2)->addr & \
|
|
||||||
(mask)->addr))
|
|
||||||
|
|
||||||
/** Set an IP address given by the four byte-parts.
|
|
||||||
Little-endian version that prevents the use of htonl. */
|
|
||||||
#define IP4_ADDR(ipaddr, a,b,c,d) \
|
|
||||||
(ipaddr)->addr = ((uint32)((d) & 0xff) << 24) | \
|
|
||||||
((uint32)((c) & 0xff) << 16) | \
|
|
||||||
((uint32)((b) & 0xff) << 8) | \
|
|
||||||
(uint32)((a) & 0xff)
|
|
||||||
|
|
||||||
#define ip4_addr1(ipaddr) (((uint8*)(ipaddr))[0])
|
|
||||||
#define ip4_addr2(ipaddr) (((uint8*)(ipaddr))[1])
|
|
||||||
#define ip4_addr3(ipaddr) (((uint8*)(ipaddr))[2])
|
|
||||||
#define ip4_addr4(ipaddr) (((uint8*)(ipaddr))[3])
|
|
||||||
|
|
||||||
#define ip4_addr1_16(ipaddr) ((uint16)ip4_addr1(ipaddr))
|
|
||||||
#define ip4_addr2_16(ipaddr) ((uint16)ip4_addr2(ipaddr))
|
|
||||||
#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), \
|
|
||||||
ip4_addr2_16(ipaddr), \
|
|
||||||
ip4_addr3_16(ipaddr), \
|
|
||||||
ip4_addr4_16(ipaddr)
|
|
||||||
|
|
||||||
#define IPSTR "%d.%d.%d.%d"
|
|
||||||
|
|
||||||
#endif /* __IP_ADDR_H__ */
|
|
|
@ -1,70 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2011-2012, Swedish Institute of Computer Science.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. Neither the name of the Institute nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* This file is part of the Contiki operating system.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \file
|
|
||||||
* A few JSON defines used for parsing and generating JSON.
|
|
||||||
* \author
|
|
||||||
* Niclas Finne <nfi@sics.se>
|
|
||||||
* Joakim Eriksson <joakime@sics.se>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __JSON_H__
|
|
||||||
#define __JSON_H__
|
|
||||||
|
|
||||||
#define JSON_TYPE_ARRAY '['
|
|
||||||
#define JSON_TYPE_OBJECT '{'
|
|
||||||
#define JSON_TYPE_PAIR ':'
|
|
||||||
#define JSON_TYPE_PAIR_NAME 'N' /* for N:V pairs */
|
|
||||||
#define JSON_TYPE_STRING '"'
|
|
||||||
#define JSON_TYPE_INT 'I'
|
|
||||||
#define JSON_TYPE_NUMBER '0'
|
|
||||||
#define JSON_TYPE_ERROR 0
|
|
||||||
|
|
||||||
/* how should we handle null vs false - both can be 0? */
|
|
||||||
#define JSON_TYPE_NULL 'n'
|
|
||||||
#define JSON_TYPE_TRUE 't'
|
|
||||||
#define JSON_TYPE_FALSE 'f'
|
|
||||||
|
|
||||||
#define JSON_TYPE_CALLBACK 'C'
|
|
||||||
|
|
||||||
enum {
|
|
||||||
JSON_ERROR_OK,
|
|
||||||
JSON_ERROR_SYNTAX,
|
|
||||||
JSON_ERROR_UNEXPECTED_ARRAY,
|
|
||||||
JSON_ERROR_UNEXPECTED_END_OF_ARRAY,
|
|
||||||
JSON_ERROR_UNEXPECTED_OBJECT,
|
|
||||||
JSON_ERROR_UNEXPECTED_STRING
|
|
||||||
};
|
|
||||||
|
|
||||||
#define JSON_CONTENT_TYPE "application/json"
|
|
||||||
|
|
||||||
#endif /* __JSON_H__ */
|
|
|
@ -1,94 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2011-2012, Swedish Institute of Computer Science.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. Neither the name of the Institute nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* This file is part of the Contiki operating system.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __JSONPARSE_H__
|
|
||||||
#define __JSONPARSE_H__
|
|
||||||
|
|
||||||
#include "c_types.h"
|
|
||||||
#include "json/json.h"
|
|
||||||
|
|
||||||
#ifdef JSONPARSE_CONF_MAX_DEPTH
|
|
||||||
#define JSONPARSE_MAX_DEPTH JSONPARSE_CONF_MAX_DEPTH
|
|
||||||
#else
|
|
||||||
#define JSONPARSE_MAX_DEPTH 10
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct jsonparse_state {
|
|
||||||
const char *json;
|
|
||||||
int pos;
|
|
||||||
int len;
|
|
||||||
int depth;
|
|
||||||
/* for handling atomic values */
|
|
||||||
int vstart;
|
|
||||||
int vlen;
|
|
||||||
char vtype;
|
|
||||||
char error;
|
|
||||||
char stack[JSONPARSE_MAX_DEPTH];
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Initialize a JSON parser state.
|
|
||||||
* \param state A pointer to a JSON parser state
|
|
||||||
* \param json The string to parse as JSON
|
|
||||||
* \param len The length of the string to parse
|
|
||||||
*
|
|
||||||
* This function initializes a JSON parser state for
|
|
||||||
* parsing a string as JSON.
|
|
||||||
*/
|
|
||||||
void jsonparse_setup(struct jsonparse_state *state, const char *json,
|
|
||||||
int len);
|
|
||||||
|
|
||||||
/* move to next JSON element */
|
|
||||||
int jsonparse_next(struct jsonparse_state *state);
|
|
||||||
|
|
||||||
/* copy the current JSON value into the specified buffer */
|
|
||||||
int jsonparse_copy_value(struct jsonparse_state *state, char *buf,
|
|
||||||
int buf_size);
|
|
||||||
|
|
||||||
/* get the current JSON value parsed as an int */
|
|
||||||
int jsonparse_get_value_as_int(struct jsonparse_state *state);
|
|
||||||
|
|
||||||
/* get the current JSON value parsed as a long */
|
|
||||||
long jsonparse_get_value_as_long(struct jsonparse_state *state);
|
|
||||||
|
|
||||||
/* get the current JSON value parsed as a unsigned long */
|
|
||||||
unsigned long jsonparse_get_value_as_ulong(struct jsonparse_state *state);
|
|
||||||
|
|
||||||
/* get the length of the current JSON value */
|
|
||||||
int jsonparse_get_len(struct jsonparse_state *state);
|
|
||||||
|
|
||||||
/* get the type of the current JSON value */
|
|
||||||
int jsonparse_get_type(struct jsonparse_state *state);
|
|
||||||
|
|
||||||
/* compare the JSON value with the specified string */
|
|
||||||
int jsonparse_strcmp_value(struct jsonparse_state *state, const char *str);
|
|
||||||
|
|
||||||
#endif /* __JSONPARSE_H__ */
|
|
|
@ -1,145 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2011-2012, Swedish Institute of Computer Science.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. Neither the name of the Institute nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* This file is part of the Contiki operating system.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \file
|
|
||||||
* JSON output generation
|
|
||||||
* \author
|
|
||||||
* Niclas Finne <nfi@sics.se>
|
|
||||||
* Joakim Eriksson <joakime@sics.se>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __JSONTREE_H__
|
|
||||||
#define __JSONTREE_H__
|
|
||||||
|
|
||||||
#include "c_types.h"
|
|
||||||
#include "json/json.h"
|
|
||||||
|
|
||||||
#ifdef JSONTREE_CONF_MAX_DEPTH
|
|
||||||
#define JSONTREE_MAX_DEPTH JSONTREE_CONF_MAX_DEPTH
|
|
||||||
#else
|
|
||||||
#define JSONTREE_MAX_DEPTH 10
|
|
||||||
#endif /* JSONTREE_CONF_MAX_DEPTH */
|
|
||||||
|
|
||||||
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_value {
|
|
||||||
uint8_t type;
|
|
||||||
/* followed by a value */
|
|
||||||
};
|
|
||||||
|
|
||||||
struct jsontree_string {
|
|
||||||
uint8_t type;
|
|
||||||
const char *value;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct jsontree_int {
|
|
||||||
uint8_t type;
|
|
||||||
int value;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* NOTE: the jsontree_callback set will receive a jsonparse state */
|
|
||||||
struct jsonparse_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_pair {
|
|
||||||
const char *name;
|
|
||||||
struct jsontree_value *value;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct jsontree_object {
|
|
||||||
uint8_t type;
|
|
||||||
uint8_t count;
|
|
||||||
struct jsontree_pair *pairs;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct jsontree_array {
|
|
||||||
uint8_t type;
|
|
||||||
uint8_t count;
|
|
||||||
struct jsontree_value **values;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define JSONTREE_STRING(text) {JSON_TYPE_STRING, (text)}
|
|
||||||
#define JSONTREE_PAIR(name, value) {(name), (struct jsontree_value *)(value)}
|
|
||||||
#define JSONTREE_CALLBACK(output, set) {JSON_TYPE_CALLBACK, (output), (set)}
|
|
||||||
|
|
||||||
#define JSONTREE_OBJECT(name, ...) \
|
|
||||||
static struct jsontree_pair jsontree_pair_##name[] = {__VA_ARGS__}; \
|
|
||||||
static struct jsontree_object name = { \
|
|
||||||
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 }
|
|
||||||
|
|
||||||
#define JSONTREE_OBJECT_EXT(name, ...) \
|
|
||||||
static struct jsontree_pair jsontree_pair_##name[] = {__VA_ARGS__}; \
|
|
||||||
struct jsontree_object name = { \
|
|
||||||
JSON_TYPE_OBJECT, \
|
|
||||||
sizeof(jsontree_pair_##name)/sizeof(struct jsontree_pair), \
|
|
||||||
jsontree_pair_##name }
|
|
||||||
|
|
||||||
void jsontree_setup(struct jsontree_context *js_ctx,
|
|
||||||
struct jsontree_value *root, int (* putchar)(int));
|
|
||||||
void jsontree_reset(struct jsontree_context *js_ctx);
|
|
||||||
|
|
||||||
const char *jsontree_path_name(const struct jsontree_context *js_ctx,
|
|
||||||
int depth);
|
|
||||||
|
|
||||||
void jsontree_write_int(const struct jsontree_context *js_ctx, int value);
|
|
||||||
void jsontree_write_int_array(const struct jsontree_context *js_ctx, const int *text, uint32 length);
|
|
||||||
|
|
||||||
void jsontree_write_atom(const struct jsontree_context *js_ctx,
|
|
||||||
const char *text);
|
|
||||||
void jsontree_write_string(const struct jsontree_context *js_ctx,
|
|
||||||
const char *text);
|
|
||||||
int jsontree_print_next(struct jsontree_context *js_ctx);
|
|
||||||
struct jsontree_value *jsontree_find_next(struct jsontree_context *js_ctx,
|
|
||||||
int type);
|
|
||||||
|
|
||||||
#endif /* __JSONTREE_H__ */
|
|
|
@ -1,12 +0,0 @@
|
||||||
#ifndef __MEM_H__
|
|
||||||
#define __MEM_H__
|
|
||||||
|
|
||||||
//void *pvPortMalloc( size_t xWantedSize );
|
|
||||||
//void vPortFree( void *pv );
|
|
||||||
//void *pvPortZalloc(size_t size);
|
|
||||||
|
|
||||||
#define os_malloc pvPortMalloc
|
|
||||||
#define os_free vPortFree
|
|
||||||
#define os_zalloc pvPortZalloc
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,19 +0,0 @@
|
||||||
/*
|
|
||||||
* copyright (c) Espressif System 2010
|
|
||||||
*
|
|
||||||
* mapping to ETS structures
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _OS_TYPES_H_
|
|
||||||
#define _OS_TYPES_H_
|
|
||||||
|
|
||||||
#include "ets_sys.h"
|
|
||||||
|
|
||||||
#define os_signal_t ETSSignal
|
|
||||||
#define os_param_t ETSParam
|
|
||||||
#define os_event_t ETSEvent
|
|
||||||
#define os_task_t ETSTask
|
|
||||||
#define os_timer_t ETSTimer
|
|
||||||
#define os_timer_func_t ETSTimerFunc
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,57 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2010 Espressif System
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _OSAPI_H_
|
|
||||||
#define _OSAPI_H_
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
#include "user_config.h"
|
|
||||||
|
|
||||||
#define os_bzero ets_bzero
|
|
||||||
#define os_delay_us ets_delay_us
|
|
||||||
#define os_install_putc1 ets_install_putc1
|
|
||||||
#define os_install_putc2 ets_install_putc2
|
|
||||||
#define os_intr_lock ets_intr_lock
|
|
||||||
#define os_intr_unlock ets_intr_unlock
|
|
||||||
#define os_isr_attach ets_isr_attach
|
|
||||||
#define os_isr_mask ets_isr_mask
|
|
||||||
#define os_isr_unmask ets_isr_unmask
|
|
||||||
#define os_memcmp ets_memcmp
|
|
||||||
#define os_memcpy ets_memcpy
|
|
||||||
#define os_memmove ets_memmove
|
|
||||||
#define os_memset ets_memset
|
|
||||||
#define os_putc ets_putc
|
|
||||||
#define os_str2macaddr ets_str2macaddr
|
|
||||||
#define os_strcat strcat
|
|
||||||
#define os_strchr strchr
|
|
||||||
#define os_strcmp ets_strcmp
|
|
||||||
#define os_strcpy ets_strcpy
|
|
||||||
#define os_strlen ets_strlen
|
|
||||||
#define os_strncmp ets_strncmp
|
|
||||||
#define os_strncpy ets_strncpy
|
|
||||||
#define os_strstr ets_strstr
|
|
||||||
#ifdef USE_US_TIMER
|
|
||||||
#define os_timer_arm_us(a, b, c) ets_timer_arm_new(a, b, c, 0)
|
|
||||||
#endif
|
|
||||||
#define os_timer_arm(a, b, c) ets_timer_arm_new(a, b, c, 1)
|
|
||||||
#define os_timer_disarm ets_timer_disarm
|
|
||||||
#define os_timer_done ets_timer_done
|
|
||||||
#define os_timer_handler_isr ets_timer_handler_isr
|
|
||||||
#define os_timer_init ets_timer_init
|
|
||||||
#define os_timer_setfn ets_timer_setfn
|
|
||||||
|
|
||||||
#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
|
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
#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__ */
|
|
204
include/queue.h
204
include/queue.h
|
@ -1,204 +0,0 @@
|
||||||
#ifndef _SYS_QUEUE_H_
|
|
||||||
#define _SYS_QUEUE_H_
|
|
||||||
|
|
||||||
#define QMD_SAVELINK(name, link)
|
|
||||||
#define TRASHIT(x)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Singly-linked List declarations.
|
|
||||||
*/
|
|
||||||
#define SLIST_HEAD(name, type) \
|
|
||||||
struct name { \
|
|
||||||
struct type *slh_first; /* first element */ \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define SLIST_HEAD_INITIALIZER(head) \
|
|
||||||
{ NULL }
|
|
||||||
|
|
||||||
#define SLIST_ENTRY(type) \
|
|
||||||
struct { \
|
|
||||||
struct type *sle_next; /* next element */ \
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Singly-linked List functions.
|
|
||||||
*/
|
|
||||||
#define SLIST_EMPTY(head) ((head)->slh_first == NULL)
|
|
||||||
|
|
||||||
#define SLIST_FIRST(head) ((head)->slh_first)
|
|
||||||
|
|
||||||
#define SLIST_FOREACH(var, head, field) \
|
|
||||||
for ((var) = SLIST_FIRST((head)); \
|
|
||||||
(var); \
|
|
||||||
(var) = SLIST_NEXT((var), field))
|
|
||||||
|
|
||||||
#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
|
|
||||||
for ((var) = SLIST_FIRST((head)); \
|
|
||||||
(var) && ((tvar) = SLIST_NEXT((var), field), 1); \
|
|
||||||
(var) = (tvar))
|
|
||||||
|
|
||||||
#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
|
|
||||||
for ((varp) = &SLIST_FIRST((head)); \
|
|
||||||
((var) = *(varp)) != NULL; \
|
|
||||||
(varp) = &SLIST_NEXT((var), field))
|
|
||||||
|
|
||||||
#define SLIST_INIT(head) do { \
|
|
||||||
SLIST_FIRST((head)) = NULL; \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
|
|
||||||
SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \
|
|
||||||
SLIST_NEXT((slistelm), field) = (elm); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define SLIST_INSERT_HEAD(head, elm, field) do { \
|
|
||||||
SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
|
|
||||||
SLIST_FIRST((head)) = (elm); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
|
|
||||||
|
|
||||||
#define SLIST_REMOVE(head, elm, type, field) do { \
|
|
||||||
QMD_SAVELINK(oldnext, (elm)->field.sle_next); \
|
|
||||||
if (SLIST_FIRST((head)) == (elm)) { \
|
|
||||||
SLIST_REMOVE_HEAD((head), field); \
|
|
||||||
} \
|
|
||||||
else { \
|
|
||||||
struct type *curelm = SLIST_FIRST((head)); \
|
|
||||||
while (SLIST_NEXT(curelm, field) != (elm)) \
|
|
||||||
curelm = SLIST_NEXT(curelm, field); \
|
|
||||||
SLIST_REMOVE_AFTER(curelm, field); \
|
|
||||||
} \
|
|
||||||
TRASHIT(*oldnext); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define SLIST_REMOVE_AFTER(elm, field) do { \
|
|
||||||
SLIST_NEXT(elm, field) = \
|
|
||||||
SLIST_NEXT(SLIST_NEXT(elm, field), field); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define SLIST_REMOVE_HEAD(head, field) do { \
|
|
||||||
SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Singly-linked Tail queue declarations.
|
|
||||||
*/
|
|
||||||
#define STAILQ_HEAD(name, type) \
|
|
||||||
struct name { \
|
|
||||||
struct type *stqh_first;/* first element */ \
|
|
||||||
struct type **stqh_last;/* addr of last next element */ \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define STAILQ_HEAD_INITIALIZER(head) \
|
|
||||||
{ NULL, &(head).stqh_first }
|
|
||||||
|
|
||||||
#define STAILQ_ENTRY(type) \
|
|
||||||
struct { \
|
|
||||||
struct type *stqe_next; /* next element */ \
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Singly-linked Tail queue functions.
|
|
||||||
*/
|
|
||||||
#define STAILQ_CONCAT(head1, head2) do { \
|
|
||||||
if (!STAILQ_EMPTY((head2))) { \
|
|
||||||
*(head1)->stqh_last = (head2)->stqh_first; \
|
|
||||||
(head1)->stqh_last = (head2)->stqh_last; \
|
|
||||||
STAILQ_INIT((head2)); \
|
|
||||||
} \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
|
|
||||||
|
|
||||||
#define STAILQ_FIRST(head) ((head)->stqh_first)
|
|
||||||
|
|
||||||
#define STAILQ_FOREACH(var, head, field) \
|
|
||||||
for((var) = STAILQ_FIRST((head)); \
|
|
||||||
(var); \
|
|
||||||
(var) = STAILQ_NEXT((var), field))
|
|
||||||
|
|
||||||
|
|
||||||
#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
|
|
||||||
for ((var) = STAILQ_FIRST((head)); \
|
|
||||||
(var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
|
|
||||||
(var) = (tvar))
|
|
||||||
|
|
||||||
#define STAILQ_INIT(head) do { \
|
|
||||||
STAILQ_FIRST((head)) = NULL; \
|
|
||||||
(head)->stqh_last = &STAILQ_FIRST((head)); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \
|
|
||||||
if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\
|
|
||||||
(head)->stqh_last = &STAILQ_NEXT((elm), field); \
|
|
||||||
STAILQ_NEXT((tqelm), field) = (elm); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define STAILQ_INSERT_HEAD(head, elm, field) do { \
|
|
||||||
if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \
|
|
||||||
(head)->stqh_last = &STAILQ_NEXT((elm), field); \
|
|
||||||
STAILQ_FIRST((head)) = (elm); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define STAILQ_INSERT_TAIL(head, elm, field) do { \
|
|
||||||
STAILQ_NEXT((elm), field) = NULL; \
|
|
||||||
*(head)->stqh_last = (elm); \
|
|
||||||
(head)->stqh_last = &STAILQ_NEXT((elm), field); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define STAILQ_LAST(head, type, field) \
|
|
||||||
(STAILQ_EMPTY((head)) ? \
|
|
||||||
NULL : \
|
|
||||||
((struct type *)(void *) \
|
|
||||||
((char *)((head)->stqh_last) - __offsetof(struct type, field))))
|
|
||||||
|
|
||||||
#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
|
|
||||||
|
|
||||||
#define STAILQ_REMOVE(head, elm, type, field) do { \
|
|
||||||
QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \
|
|
||||||
if (STAILQ_FIRST((head)) == (elm)) { \
|
|
||||||
STAILQ_REMOVE_HEAD((head), field); \
|
|
||||||
} \
|
|
||||||
else { \
|
|
||||||
struct type *curelm = STAILQ_FIRST((head)); \
|
|
||||||
while (STAILQ_NEXT(curelm, field) != (elm)) \
|
|
||||||
curelm = STAILQ_NEXT(curelm, field); \
|
|
||||||
STAILQ_REMOVE_AFTER(head, curelm, field); \
|
|
||||||
} \
|
|
||||||
TRASHIT(*oldnext); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define STAILQ_REMOVE_HEAD(head, field) do { \
|
|
||||||
if ((STAILQ_FIRST((head)) = \
|
|
||||||
STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \
|
|
||||||
(head)->stqh_last = &STAILQ_FIRST((head)); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define STAILQ_REMOVE_AFTER(head, elm, field) do { \
|
|
||||||
if ((STAILQ_NEXT(elm, field) = \
|
|
||||||
STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \
|
|
||||||
(head)->stqh_last = &STAILQ_NEXT((elm), field); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define STAILQ_SWAP(head1, head2, type) do { \
|
|
||||||
struct type *swap_first = STAILQ_FIRST(head1); \
|
|
||||||
struct type **swap_last = (head1)->stqh_last; \
|
|
||||||
STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \
|
|
||||||
(head1)->stqh_last = (head2)->stqh_last; \
|
|
||||||
STAILQ_FIRST(head2) = swap_first; \
|
|
||||||
(head2)->stqh_last = swap_last; \
|
|
||||||
if (STAILQ_EMPTY(head1)) \
|
|
||||||
(head1)->stqh_last = &STAILQ_FIRST(head1); \
|
|
||||||
if (STAILQ_EMPTY(head2)) \
|
|
||||||
(head2)->stqh_last = &STAILQ_FIRST(head2); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define STAILQ_INSERT_CHAIN_HEAD(head, elm_chead, elm_ctail, field) do { \
|
|
||||||
if ((STAILQ_NEXT(elm_ctail, field) = STAILQ_FIRST(head)) == NULL ) { \
|
|
||||||
(head)->stqh_last = &STAILQ_NEXT(elm_ctail, field); \
|
|
||||||
} \
|
|
||||||
STAILQ_FIRST(head) = (elm_chead); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#endif /* !_SYS_QUEUE_H_ */
|
|
|
@ -1,28 +0,0 @@
|
||||||
/*
|
|
||||||
* 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
|
|
|
@ -1,31 +0,0 @@
|
||||||
/*
|
|
||||||
* copyright (c) Espressif System 2010
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef SPI_FLASH_H
|
|
||||||
#define SPI_FLASH_H
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
SPI_FLASH_RESULT_OK,
|
|
||||||
SPI_FLASH_RESULT_ERR,
|
|
||||||
SPI_FLASH_RESULT_TIMEOUT
|
|
||||||
} SpiFlashOpResult;
|
|
||||||
|
|
||||||
typedef struct{
|
|
||||||
uint32 deviceId;
|
|
||||||
uint32 chip_size; // chip size in byte
|
|
||||||
uint32 block_size;
|
|
||||||
uint32 sector_size;
|
|
||||||
uint32 page_size;
|
|
||||||
uint32 status_mask;
|
|
||||||
} SpiFlashChip;
|
|
||||||
|
|
||||||
#define SPI_FLASH_SEC_SIZE 4096
|
|
||||||
|
|
||||||
uint32 spi_flash_get_id(void);
|
|
||||||
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);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,51 +0,0 @@
|
||||||
#ifndef __UPGRADE_H__
|
|
||||||
#define __UPGRADE_H__
|
|
||||||
|
|
||||||
#define SPI_FLASH_SEC_SIZE 4096
|
|
||||||
|
|
||||||
#define USER_BIN1 0x00
|
|
||||||
#define USER_BIN2 0x01
|
|
||||||
|
|
||||||
#define UPGRADE_FLAG_IDLE 0x00
|
|
||||||
#define UPGRADE_FLAG_START 0x01
|
|
||||||
#define UPGRADE_FLAG_FINISH 0x02
|
|
||||||
|
|
||||||
#define UPGRADE_FW_BIN1 0x00
|
|
||||||
#define UPGRADE_FW_BIN2 0x01
|
|
||||||
|
|
||||||
typedef void (*upgrade_states_check_callback)(void * arg);
|
|
||||||
|
|
||||||
//#define UPGRADE_SSL_ENABLE
|
|
||||||
|
|
||||||
struct upgrade_server_info {
|
|
||||||
uint8 ip[4];
|
|
||||||
uint16 port;
|
|
||||||
|
|
||||||
uint8 upgrade_flag;
|
|
||||||
|
|
||||||
uint8 pre_version[16];
|
|
||||||
uint8 upgrade_version[16];
|
|
||||||
|
|
||||||
uint32 check_times;
|
|
||||||
uint8 *url;
|
|
||||||
|
|
||||||
upgrade_states_check_callback check_cb;
|
|
||||||
struct espconn *pespconn;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define UPGRADE_FLAG_IDLE 0x00
|
|
||||||
#define UPGRADE_FLAG_START 0x01
|
|
||||||
#define UPGRADE_FLAG_FINISH 0x02
|
|
||||||
|
|
||||||
//bool system_upgrade_start(struct upgrade_server_info *server);
|
|
||||||
bool system_upgrade_start_ssl(struct upgrade_server_info *server);
|
|
||||||
void system_upgrade_init();
|
|
||||||
void system_upgrade_deinit();
|
|
||||||
bool system_upgrade(uint8 *data, uint16 len);
|
|
||||||
|
|
||||||
#ifdef UPGRADE_SSL_ENABLE
|
|
||||||
bool system_upgrade_start_ssl(struct upgrade_server_info *server);
|
|
||||||
#else
|
|
||||||
bool system_upgrade_start(struct upgrade_server_info *server);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
|
@ -1,267 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2013 -2014 Espressif System
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __USER_INTERFACE_H__
|
|
||||||
#define __USER_INTERFACE_H__
|
|
||||||
|
|
||||||
#include "os_type.h"
|
|
||||||
#ifdef LWIP_OPEN_SRC
|
|
||||||
#include "lwip/ip_addr.h"
|
|
||||||
#else
|
|
||||||
#include "ip_addr.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "queue.h"
|
|
||||||
#include "user_config.h"
|
|
||||||
#include "spi_flash.h"
|
|
||||||
|
|
||||||
#ifndef MAC2STR
|
|
||||||
#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
|
|
||||||
#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
enum rst_reason {
|
|
||||||
DEFAULT_RST_FLAG = 0,
|
|
||||||
WDT_RST_FLAG = 1,
|
|
||||||
EXP_RST_FLAG = 2
|
|
||||||
};
|
|
||||||
|
|
||||||
struct rst_info{
|
|
||||||
uint32 flag;
|
|
||||||
uint32 exccause;
|
|
||||||
uint32 epc1;
|
|
||||||
uint32 epc2;
|
|
||||||
uint32 epc3;
|
|
||||||
uint32 excvaddr;
|
|
||||||
uint32 depc;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define UPGRADE_FW_BIN1 0x00
|
|
||||||
#define UPGRADE_FW_BIN2 0x01
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
/* user task's prio must be 0/1/2 !!!*/
|
|
||||||
enum {
|
|
||||||
USER_TASK_PRIO_0 = 0,
|
|
||||||
USER_TASK_PRIO_1,
|
|
||||||
USER_TASK_PRIO_2,
|
|
||||||
USER_TASK_PRIO_MAX
|
|
||||||
};
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
uint32 system_get_chip_id(void);
|
|
||||||
|
|
||||||
typedef void (* init_done_cb_t)(void);
|
|
||||||
|
|
||||||
void system_init_done_cb(init_done_cb_t cb);
|
|
||||||
|
|
||||||
uint32 system_rtc_clock_cali_proc(void);
|
|
||||||
uint32 system_get_rtc_time(void);
|
|
||||||
|
|
||||||
bool system_rtc_mem_read(uint8 src_addr, void *des_addr, uint16 load_size);
|
|
||||||
bool system_rtc_mem_write(uint8 des_addr, const void *src_addr, uint16 save_size);
|
|
||||||
|
|
||||||
void system_uart_swap(void);
|
|
||||||
|
|
||||||
uint16 system_adc_read(void);
|
|
||||||
uint16 system_get_vdd33(void);
|
|
||||||
|
|
||||||
const char *system_get_sdk_version(void);
|
|
||||||
|
|
||||||
#define NULL_MODE 0x00
|
|
||||||
#define STATION_MODE 0x01
|
|
||||||
#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);
|
|
||||||
|
|
||||||
struct bss_info {
|
|
||||||
STAILQ_ENTRY(bss_info) next;
|
|
||||||
|
|
||||||
uint8 bssid[6];
|
|
||||||
uint8 ssid[32];
|
|
||||||
uint8 channel;
|
|
||||||
sint8 rssi;
|
|
||||||
AUTH_MODE authmode;
|
|
||||||
uint8 is_hidden;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct _scaninfo {
|
|
||||||
STAILQ_HEAD(, bss_info) *pbss;
|
|
||||||
struct espconn *pespconn;
|
|
||||||
uint8 totalpage;
|
|
||||||
uint8 pagenum;
|
|
||||||
uint8 page_sn;
|
|
||||||
uint8 data_cnt;
|
|
||||||
} scaninfo;
|
|
||||||
|
|
||||||
typedef void (* scan_done_cb_t)(void *arg, STATUS status);
|
|
||||||
|
|
||||||
struct station_config {
|
|
||||||
uint8 ssid[32];
|
|
||||||
uint8 password[64];
|
|
||||||
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];
|
|
||||||
};
|
|
||||||
|
|
||||||
bool wifi_station_get_config(struct station_config *config);
|
|
||||||
bool wifi_station_set_config(struct station_config *config);
|
|
||||||
|
|
||||||
bool wifi_station_connect(void);
|
|
||||||
bool wifi_station_disconnect(void);
|
|
||||||
|
|
||||||
struct scan_config {
|
|
||||||
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);
|
|
||||||
|
|
||||||
uint8 wifi_station_get_auto_connect(void);
|
|
||||||
bool wifi_station_set_auto_connect(uint8 set);
|
|
||||||
|
|
||||||
enum {
|
|
||||||
STATION_IDLE = 0,
|
|
||||||
STATION_CONNECTING,
|
|
||||||
STATION_WRONG_PASSWORD,
|
|
||||||
STATION_NO_AP_FOUND,
|
|
||||||
STATION_CONNECT_FAIL,
|
|
||||||
STATION_GOT_IP
|
|
||||||
};
|
|
||||||
|
|
||||||
enum dhcp_status {
|
|
||||||
DHCP_STOPPED,
|
|
||||||
DHCP_STARTED
|
|
||||||
};
|
|
||||||
|
|
||||||
uint8 wifi_station_get_connect_status(void);
|
|
||||||
|
|
||||||
uint8 wifi_station_get_current_ap_id(void);
|
|
||||||
bool wifi_station_ap_change(uint8 current_ap_id);
|
|
||||||
bool wifi_station_ap_number_set(uint8 ap_number);
|
|
||||||
|
|
||||||
bool wifi_station_dhcpc_start(void);
|
|
||||||
bool wifi_station_dhcpc_stop(void);
|
|
||||||
enum dhcp_status wifi_station_dhcpc_status(void);
|
|
||||||
|
|
||||||
struct softap_config {
|
|
||||||
uint8 ssid[32];
|
|
||||||
uint8 password[64];
|
|
||||||
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
|
|
||||||
uint16 beacon_interval; // Note: support 100 ~ 60000 ms, default 100
|
|
||||||
};
|
|
||||||
|
|
||||||
bool wifi_softap_get_config(struct softap_config *config);
|
|
||||||
bool wifi_softap_set_config(struct softap_config *config);
|
|
||||||
|
|
||||||
struct station_info {
|
|
||||||
STAILQ_ENTRY(station_info) next;
|
|
||||||
|
|
||||||
uint8 bssid[6];
|
|
||||||
struct ip_addr ip;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct dhcps_lease {
|
|
||||||
uint32 start_ip;
|
|
||||||
uint32 end_ip;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct station_info * wifi_softap_get_station_info(void);
|
|
||||||
void wifi_softap_free_station_info(void);
|
|
||||||
uint8 wifi_station_get_ap_info(struct station_config config[]);
|
|
||||||
|
|
||||||
bool wifi_softap_dhcps_start(void);
|
|
||||||
bool wifi_softap_dhcps_stop(void);
|
|
||||||
bool wifi_softap_set_dhcps_lease(struct dhcps_lease *please);
|
|
||||||
enum dhcp_status wifi_softap_dhcps_status(void);
|
|
||||||
|
|
||||||
#define STATION_IF 0x00
|
|
||||||
#define SOFTAP_IF 0x01
|
|
||||||
|
|
||||||
bool wifi_get_ip_info(uint8 if_index, struct ip_info *info);
|
|
||||||
bool wifi_set_ip_info(uint8 if_index, struct ip_info *info);
|
|
||||||
bool wifi_get_macaddr(uint8 if_index, uint8 *macaddr);
|
|
||||||
bool wifi_set_macaddr(uint8 if_index, uint8 *macaddr);
|
|
||||||
|
|
||||||
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'. */
|
|
||||||
#define ESP_U32_DIFF(a, b) (((a) >= (b)) ? ((a) - (b)) : (((a) + ((b) ^ 0xFFFFFFFF) + 1)))
|
|
||||||
|
|
||||||
void wifi_promiscuous_enable(uint8 promiscuous);
|
|
||||||
|
|
||||||
typedef void (* wifi_promiscuous_cb_t)(uint8 *buf, uint16 len);
|
|
||||||
|
|
||||||
void wifi_set_promiscuous_rx_cb(wifi_promiscuous_cb_t cb);
|
|
||||||
|
|
||||||
#define PHY_MODE_B 0x01
|
|
||||||
#define PHY_MODE_G 0x02
|
|
||||||
#define PHY_MODE_N 0x03
|
|
||||||
|
|
||||||
enum phy_mode {
|
|
||||||
PHY_MODE_11B = 1,
|
|
||||||
PHY_MODE_11G = 2,
|
|
||||||
PHY_MODE_11N = 3
|
|
||||||
};
|
|
||||||
|
|
||||||
enum phy_mode wifi_get_phy_mode(void);
|
|
||||||
bool wifi_set_phy_mode(enum phy_mode mode);
|
|
||||||
|
|
||||||
enum sleep_type {
|
|
||||||
NONE_SLEEP_T = 0,
|
|
||||||
LIGHT_SLEEP_T,
|
|
||||||
MODEM_SLEEP_T
|
|
||||||
};
|
|
||||||
|
|
||||||
bool wifi_set_sleep_type(enum sleep_type type);
|
|
||||||
enum sleep_type wifi_get_sleep_type(void);
|
|
||||||
|
|
||||||
#endif
|
|
BIN
lib/libat.a
BIN
lib/libat.a
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/libm.a
BIN
lib/libm.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.
Loading…
Reference in New Issue