From 6df58f546db68047fe38f3809ee4f6cbff4c6f89 Mon Sep 17 00:00:00 2001 From: lonkaars Date: Thu, 25 Apr 2024 15:54:24 +0200 Subject: clean up init --- main/CMakeLists.txt | 1 + main/config.def.h | 8 +++++++- main/init.cpp | 32 ++++++++++++++++++++++++++++++++ main/init.h | 5 +++++ main/main.cpp | 27 +++------------------------ 5 files changed, 48 insertions(+), 25 deletions(-) create mode 100644 main/init.cpp create mode 100644 main/init.h (limited to 'main') diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 29afb84..7c18f56 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -14,6 +14,7 @@ pico_sdk_init() add_executable(main main.cpp + init.cpp ) pico_enable_stdio_usb(main 1) diff --git a/main/config.def.h b/main/config.def.h index 48de559..376c58a 100644 --- a/main/config.def.h +++ b/main/config.def.h @@ -1,8 +1,14 @@ #pragma once +#include +// wifi credentials #define CONF_NET_SSID "network name" #define CONF_NET_PASS "network password" +// max duration (milliseconds) for establishing wifi connection +#define CONF_NET_CONN_TIMEOUT 10000 -#include "cyw43_country.h" +#include #define CONF_NET_COUNTRY CYW43_COUNTRY_NETHERLANDS +#define LED_PIN CYW43_WL_GPIO_LED_PIN + diff --git a/main/init.cpp b/main/init.cpp new file mode 100644 index 0000000..425f591 --- /dev/null +++ b/main/init.cpp @@ -0,0 +1,32 @@ +#include "config.h" +#include "init.h" + +#include +#include + +static void init_stdio() { + stdio_init_all(); +} + +static void init_cyw34() { + if (cyw43_arch_init_with_country(CONF_NET_COUNTRY)) + panic("cyw43_arch_init_with_country failed\n"); +} + +static void init_wifi() { + // enable 'station' mode (connect to an access point instead of acting like one) + cyw43_arch_enable_sta_mode(); + + if (cyw43_arch_wifi_connect_timeout_ms(CONF_NET_SSID, CONF_NET_PASS, CYW43_AUTH_WPA2_AES_PSK, CONF_NET_CONN_TIMEOUT)) + panic("cyw43_arch_wifi_connect failed\n"); + + // TODO: announce hostname +} + +void init() { + init_stdio(); + init_cyw34(); + init_wifi(); + // TODO: initialize i2c +} + diff --git a/main/init.h b/main/init.h new file mode 100644 index 0000000..1f931dc --- /dev/null +++ b/main/init.h @@ -0,0 +1,5 @@ +#pragma once + +/** @brief initialize all peripherals on the pico */ +void init(); + diff --git a/main/main.cpp b/main/main.cpp index 8b3504c..d85c76e 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1,13 +1,10 @@ -#include "config.h" - #include #include #include -#include -#include -const unsigned int LED_PIN = CYW43_WL_GPIO_LED_PIN; +#include "config.h" +#include "init.h" void blink_task() { while (true) { @@ -19,25 +16,7 @@ void blink_task() { } int main() { - stdio_init_all(); - sleep_ms(2000); - - if (cyw43_arch_init_with_country(CONF_NET_COUNTRY)) { - printf("failed to initialize\n"); - return 1; - } - cyw43_arch_gpio_put(LED_PIN, 1); - - - printf("initialised\n"); - - cyw43_arch_enable_sta_mode(); - - if (cyw43_arch_wifi_connect_timeout_ms(CONF_NET_SSID, CONF_NET_PASS, CYW43_AUTH_WPA2_AES_PSK, 10000)) { - printf("failed to connect\n"); - return 1; - } - printf("connected\n"); + init(); xTaskCreate((TaskFunction_t) blink_task, "blink", 128, NULL, 1, NULL); vTaskStartScheduler(); -- cgit v1.2.3