@@ -182,7 +182,7 @@ class ModulinoJoystick : public Module {
182
182
return (last_status[1 ] < 128 ? (128 - last_status[1 ]) : -(last_status[1 ] - 128 ));
183
183
}
184
184
virtual uint8_t discover () {
185
- for (int i = 0 ; i < match. size ( ); i++) {
185
+ for (unsigned int i = 0 ; i < sizeof ( match)/ sizeof (match[ 0 ] ); i++) {
186
186
if (scan (match[i])) {
187
187
return match[i];
188
188
}
@@ -192,7 +192,7 @@ class ModulinoJoystick : public Module {
192
192
private:
193
193
uint8_t last_status[3 ];
194
194
protected:
195
- std::vector< uint8_t > match = { 0x58 }; // same as fw main.c
195
+ uint8_t match[ 1 ] = { 0x58 }; // same as fw main.c
196
196
};
197
197
198
198
class ModulinoBuzzer : public Module {
@@ -239,18 +239,17 @@ class ModulinoVibro : public Module {
239
239
write (buf, 8 );
240
240
}
241
241
virtual uint8_t discover () {
242
- for (int i = 0 ; i < match. size ( ); i++) {
242
+ for (unsigned int i = 0 ; i < sizeof ( match)/ sizeof (match[ 0 ] ); i++) {
243
243
if (scan (match[i])) {
244
244
return match[i];
245
245
}
246
246
}
247
247
return 0xFF ;
248
248
}
249
249
protected:
250
- std::vector< uint8_t > match = { 0x70 }; // same as fw main.c
250
+ uint8_t match[ 1 ] = { 0x70 }; // same as fw main.c
251
251
};
252
252
253
-
254
253
class ModulinoColor {
255
254
public:
256
255
ModulinoColor (uint8_t r, uint8_t g, uint8_t b)
@@ -582,4 +581,51 @@ class ModulinoDistance : public Module {
582
581
_distance_api* api = nullptr ;
583
582
};
584
583
585
- #endif
584
+ class ModulinoRelay : public Module {
585
+ public:
586
+ ModulinoRelay (uint8_t address = 0xFF )
587
+ : Module(address, " RELAY" ) {}
588
+ bool update () {
589
+ uint8_t buf[3 ];
590
+ auto res = read ((uint8_t *)buf, 3 );
591
+ auto ret = res && (buf[0 ] != last_status[0 ] || buf[1 ] != last_status[1 ] || buf[2 ] != last_status[2 ]);
592
+ last_status[0 ] = buf[0 ];
593
+ last_status[1 ] = buf[1 ];
594
+ last_status[2 ] = buf[2 ];
595
+ return ret;
596
+ }
597
+ void on () {
598
+ uint8_t buf[3 ];
599
+ buf[0 ] = 1 ;
600
+ buf[1 ] = 0 ;
601
+ buf[2 ] = 0 ;
602
+ write ((uint8_t *)buf, 3 );
603
+ return ;
604
+ }
605
+ void off () {
606
+ uint8_t buf[3 ];
607
+ buf[0 ] = 0 ;
608
+ buf[1 ] = 0 ;
609
+ buf[2 ] = 0 ;
610
+ write ((uint8_t *)buf, 3 );
611
+ return ;
612
+ }
613
+ bool getStatus () {
614
+ update ();
615
+ return last_status[0 ];
616
+ }
617
+ virtual uint8_t discover () {
618
+ for (unsigned int i = 0 ; i < sizeof (match)/sizeof (match[0 ]); i++) {
619
+ if (scan (match[i])) {
620
+ return match[i];
621
+ }
622
+ }
623
+ return 0xFF ;
624
+ }
625
+ private:
626
+ bool last_status[3 ];
627
+ protected:
628
+ uint8_t match[1 ] = { 0x28 }; // same as fw main.c
629
+ };
630
+
631
+ #endif // ARDUINO_LIBRARIES_MODULINO_H
0 commit comments