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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
use crate::Pulse;
use crate::pulse::seq_to_string;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum Signal {
Power,
PlayPause,
BrightnessDown,
BrightnessUp,
White,
Red,
Green,
Blue,
Orange1,
Orange2,
Orange3,
Yellow,
GrassGreen,
Turquise,
Petrol,
DarkPetrol,
Blue2,
Violet,
LightViolet,
Pink,
Rose1,
Rose2,
Azure1,
Azure2,
RedUp,
RedDown,
GreenUp,
GreenDown,
BlueUp,
BlueDown,
Quick,
Slow,
Diy1,
Diy2,
Diy3,
Diy4,
Diy5,
Diy6,
Auto,
Flash,
Jump3,
Jump7,
Fade3,
Fade7,
Unrecognized,
}
impl Signal {
pub fn from_pulse_seq(pulse_seq: &Vec<Pulse>) -> Signal {
let seq_as_str = seq_to_string(pulse_seq);
match seq_as_str.as_str() {
"SSSSSSSSLLLLLLLLSSSSSSLSLLLLLLSL" => Signal::Power,
"SSSSSSSSLLLLLLLLLSSSSSLSSLLLLLSL" => Signal::PlayPause,
"SSSSSSSSLLLLLLLLLSLLLSLSSLSSSLSL" => Signal::BrightnessDown,
"SSSSSSSSLLLLLLLLSSLLLSLSLLSSSLSL" => Signal::BrightnessUp,
"SSSSSSSSLLLLLLLLSSLSSSLSLLSLLLSL" => Signal::White,
"SSSSSSSSLLLLLLLLSSSLLSLSLLLSSLSL" => Signal::Red,
"SSSSSSSSLLLLLLLLLSSLLSLSSLLSSLSL" => Signal::Green,
"SSSSSSSSLLLLLLLLLSLSSSLSSLSLLLSL" => Signal::Blue,
"SSSSSSSSLLLLLLLLSSLSLSLSLLSLSLSL" => Signal::Orange1,
"SSSSSSSSLLLLLLLLSSSSLSLSLLLLSLSL" => Signal::Orange2,
"SSSSSSSSLLLLLLLLSSLLLSSSLLSSSLLL" => Signal::Orange3,
"SSSSSSSSLLLLLLLLSSSLLSSSLLLSSLLL" => Signal::Yellow,
"SSSSSSSSLLLLLLLLLSLSLSLSSLSLSLSL" => Signal::GrassGreen,
"SSSSSSSSLLLLLLLLLSSSLSLSSLLLSLSL" => Signal::Turquise,
"SSSSSSSSLLLLLLLLLSLLLSSSSLSSSLLL" => Signal::Petrol,
"SSSSSSSSLLLLLLLLLSSLLSSSSLLSSLLL" => Signal::DarkPetrol,
"SSSSSSSSLLLLLLLLLSSLSSLSSLLSLLSL" => Signal::Blue2,
"SSSSSSSSLLLLLLLLLSLLSSLSSLSSLLSL" => Signal::Violet,
"SSSSSSSSLLLLLLLLSLLLLSSSLSSSSLLL" => Signal::LightViolet,
"SSSSSSSSLLLLLLLLSLSLLSSSLSLSSLLL" => Signal::Pink,
"SSSSSSSSLLLLLLLLSSSLSSLSLLLSLLSL" => Signal::Rose1,
"SSSSSSSSLLLLLLLLSSLLSSLSLLSSLLSL" => Signal::Rose2,
"SSSSSSSSLLLLLLLLLLLLLSSSSSSSSLLL" => Signal::Azure1,
"SSSSSSSSLLLLLLLLLLSLLSSSSSLSSLLL" => Signal::Azure2,
"SSSSSSSSLLLLLLLLSSLSLSSSLLSLSLLL" => Signal::RedUp,
"SSSSSSSSLLLLLLLLSSSSLSSSLLLLSLLL" => Signal::RedDown,
"SSSSSSSSLLLLLLLLLSLSLSSSSLSLSLLL" => Signal::GreenUp,
"SSSSSSSSLLLLLLLLLSSSLSSSSLLLSLLL" => Signal::GreenDown,
"SSSSSSSSLLLLLLLLSLLSLSSSLSSLSLLL" => Signal::BlueUp,
"SSSSSSSSLLLLLLLLSLSSLSSSLSLLSLLL" => Signal::BlueDown,
"SSSSSSSSLLLLLLLLLLLSLSSSSSSLSLLL" => Signal::Quick,
"SSSSSSSSLLLLLLLLLLSSLSSSSSLLSLLL" => Signal::Slow,
"SSSSSSSSLLLLLLLLSSLLSSSSLLSSLLLL" => Signal::Diy1,
"SSSSSSSSLLLLLLLLLSLLSSSSSLSSLLLL" => Signal::Diy2,
"SSSSSSSSLLLLLLLLSLLLSSSSLSSSLLLL" => Signal::Diy3,
"SSSSSSSSLLLLLLLLSSSLSSSSLLLSLLLL" => Signal::Diy4,
"SSSSSSSSLLLLLLLLLSSLSSSSSLLSLLLL" => Signal::Diy5,
"SSSSSSSSLLLLLLLLSLSLSSSSLSLSLLLL" => Signal::Diy6,
"SSSSSSSSLLLLLLLLLLLLSSSSSSSSLLLL" => Signal::Auto,
"SSSSSSSSLLLLLLLLLLSLSSSSSSLSLLLL" => Signal::Flash,
"SSSSSSSSLLLLLLLLSSLSSSSSLLSLLLLL" => Signal::Jump3,
"SSSSSSSSLLLLLLLLLSLSSSSSSLSLLLLL" => Signal::Jump7,
"SSSSSSSSLLLLLLLLSLLSSSSSLSSLLLLL" => Signal::Fade3,
"SSSSSSSSLLLLLLLLLLLSSSSSSSSLLLLL" => Signal::Fade7,
_ => Signal::Unrecognized,
}
}
}