From 665e50f45626232b5a6a5e9a4dff22865c0cdab7 Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Thu, 7 Mar 2024 15:15:20 +0100 Subject: [PATCH 1/4] first std::function test --- src/raspikeyer.cpp | 8 ++++++++ src/winkeyer.cpp | 6 ++++++ src/winkeyer.h | 5 +++++ 3 files changed, 19 insertions(+) diff --git a/src/raspikeyer.cpp b/src/raspikeyer.cpp index f0d620e..18c9ea4 100644 --- a/src/raspikeyer.cpp +++ b/src/raspikeyer.cpp @@ -2,6 +2,7 @@ #include #include +#include #include "bsp/board.h" #include "hardware/adc.h" @@ -101,6 +102,10 @@ void core1_main() } } +void test() { + printf("Test\n"); +} + int main() { timer_hw->dbgpause = 0; // workaround for problem with debug and sleep_ms @@ -130,7 +135,10 @@ int main() KeyerQueueData keyerQueueData {KeyerQueueCommand::Run, currentWpm, settings.mode, 0}; queue_add_blocking(&keyerQueue, &keyerQueueData); + std::function f_observer = test; + WinKeyer winKeyer; + winKeyer.addObserver(f_observer); pio_hw_t *pio = pio0; TM1637 display {DISPLAY_DIO_PIN, DISPLAY_CLK_PIN, pio}; diff --git a/src/winkeyer.cpp b/src/winkeyer.cpp index c0c53fb..3a35ba3 100644 --- a/src/winkeyer.cpp +++ b/src/winkeyer.cpp @@ -103,4 +103,10 @@ void WinKeyer::run(queue_t &queue) m_commandState = CommandState::None; } } +} + +void WinKeyer::addObserver(std::function obs) { + m_observers.push_back(obs); + + obs(); } \ No newline at end of file diff --git a/src/winkeyer.h b/src/winkeyer.h index e0aabee..19e02c5 100644 --- a/src/winkeyer.h +++ b/src/winkeyer.h @@ -1,11 +1,15 @@ #pragma once +#include +#include + #include "pico/util/queue.h" class WinKeyer final { public: void run(queue_t &queue); + void addObserver(std::function obs); private: enum class CommandState { @@ -24,4 +28,5 @@ class WinKeyer final CommandState m_commandState {CommandState::None}; WkMode m_wkMode {WkMode::WK1}; bool m_hostOpen {false}; + std::vector> m_observers; }; \ No newline at end of file From eb8dbb3987cae7a8bc466153d4ffb02503ac8242 Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Tue, 13 Aug 2024 14:13:49 +0200 Subject: [PATCH 2/4] pico_sdk_import.cmake updated to 2.0.0 --- pico_sdk_import.cmake | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pico_sdk_import.cmake b/pico_sdk_import.cmake index 65f8a6f..a0721d0 100644 --- a/pico_sdk_import.cmake +++ b/pico_sdk_import.cmake @@ -18,9 +18,20 @@ if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT_PATH} AND (NOT PICO_SDK_FETCH_FROM_GIT_P message("Using PICO_SDK_FETCH_FROM_GIT_PATH from environment ('${PICO_SDK_FETCH_FROM_GIT_PATH}')") endif () +if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT_TAG} AND (NOT PICO_SDK_FETCH_FROM_GIT_TAG)) + set(PICO_SDK_FETCH_FROM_GIT_TAG $ENV{PICO_SDK_FETCH_FROM_GIT_TAG}) + message("Using PICO_SDK_FETCH_FROM_GIT_TAG from environment ('${PICO_SDK_FETCH_FROM_GIT_TAG}')") +endif () + +if (PICO_SDK_FETCH_FROM_GIT AND NOT PICO_SDK_FETCH_FROM_GIT_TAG) + set(PICO_SDK_FETCH_FROM_GIT_TAG "master") + message("Using master as default value for PICO_SDK_FETCH_FROM_GIT_TAG") +endif() + set(PICO_SDK_PATH "${PICO_SDK_PATH}" CACHE PATH "Path to the Raspberry Pi Pico SDK") set(PICO_SDK_FETCH_FROM_GIT "${PICO_SDK_FETCH_FROM_GIT}" CACHE BOOL "Set to ON to fetch copy of SDK from git if not otherwise locatable") set(PICO_SDK_FETCH_FROM_GIT_PATH "${PICO_SDK_FETCH_FROM_GIT_PATH}" CACHE FILEPATH "location to download SDK") +set(PICO_SDK_FETCH_FROM_GIT_TAG "${PICO_SDK_FETCH_FROM_GIT_TAG}" CACHE FILEPATH "release tag for SDK") if (NOT PICO_SDK_PATH) if (PICO_SDK_FETCH_FROM_GIT) @@ -34,14 +45,14 @@ if (NOT PICO_SDK_PATH) FetchContent_Declare( pico_sdk GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk - GIT_TAG master + GIT_TAG ${PICO_SDK_FETCH_FROM_GIT_TAG} GIT_SUBMODULES_RECURSE FALSE ) else () FetchContent_Declare( pico_sdk GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk - GIT_TAG master + GIT_TAG ${PICO_SDK_FETCH_FROM_GIT_TAG} ) endif () From 972c6c49ff6e7c3e2a63d2ebd97dc6ecb31e98b1 Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Tue, 13 Aug 2024 14:13:49 +0200 Subject: [PATCH 3/4] pico_sdk_import.cmake updated to 2.0.0 --- pico_sdk_import.cmake | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pico_sdk_import.cmake b/pico_sdk_import.cmake index 65f8a6f..a0721d0 100644 --- a/pico_sdk_import.cmake +++ b/pico_sdk_import.cmake @@ -18,9 +18,20 @@ if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT_PATH} AND (NOT PICO_SDK_FETCH_FROM_GIT_P message("Using PICO_SDK_FETCH_FROM_GIT_PATH from environment ('${PICO_SDK_FETCH_FROM_GIT_PATH}')") endif () +if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT_TAG} AND (NOT PICO_SDK_FETCH_FROM_GIT_TAG)) + set(PICO_SDK_FETCH_FROM_GIT_TAG $ENV{PICO_SDK_FETCH_FROM_GIT_TAG}) + message("Using PICO_SDK_FETCH_FROM_GIT_TAG from environment ('${PICO_SDK_FETCH_FROM_GIT_TAG}')") +endif () + +if (PICO_SDK_FETCH_FROM_GIT AND NOT PICO_SDK_FETCH_FROM_GIT_TAG) + set(PICO_SDK_FETCH_FROM_GIT_TAG "master") + message("Using master as default value for PICO_SDK_FETCH_FROM_GIT_TAG") +endif() + set(PICO_SDK_PATH "${PICO_SDK_PATH}" CACHE PATH "Path to the Raspberry Pi Pico SDK") set(PICO_SDK_FETCH_FROM_GIT "${PICO_SDK_FETCH_FROM_GIT}" CACHE BOOL "Set to ON to fetch copy of SDK from git if not otherwise locatable") set(PICO_SDK_FETCH_FROM_GIT_PATH "${PICO_SDK_FETCH_FROM_GIT_PATH}" CACHE FILEPATH "location to download SDK") +set(PICO_SDK_FETCH_FROM_GIT_TAG "${PICO_SDK_FETCH_FROM_GIT_TAG}" CACHE FILEPATH "release tag for SDK") if (NOT PICO_SDK_PATH) if (PICO_SDK_FETCH_FROM_GIT) @@ -34,14 +45,14 @@ if (NOT PICO_SDK_PATH) FetchContent_Declare( pico_sdk GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk - GIT_TAG master + GIT_TAG ${PICO_SDK_FETCH_FROM_GIT_TAG} GIT_SUBMODULES_RECURSE FALSE ) else () FetchContent_Declare( pico_sdk GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk - GIT_TAG master + GIT_TAG ${PICO_SDK_FETCH_FROM_GIT_TAG} ) endif () From 680dde14b83b33c9bbd8b286939d83be0d12711b Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Tue, 13 Aug 2024 14:38:24 +0200 Subject: [PATCH 4/4] Make it compile with PICO SDK 2.0.0 --- CMakeLists.txt | 6 +++--- src/raspikeyer.cpp | 1 + src/settings.cpp | 3 ++- src/settings.h | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 666451e..cdfabac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ # Generated Cmake Pico project file -cmake_minimum_required(VERSION 3.26) +cmake_minimum_required(VERSION 3.28) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 23) @@ -14,8 +14,8 @@ set(PICO_BOARD pico CACHE STRING "Board type") # Pull in Raspberry Pi Pico SDK (must be before project) include(pico_sdk_import.cmake) -if (PICO_SDK_VERSION_STRING VERSION_LESS "1.5.0") - message(FATAL_ERROR "Raspberry Pi Pico SDK version 1.5.0 (or later) required. Your version is ${PICO_SDK_VERSION_STRING}") +if (PICO_SDK_VERSION_STRING VERSION_LESS "2.0.0") + message(FATAL_ERROR "Raspberry Pi Pico SDK version 2.0.0 (or later) required. Your version is ${PICO_SDK_VERSION_STRING}") endif() project(raspikeyer VERSION "0.0.1" LANGUAGES C CXX ASM) diff --git a/src/raspikeyer.cpp b/src/raspikeyer.cpp index f0d620e..cbb36fe 100644 --- a/src/raspikeyer.cpp +++ b/src/raspikeyer.cpp @@ -5,6 +5,7 @@ #include "bsp/board.h" #include "hardware/adc.h" +#include "pico/flash.h" #include "pico/binary_info/code.h" #include "pico/multicore.h" #include "pico/stdlib.h" diff --git a/src/settings.cpp b/src/settings.cpp index 0786140..2f8316b 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -1,6 +1,7 @@ #include #include "pico/stdlib.h" +#include "pico/flash.h" #include "settings.h" @@ -66,4 +67,4 @@ Settings read_settings() } return settings; -} \ No newline at end of file +} diff --git a/src/settings.h b/src/settings.h index cd19270..e3a78cf 100644 --- a/src/settings.h +++ b/src/settings.h @@ -1,6 +1,6 @@ #pragma once -#include "pico/flash.h" +#include "hardware/flash.h" const uint16_t MAGIC_NUMBER = 4;