Archived
Template
1
0

small example with struct for multi params in callbacks

This commit is contained in:
Rémi Heredero 2023-07-13 19:50:31 +02:00
parent defd961017
commit 2281778915
2 changed files with 34 additions and 0 deletions

View File

@ -71,6 +71,9 @@ BLINKER* blR() {
BLINKER* blB() {
return &theFactory.blB_;
}
BLINKER* blT() {
return &theFactory.blT_;
}
APP* app() {
return &theFactory.app_;
@ -116,9 +119,15 @@ void Factory_init() {
BLINKER_init(blL());
BLINKER_init(blR());
BLINKER_init(blB());
BLINKER_init(blT());
APP_init(app());
theFactory.bar.timeOn = 1000;
theFactory.bar.timeOff = 500;
theFactory.bar.n = 5;
}
void warningBlink(void* on_){
@ -134,6 +143,16 @@ void warningBlink(void* on_){
}
}
void toggleBlink(void* st_){
foo* st = (foo*)st_;
uint16_t timeOn= st->timeOn;
uint16_t timeOff = st->timeOff;
uint8_t n = st->n;
BLINKER_setTimeOn(blT(), timeOn);
BLINKER_setTimeOff(blT(), timeOff);
BLINKER_setNumberOfBlink(blT(), n);
}
//connect objects if required
void Factory_build() {
@ -145,6 +164,9 @@ void Factory_build() {
BUTTON_onReleased(b2(), &CLICK_HANDLER_emitPbrelease, ch2());
BUTTON_onReleased(b3(), &CLICK_HANDLER_emitPbrelease, ch3());
CLICK_HANDLER_onSingle_click(ch2(), &BLINKER_emitBlinkN, blT());
CLICK_HANDLER_onLong_click(ch2(), &toggleBlink, &theFactory.bar);
BLINKER_onOn(blL(), &LED_on, l1());
BLINKER_onOff(blL(), &LED_off, l1());
BLINKER_onOn(blR(), &LED_on, l10());
@ -152,6 +174,8 @@ void Factory_build() {
BLINKER_onOn(blB(), &warningBlink, true);
BLINKER_onOff(blB(), &warningBlink, false);
BLINKER_onOn(blT(), &LED_on, l5());
BLINKER_onOff(blT(), &LED_off, l5());
}
//start all state machines
@ -165,5 +189,6 @@ void Factory_start() {
BLINKER_startBehaviour(blL());
BLINKER_startBehaviour(blR());
BLINKER_startBehaviour(blB());
BLINKER_startBehaviour(blT());
APP_startBehaviour(app());
}

View File

@ -16,6 +16,12 @@
#include "../middleware/blinker.h"
#include "app.h"
typedef struct {
uint16_t timeOn;
uint16_t timeOff;
uint8_t n;
} foo;
typedef struct {
LED l1_;
LED l2_;
@ -36,7 +42,9 @@ typedef struct {
BLINKER blL_;
BLINKER blR_;
BLINKER blB_;
BLINKER blT_;
APP app_;
foo bar;
} Factory;
@ -67,6 +75,7 @@ CLICK_HANDLER* ch3();
BLINKER* blL();
BLINKER* blR();
BLINKER* blB();
BLINKER* blT();
APP* app();