From 80f7b45672fbf96d59299c78c525ae22ecf7f9f0 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 3 May 2022 19:46:59 +0200 Subject: [PATCH] examples: console: move duplicated cmd_wifi files into a new component --- .../components/cmd_wifi/CMakeLists.txt | 3 + .../components/cmd_wifi}/cmd_wifi.c | 6 +- .../components/cmd_wifi}/cmd_wifi.h | 5 + .../advanced/components/cmd_wifi/component.mk | 1 + .../console/advanced/main/CMakeLists.txt | 3 +- .../system/console/advanced/main/cmd_decl.h | 21 --- .../system/console/advanced/main/cmd_wifi.c | 132 ------------------ .../system/console/advanced/main/cmd_wifi.h | 20 --- .../advanced/main/console_example_main.c | 4 +- .../system/console/basic/main/CMakeLists.txt | 3 +- examples/system/console/basic/main/cmd_decl.h | 21 --- .../console/basic/main/console_example_main.c | 7 +- 12 files changed, 22 insertions(+), 204 deletions(-) create mode 100644 examples/system/console/advanced/components/cmd_wifi/CMakeLists.txt rename examples/system/console/{basic/main => advanced/components/cmd_wifi}/cmd_wifi.c (97%) rename examples/system/console/{basic/main => advanced/components/cmd_wifi}/cmd_wifi.h (79%) create mode 100644 examples/system/console/advanced/components/cmd_wifi/component.mk delete mode 100644 examples/system/console/advanced/main/cmd_decl.h delete mode 100644 examples/system/console/advanced/main/cmd_wifi.c delete mode 100644 examples/system/console/advanced/main/cmd_wifi.h delete mode 100644 examples/system/console/basic/main/cmd_decl.h diff --git a/examples/system/console/advanced/components/cmd_wifi/CMakeLists.txt b/examples/system/console/advanced/components/cmd_wifi/CMakeLists.txt new file mode 100644 index 0000000000..ca51905567 --- /dev/null +++ b/examples/system/console/advanced/components/cmd_wifi/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRCS "cmd_wifi.c" + INCLUDE_DIRS . + REQUIRES console esp_wifi) diff --git a/examples/system/console/basic/main/cmd_wifi.c b/examples/system/console/advanced/components/cmd_wifi/cmd_wifi.c similarity index 97% rename from examples/system/console/basic/main/cmd_wifi.c rename to examples/system/console/advanced/components/cmd_wifi/cmd_wifi.c index 0daf53677c..b8dbaea2c8 100644 --- a/examples/system/console/basic/main/cmd_wifi.c +++ b/examples/system/console/advanced/components/cmd_wifi/cmd_wifi.c @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Unlicense OR CC0-1.0 + */ /* Console example — WiFi commands This example code is in the Public Domain (or CC0 licensed, at your option.) @@ -12,7 +17,6 @@ #include "esp_log.h" #include "esp_console.h" #include "argtable3/argtable3.h" -#include "cmd_decl.h" #include "freertos/FreeRTOS.h" #include "freertos/event_groups.h" #include "esp_wifi.h" diff --git a/examples/system/console/basic/main/cmd_wifi.h b/examples/system/console/advanced/components/cmd_wifi/cmd_wifi.h similarity index 79% rename from examples/system/console/basic/main/cmd_wifi.h rename to examples/system/console/advanced/components/cmd_wifi/cmd_wifi.h index 67f3d9d3ad..f25d6304b1 100644 --- a/examples/system/console/basic/main/cmd_wifi.h +++ b/examples/system/console/advanced/components/cmd_wifi/cmd_wifi.h @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Unlicense OR CC0-1.0 + */ /* Console example — declarations of command registration functions. This example code is in the Public Domain (or CC0 licensed, at your option.) diff --git a/examples/system/console/advanced/components/cmd_wifi/component.mk b/examples/system/console/advanced/components/cmd_wifi/component.mk new file mode 100644 index 0000000000..27ad11a7e5 --- /dev/null +++ b/examples/system/console/advanced/components/cmd_wifi/component.mk @@ -0,0 +1 @@ +COMPONENT_ADD_INCLUDEDIRS := . diff --git a/examples/system/console/advanced/main/CMakeLists.txt b/examples/system/console/advanced/main/CMakeLists.txt index 588654505d..6833bf8b62 100644 --- a/examples/system/console/advanced/main/CMakeLists.txt +++ b/examples/system/console/advanced/main/CMakeLists.txt @@ -1,3 +1,2 @@ -idf_component_register(SRCS "cmd_wifi.c" - "console_example_main.c" +idf_component_register(SRCS "console_example_main.c" INCLUDE_DIRS ".") diff --git a/examples/system/console/advanced/main/cmd_decl.h b/examples/system/console/advanced/main/cmd_decl.h deleted file mode 100644 index 983b6e974c..0000000000 --- a/examples/system/console/advanced/main/cmd_decl.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Console example — declarations of command registration functions. - - 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. -*/ -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - -#include "cmd_system.h" -#include "cmd_wifi.h" -#include "cmd_nvs.h" - -#ifdef __cplusplus -} -#endif diff --git a/examples/system/console/advanced/main/cmd_wifi.c b/examples/system/console/advanced/main/cmd_wifi.c deleted file mode 100644 index 0daf53677c..0000000000 --- a/examples/system/console/advanced/main/cmd_wifi.c +++ /dev/null @@ -1,132 +0,0 @@ -/* Console example — WiFi commands - - 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 -#include -#include "esp_log.h" -#include "esp_console.h" -#include "argtable3/argtable3.h" -#include "cmd_decl.h" -#include "freertos/FreeRTOS.h" -#include "freertos/event_groups.h" -#include "esp_wifi.h" -#include "esp_netif.h" -#include "esp_event.h" -#include "cmd_wifi.h" - -#define JOIN_TIMEOUT_MS (10000) - -static EventGroupHandle_t wifi_event_group; -const int CONNECTED_BIT = BIT0; - - -static void 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_DISCONNECTED) { - esp_wifi_connect(); - xEventGroupClearBits(wifi_event_group, CONNECTED_BIT); - } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { - xEventGroupSetBits(wifi_event_group, CONNECTED_BIT); - } -} - -static void initialise_wifi(void) -{ - esp_log_level_set("wifi", ESP_LOG_WARN); - static bool initialized = false; - if (initialized) { - return; - } - ESP_ERROR_CHECK(esp_netif_init()); - wifi_event_group = xEventGroupCreate(); - ESP_ERROR_CHECK(esp_event_loop_create_default()); - esp_netif_t *ap_netif = esp_netif_create_default_wifi_ap(); - assert(ap_netif); - esp_netif_t *sta_netif = esp_netif_create_default_wifi_sta(); - assert(sta_netif); - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - ESP_ERROR_CHECK( esp_wifi_init(&cfg) ); - ESP_ERROR_CHECK( esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, &event_handler, NULL) ); - ESP_ERROR_CHECK( esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL) ); - ESP_ERROR_CHECK( esp_wifi_set_storage(WIFI_STORAGE_RAM) ); - ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_NULL) ); - ESP_ERROR_CHECK( esp_wifi_start() ); - initialized = true; -} - -static bool wifi_join(const char *ssid, const char *pass, int timeout_ms) -{ - initialise_wifi(); - wifi_config_t wifi_config = { 0 }; - strlcpy((char *) wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid)); - if (pass) { - strlcpy((char *) wifi_config.sta.password, pass, sizeof(wifi_config.sta.password)); - } - - ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) ); - ESP_ERROR_CHECK( esp_wifi_set_config(WIFI_IF_STA, &wifi_config) ); - esp_wifi_connect(); - - int bits = xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, - pdFALSE, pdTRUE, timeout_ms / portTICK_PERIOD_MS); - return (bits & CONNECTED_BIT) != 0; -} - -/** Arguments used by 'join' function */ -static struct { - struct arg_int *timeout; - struct arg_str *ssid; - struct arg_str *password; - struct arg_end *end; -} join_args; - -static int connect(int argc, char **argv) -{ - int nerrors = arg_parse(argc, argv, (void **) &join_args); - if (nerrors != 0) { - arg_print_errors(stderr, join_args.end, argv[0]); - return 1; - } - ESP_LOGI(__func__, "Connecting to '%s'", - join_args.ssid->sval[0]); - - /* set default value*/ - if (join_args.timeout->count == 0) { - join_args.timeout->ival[0] = JOIN_TIMEOUT_MS; - } - - bool connected = wifi_join(join_args.ssid->sval[0], - join_args.password->sval[0], - join_args.timeout->ival[0]); - if (!connected) { - ESP_LOGW(__func__, "Connection timed out"); - return 1; - } - ESP_LOGI(__func__, "Connected"); - return 0; -} - -void register_wifi(void) -{ - join_args.timeout = arg_int0(NULL, "timeout", "", "Connection timeout, ms"); - join_args.ssid = arg_str1(NULL, NULL, "", "SSID of AP"); - join_args.password = arg_str0(NULL, NULL, "", "PSK of AP"); - join_args.end = arg_end(2); - - const esp_console_cmd_t join_cmd = { - .command = "join", - .help = "Join WiFi AP as a station", - .hint = NULL, - .func = &connect, - .argtable = &join_args - }; - - ESP_ERROR_CHECK( esp_console_cmd_register(&join_cmd) ); -} diff --git a/examples/system/console/advanced/main/cmd_wifi.h b/examples/system/console/advanced/main/cmd_wifi.h deleted file mode 100644 index 67f3d9d3ad..0000000000 --- a/examples/system/console/advanced/main/cmd_wifi.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Console example — declarations of command registration functions. - - 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. -*/ -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - -// Register WiFi functions -void register_wifi(void); - -#ifdef __cplusplus -} -#endif diff --git a/examples/system/console/advanced/main/console_example_main.c b/examples/system/console/advanced/main/console_example_main.c index 5ffcc241f7..85c5bd016b 100644 --- a/examples/system/console/advanced/main/console_example_main.c +++ b/examples/system/console/advanced/main/console_example_main.c @@ -16,10 +16,12 @@ #include "driver/uart.h" #include "linenoise/linenoise.h" #include "argtable3/argtable3.h" -#include "cmd_decl.h" #include "esp_vfs_fat.h" #include "nvs.h" #include "nvs_flash.h" +#include "cmd_system.h" +#include "cmd_wifi.h" +#include "cmd_nvs.h" #ifdef CONFIG_ESP_CONSOLE_USB_CDC #error This example is incompatible with USB CDC console. Please try "console_usb" example instead. diff --git a/examples/system/console/basic/main/CMakeLists.txt b/examples/system/console/basic/main/CMakeLists.txt index 588654505d..6833bf8b62 100644 --- a/examples/system/console/basic/main/CMakeLists.txt +++ b/examples/system/console/basic/main/CMakeLists.txt @@ -1,3 +1,2 @@ -idf_component_register(SRCS "cmd_wifi.c" - "console_example_main.c" +idf_component_register(SRCS "console_example_main.c" INCLUDE_DIRS ".") diff --git a/examples/system/console/basic/main/cmd_decl.h b/examples/system/console/basic/main/cmd_decl.h deleted file mode 100644 index 983b6e974c..0000000000 --- a/examples/system/console/basic/main/cmd_decl.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Console example — declarations of command registration functions. - - 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. -*/ -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - -#include "cmd_system.h" -#include "cmd_wifi.h" -#include "cmd_nvs.h" - -#ifdef __cplusplus -} -#endif diff --git a/examples/system/console/basic/main/console_example_main.c b/examples/system/console/basic/main/console_example_main.c index 0f4f8b7073..416e91cdbc 100644 --- a/examples/system/console/basic/main/console_example_main.c +++ b/examples/system/console/basic/main/console_example_main.c @@ -13,10 +13,6 @@ #include "esp_log.h" #include "esp_console.h" #include "esp_vfs_dev.h" -#include "driver/uart.h" -#include "linenoise/linenoise.h" -#include "argtable3/argtable3.h" -#include "cmd_decl.h" #include "esp_vfs_fat.h" #include "nvs.h" #include "nvs_flash.h" @@ -24,6 +20,9 @@ #ifdef CONFIG_ESP_CONSOLE_USB_CDC #error This example is incompatible with USB CDC console. Please try "console_usb" example instead. #endif // CONFIG_ESP_CONSOLE_USB_CDC +#include "cmd_system.h" +#include "cmd_wifi.h" +#include "cmd_nvs.h" static const char* TAG = "example"; #define PROMPT_STR CONFIG_IDF_TARGET