Merge branch 'wifi'

This commit is contained in:
Matthias Mitscherlich
2023-01-13 14:55:22 +01:00
8 changed files with 1900 additions and 0 deletions
+7
View File
@@ -2,9 +2,16 @@
# for more information about component CMakeLists.txt files.
idf_component_register(
<<<<<<< HEAD
SRCS # list the source files of this component
"main.cpp"
"src/gpio.cpp"
=======
SRCS # list the source files of this component
"main.cpp"
"gpio.cpp"
"wifi.cpp"
>>>>>>> wifi
INCLUDE_DIRS # optional, add here public include directories
"inc"
PRIV_INCLUDE_DIRS # optional, add here private include directories
+17
View File
@@ -59,6 +59,7 @@ typedef enum
class GPIO
{
public:
<<<<<<< HEAD
GPIO(int number, GPIO_Direction_t direction);
@@ -75,7 +76,23 @@ class GPIO
GPIO_Value_t value = GPIO_VALUE_LOW;
};
=======
>>>>>>> wifi
bool GPIO(int number, GPIO_Direction_t direction);
bool GPIO_setOutput(GPIO_Value_t value);
GPIO_Value_t GPIO_getInput(void);
private:
int number;
GPIO_Direction_t direction;
GPIO_Value_t value;
};
/** @} */
+82
View File
@@ -0,0 +1,82 @@
// --------------------------------------------------------------------------------------------------------------------
/// \file wifi.h
/// \brief File description
// --------------------------------------------------------------------------------------------------------------------
//
// vbchaos software design
//
// --------------------------------------------------------------------------------------------------------------------
/// $Revision: $
/// $Author: $
/// $Date: $
// (c) 2023 vbchaos
// --------------------------------------------------------------------------------------------------------------------
#ifndef MAIN_INC_WIFI_H_
#define MAIN_INC_WIFI_H_
/**
* wifi implementation
* \defgroup wifi
* \brief {group_description}
* \addtogroup {Layer}
*
* Detailed description
* @{
*/
// --------------------------------------------------------------------------------------------------------------------
// Include files
// --------------------------------------------------------------------------------------------------------------------
// CompilerIncludes
// All include files that are provided by the compiler directly
#include "esp_system.h"
#include "esp_event.h"
#include "esp_log.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h"
// ProjectIncludes
// All include files that are provided by the project
// --------------------------------------------------------------------------------------------------------------------
// Constant and macro definitions
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Type definitions.
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Function declarations
// --------------------------------------------------------------------------------------------------------------------
class Wifi
{
public:
Wifi(void);
void start_client(void);
void event_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data);
private:
EventGroupHandle_t s_wifi_event_group;
};
/** @} */
#endif /* MAIN_INC_WIFI_H_ */
+15
View File
@@ -0,0 +1,15 @@
#include <stdio.h>
#include <stdbool.h>
#include <unistd.h>
void app_main(void)
{
while (true) {
printf("Hello from app_main!\n");
sleep(1);
}
}
+16
View File
@@ -17,10 +17,17 @@
// Include files
// --------------------------------------------------------------------------------------------------------------------
<<<<<<< HEAD
#include <gpio.h>
#include "driver/gpio.h"
=======
#include "driver/gpio.h"
#include "gpio.h"
>>>>>>> wifi
// --------------------------------------------------------------------------------------------------------------------
// Constant and macro definitions
@@ -50,12 +57,17 @@
// --------------------------------------------------------------------------------------------------------------------
<<<<<<< HEAD
GPIO::GPIO(int number, GPIO_Direction_t direction)
=======
bool GPIO::GPIO(int number, GPIO_Direction_t direction)
>>>>>>> wifi
{
this->number = number;
this->direction = direction;
<<<<<<< HEAD
//zero-initialize the config structure.
gpio_config_t io_conf = {};
@@ -111,6 +123,10 @@ GPIO_Value_t GPIO::GetInput(void)
=======
return true;
}
>>>>>>> wifi
+137
View File
@@ -0,0 +1,137 @@
// --------------------------------------------------------------------------------------------------------------------
/// \file wifi.cpp
/// \brief Description
// --------------------------------------------------------------------------------------------------------------------
//
// vbchaos software design
//
// --------------------------------------------------------------------------------------------------------------------
/// $Revision: $
/// $Author: $
/// $Date: $
// (c) 2023 vbchaos
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Include files
// --------------------------------------------------------------------------------------------------------------------
#include "wifi.h"
// --------------------------------------------------------------------------------------------------------------------
// Constant and macro definitions
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Type definitions
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// File-scope variables
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Function declarations
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Function definitions
// --------------------------------------------------------------------------------------------------------------------
void Wifi::event_handler(void* arg, esp_event_base_t event_base,
int32_t event_id, void* event_data)
{
if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {
esp_wifi_connect();
} else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {
if (s_retry_num < EXAMPLE_ESP_MAXIMUM_RETRY) {
esp_wifi_connect();
s_retry_num++;
ESP_LOGI(TAG, "retry to connect to the AP");
} else {
xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT);
}
ESP_LOGI(TAG,"connect to the AP fail");
} else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {
ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data;
ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip));
s_retry_num = 0;
xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
}
}
void Wifi::start_client(void)
{
s_wifi_event_group = xEventGroupCreate();
ESP_ERROR_CHECK(esp_netif_init());
ESP_ERROR_CHECK(esp_event_loop_create_default());
esp_netif_create_default_wifi_sta();
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
esp_event_handler_instance_t instance_any_id;
esp_event_handler_instance_t instance_got_ip;
ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT,
ESP_EVENT_ANY_ID,
&event_handler,
NULL,
&instance_any_id));
ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT,
IP_EVENT_STA_GOT_IP,
&event_handler,
NULL,
&instance_got_ip));
wifi_config_t wifi_config = {
.sta = {
.ssid = EXAMPLE_ESP_WIFI_SSID,
.password = EXAMPLE_ESP_WIFI_PASS,
/* Authmode threshold resets to WPA2 as default if password matches WPA2 standards (pasword len => 8).
* If you want to connect the device to deprecated WEP/WPA networks, Please set the threshold value
* to WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK and set the password with length and format matching to
* WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK standards.
*/
.threshold.authmode = ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD,
.sae_pwe_h2e = WPA3_SAE_PWE_BOTH,
},
};
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) );
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config) );
ESP_ERROR_CHECK(esp_wifi_start() );
ESP_LOGI(TAG, "wifi_init_sta finished.");
/* Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum
* number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above) */
EventBits_t bits = xEventGroupWaitBits(s_wifi_event_group,
WIFI_CONNECTED_BIT | WIFI_FAIL_BIT,
pdFALSE,
pdFALSE,
portMAX_DELAY);
/* xEventGroupWaitBits() returns the bits before the call returned, hence we can test which event actually
* happened. */
if (bits & WIFI_CONNECTED_BIT) {
ESP_LOGI(TAG, "connected to ap SSID:%s password:%s",
EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS);
} else if (bits & WIFI_FAIL_BIT) {
ESP_LOGI(TAG, "Failed to connect to SSID:%s, password:%s",
EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS);
} else {
ESP_LOGE(TAG, "UNEXPECTED EVENT");
}
}
+4
View File
@@ -906,7 +906,11 @@ CONFIG_FATFS_PER_FILE_CACHE=y
#
# CONFIG_FREERTOS_SMP is not set
CONFIG_FREERTOS_UNICORE=y
<<<<<<< HEAD
CONFIG_FREERTOS_HZ=1000
=======
CONFIG_FREERTOS_HZ=100
>>>>>>> wifi
CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y
# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set
# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set
+1622
View File
File diff suppressed because it is too large Load Diff