mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-08-06 15:15:15 +08:00
feat(examples): remove wifi station machine example
This commit is contained in:
@ -1,9 +0,0 @@
|
|||||||
#
|
|
||||||
# This is a project Makefile. It is assumed the directory this Makefile resides in is a
|
|
||||||
# project subdirectory.
|
|
||||||
#
|
|
||||||
|
|
||||||
PROJECT_NAME := wifi_station_machine_example
|
|
||||||
|
|
||||||
include $(IDF_PATH)/make/project.mk
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
|||||||
#
|
|
||||||
# "main" pseudo-component makefile.
|
|
||||||
#
|
|
||||||
# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
|||||||
/*
|
|
||||||
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, this
|
|
||||||
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
||||||
CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __USER_CONFIG_H__
|
|
||||||
#define __USER_CONFIG_H__
|
|
||||||
|
|
||||||
#define SSID "N600"
|
|
||||||
#define PASSWORD "espressif"
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,336 +0,0 @@
|
|||||||
/* WiFi station machine example
|
|
||||||
|
|
||||||
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, this
|
|
||||||
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
||||||
CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "esp_misc.h"
|
|
||||||
#include "esp_sta.h"
|
|
||||||
#include "esp_softap.h"
|
|
||||||
#include "esp_system.h"
|
|
||||||
#include "esp_timer.h"
|
|
||||||
|
|
||||||
#include "wifi_state_machine.h"
|
|
||||||
|
|
||||||
#include "user_config.h"
|
|
||||||
|
|
||||||
typedef void (* wifi_state_cb_t)();
|
|
||||||
|
|
||||||
wifi_state_cb_t on_station_first_connect = NULL;
|
|
||||||
wifi_state_cb_t on_station_connect = NULL;
|
|
||||||
wifi_disco_cb_t on_station_disconnect = NULL;
|
|
||||||
|
|
||||||
wifi_state_cb_t on_client_connect = NULL;
|
|
||||||
wifi_state_cb_t on_client_disconnect = NULL;
|
|
||||||
|
|
||||||
volatile bool wifi_station_static_ip = false;
|
|
||||||
volatile bool wifi_station_is_connected = false;
|
|
||||||
|
|
||||||
void wifi_event_handler_cb(System_Event_t* event)
|
|
||||||
{
|
|
||||||
static bool station_was_connected = false;
|
|
||||||
|
|
||||||
if (event == NULL) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//printf("[WiFi] event %u\n", event->event_id);
|
|
||||||
|
|
||||||
switch (event->event_id) {
|
|
||||||
case EVENT_STAMODE_DISCONNECTED:
|
|
||||||
wifi_station_is_connected = false;
|
|
||||||
Event_StaMode_Disconnected_t* ev = (Event_StaMode_Disconnected_t*)&event->event_info;
|
|
||||||
|
|
||||||
if (on_station_disconnect) {
|
|
||||||
on_station_disconnect(ev->reason);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EVENT_STAMODE_CONNECTED:
|
|
||||||
if (wifi_station_static_ip) {
|
|
||||||
wifi_station_is_connected = true;
|
|
||||||
|
|
||||||
if (!station_was_connected) {
|
|
||||||
station_was_connected = true;
|
|
||||||
|
|
||||||
if (on_station_first_connect) {
|
|
||||||
on_station_first_connect();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (on_station_connect) {
|
|
||||||
on_station_connect();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EVENT_STAMODE_DHCP_TIMEOUT:
|
|
||||||
if (wifi_station_is_connected) {
|
|
||||||
wifi_station_is_connected = false;
|
|
||||||
|
|
||||||
if (on_station_disconnect) {
|
|
||||||
on_station_disconnect(REASON_UNSPECIFIED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EVENT_STAMODE_GOT_IP:
|
|
||||||
wifi_station_is_connected = true;
|
|
||||||
|
|
||||||
if (!station_was_connected) {
|
|
||||||
station_was_connected = true;
|
|
||||||
|
|
||||||
if (on_station_first_connect) {
|
|
||||||
on_station_first_connect();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (on_station_connect) {
|
|
||||||
on_station_connect();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EVENT_SOFTAPMODE_STACONNECTED:
|
|
||||||
if (on_client_connect) {
|
|
||||||
on_client_connect();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EVENT_SOFTAPMODE_STADISCONNECTED:
|
|
||||||
if (on_client_disconnect) {
|
|
||||||
on_client_disconnect();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_on_station_first_connect(wifi_state_cb_t cb)
|
|
||||||
{
|
|
||||||
on_station_first_connect = cb;
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_on_station_connect(wifi_state_cb_t cb)
|
|
||||||
{
|
|
||||||
on_station_connect = cb;
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_on_station_disconnect(wifi_disco_cb_t cb)
|
|
||||||
{
|
|
||||||
on_station_disconnect = cb;
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_on_client_connect(wifi_state_cb_t cb)
|
|
||||||
{
|
|
||||||
on_client_connect = cb;
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_on_client_disconnect(wifi_state_cb_t cb)
|
|
||||||
{
|
|
||||||
on_client_disconnect = cb;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool wifi_set_mode(WIFI_MODE mode)
|
|
||||||
{
|
|
||||||
if (!mode) {
|
|
||||||
bool s = wifi_set_opmode(mode);
|
|
||||||
wifi_fpm_open();
|
|
||||||
wifi_fpm_set_sleep_type(MODEM_SLEEP_T);
|
|
||||||
wifi_fpm_do_sleep(0xFFFFFFFF);
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
wifi_fpm_close();
|
|
||||||
return wifi_set_opmode(mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
WIFI_MODE init_esp_wifi(void)
|
|
||||||
{
|
|
||||||
wifi_set_event_handler_cb(wifi_event_handler_cb);
|
|
||||||
WIFI_MODE mode = wifi_get_opmode_default();
|
|
||||||
wifi_set_mode(mode);
|
|
||||||
return mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool start_wifi_station(const char* ssid, const char* pass)
|
|
||||||
{
|
|
||||||
WIFI_MODE mode = wifi_get_opmode();
|
|
||||||
|
|
||||||
if ((mode & STATION_MODE) == 0) {
|
|
||||||
mode |= STATION_MODE;
|
|
||||||
|
|
||||||
if (!wifi_set_mode(mode)) {
|
|
||||||
printf("Failed to enable Station mode!\n");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ssid) {
|
|
||||||
printf("No SSID Given. Will connect to the station saved in flash\n");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct station_config config;
|
|
||||||
|
|
||||||
memset((void*)&config, 0, sizeof(struct station_config));
|
|
||||||
|
|
||||||
strcpy((char*)config.ssid, ssid);
|
|
||||||
|
|
||||||
if (pass) {
|
|
||||||
strcpy((char*)config.password, pass);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!wifi_station_set_config(&config)) {
|
|
||||||
printf("Failed to set Station config!\n");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!wifi_station_dhcpc_status()) {
|
|
||||||
printf("DHCP is not started. Starting it...\n");
|
|
||||||
|
|
||||||
if (!wifi_station_dhcpc_start()) {
|
|
||||||
printf("DHCP start failed!\n");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return wifi_station_connect();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool stop_wifi_station(void)
|
|
||||||
{
|
|
||||||
WIFI_MODE mode = wifi_get_opmode();
|
|
||||||
mode &= ~STATION_MODE;
|
|
||||||
|
|
||||||
if (!wifi_set_mode(mode)) {
|
|
||||||
printf("Failed to disable Station mode!\n");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool start_wifi_ap(const char* ssid, const char* pass)
|
|
||||||
{
|
|
||||||
WIFI_MODE mode = wifi_get_opmode();
|
|
||||||
|
|
||||||
if ((mode & SOFTAP_MODE) == 0) {
|
|
||||||
mode |= SOFTAP_MODE;
|
|
||||||
|
|
||||||
if (!wifi_set_mode(mode)) {
|
|
||||||
printf("Failed to enable AP mode!\n");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ssid) {
|
|
||||||
printf("No SSID Given. Will start the AP saved in flash\n");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct softap_config config;
|
|
||||||
|
|
||||||
bzero(&config, sizeof(struct softap_config));
|
|
||||||
|
|
||||||
sprintf((char*)config.ssid, ssid);
|
|
||||||
|
|
||||||
if (pass) {
|
|
||||||
sprintf((char*)config.password, pass);
|
|
||||||
}
|
|
||||||
|
|
||||||
return wifi_softap_set_config(&config);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool stop_wifi_ap(void)
|
|
||||||
{
|
|
||||||
WIFI_MODE mode = wifi_get_opmode();
|
|
||||||
mode &= ~SOFTAP_MODE;
|
|
||||||
|
|
||||||
if (!wifi_set_mode(mode)) {
|
|
||||||
printf("Failed to disable AP mode!\n");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool wifi_station_connected(void)
|
|
||||||
{
|
|
||||||
if (!wifi_station_is_connected) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
WIFI_MODE mode = wifi_get_opmode();
|
|
||||||
|
|
||||||
if ((mode & STATION_MODE) == 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
STATION_STATUS wifistate = wifi_station_get_connect_status();
|
|
||||||
wifi_station_is_connected = (wifistate == STATION_GOT_IP || (wifi_station_static_ip && wifistate == STATION_CONNECTING));
|
|
||||||
return wifi_station_is_connected;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool wifi_ap_enabled(void)
|
|
||||||
{
|
|
||||||
return !!(wifi_get_opmode() & SOFTAP_MODE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static os_timer_t timer;
|
|
||||||
|
|
||||||
static void wait_for_connection_ready(uint8_t flag)
|
|
||||||
{
|
|
||||||
os_timer_disarm(&timer);
|
|
||||||
|
|
||||||
if (wifi_station_connected()) {
|
|
||||||
printf("connected\n");
|
|
||||||
} else {
|
|
||||||
printf("reconnect after 2s\n");
|
|
||||||
os_timer_setfn(&timer, (os_timer_func_t*)wait_for_connection_ready, NULL);
|
|
||||||
os_timer_arm(&timer, 2000, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void on_wifi_connect(void)
|
|
||||||
{
|
|
||||||
os_timer_disarm(&timer);
|
|
||||||
os_timer_setfn(&timer, (os_timer_func_t*)wait_for_connection_ready, NULL);
|
|
||||||
os_timer_arm(&timer, 100, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void on_wifi_disconnect(uint8_t reason)
|
|
||||||
{
|
|
||||||
printf("disconnect %d\n", reason);
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FunctionName : user_init
|
|
||||||
* Description : entry of user application, init user function here
|
|
||||||
* Parameters : none
|
|
||||||
* Returns : none
|
|
||||||
*******************************************************************************/
|
|
||||||
void user_init(void)
|
|
||||||
{
|
|
||||||
printf("SDK version:%s\n", esp_get_idf_version());
|
|
||||||
|
|
||||||
set_on_station_connect(on_wifi_connect);
|
|
||||||
set_on_station_disconnect(on_wifi_disconnect);
|
|
||||||
init_esp_wifi();
|
|
||||||
stop_wifi_ap();
|
|
||||||
start_wifi_station(SSID, PASSWORD);
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
/*
|
|
||||||
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, this
|
|
||||||
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
||||||
CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _WIFI_STATE_MACHINE_H_
|
|
||||||
#define _WIFI_STATE_MACHINE_H_
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
#include "esp_wifi.h"
|
|
||||||
|
|
||||||
typedef void (* wifi_state_cb_t)();
|
|
||||||
typedef void (* wifi_disco_cb_t)(uint8_t reason);
|
|
||||||
|
|
||||||
void set_on_station_first_connect(wifi_state_cb_t cb);
|
|
||||||
void set_on_station_connect(wifi_state_cb_t cb);
|
|
||||||
void set_on_station_disconnect(wifi_disco_cb_t cb);
|
|
||||||
void set_on_client_connect(wifi_state_cb_t cb);
|
|
||||||
void set_on_client_disconnect(wifi_state_cb_t cb);
|
|
||||||
|
|
||||||
WIFI_MODE init_esp_wifi();
|
|
||||||
bool start_wifi_station(const char * ssid, const char * pass);
|
|
||||||
bool stop_wifi_station();
|
|
||||||
bool start_wifi_ap(const char * ssid, const char * pass);
|
|
||||||
bool stop_wifi_ap();
|
|
||||||
|
|
||||||
bool wifi_station_connected();
|
|
||||||
bool wifi_ap_enabled();
|
|
||||||
|
|
||||||
#endif /* _WIFI_STATE_MACHINE_H_ */
|
|
@ -1,56 +0,0 @@
|
|||||||
This is a simple project template.
|
|
||||||
|
|
||||||
sample_lib is an example for multi-level folder Makefile, notice the folder structure and each Makefile, you can get the clue.
|
|
||||||
|
|
||||||
|
|
||||||
HOWTO:
|
|
||||||
1. Copy this folder to anywhere.
|
|
||||||
Example:
|
|
||||||
Copy to ~/workspace/project_template
|
|
||||||
You can rename this folder as you like.
|
|
||||||
|
|
||||||
2. Export SDK_PATH and BIN_PATH.
|
|
||||||
Example:
|
|
||||||
Your SDK path is ~/esp_iot_rtos_sdk, and want generate bin at ~/esp8266_bin.
|
|
||||||
Do follow steps:
|
|
||||||
1>. export SDK_PATH=~/esp_iot_rtos_sdk
|
|
||||||
2>. export BIN_PATH=~/esp8266_bin
|
|
||||||
SDK and project are seperate, you can update SDK without change your project.
|
|
||||||
|
|
||||||
3. Enter project_template folder, run ./gen_misc.sh, and follow the tips and steps.
|
|
||||||
|
|
||||||
|
|
||||||
Compile Options:
|
|
||||||
(1) COMPILE
|
|
||||||
Possible value: xcc
|
|
||||||
Default value:
|
|
||||||
If not set, use gcc by default.
|
|
||||||
|
|
||||||
(2) BOOT
|
|
||||||
Possible value: none/old/new
|
|
||||||
none: no need boot
|
|
||||||
old: use boot_v1.1
|
|
||||||
new: use boot_v1.2
|
|
||||||
Default value: new
|
|
||||||
|
|
||||||
(3) APP
|
|
||||||
Possible value: 0/1/2
|
|
||||||
0: original mode, generate eagle.app.v6.flash.bin and eagle.app.v6.irom0text.bin
|
|
||||||
1: generate user1
|
|
||||||
2: generate user2
|
|
||||||
Default value: 0
|
|
||||||
|
|
||||||
(3) SPI_SPEED
|
|
||||||
Possible value: 20/26.7/40/80
|
|
||||||
Default value: 40
|
|
||||||
|
|
||||||
(4) SPI_MODE
|
|
||||||
Possible value: QIO/QOUT/DIO/DOUT
|
|
||||||
Default value: QIO
|
|
||||||
|
|
||||||
(4) SPI_SIZE_MAP
|
|
||||||
Possible value: 0/2/3/4/5/6
|
|
||||||
Default value: 0
|
|
||||||
|
|
||||||
For example:
|
|
||||||
make COMPILE=gcc BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=QIO SPI_SIZE_MAP=0
|
|
Reference in New Issue
Block a user