Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Nodemcu Firmware
Commits
57d5e207
Commit
57d5e207
authored
Oct 01, 2015
by
Johny Mattsson
Browse files
Imported latest SDK 1.4.0 on the side in prep for upgrade.
parent
093a8959
Changes
145
Show whitespace changes
Inline
Side-by-side
sdk/esp_iot_sdk_v1.4.0/examples/wps/Makefile
0 → 100644
View file @
57d5e207
#############################################################
# Required variables for each makefile
# Discard this section from all parent makefiles
# Expected variables (with automatic defaults):
# CSRCS (all "C" files in the dir)
# SUBDIRS (all subdirs with a Makefile)
# GEN_LIBS - list of libs to be generated ()
# GEN_IMAGES - list of object file images to be generated ()
# GEN_BINS - list of binaries to be generated ()
# COMPONENTS_xxx - a list of libs/objs in the form
# subdir/lib to be extracted and rolled up into
# a generated lib/image xxx.a ()
#
TARGET
=
eagle
#FLAVOR = release
FLAVOR
=
debug
#EXTRA_CCFLAGS += -u
ifndef
PDIR
# {
GEN_IMAGES
=
eagle.app.v6.out
GEN_BINS
=
eagle.app.v6.bin
SPECIAL_MKTARGETS
=
$(APP_MKTARGETS)
SUBDIRS
=
\
user
\
driver
endif
# } PDIR
APPDIR
=
.
LDDIR
=
../ld
CCFLAGS
+=
-Os
TARGET_LDFLAGS
=
\
-nostdlib
\
-Wl,-EL
\
--longcalls
\
--text-section-literals
ifeq
($(FLAVOR),debug)
TARGET_LDFLAGS
+=
-g
-O2
endif
ifeq
($(FLAVOR),release)
TARGET_LDFLAGS
+=
-g
-O0
endif
COMPONENTS_eagle.app.v6
=
\
user/libuser.a
\
driver/libdriver.a
LINKFLAGS_eagle.app.v6
=
\
-L../lib
\
-nostdlib
\
-T$(LD_FILE)
\
-Wl,--no-check-sections
\
-u
call_user_start
\
-Wl,-static
\
-Wl,--start-group
\
-lc
\
-lgcc
\
-lhal
\
-lphy
\
-lpp
\
-lnet80211
\
-llwip
\
-lwpa
\
-lmain
\
-lwps
\
-lcrypto
\
$(DEP_LIBS_eagle.app.v6)
\
-Wl,--end-group
DEPENDS_eagle.app.v6
=
\
$(LD_FILE)
\
$(LDDIR)/eagle.rom.addr.v6.ld
#############################################################
# Configuration i.e. compile options etc.
# Target specific stuff (defines etc.) goes in here!
# Generally values applying to a tree are captured in the
# makefile at its root level - these are then overridden
# for a subtree within the makefile rooted therein
#
#UNIVERSAL_TARGET_DEFINES = \
# Other potential configuration flags include:
# -DTXRX_TXBUF_DEBUG
# -DTXRX_RXBUF_DEBUG
# -DWLAN_CONFIG_CCX
CONFIGURATION_DEFINES
=
-DICACHE_FLASH
DEFINES
+=
\
$(UNIVERSAL_TARGET_DEFINES)
\
$(CONFIGURATION_DEFINES)
DDEFINES
+=
\
$(UNIVERSAL_TARGET_DEFINES)
\
$(CONFIGURATION_DEFINES)
#############################################################
# Recursion Magic - Don't touch this!!
#
# Each subtree potentially has an include directory
# corresponding to the common APIs applicable to modules
# rooted at that subtree. Accordingly, the INCLUDE PATH
# of a module can only contain the include directories up
# its parent path, and not its siblings
#
# Required for each makefile to inherit from the parent
#
INCLUDES
:=
$(INCLUDES)
-I
$(PDIR)
include
PDIR
:=
../
$(PDIR)
sinclude
$(PDIR)Makefile
.PHONY
:
FORCE
FORCE
:
sdk/esp_iot_sdk_v1.4.0/examples/wps/driver/Makefile
0 → 100644
View file @
57d5e207
#############################################################
# Required variables for each makefile
# Discard this section from all parent makefiles
# Expected variables (with automatic defaults):
# CSRCS (all "C" files in the dir)
# SUBDIRS (all subdirs with a Makefile)
# GEN_LIBS - list of libs to be generated ()
# GEN_IMAGES - list of images to be generated ()
# COMPONENTS_xxx - a list of libs/objs in the form
# subdir/lib to be extracted and rolled up into
# a generated lib/image xxx.a ()
#
ifndef
PDIR
GEN_LIBS
=
libdriver.a
endif
#############################################################
# Configuration i.e. compile options etc.
# Target specific stuff (defines etc.) goes in here!
# Generally values applying to a tree are captured in the
# makefile at its root level - these are then overridden
# for a subtree within the makefile rooted therein
#
#DEFINES +=
#############################################################
# Recursion Magic - Don't touch this!!
#
# Each subtree potentially has an include directory
# corresponding to the common APIs applicable to modules
# rooted at that subtree. Accordingly, the INCLUDE PATH
# of a module can only contain the include directories up
# its parent path, and not its siblings
#
# Required for each makefile to inherit from the parent
#
INCLUDES
:=
$(INCLUDES)
-I
$(PDIR)
include
INCLUDES
+=
-I
./
PDIR
:=
../
$(PDIR)
sinclude
$(PDIR)Makefile
sdk/esp_iot_sdk_v1.4.0/examples/wps/driver/key.c
0 → 100644
View file @
57d5e207
/******************************************************************************
* Copyright 2013-2014 Espressif Systems (Wuxi)
*
* FileName: key.c
*
* Description: key driver, now can use different gpio and install different function
*
* Modification history:
* 2014/5/1, v1.0 create this file.
*******************************************************************************/
#include "ets_sys.h"
#include "os_type.h"
#include "osapi.h"
#include "mem.h"
#include "gpio.h"
#include "user_interface.h"
#include "driver/key.h"
LOCAL
void
key_intr_handler
(
struct
keys_param
*
keys
);
/******************************************************************************
* FunctionName : key_init_single
* Description : init single key's gpio and register function
* Parameters : uint8 gpio_id - which gpio to use
* uint32 gpio_name - gpio mux name
* uint32 gpio_func - gpio function
* key_function long_press - long press function, needed to install
* key_function short_press - short press function, needed to install
* Returns : single_key_param - single key parameter, needed by key init
*******************************************************************************/
struct
single_key_param
*
ICACHE_FLASH_ATTR
key_init_single
(
uint8
gpio_id
,
uint32
gpio_name
,
uint8
gpio_func
,
key_function
long_press
,
key_function
short_press
)
{
struct
single_key_param
*
single_key
=
(
struct
single_key_param
*
)
os_zalloc
(
sizeof
(
struct
single_key_param
));
single_key
->
gpio_id
=
gpio_id
;
single_key
->
gpio_name
=
gpio_name
;
single_key
->
gpio_func
=
gpio_func
;
single_key
->
long_press
=
long_press
;
single_key
->
short_press
=
short_press
;
return
single_key
;
}
/******************************************************************************
* FunctionName : key_init
* Description : init keys
* Parameters : key_param *keys - keys parameter, which inited by key_init_single
* Returns : none
*******************************************************************************/
void
ICACHE_FLASH_ATTR
key_init
(
struct
keys_param
*
keys
)
{
uint8
i
;
ETS_GPIO_INTR_ATTACH
(
key_intr_handler
,
keys
);
ETS_GPIO_INTR_DISABLE
();
for
(
i
=
0
;
i
<
keys
->
key_num
;
i
++
)
{
keys
->
single_key
[
i
]
->
key_level
=
1
;
PIN_FUNC_SELECT
(
keys
->
single_key
[
i
]
->
gpio_name
,
keys
->
single_key
[
i
]
->
gpio_func
);
gpio_output_set
(
0
,
0
,
0
,
GPIO_ID_PIN
(
keys
->
single_key
[
i
]
->
gpio_id
));
gpio_register_set
(
GPIO_PIN_ADDR
(
keys
->
single_key
[
i
]
->
gpio_id
),
GPIO_PIN_INT_TYPE_SET
(
GPIO_PIN_INTR_DISABLE
)
|
GPIO_PIN_PAD_DRIVER_SET
(
GPIO_PAD_DRIVER_DISABLE
)
|
GPIO_PIN_SOURCE_SET
(
GPIO_AS_PIN_SOURCE
));
//clear gpio14 status
GPIO_REG_WRITE
(
GPIO_STATUS_W1TC_ADDRESS
,
BIT
(
keys
->
single_key
[
i
]
->
gpio_id
));
//enable interrupt
gpio_pin_intr_state_set
(
GPIO_ID_PIN
(
keys
->
single_key
[
i
]
->
gpio_id
),
GPIO_PIN_INTR_NEGEDGE
);
}
ETS_GPIO_INTR_ENABLE
();
}
/******************************************************************************
* FunctionName : key_5s_cb
* Description : long press 5s timer callback
* Parameters : single_key_param *single_key - single key parameter
* Returns : none
*******************************************************************************/
LOCAL
void
ICACHE_FLASH_ATTR
key_5s_cb
(
struct
single_key_param
*
single_key
)
{
os_timer_disarm
(
&
single_key
->
key_5s
);
// low, then restart
if
(
0
==
GPIO_INPUT_GET
(
GPIO_ID_PIN
(
single_key
->
gpio_id
)))
{
if
(
single_key
->
long_press
)
{
single_key
->
long_press
();
}
}
}
/******************************************************************************
* FunctionName : key_50ms_cb
* Description : 50ms timer callback to check it's a real key push
* Parameters : single_key_param *single_key - single key parameter
* Returns : none
*******************************************************************************/
LOCAL
void
ICACHE_FLASH_ATTR
key_50ms_cb
(
struct
single_key_param
*
single_key
)
{
os_timer_disarm
(
&
single_key
->
key_50ms
);
// high, then key is up
if
(
1
==
GPIO_INPUT_GET
(
GPIO_ID_PIN
(
single_key
->
gpio_id
)))
{
os_timer_disarm
(
&
single_key
->
key_5s
);
single_key
->
key_level
=
1
;
gpio_pin_intr_state_set
(
GPIO_ID_PIN
(
single_key
->
gpio_id
),
GPIO_PIN_INTR_NEGEDGE
);
if
(
single_key
->
short_press
)
{
single_key
->
short_press
();
}
}
else
{
gpio_pin_intr_state_set
(
GPIO_ID_PIN
(
single_key
->
gpio_id
),
GPIO_PIN_INTR_POSEDGE
);
}
}
/******************************************************************************
* FunctionName : key_intr_handler
* Description : key interrupt handler
* Parameters : key_param *keys - keys parameter, which inited by key_init_single
* Returns : none
*******************************************************************************/
LOCAL
void
key_intr_handler
(
struct
keys_param
*
keys
)
{
uint8
i
;
uint32
gpio_status
=
GPIO_REG_READ
(
GPIO_STATUS_ADDRESS
);
for
(
i
=
0
;
i
<
keys
->
key_num
;
i
++
)
{
if
(
gpio_status
&
BIT
(
keys
->
single_key
[
i
]
->
gpio_id
))
{
//disable interrupt
gpio_pin_intr_state_set
(
GPIO_ID_PIN
(
keys
->
single_key
[
i
]
->
gpio_id
),
GPIO_PIN_INTR_DISABLE
);
//clear interrupt status
GPIO_REG_WRITE
(
GPIO_STATUS_W1TC_ADDRESS
,
gpio_status
&
BIT
(
keys
->
single_key
[
i
]
->
gpio_id
));
if
(
keys
->
single_key
[
i
]
->
key_level
==
1
)
{
// 5s, restart & enter softap mode
os_timer_disarm
(
&
keys
->
single_key
[
i
]
->
key_5s
);
os_timer_setfn
(
&
keys
->
single_key
[
i
]
->
key_5s
,
(
os_timer_func_t
*
)
key_5s_cb
,
keys
->
single_key
[
i
]);
os_timer_arm
(
&
keys
->
single_key
[
i
]
->
key_5s
,
5000
,
0
);
keys
->
single_key
[
i
]
->
key_level
=
0
;
gpio_pin_intr_state_set
(
GPIO_ID_PIN
(
keys
->
single_key
[
i
]
->
gpio_id
),
GPIO_PIN_INTR_POSEDGE
);
}
else
{
// 50ms, check if this is a real key up
os_timer_disarm
(
&
keys
->
single_key
[
i
]
->
key_50ms
);
os_timer_setfn
(
&
keys
->
single_key
[
i
]
->
key_50ms
,
(
os_timer_func_t
*
)
key_50ms_cb
,
keys
->
single_key
[
i
]);
os_timer_arm
(
&
keys
->
single_key
[
i
]
->
key_50ms
,
50
,
0
);
}
}
}
}
sdk/esp_iot_sdk_v1.4.0/examples/wps/gen_misc.bat
0 → 100644
View file @
57d5e207
@echo
off
echo
gen_misc
.bat
version
20150511
echo
.
echo
Please
follow
below
steps
(
1
-
5
)
to
generate
specific
bin
(
s
)
:
echo
STEP
1
:
choose
boot
version
(
0
=
boot_v1
.1
,
1
=
boot_v1
.2
+,
2
=
none
)
set
input
=
default
set
/p
input
=
enter
(
0
/1/2
,
default
2
)
:
if
%input%
equ
0
(
set
boot
=
old
)
else
(
if
%input%
equ
1
(
set
boot
=
new
)
else
(
set
boot
=
none
)
)
echo
boot
mode
:
%boot%
echo
.
echo
STEP
2
:
choose
bin
generate
(
0
=
eagle
.flash.bin
+eagle
.irom0text.bin
,
1
=
user1
.bin
,
2
=
user2
.bin
)
set
input
=
default
set
/p
input
=
enter
(
0
/1/2
,
default
0
)
:
if
%input%
equ
1
(
if
%boot%
equ
none
(
set
app
=
0
echo
choose
no
boot
before
echo
generate
bin
:
eagle
.flash.bin
+eagle
.irom0text.bin
)
else
(
set
app
=
1
echo
generate
bin
:
user1
.bin
)
)
else
(
if
%input%
equ
2
(
if
%boot%
equ
none
(
set
app
=
0
echo
choose
no
boot
before
echo
generate
bin
:
eagle
.flash.bin
+eagle
.irom0text.bin
)
else
(
set
app
=
2
echo
generate
bin
:
user2
.bin
)
)
else
(
if
%boot%
neq
none
(
set
boot
=
none
echo
ignore
boot
)
set
app
=
0
echo
generate
bin
:
eagle
.flash.bin
+eagle
.irom0text.bin
))
echo
.
echo
STEP
3
:
choose
spi
speed
(
0
=
20
MHz
,
1
=
26
.7MHz
,
2
=
40
MHz
,
3
=
80
MHz
)
set
input
=
default
set
/p
input
=
enter
(
0
/1/2/3
,
default
2
)
:
if
%input%
equ
0
(
set
spi_speed
=
20
)
else
(
if
%input%
equ
1
(
set
spi_speed
=
26
.7
)
else
(
if
%input%
equ
3
(
set
spi_speed
=
80
)
else
(
set
spi_speed
=
40
)))
echo
spi
speed
:
%spi_speed%
MHz
echo
.
echo
STEP
4
:
choose
spi
mode
(
0
=
QIO
,
1
=
QOUT
,
2
=
DIO
,
3
=
DOUT
)
set
input
=
default
set
/p
input
=
enter
(
0
/1/2/3
,
default
0
)
:
if
%input%
equ
1
(
set
spi_mode
=
QOUT
)
else
(
if
%input%
equ
2
(
set
spi_mode
=
DIO
)
else
(
if
%input%
equ
3
(
set
spi_mode
=
DOUT
)
else
(
set
spi_mode
=
QIO
)))
echo
spi
mode
:
%spi_mode%
echo
.
echo
STEP
5
:
choose
flash
size
and
map
echo
0
=
512
KB
(
256
KB
+
256
KB
)
echo
2
=
1024
KB
(
512
KB
+
512
KB
)
echo
3
=
2048
KB
(
512
KB
+
512
KB
)
echo
4
=
4096
KB
(
512
KB
+
512
KB
)
echo
5
=
2048
KB
(
1024
KB
+
1024
KB
)
echo
6
=
4096
KB
(
1024
KB
+
1024
KB
)
set
input
=
default
set
/p
input
=
enter
(
0
/1/2/3/4/5/6
,
default
0
)
:
if
%input%
equ
2
(
set
spi_size_map
=
2
echo
spi
size
:
1024
KB
echo
spi
ota
map
:
512
KB
+
512
KB
)
else
(
if
%input%
equ
3
(
set
spi_size_map
=
3
echo
spi
size
:
2048
KB
echo
spi
ota
map
:
512
KB
+
512
KB
)
else
(
if
%input%
equ
4
(
set
spi_size_map
=
4
echo
spi
size
:
4096
KB
echo
spi
ota
map
:
512
KB
+
512
KB
)
else
(
if
%input%
equ
5
(
set
spi_size_map
=
5
echo
spi
size
:
2048
KB
echo
spi
ota
map
:
1024
KB
+
1024
KB
)
else
(
if
%input%
equ
6
(
set
spi_size_map
=
6
echo
spi
size
:
4096
KB
echo
spi
ota
map
:
1024
KB
+
1024
KB
)
else
(
set
spi_size_map
=
0
echo
spi
size
:
512
KB
echo
spi
ota
map
:
256
KB
+
256
KB
)
)
)
)
)
touch
user
/user
_main.c
echo
.
echo
start
...
echo
.
make
BOOT
=
%boot%
APP
=
%app%
SPI_SPEED
=
%spi_speed%
SPI_MODE
=
%spi_mode%
SPI_SIZE
=
%spi_size_map%
sdk/esp_iot_sdk_v1.4.0/examples/wps/gen_misc.sh
0 → 100644
View file @
57d5e207
#!/bin/bash
echo
"gen_misc.sh version 20150511"
echo
""
echo
"Please follow below steps(1-5) to generate specific bin(s):"
echo
"STEP 1: choose boot version(0=boot_v1.1, 1=boot_v1.2+, 2=none)"
echo
"enter(0/1/2, default 2):"
read
input
if
[
-z
"
$input
"
]
;
then
boot
=
none
elif
[
$input
==
0
]
;
then
boot
=
old
elif
[
$input
==
1
]
;
then
boot
=
new
else
boot
=
none
fi
echo
"boot mode:
$boot
"
echo
""
echo
"STEP 2: choose bin generate(0=eagle.flash.bin+eagle.irom0text.bin, 1=user1.bin, 2=user2.bin)"
echo
"enter (0/1/2, default 0):"
read
input
if
[
-z
"
$input
"
]
;
then
if
[
$boot
!=
none
]
;
then
boot
=
none
echo
"ignore boot"
fi
app
=
0
echo
"generate bin: eagle.flash.bin+eagle.irom0text.bin"
elif
[
$input
==
1
]
;
then
if
[
$boot
==
none
]
;
then
app
=
0
echo
"choose no boot before"
echo
"generate bin: eagle.flash.bin+eagle.irom0text.bin"
else
app
=
1
echo
"generate bin: user1.bin"
fi
elif
[
$input
==
2
]
;
then
if
[
$boot
==
none
]
;
then
app
=
0
echo
"choose no boot before"
echo
"generate bin: eagle.flash.bin+eagle.irom0text.bin"
else
app
=
2
echo
"generate bin: user2.bin"
fi
else
if
[
$boot
!=
none
]
;
then
boot
=
none
echo
"ignore boot"
fi
app
=
0
echo
"generate bin: eagle.flash.bin+eagle.irom0text.bin"
fi
echo
""
echo
"STEP 3: choose spi speed(0=20MHz, 1=26.7MHz, 2=40MHz, 3=80MHz)"
echo
"enter (0/1/2/3, default 2):"
read
input
if
[
-z
"
$input
"
]
;
then
spi_speed
=
40
elif
[
$input
==
0
]
;
then
spi_speed
=
20
elif
[
$input
==
1
]
;
then
spi_speed
=
26.7
elif
[
$input
==
3
]
;
then
spi_speed
=
80
else
spi_speed
=
40
fi
echo
"spi speed:
$spi_speed
MHz"
echo
""
echo
"STEP 4: choose spi mode(0=QIO, 1=QOUT, 2=DIO, 3=DOUT)"
echo
"enter (0/1/2/3, default 0):"
read
input
if
[
-z
"
$input
"
]
;
then
spi_mode
=
QIO
elif
[
$input
==
1
]
;
then
spi_mode
=
QOUT
elif
[
$input
==
2
]
;
then
spi_mode
=
DIO
elif
[
$input
==
3
]
;
then
spi_mode
=
DOUT
else
spi_mode
=
QIO
fi
echo
"spi mode:
$spi_mode
"
echo
""
echo
"STEP 5: choose spi size and map"
echo
" 0= 512KB( 256KB+ 256KB)"
echo
" 2=1024KB( 512KB+ 512KB)"
echo
" 3=2048KB( 512KB+ 512KB)"
echo
" 4=4096KB( 512KB+ 512KB)"
echo
" 5=2048KB(1024KB+1024KB)"
echo
" 6=4096KB(1024KB+1024KB)"
echo
"enter (0/2/3/4/5/6, default 0):"
read
input
if
[
-z
"
$input
"
]
;
then
spi_size_map
=
0
echo
"spi size: 512KB"
echo
"spi ota map: 256KB + 256KB"
elif
[
$input
==
2
]
;
then
spi_size_map
=
2
echo
"spi size: 1024KB"
echo
"spi ota map: 512KB + 512KB"
elif
[
$input
==
3
]
;
then
spi_size_map
=
3
echo
"spi size: 2048KB"
echo
"spi ota map: 512KB + 512KB"
elif
[
$input
==
4
]
;
then
spi_size_map
=
4
echo
"spi size: 4096KB"
echo
"spi ota map: 512KB + 512KB"
elif
[
$input
==
5
]
;
then
spi_size_map
=
5
echo
"spi size: 2048KB"
echo
"spi ota map: 1024KB + 1024KB"
elif
[
$input
==
6
]
;
then
spi_size_map
=
6
echo
"spi size: 4096KB"
echo
"spi ota map: 1024KB + 1024KB"
else
spi_size_map
=
0
echo
"spi size: 512KB"
echo
"spi ota map: 256KB + 256KB"
fi
echo
""
touch
user/user_main.c
echo
""
echo
"start..."
echo
""
make
COMPILE
=
gcc
BOOT
=
$boot
APP
=
$app
SPI_SPEED
=
$spi_speed
SPI_MODE
=
$spi_mode
SPI_SIZE_MAP
=
$spi_size_map
sdk/esp_iot_sdk_v1.4.0/examples/wps/include/driver/key.h
0 → 100644
View file @
57d5e207
#ifndef __KEY_H__
#define __KEY_H__
#include "gpio.h"
typedef
void
(
*
key_function
)(
void
);
struct
single_key_param
{
uint8
key_level
;
uint8
gpio_id
;
uint8
gpio_func
;
uint32
gpio_name
;
os_timer_t
key_5s
;
os_timer_t
key_50ms
;
key_function
short_press
;
key_function
long_press
;
};
struct
keys_param
{
uint8
key_num
;
struct
single_key_param
**
single_key
;
};
struct
single_key_param
*
key_init_single
(
uint8
gpio_id
,
uint32
gpio_name
,
uint8
gpio_func
,
key_function
long_press
,
key_function
short_press
);
void
key_init
(
struct
keys_param
*
key
);
#endif
sdk/esp_iot_sdk_v1.4.0/examples/wps/include/user_config.h
0 → 100644
View file @
57d5e207
#ifndef __USER_CONFIG_H__
#define __USER_CONFIG_H__
#endif
sdk/esp_iot_sdk_v1.4.0/examples/wps/user/Makefile
0 → 100644
View file @
57d5e207
#############################################################
# Required variables for each makefile
# Discard this section from all parent makefiles
# Expected variables (with automatic defaults):
# CSRCS (all "C" files in the dir)
# SUBDIRS (all subdirs with a Makefile)
# GEN_LIBS - list of libs to be generated ()
# GEN_IMAGES - list of images to be generated ()
# COMPONENTS_xxx - a list of libs/objs in the form
# subdir/lib to be extracted and rolled up into
# a generated lib/image xxx.a ()
#
ifndef
PDIR
GEN_LIBS
=
libuser.a
endif
#############################################################
# Configuration i.e. compile options etc.
# Target specific stuff (defines etc.) goes in here!
# Generally values applying to a tree are captured in the
# makefile at its root level - these are then overridden
# for a subtree within the makefile rooted therein
#
#DEFINES +=
#############################################################
# Recursion Magic - Don't touch this!!
#
# Each subtree potentially has an include directory
# corresponding to the common APIs applicable to modules
# rooted at that subtree. Accordingly, the INCLUDE PATH
# of a module can only contain the include directories up
# its parent path, and not its siblings
#
# Required for each makefile to inherit from the parent
#
INCLUDES
:=
$(INCLUDES)
-I
$(PDIR)
include
INCLUDES
+=
-I
./
INCLUDES
+=
-I
../../include/ets
PDIR
:=
../
$(PDIR)
sinclude
$(PDIR)Makefile
sdk/esp_iot_sdk_v1.4.0/examples/wps/user/user_main.c
0 → 100644
View file @
57d5e207
/******************************************************************************
* Copyright 2013-2014 Espressif Systems (Wuxi)
*
* FileName: user_main.c
*
* Description: entry file of user application
*
* Modification history:
* 2015/7/3, v1.0 create this file.
*******************************************************************************/
#include "osapi.h"
#include "user_interface.h"
#include "driver/key.h"
#define WPS_KEY_NUM 1
#define WPS_KEY_IO_MUX PERIPHS_IO_MUX_MTCK_U
#define WPS_KEY_IO_NUM 13
#define WPS_KEY_IO_FUNC FUNC_GPIO13
LOCAL
struct
keys_param
keys
;
LOCAL
struct
single_key_param
*
single_key
;
LOCAL
void
ICACHE_FLASH_ATTR
user_wps_status_cb
(
int
status
)
{
switch
(
status
)
{
case
WPS_CB_ST_SUCCESS
:
wifi_wps_disable
();
wifi_station_connect
();
break
;
case
WPS_CB_ST_FAILED
:
case
WPS_CB_ST_TIMEOUT
:
wifi_wps_start
();
break
;
}
}
LOCAL
void
ICACHE_FLASH_ATTR
user_wps_key_short_press
(
void
)
{
wifi_wps_disable
();
wifi_wps_enable
(
WPS_TYPE_PBC
);
wifi_set_wps_cb
(
user_wps_status_cb
);
wifi_wps_start
();
}
void
ICACHE_FLASH_ATTR
user_rf_pre_init
(
void
)
{
}
void
ICACHE_FLASH_ATTR
user_init
(
void
)
{
single_key
=
key_init_single
(
WPS_KEY_IO_NUM
,
WPS_KEY_IO_MUX
,
WPS_KEY_IO_FUNC
,
NULL
,
user_wps_key_short_press
);
keys
.
key_num
=
WPS_KEY_NUM
;
keys
.
single_key
=
&
single_key
;
key_init
(
&
keys
);
wifi_set_opmode
(
STATION_MODE
);
}
sdk/esp_iot_sdk_v1.4.0/include/at_custom.h
0 → 100644
View file @
57d5e207
/*
* 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
;
typedef
void
(
*
at_custom_uart_rx_intr
)(
uint8
*
data
,
int32
len
);
typedef
void
(
*
at_custom_response_func_type
)(
const
char
*
str
);
extern
uint8
at_customLinkMax
;
/**
* @brief Response "OK" to uart.
* @param None
* @retval None
*/
void
at_response_ok
(
void
);
/**
* @brief Response "ERROR" to uart.
* @param None
* @retval None
*/
void
at_response_error
(
void
);
/**
* @brief Response string.
* It is equivalent to at_port_print,if not call at_register_response_func or call at_register_response_func(NULL);
* It will run custom response function,if call at_register_response_func and parameter is not NULL.
* @param string
* @retval None
*/
void
at_response
(
const
char
*
str
);
/**
* @brief register custom response function.
* @param response_func: the function that will run when call at_response
* @retval None
*/
void
at_register_response_func
(
at_custom_response_func_type
response_func
);
/**
* @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
);
/**
* @brief print custom information when AT+GMR
* @param string
* @retval None
*/
void
at_set_custom_info
(
char
*
info
);
/**
* @brief if current at command is processing,you can call at_enter_special_state,
* then if other comamnd coming,it will return busy.
* @param None
* @retval None
*/
void
at_enter_special_state
(
void
);
/**
* @brief
* @param None
* @retval None
*/
void
at_leave_special_state
(
void
);
/**
* @brief get at version
* @param None
* @retval at version
* bit24~31: at main version
* bit23~16: at sub version
* bit15~8 : at test version
* bit7~0 : customized version
*/
uint32
at_get_version
(
void
);
/**
* @brief register custom uart rx interrupt function
* @param rx_func: custom uart rx interrupt function.
* If rx_func is non-void,when rx interrupt comming,it will call rx_func(data,len),
* data is the buffer of data,len is the length of data.Otherwise,it will run AT rx function.
* @retval None
*/
void
at_register_uart_rx_intr
(
at_custom_uart_rx_intr
rx_func
);
#endif
sdk/esp_iot_sdk_v1.4.0/include/c_types.h
0 → 100644
View file @
57d5e207
/*
* 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
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
;
#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
#define ICACHE_RODATA_ATTR
#endif
/* ICACHE_FLASH */
#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_ */
sdk/esp_iot_sdk_v1.4.0/include/eagle_soc.h
0 → 100644
View file @
57d5e207
/*
* 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 APB_CLK_FREQ 80*1000000 //unit: Hz
#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_PULLUP2 BIT6
#define PERIPHS_IO_MUX_SLEEP_PULLUP BIT3
#define PERIPHS_IO_MUX_SLEEP_PULLUP2 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_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_FUNC_SELECT(PIN_NAME, FUNC) do { \
WRITE_PERI_REG(PIN_NAME, \
READ_PERI_REG(PIN_NAME) \
& (~(PERIPHS_IO_MUX_FUNC<<PERIPHS_IO_MUX_FUNC_S)) \
|( (((FUNC&BIT2)<<2)|(FUNC&0x3))<<PERIPHS_IO_MUX_FUNC_S) ); \
} while (0)
//}}
#endif //_EAGLE_SOC_H_
sdk/esp_iot_sdk_v1.4.0/include/espconn.h
0 → 100644
View file @
57d5e207
#ifndef __ESPCONN_H__
#define __ESPCONN_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_MAXNUM -7
/* Total number exceeds the set maximum*/
#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_IF -14
/* UDP send error */
#define ESPCONN_ISCONN -15
/* Already connected. */
#define ESPCONN_HANDSHAKE -28
/* ssl handshake failed */
#define ESPCONN_SSL_INVALID_DATA -61
/* ssl application invalid */
/** 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_KEEPALIVE
=
0x08
,
ESPCONN_END
};
enum
espconn_level
{
ESPCONN_KEEPIDLE
,
ESPCONN_KEEPINTVL
,
ESPCONN_KEEPCNT
};
enum
{
ESPCONN_IDLE
=
0
,
ESPCONN_CLIENT
,
ESPCONN_SERVER
,
ESPCONN_BOTH
,
ESPCONN_MAX
};
struct
espconn_packet
{
uint16
sent_length
;
/* sent length successful*/
uint16
snd_buf_size
;
/* Available buffer size for sending */
uint16
snd_queuelen
;
/* Available buffer space for sending */
uint16
total_queuelen
;
/* total Available buffer space for sending */
uint32
packseqno
;
/* seqno to be sent */
uint32
packseq_nxt
;
/* seqno expected */
uint32
packnum
;
};
struct
mdns_info
{
char
*
host_name
;
char
*
server_name
;
uint16
server_port
;
unsigned
long
ipAddr
;
char
*
txt_data
[
10
];
};
/******************************************************************************
* 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_get_packet_info
* Description : get the packet info with host
* Parameters : espconn -- the espconn used to disconnect the connection
* infoarg -- the packet info
* Returns : the errur code
*******************************************************************************/
sint8
espconn_get_packet_info
(
struct
espconn
*
espconn
,
struct
espconn_packet
*
infoarg
);
/******************************************************************************
* 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_send
* 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_send
(
struct
espconn
*
espconn
,
uint8
*
psent
,
uint16
length
);
/******************************************************************************
* 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_sendto
* Description : send data for UDP
* Parameters : espconn -- espconn to set for UDP
* psent -- data to send
* length -- length of data to send
* Returns : error
*******************************************************************************/
sint16
espconn_sendto
(
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
);
/******************************************************************************
* FunctionName : espconn_clear_opt
* Description : clear the option for connections so that we don't end up bouncing
* all connections at the same time .
* Parameters : espconn -- the espconn used to set the connection
* opt -- the option for clear
* Returns : the result
*******************************************************************************/
sint8
espconn_clear_opt
(
struct
espconn
*
espconn
,
uint8
opt
);
/******************************************************************************
* FunctionName : espconn_set_keepalive
* Description : access level value for connection so that we set the value for
* keep alive
* Parameters : espconn -- the espconn used to set the connection
* level -- the connection's level
* value -- the value of time(s)
* Returns : access port value
*******************************************************************************/
sint8
espconn_set_keepalive
(
struct
espconn
*
espconn
,
uint8
level
,
void
*
optarg
);
/******************************************************************************
* FunctionName : espconn_get_keepalive
* Description : access level value for connection so that we get the value for
* keep alive
* Parameters : espconn -- the espconn used to get the connection
* level -- the connection's level
* Returns : access keep alive value
*******************************************************************************/
sint8
espconn_get_keepalive
(
struct
espconn
*
espconn
,
uint8
level
,
void
*
optarg
);
/******************************************************************************
* 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_secure_send
* 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_send
(
struct
espconn
*
espconn
,
uint8
*
psent
,
uint16
length
);
/******************************************************************************
* 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_set_size
* Description : set the buffer size for client or server
* Parameters : level -- set for client or server
* 1: client,2:server,3:client and server
* size -- buffer size
* Returns : true or false
*******************************************************************************/
bool
espconn_secure_set_size
(
uint8
level
,
uint16
size
);
/******************************************************************************
* FunctionName : espconn_secure_get_size
* Description : get buffer size for client or server
* Parameters : level -- set for client or server
* 1: client,2:server,3:client and server
* Returns : buffer size for client or server
*******************************************************************************/
sint16
espconn_secure_get_size
(
uint8
level
);
/******************************************************************************
* FunctionName : espconn_secure_ca_enable
* Description : enable the certificate authenticate and set the flash sector
* as client or server
* Parameters : level -- set for client or server
* 1: client,2:server,3:client and server
* flash_sector -- flash sector for save certificate
* Returns : result true or false
*******************************************************************************/
bool
espconn_secure_ca_enable
(
uint8
level
,
uint8
flash_sector
);
/******************************************************************************
* FunctionName : espconn_secure_ca_disable
* Description : disable the certificate authenticate as client or server
* Parameters : level -- set for client or server
* 1: client,2:server,3:client and server
* Returns : result true or false
*******************************************************************************/
bool
espconn_secure_ca_disable
(
uint8
level
);
/******************************************************************************
* FunctionName : espconn_secure_cert_req_enable
* Description : enable the client certificate authenticate and set the flash sector
* as client or server
* Parameters : level -- set for client or server
* 1: client,2:server,3:client and server
* flash_sector -- flash sector for save certificate
* Returns : result true or false
*******************************************************************************/
bool
espconn_secure_cert_req_enable
(
uint8
level
,
uint8
flash_sector
);
/******************************************************************************
* FunctionName : espconn_secure_ca_disable
* Description : disable the client certificate authenticate as client or server
* Parameters : level -- set for client or server
* 1: client,2:server,3:client and server
* Returns : result true or false
*******************************************************************************/
bool
espconn_secure_cert_req_disable
(
uint8
level
);
/******************************************************************************
* FunctionName : espconn_secure_set_default_certificate
* Description : Load the certificates in memory depending on compile-time
* and user options.
* Parameters : certificate -- Load the certificate
* length -- Load the certificate length
* Returns : result true or false
*******************************************************************************/
bool
espconn_secure_set_default_certificate
(
const
uint8
*
certificate
,
uint16
length
);
/******************************************************************************
* FunctionName : espconn_secure_set_default_private_key
* Description : Load the key in memory depending on compile-time
* and user options.
* Parameters : private_key -- Load the key
* length -- Load the key length
* Returns : result true or false
*******************************************************************************/
bool
espconn_secure_set_default_private_key
(
const
uint8
*
private_key
,
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
);
/******************************************************************************
* FunctionName : espconn_mdns_init
* Description : register a device with mdns
* Parameters : ipAddr -- the ip address of device
* hostname -- the hostname of device
* Returns : none
*******************************************************************************/
void
espconn_mdns_init
(
struct
mdns_info
*
info
);
/******************************************************************************
* FunctionName : espconn_mdns_close
* Description : close a device with mdns
* Parameters : a
* Returns : none
*******************************************************************************/
void
espconn_mdns_close
(
void
);
/******************************************************************************
* FunctionName : espconn_mdns_server_register
* Description : register a device with mdns
* Parameters : a
* Returns : none
*******************************************************************************/
void
espconn_mdns_server_register
(
void
);
/******************************************************************************
* FunctionName : espconn_mdns_server_unregister
* Description : unregister a device with mdns
* Parameters : a
* Returns : none
*******************************************************************************/
void
espconn_mdns_server_unregister
(
void
);
/******************************************************************************
* FunctionName : espconn_mdns_get_servername
* Description : get server name of device with mdns
* Parameters : a
* Returns : none
*******************************************************************************/
char
*
espconn_mdns_get_servername
(
void
);
/******************************************************************************
* FunctionName : espconn_mdns_set_servername
* Description : set server name of device with mdns
* Parameters : a
* Returns : none
*******************************************************************************/
void
espconn_mdns_set_servername
(
const
char
*
name
);
/******************************************************************************
* FunctionName : espconn_mdns_set_hostname
* Description : set host name of device with mdns
* Parameters : a
* Returns : none
*******************************************************************************/
void
espconn_mdns_set_hostname
(
char
*
name
);
/******************************************************************************
* FunctionName : espconn_mdns_get_hostname
* Description : get host name of device with mdns
* Parameters : a
* Returns : none
*******************************************************************************/
char
*
espconn_mdns_get_hostname
(
void
);
/******************************************************************************
* FunctionName : espconn_mdns_disable
* Description : disable a device with mdns
* Parameters : a
* Returns : none
*******************************************************************************/
void
espconn_mdns_disable
(
void
);
/******************************************************************************
* FunctionName : espconn_mdns_enable
* Description : disable a device with mdns
* Parameters : a
* Returns : none
*******************************************************************************/
void
espconn_mdns_enable
(
void
);
/******************************************************************************
* FunctionName : espconn_dns_setserver
* Description : Initialize one of the DNS servers.
* Parameters : numdns -- the index of the DNS server to set must
* be < DNS_MAX_SERVERS = 2
* dnsserver -- IP address of the DNS server to set
* Returns : none
*******************************************************************************/
void
espconn_dns_setserver
(
char
numdns
,
ip_addr_t
*
dnsserver
);
#endif
sdk/esp_iot_sdk_v1.4.0/include/espnow.h
0 → 100644
View file @
57d5e207
/*
* Copyright (C) 2015 -2018 Espressif System
*
*/
#ifndef __ESPNOW_H__
#define __ESPNOW_H__
enum
esp_now_role
{
ESP_NOW_ROLE_IDLE
=
0
,
ESP_NOW_ROLE_CONTROLLER
,
ESP_NOW_ROLE_SLAVE
,
ESP_NOW_ROLE_MAX
,
};
typedef
void
(
*
esp_now_recv_cb_t
)(
u8
*
mac_addr
,
u8
*
data
,
u8
len
);
typedef
void
(
*
esp_now_send_cb_t
)(
u8
*
mac_addr
,
u8
status
);
int
esp_now_init
(
void
);
int
esp_now_deinit
(
void
);
int
esp_now_register_send_cb
(
esp_now_send_cb_t
cb
);
int
esp_now_unregister_send_cb
(
void
);
int
esp_now_register_recv_cb
(
esp_now_recv_cb_t
cb
);
int
esp_now_unregister_recv_cb
(
void
);
int
esp_now_send
(
u8
*
da
,
u8
*
data
,
int
len
);
int
esp_now_add_peer
(
u8
*
mac_addr
,
u8
role
,
u8
channel
,
u8
*
key
,
u8
key_len
);
int
esp_now_del_peer
(
u8
*
mac_addr
);
int
esp_now_set_self_role
(
u8
role
);
int
esp_now_get_self_role
(
void
);
int
esp_now_set_peer_role
(
u8
*
mac_addr
,
u8
role
);
int
esp_now_get_peer_role
(
u8
*
mac_addr
);
int
esp_now_set_peer_channel
(
u8
*
mac_addr
,
u8
channel
);
int
esp_now_get_peer_channel
(
u8
*
mac_addr
);
int
esp_now_set_peer_key
(
u8
*
mac_addr
,
u8
*
key
,
u8
key_len
);
int
esp_now_get_peer_key
(
u8
*
mac_addr
,
u8
*
key
,
u8
*
key_len
);
u8
*
esp_now_fetch_peer
(
bool
restart
);
int
esp_now_is_peer_exist
(
u8
*
mac_addr
);
int
esp_now_get_cnt_info
(
u8
*
all_cnt
,
u8
*
encrypt_cnt
);
int
esp_now_set_kok
(
u8
*
key
,
u8
len
);
#endif
sdk/esp_iot_sdk_v1.4.0/include/ets_sys.h
0 → 100644
View file @
57d5e207
/*
* 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_FRC_TIMER1_NMI_INTR_ATTACH(func) \
NmiTimSetFunc(func)
#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 */
sdk/esp_iot_sdk_v1.4.0/include/gpio.h
0 → 100644
View file @
57d5e207
/*
* 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_ANYEDGE
=
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_
sdk/esp_iot_sdk_v1.4.0/include/ip_addr.h
0 → 100644
View file @
57d5e207
#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
;
};
/**
* 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__ */
sdk/esp_iot_sdk_v1.4.0/include/json/json.h
0 → 100644
View file @
57d5e207
/*
* 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__ */
sdk/esp_iot_sdk_v1.4.0/include/json/jsonparse.h
0 → 100644
View file @
57d5e207
/*
* 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__ */
sdk/esp_iot_sdk_v1.4.0/include/json/jsontree.h
0 → 100644
View file @
57d5e207
/*
* 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__ */
Prev
1
2
3
4
5
6
7
8
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment