Skip to content

Commit 9cc4cf9

Browse files
committed
ModulinoKnob: fix bug on set() and apply workaround
1 parent 9716042 commit 9cc4cf9

File tree

2 files changed

+45
-27
lines changed

2 files changed

+45
-27
lines changed

src/Modulino.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,20 @@ class ModulinoKnob : public Module {
220220
public:
221221
ModulinoKnob(uint8_t address = 0xFF)
222222
: Module(address, "ENCODER") {}
223+
bool begin() {
224+
auto ret = Module::begin();
225+
if (ret) {
226+
// check for set() bug
227+
auto _val = get();
228+
set(100);
229+
if (get() != 100) {
230+
_bug_on_set = true;
231+
set(-_val);
232+
} else {
233+
set(_val);
234+
}
235+
}
236+
}
223237
int16_t get() {
224238
uint8_t buf[3];
225239
auto res = read(buf, 3);
@@ -231,6 +245,9 @@ class ModulinoKnob : public Module {
231245
return ret;
232246
}
233247
void set(int16_t value) {
248+
if (_bug_on_set) {
249+
value = -value;
250+
}
234251
uint8_t buf[4];
235252
memcpy(buf, &value, 2);
236253
write(buf, 4);
@@ -248,6 +265,7 @@ class ModulinoKnob : public Module {
248265
}
249266
private:
250267
bool _pressed = false;
268+
bool _bug_on_set = false;
251269
protected:
252270
std::vector<uint8_t> match = { 0x74, 0x76 };
253271
};

src/fw.h

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -95,16 +95,16 @@ unsigned char node_base_bin[] = {
9595
0x1a, 0x78, 0x00, 0x2a, 0x03, 0xd0, 0x00, 0x22, 0x06, 0x20, 0x1a, 0x70,
9696
0x16, 0xbd, 0x1d, 0x4b, 0x1d, 0x4c, 0x1b, 0x78, 0x23, 0x70, 0x76, 0x2b,
9797
0x06, 0xd0, 0x13, 0xd8, 0x20, 0x20, 0x6c, 0x2b, 0xf4, 0xd0, 0x1d, 0x38,
98-
0x74, 0x2b, 0xf1, 0xd1, 0x6a, 0x46, 0x18, 0x4b, 0x91, 0x1d, 0x1b, 0x68,
99-
0x17, 0x4a, 0x5b, 0x6a, 0x12, 0x88, 0x17, 0x48, 0x9b, 0x1a, 0x02, 0x22,
98+
0x74, 0x2b, 0xf1, 0xd1, 0x18, 0x4b, 0x19, 0x48, 0x1b, 0x68, 0x5a, 0x6a,
99+
0x6b, 0x46, 0x99, 0x1d, 0x17, 0x4b, 0x1b, 0x88, 0x9b, 0x18, 0x02, 0x22,
100100
0x0b, 0x80, 0x02, 0xf0, 0xcf, 0xfc, 0x12, 0xe0, 0x03, 0x20, 0x7c, 0x2b,
101101
0xe0, 0xd1, 0xa0, 0x20, 0x01, 0x21, 0xc0, 0x05, 0x01, 0xf0, 0x2a, 0xf8,
102102
0x43, 0x42, 0x58, 0x41, 0x60, 0x70, 0xa0, 0x20, 0x02, 0x21, 0xc0, 0x05,
103103
0x01, 0xf0, 0x22, 0xf8, 0x43, 0x42, 0x58, 0x41, 0xa0, 0x70, 0xa0, 0x20,
104104
0x04, 0x21, 0xc0, 0x05, 0x01, 0xf0, 0x1a, 0xf8, 0x43, 0x42, 0x58, 0x41,
105105
0xe0, 0x70, 0x03, 0x20, 0xc6, 0xe7, 0xc0, 0x46, 0x28, 0x00, 0x00, 0x20,
106106
0x2c, 0x00, 0x00, 0x20, 0x2e, 0x00, 0x00, 0x20, 0xb0, 0x00, 0x00, 0x20,
107-
0x2a, 0x00, 0x00, 0x20, 0x2f, 0x00, 0x00, 0x20, 0x08, 0x4b, 0x20, 0x20,
107+
0x2f, 0x00, 0x00, 0x20, 0x2a, 0x00, 0x00, 0x20, 0x08, 0x4b, 0x20, 0x20,
108108
0x1b, 0x78, 0x6c, 0x2b, 0x04, 0xd0, 0x04, 0xd8, 0x1d, 0x38, 0x3c, 0x2b,
109109
0x00, 0xd1, 0x05, 0x30, 0x70, 0x47, 0x02, 0x22, 0x93, 0x43, 0x74, 0x3b,
110110
0x5a, 0x42, 0x53, 0x41, 0xd8, 0x1c, 0xf7, 0xe7, 0x2c, 0x00, 0x00, 0x20,
@@ -126,64 +126,64 @@ unsigned char node_base_bin[] = {
126126
0x00, 0x93, 0x00, 0xf0, 0xcf, 0xfc, 0x00, 0x28, 0x01, 0xd0, 0x72, 0xb6,
127127
0xfe, 0xe7, 0x0d, 0xb0, 0x00, 0xbd, 0x00, 0x00, 0xf0, 0xb5, 0x8f, 0xb0,
128128
0x00, 0xf0, 0x9c, 0xfa, 0xff, 0xf7, 0xcc, 0xff, 0x01, 0x21, 0x02, 0x24,
129-
0x04, 0x25, 0xb0, 0x4b, 0x0a, 0xa8, 0x5a, 0x6b, 0x09, 0xae, 0x0a, 0x43,
129+
0x04, 0x26, 0xb0, 0x4b, 0x0a, 0xa8, 0x5a, 0x6b, 0x09, 0xad, 0x0a, 0x43,
130130
0x5a, 0x63, 0x5a, 0x6b, 0x0a, 0x40, 0x03, 0x92, 0x03, 0x9a, 0x5a, 0x6b,
131131
0x1f, 0x31, 0x22, 0x43, 0x5a, 0x63, 0x5a, 0x6b, 0x22, 0x40, 0x04, 0x92,
132-
0x04, 0x9a, 0x5a, 0x6b, 0x2a, 0x43, 0x5a, 0x63, 0x5a, 0x6b, 0x2a, 0x40,
132+
0x04, 0x9a, 0x5a, 0x6b, 0x32, 0x43, 0x5a, 0x63, 0x5a, 0x6b, 0x32, 0x40,
133133
0x05, 0x92, 0x05, 0x9a, 0x5a, 0x6b, 0x0a, 0x43, 0x5a, 0x63, 0x5b, 0x6b,
134134
0x10, 0x22, 0x0b, 0x40, 0x06, 0x93, 0x00, 0x21, 0x06, 0x9b, 0x02, 0xf0,
135-
0xd2, 0xfb, 0xe0, 0x23, 0xa0, 0x20, 0x5b, 0x00, 0x31, 0x00, 0xc0, 0x05,
136-
0x09, 0x93, 0xb4, 0x60, 0x00, 0xf0, 0xa6, 0xfe, 0xc0, 0x23, 0x31, 0x00,
137-
0x1b, 0x02, 0x99, 0x48, 0x09, 0x93, 0x00, 0xf0, 0x9f, 0xfe, 0x31, 0x00,
138-
0x97, 0x48, 0x09, 0x95, 0x00, 0xf0, 0x9a, 0xfe, 0xa0, 0x20, 0x40, 0x21,
135+
0xd2, 0xfb, 0xe0, 0x23, 0xa0, 0x20, 0x5b, 0x00, 0x29, 0x00, 0xc0, 0x05,
136+
0x09, 0x93, 0xac, 0x60, 0x00, 0xf0, 0xa6, 0xfe, 0xc0, 0x23, 0x29, 0x00,
137+
0x1b, 0x02, 0x99, 0x48, 0x09, 0x93, 0x00, 0xf0, 0x9f, 0xfe, 0x29, 0x00,
138+
0x97, 0x48, 0x09, 0x96, 0x00, 0xf0, 0x9a, 0xfe, 0xa0, 0x20, 0x40, 0x21,
139139
0xc0, 0x05, 0x00, 0xf0, 0x49, 0xff, 0x04, 0x00, 0xa0, 0x20, 0x80, 0x21,
140140
0xc0, 0x05, 0x00, 0xf0, 0x43, 0xff, 0xa4, 0x01, 0x40, 0x01, 0x04, 0x43,
141141
0x80, 0x21, 0xa0, 0x20, 0x49, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x3a, 0xff,
142-
0x80, 0x21, 0xa8, 0x40, 0x64, 0xb2, 0x04, 0x43, 0xc9, 0x01, 0x88, 0x48,
142+
0x80, 0x21, 0xb0, 0x40, 0x64, 0xb2, 0x04, 0x43, 0xc9, 0x01, 0x88, 0x48,
143143
0x00, 0xf0, 0x32, 0xff, 0x80, 0x21, 0xc0, 0x00, 0x64, 0xb2, 0x04, 0x43,
144144
0x09, 0x02, 0x84, 0x48, 0x00, 0xf0, 0x2a, 0xff, 0x64, 0xb2, 0x80, 0x00,
145-
0x29, 0x00, 0x04, 0x43, 0x81, 0x48, 0x00, 0xf0, 0x23, 0xff, 0x81, 0x4a,
145+
0x31, 0x00, 0x04, 0x43, 0x81, 0x48, 0x00, 0xf0, 0x23, 0xff, 0x81, 0x4a,
146146
0x64, 0xb2, 0x40, 0x00, 0x80, 0x4b, 0x04, 0x43, 0x00, 0x92, 0x12, 0x78,
147147
0xe4, 0xb2, 0x1c, 0x70, 0x01, 0x93, 0x51, 0x1e, 0x7d, 0x4b, 0xc9, 0xb2,
148148
0x1c, 0x70, 0xfd, 0x29, 0x06, 0xd8, 0x00, 0x99, 0x48, 0x78, 0x33, 0x21,
149-
0x51, 0x40, 0x88, 0x42, 0x00, 0xd1, 0x1a, 0x70, 0x78, 0x4d, 0x1b, 0x78,
150-
0x78, 0x4a, 0xab, 0x60, 0x01, 0x23, 0x2a, 0x60, 0x77, 0x4a, 0xeb, 0x60,
151-
0x6a, 0x60, 0x80, 0x22, 0x00, 0x23, 0x12, 0x03, 0x28, 0x00, 0x2b, 0x61,
152-
0xea, 0x61, 0x2b, 0x62, 0x00, 0xf0, 0xd0, 0xff, 0x01, 0x1e, 0x01, 0xd0,
153-
0x72, 0xb6, 0xfe, 0xe7, 0x28, 0x00, 0x01, 0xf0, 0x53, 0xfe, 0x01, 0x1e,
154-
0x01, 0xd0, 0x72, 0xb6, 0xfe, 0xe7, 0x28, 0x00, 0x01, 0xf0, 0x72, 0xfe,
149+
0x51, 0x40, 0x88, 0x42, 0x00, 0xd1, 0x1a, 0x70, 0x78, 0x4e, 0x1b, 0x78,
150+
0x78, 0x4a, 0xb3, 0x60, 0x01, 0x23, 0x32, 0x60, 0x77, 0x4a, 0xf3, 0x60,
151+
0x72, 0x60, 0x80, 0x22, 0x00, 0x23, 0x12, 0x03, 0x30, 0x00, 0x33, 0x61,
152+
0xf2, 0x61, 0x33, 0x62, 0x00, 0xf0, 0xd0, 0xff, 0x01, 0x1e, 0x01, 0xd0,
153+
0x72, 0xb6, 0xfe, 0xe7, 0x30, 0x00, 0x01, 0xf0, 0x53, 0xfe, 0x01, 0x1e,
154+
0x01, 0xd0, 0x72, 0xb6, 0xfe, 0xe7, 0x30, 0x00, 0x01, 0xf0, 0x72, 0xfe,
155155
0x00, 0x28, 0x01, 0xd0, 0x72, 0xb6, 0xfe, 0xe7, 0x69, 0x4f, 0x6a, 0x4b,
156156
0x78, 0x60, 0x3b, 0x60, 0x69, 0x4b, 0x38, 0x00, 0xfb, 0x60, 0xbb, 0x60,
157157
0x01, 0xf0, 0x90, 0xfe, 0x04, 0x1e, 0x01, 0xd0, 0x72, 0xb6, 0xfe, 0xe7,
158158
0x02, 0x00, 0x01, 0x00, 0x17, 0x20, 0x00, 0xf0, 0x03, 0xfa, 0x17, 0x20,
159-
0x00, 0xf0, 0x2a, 0xfa, 0xff, 0xf7, 0x98, 0xfd, 0x28, 0x00, 0x01, 0xf0,
159+
0x00, 0xf0, 0x2a, 0xfa, 0xff, 0xf7, 0x98, 0xfd, 0x30, 0x00, 0x01, 0xf0,
160160
0xdb, 0xf8, 0x38, 0x00, 0x01, 0xf0, 0xae, 0xfe, 0x00, 0x2c, 0x07, 0xd0,
161161
0x00, 0xf0, 0xee, 0xf9, 0xa0, 0x42, 0x04, 0xd9, 0x00, 0x21, 0x5a, 0x48,
162-
0x02, 0xf0, 0x74, 0xfa, 0x00, 0x24, 0x59, 0x4d, 0x2b, 0x78, 0x00, 0x2b,
162+
0x02, 0xf0, 0x74, 0xfa, 0x00, 0x24, 0x59, 0x4e, 0x33, 0x78, 0x00, 0x2b,
163163
0xed, 0xd0, 0x58, 0x49, 0x0a, 0x78, 0x44, 0x2a, 0x07, 0xd1, 0x4b, 0x78,
164164
0x49, 0x2b, 0x35, 0xd1, 0x8b, 0x78, 0x45, 0x2b, 0x32, 0xd1, 0xff, 0xf7,
165165
0x23, 0xfd, 0x43, 0x2a, 0x2e, 0xd1, 0x4b, 0x78, 0x46, 0x2b, 0x2b, 0xd1,
166-
0x32, 0x00, 0x50, 0x4b, 0x8c, 0x78, 0x83, 0xcb, 0x83, 0xc2, 0x00, 0xf0,
167-
0x17, 0xfd, 0x02, 0xa9, 0x30, 0x00, 0x00, 0xf0, 0xa3, 0xfd, 0x33, 0x22,
166+
0x2a, 0x00, 0x50, 0x4b, 0x8c, 0x78, 0x83, 0xcb, 0x83, 0xc2, 0x00, 0xf0,
167+
0x17, 0xfd, 0x02, 0xa9, 0x28, 0x00, 0x00, 0xf0, 0xa3, 0xfd, 0x33, 0x22,
168168
0x07, 0xab, 0x62, 0x40, 0x1c, 0x70, 0x9c, 0x70, 0x1c, 0x71, 0x9c, 0x71,
169169
0x5a, 0x70, 0xda, 0x70, 0x5a, 0x71, 0xda, 0x71, 0x07, 0x9a, 0x08, 0x9b,
170170
0x00, 0x99, 0x01, 0x20, 0x00, 0xf0, 0x50, 0xfd, 0x01, 0x22, 0x43, 0x4b,
171-
0x1a, 0x70, 0x00, 0x23, 0x2b, 0x70, 0x00, 0xf0, 0x0d, 0xfd, 0xbf, 0xf3,
171+
0x1a, 0x70, 0x00, 0x23, 0x33, 0x70, 0x00, 0xf0, 0x0d, 0xfd, 0xbf, 0xf3,
172172
0x4f, 0x8f, 0x40, 0x4b, 0x40, 0x4a, 0xda, 0x60, 0xbf, 0xf3, 0x4f, 0x8f,
173173
0xc0, 0x46, 0xfd, 0xe7, 0x01, 0x9b, 0x1b, 0x78, 0x74, 0x2b, 0x42, 0xd0,
174174
0x07, 0xd8, 0x3c, 0x2b, 0x25, 0xd0, 0x6c, 0x2b, 0x49, 0xd0, 0x00, 0x22,
175175
0x33, 0x4b, 0x1a, 0x70, 0xa3, 0xe7, 0x76, 0x2b, 0x37, 0xd0, 0x7c, 0x2b,
176176
0xf7, 0xd1, 0x53, 0x1e, 0x9a, 0x41, 0xa0, 0x20, 0x08, 0x21, 0xd2, 0xb2,
177-
0xc0, 0x05, 0x00, 0xf0, 0x6b, 0xfe, 0x2d, 0x4d, 0xa0, 0x20, 0x6a, 0x78,
177+
0xc0, 0x05, 0x00, 0xf0, 0x6b, 0xfe, 0x2d, 0x4e, 0xa0, 0x20, 0x72, 0x78,
178178
0x10, 0x21, 0x53, 0x1e, 0x9a, 0x41, 0xc0, 0x05, 0xd2, 0xb2, 0x00, 0xf0,
179-
0x61, 0xfe, 0xaa, 0x78, 0xa0, 0x20, 0x53, 0x1e, 0x9a, 0x41, 0x20, 0x21,
179+
0x61, 0xfe, 0xb2, 0x78, 0xa0, 0x20, 0x53, 0x1e, 0x9a, 0x41, 0x20, 0x21,
180180
0xd2, 0xb2, 0xc0, 0x05, 0x00, 0xf0, 0x58, 0xfe, 0xdb, 0xe7, 0x04, 0x22,
181-
0x07, 0xa8, 0x02, 0xf0, 0xe9, 0xfa, 0x04, 0x22, 0x25, 0x49, 0x30, 0x00,
181+
0x07, 0xa8, 0x02, 0xf0, 0xe9, 0xfa, 0x04, 0x22, 0x25, 0x49, 0x28, 0x00,
182182
0x02, 0xf0, 0xe4, 0xfa, 0x00, 0xf0, 0x6e, 0xf9, 0x09, 0x9c, 0x07, 0x99,
183183
0x04, 0x19, 0x22, 0x48, 0xff, 0xf7, 0x2e, 0xfc, 0x21, 0x4b, 0x00, 0x21,
184184
0xd8, 0x62, 0x40, 0x08, 0x58, 0x63, 0x16, 0x48, 0x02, 0xf0, 0x9a, 0xf9,
185-
0xc1, 0xe7, 0x1e, 0x4d, 0x02, 0x22, 0x28, 0x00, 0x02, 0xf0, 0xce, 0xfa,
186-
0x11, 0x4b, 0x1b, 0x68, 0x5a, 0x6a, 0x2b, 0x88, 0x9b, 0x18, 0x2b, 0x80,
185+
0xc1, 0xe7, 0x02, 0x22, 0x28, 0x00, 0x02, 0xf0, 0xcf, 0xfa, 0x12, 0x4b,
186+
0x2a, 0x88, 0x1b, 0x68, 0x59, 0x6a, 0x1a, 0x4b, 0x52, 0x1a, 0x1a, 0x80,
187187
0xb5, 0xe7, 0x08, 0x00, 0xff, 0xf7, 0xbe, 0xfc, 0xb1, 0xe7, 0xc0, 0x46,
188188
0x00, 0x10, 0x02, 0x40, 0x00, 0x08, 0x00, 0x50, 0x00, 0x14, 0x00, 0x50,
189189
0x00, 0x38, 0x00, 0x08, 0x2c, 0x00, 0x00, 0x20, 0x2d, 0x00, 0x00, 0x20,

0 commit comments

Comments
 (0)