forked from chesdenis/qQuarium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ButtonHandler.cpp
92 lines (71 loc) · 1.82 KB
/
ButtonHandler.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "ButtonHandler.h"
#include "BeepHelper.h"
#include "LcdBackLightHelper.h"
#include "LiquidCrystal.h"
void ButtonHandler::Init(qQuariumMode** currentModeLinkLink)
{
CurrentModeLinkLink = currentModeLinkLink;
isCurrentModeLinkDefined = true;
}
void ButtonHandler::Handle(decode_results* irResultsLink)
{
if (irResultsLink->value == irRemoteButtonId)
{
BtnClick();
delay(100);
BeepHelper::Instance()->beep(500, 100);
LcdBackLightHelper::Instance()->IncreaseLedTime();
}
}
void ButtonHandler::BtnClick()
{
if (isCurrentModeLinkDefined)
{
switch (ButtonType)
{
case ButtonHandler::Ok: (*CurrentModeLinkLink)->OkClick();
break;
case ButtonHandler::Cancel: (*CurrentModeLinkLink)->CancelClick();
break;
case ButtonHandler::Left: (*CurrentModeLinkLink)->LeftClick();
break;
case ButtonHandler::Right: (*CurrentModeLinkLink)->RightClick();
break;
}
}
}
void ButtonHandler::Learn(IRrecv* irrecvLink, LiquidCrystal* lcdLink)
{
irrecvLink->enableIRIn();
decode_results irDecodeResults;
lcdLink->clear();
switch (ButtonType)
{
case ButtonHandler::Ok: lcdLink->print("Press OK...");
break;
case ButtonHandler::Cancel: lcdLink->print("Press Cancel...");
break;
case ButtonHandler::Left: lcdLink->print("Press Left...");
break;
case ButtonHandler::Right: lcdLink->print("Press Right...");
break;
}
while (true) {
if (irrecvLink->decode(&irDecodeResults)) {
irrecvLink->resume();
if (irDecodeResults.bits >= 16 &&
irDecodeResults.value != 0xC53A9966// fix for Pioneer DVD
) {
lcdLink->setCursor(0, 1);
lcdLink->print(irDecodeResults.value, HEX);
irRemoteButtonId = irDecodeResults.value;
BeepHelper::Instance()->beep(500, 100);
break;
}
}
}
}
ButtonHandler::ButtonHandler(HandlerType buttonType)
{
ButtonType = buttonType;
}