@@ -206,7 +206,7 @@ class ModulinoJoystick : public Module {
206206 return (last_status[1 ] < 128 ? (128 - last_status[1 ]) : -(last_status[1 ] - 128 ));
207207 }
208208 virtual uint8_t discover () {
209- for (int i = 0 ; i < match. size ( ); i++) {
209+ for (unsigned int i = 0 ; i < sizeof ( match)/ sizeof (match[ 0 ] ); i++) {
210210 if (scan (match[i])) {
211211 return match[i];
212212 }
@@ -216,7 +216,7 @@ class ModulinoJoystick : public Module {
216216private:
217217 uint8_t last_status[3 ];
218218protected:
219- std::vector< uint8_t > match = { 0x58 }; // same as fw main.c
219+ uint8_t match[ 1 ] = { 0x58 }; // same as fw main.c
220220};
221221
222222class ModulinoBuzzer : public Module {
@@ -263,18 +263,17 @@ class ModulinoVibro : public Module {
263263 write (buf, 8 );
264264 }
265265 virtual uint8_t discover () {
266- for (int i = 0 ; i < match. size ( ); i++) {
266+ for (unsigned int i = 0 ; i < sizeof ( match)/ sizeof (match[ 0 ] ); i++) {
267267 if (scan (match[i])) {
268268 return match[i];
269269 }
270270 }
271271 return 0xFF ;
272272 }
273273protected:
274- std::vector< uint8_t > match = { 0x70 }; // same as fw main.c
274+ uint8_t match[ 1 ] = { 0x70 }; // same as fw main.c
275275};
276276
277-
278277class ModulinoColor {
279278public:
280279 ModulinoColor (uint8_t r, uint8_t g, uint8_t b)
@@ -640,4 +639,51 @@ class ModulinoDistance : public Module {
640639 _distance_api* api = nullptr ;
641640};
642641
643- #endif
642+ class ModulinoRelay : public Module {
643+ public:
644+ ModulinoRelay (uint8_t address = 0xFF )
645+ : Module(address, " RELAY" ) {}
646+ bool update () {
647+ uint8_t buf[3 ];
648+ auto res = read ((uint8_t *)buf, 3 );
649+ auto ret = res && (buf[0 ] != last_status[0 ] || buf[1 ] != last_status[1 ] || buf[2 ] != last_status[2 ]);
650+ last_status[0 ] = buf[0 ];
651+ last_status[1 ] = buf[1 ];
652+ last_status[2 ] = buf[2 ];
653+ return ret;
654+ }
655+ void on () {
656+ uint8_t buf[3 ];
657+ buf[0 ] = 1 ;
658+ buf[1 ] = 0 ;
659+ buf[2 ] = 0 ;
660+ write ((uint8_t *)buf, 3 );
661+ return ;
662+ }
663+ void off () {
664+ uint8_t buf[3 ];
665+ buf[0 ] = 0 ;
666+ buf[1 ] = 0 ;
667+ buf[2 ] = 0 ;
668+ write ((uint8_t *)buf, 3 );
669+ return ;
670+ }
671+ bool getStatus () {
672+ update ();
673+ return last_status[0 ];
674+ }
675+ virtual uint8_t discover () {
676+ for (unsigned int i = 0 ; i < sizeof (match)/sizeof (match[0 ]); i++) {
677+ if (scan (match[i])) {
678+ return match[i];
679+ }
680+ }
681+ return 0xFF ;
682+ }
683+ private:
684+ bool last_status[3 ];
685+ protected:
686+ uint8_t match[1 ] = { 0x28 }; // same as fw main.c
687+ };
688+
689+ #endif // ARDUINO_LIBRARIES_MODULINO_H
0 commit comments