17 ModeManager* mode_manager, std::function<
void()> onStopwatchToggle,
18 std::function<
void()> onTimerStop) {
19 mode_manager_ = mode_manager;
22 onStopwatchToggle_ = std::move(onStopwatchToggle);
23 onTimerStop_ = std::move(onTimerStop);
30 gpio_int_sem_1_.release();
31 mode_manager_->NextMode();
33 std::cout <<
"Button 1\n";
34 buzzer_->
PlayNote(PWM::NoteName::C, 7, 50);
43 gpio_int_sem_2_.release();
44 std::cout <<
"Button 2\n";
45 buzzer_->
PlayNote(PWM::NoteName::C, 7, 50);
47 auto mode = mode_manager_->GetMode();
48 if (mode == ModeManager::Mode::STOPWATCH) {
50 }
else if (mode == ModeManager::Mode::TIMER &&
51 mode_manager_->IsTimerRunning()) {
61 PWM* buzzer_ =
nullptr;
63 std::function<void()> onStopwatchToggle_;
64 std::function<void()> onTimerStop_;
68 std::binary_semaphore gpio_int_sem_1_{0};
69 std::binary_semaphore gpio_int_sem_2_{0};