FluxSand 1.0
FluxSand - Interactive Digital Hourglass
Loading...
Searching...
No Matches
InferenceHandler Class Reference
Collaboration diagram for InferenceHandler:

Public Member Functions

void Init (InferenceEngine *inference, ModeManager *mode_manager, CompGuiX *gui, PWM *buzzer, std::function< void(int)> startTimerCallback, std::function< void()> stopTimerCallback)
 

Private Attributes

ModeManagermode_manager_ = nullptr
 
CompGuiXgui_ = nullptr
 
PWMbuzzer_ = nullptr
 
std::function< void(int)> startTimerCallback_
 
std::function< void()> stopTimerCallback_
 

Detailed Description

Definition at line 10 of file inference_handler.hpp.

Member Function Documentation

◆ Init()

void InferenceHandler::Init ( InferenceEngine inference,
ModeManager mode_manager,
CompGuiX gui,
PWM buzzer,
std::function< void(int)>  startTimerCallback,
std::function< void()>  stopTimerCallback 
)
inline

Definition at line 13 of file inference_handler.hpp.

16 {
17 mode_manager_ = mode_manager;
18 gui_ = gui;
19 buzzer_ = buzzer;
20 startTimerCallback_ = std::move(startTimerCallback);
21 stopTimerCallback_ = std::move(stopTimerCallback);
22
23 // Register a callback to receive gesture inference results
24 inference->RegisterDataCallback([this](ModelOutput result) {
25 std::cout << "New Gesture: " << LABELS.find(result)->second << '\n';
26
27 // Play a confirmation beep when a gesture is detected
28 buzzer_->PlayNote(PWM::NoteName::C, 7, 300);
29
30 // Get current mode and orientation
31 auto mode = mode_manager_->GetMode();
32 bool landscape = mode_manager_->IsLandscape();
33
34 // Handle each gesture type and map to corresponding behavior
35 switch (result) {
36 case ModelOutput::TILT_RIGHT:
37 // In timer mode (not running), increase timer duration
38 if (mode == ModeManager::Mode::TIMER &&
39 !mode_manager_->IsTimerRunning()) {
40 mode_manager_->AdjustTimer(+300);
41 }
42 // In time mode (portrait), switch to landscape
43 else if (mode == ModeManager::Mode::TIME && !landscape) {
44 mode_manager_->SetLandscape(true);
45 }
46 // In timer mode (portrait and running), switch to landscape and
47 // disable sand animation
48 else if (mode == ModeManager::Mode::TIMER && !landscape &&
49 mode_manager_->IsTimerRunning()) {
50 mode_manager_->SetLandscape(true);
51 gui_->SandDisable();
52 }
53 break;
54
55 case ModelOutput::TILT_LEFT:
56 // In timer mode (not running), decrease timer duration
57 if (mode == ModeManager::Mode::TIMER &&
58 !mode_manager_->IsTimerRunning()) {
59 mode_manager_->AdjustTimer(-300);
60 }
61 // In time mode (landscape), switch to portrait
62 else if (mode == ModeManager::Mode::TIME && landscape) {
63 mode_manager_->SetLandscape(false);
64 }
65 // In timer mode (landscape and running), switch to portrait and
66 // enable sand animation
67 else if (mode == ModeManager::Mode::TIMER && landscape &&
68 mode_manager_->IsTimerRunning()) {
69 mode_manager_->SetLandscape(false);
70 gui_->SandEnable();
71 }
72 break;
73
74 case ModelOutput::SHAKE_FORWARD:
75 // Start timer if in timer mode and not already running
76 if (mode == ModeManager::Mode::TIMER &&
77 !mode_manager_->IsTimerRunning()) {
78 startTimerCallback_(mode_manager_->GetRemainingTimerSeconds());
79 }
80 break;
81
82 case ModelOutput::SHAKE_BACKWARD:
83 // Stop timer and disable sand animation if in timer mode
84 if (mode == ModeManager::Mode::TIMER) {
85 stopTimerCallback_();
86 gui_->SandDisable();
87 }
88 break;
89
90 default:
91 break;
92 }
93 });
94 }
void SandDisable()
Disable sand simulation.
Definition comp_gui.hpp:77
void SandEnable()
Enable sand simulation.
Definition comp_gui.hpp:74
void PlayNote(NoteName note, uint32_t octave, uint32_t duration_ms)
Play a musical note based on note name and octave.
Definition bsp_pwm.hpp:121

Field Documentation

◆ buzzer_

PWM* InferenceHandler::buzzer_ = nullptr
private

Definition at line 99 of file inference_handler.hpp.

◆ gui_

CompGuiX* InferenceHandler::gui_ = nullptr
private

Definition at line 98 of file inference_handler.hpp.

◆ mode_manager_

ModeManager* InferenceHandler::mode_manager_ = nullptr
private

Definition at line 97 of file inference_handler.hpp.

◆ startTimerCallback_

std::function<void(int)> InferenceHandler::startTimerCallback_
private

Definition at line 100 of file inference_handler.hpp.

◆ stopTimerCallback_

std::function<void()> InferenceHandler::stopTimerCallback_
private

Definition at line 101 of file inference_handler.hpp.


The documentation for this class was generated from the following file: