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