first std::function test

This commit is contained in:
Martin Brodbeck 2024-03-07 15:15:20 +01:00
parent 87ea5f663f
commit 665e50f456
3 changed files with 19 additions and 0 deletions

View File

@ -2,6 +2,7 @@
#include <stdio.h>
#include <utility>
#include <functional>
#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<void()> f_observer = test;
WinKeyer winKeyer;
winKeyer.addObserver(f_observer);
pio_hw_t *pio = pio0;
TM1637 display {DISPLAY_DIO_PIN, DISPLAY_CLK_PIN, pio};

View File

@ -103,4 +103,10 @@ void WinKeyer::run(queue_t &queue)
m_commandState = CommandState::None;
}
}
}
void WinKeyer::addObserver(std::function<void()> obs) {
m_observers.push_back(obs);
obs();
}

View File

@ -1,11 +1,15 @@
#pragma once
#include <vector>
#include <functional>
#include "pico/util/queue.h"
class WinKeyer final
{
public:
void run(queue_t &queue);
void addObserver(std::function<void()> 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<std::function<void()>> m_observers;
};