@@ -182,7 +182,7 @@ class ModulinoJoystick : public Module {
182182 return (last_status[1 ] < 128 ? (128 - last_status[1 ]) : -(last_status[1 ] - 128 ));
183183 }
184184 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++) {
186186 if (scan (match[i])) {
187187 return match[i];
188188 }
@@ -192,7 +192,7 @@ class ModulinoJoystick : public Module {
192192private:
193193 uint8_t last_status[3 ];
194194protected:
195- std::vector< uint8_t > match = { 0x58 }; // same as fw main.c
195+ uint8_t match[ 1 ] = { 0x58 }; // same as fw main.c
196196};
197197
198198class ModulinoBuzzer : public Module {
@@ -239,18 +239,17 @@ class ModulinoVibro : public Module {
239239 write (buf, 8 );
240240 }
241241 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++) {
243243 if (scan (match[i])) {
244244 return match[i];
245245 }
246246 }
247247 return 0xFF ;
248248 }
249249protected:
250- std::vector< uint8_t > match = { 0x70 }; // same as fw main.c
250+ uint8_t match[ 1 ] = { 0x70 }; // same as fw main.c
251251};
252252
253-
254253class ModulinoColor {
255254public:
256255 ModulinoColor (uint8_t r, uint8_t g, uint8_t b)
@@ -582,4 +581,51 @@ class ModulinoDistance : public Module {
582581 _distance_api* api = nullptr ;
583582};
584583
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