update blinker with XFTGenerator
This commit is contained in:
		@@ -46,8 +46,8 @@ void APP_init(APP* me){
 | 
				
			|||||||
    CLICK_HANDLER_onLong_click(ch1(), &longClick, me);
 | 
					    CLICK_HANDLER_onLong_click(ch1(), &longClick, me);
 | 
				
			||||||
    CLICK_HANDLER_onLong_click(ch3(), &longClick, me);
 | 
					    CLICK_HANDLER_onLong_click(ch3(), &longClick, me);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    BLINKER_setFinished(blL(), BLINKER_defineCallBack(&endL, me));
 | 
					    BLINKER_onFinished(blL(), &endL, me);
 | 
				
			||||||
    BLINKER_setFinished(blR(), BLINKER_defineCallBack(&endR, me));
 | 
					    BLINKER_onFinished(blR(), &endR, me);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -71,34 +71,34 @@ bool APP_processEvent(Event* ev){
 | 
				
			|||||||
        case STAP_WAIT:
 | 
					        case STAP_WAIT:
 | 
				
			||||||
            if(evid == evAPclickL) {
 | 
					            if(evid == evAPclickL) {
 | 
				
			||||||
                me->state = STAP_BLINKER_L;
 | 
					                me->state = STAP_BLINKER_L;
 | 
				
			||||||
                BLINKER_blink(blL());
 | 
					                BLINKER_emitBlink(blL(), 0);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if(evid == evAPclickLn) {
 | 
					            if(evid == evAPclickLn) {
 | 
				
			||||||
                me->state = STAP_BLINKER_L;
 | 
					                me->state = STAP_BLINKER_L;
 | 
				
			||||||
                BLINKER_blinkN(blL());
 | 
					                BLINKER_emitBlinkN(blL(), 0);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if(evid == evAPclickR) {
 | 
					            if(evid == evAPclickR) {
 | 
				
			||||||
                me->state = STAP_BLINKER_R;
 | 
					                me->state = STAP_BLINKER_R;
 | 
				
			||||||
                BLINKER_blink(blR());
 | 
					                BLINKER_emitBlink(blR(), 0);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if(evid == evAPclickRn) {
 | 
					            if(evid == evAPclickRn) {
 | 
				
			||||||
                me->state = STAP_BLINKER_R;
 | 
					                me->state = STAP_BLINKER_R;
 | 
				
			||||||
                BLINKER_blinkN(blR());
 | 
					                BLINKER_emitBlinkN(blR(), 0);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if(evid == evAPlongClick) {
 | 
					            if(evid == evAPlongClick) {
 | 
				
			||||||
                me->state = STAP_BLINKER_W;
 | 
					                me->state = STAP_BLINKER_W;
 | 
				
			||||||
                BLINKER_blink(blB());
 | 
					                BLINKER_emitBlink(blB(), 0);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
        case STAP_BLINKER_L:
 | 
					        case STAP_BLINKER_L:
 | 
				
			||||||
            if(evid == evAPclickR){
 | 
					            if(evid == evAPclickR){
 | 
				
			||||||
                me->state = STAP_BLINKER_LR;
 | 
					                me->state = STAP_BLINKER_LR;
 | 
				
			||||||
                BLINKER_blink(blR());
 | 
					                BLINKER_emitBlink(blR(), 0);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if(evid == evAPclickRn){
 | 
					            if(evid == evAPclickRn){
 | 
				
			||||||
                me->state = STAP_BLINKER_LR;
 | 
					                me->state = STAP_BLINKER_LR;
 | 
				
			||||||
                BLINKER_blinkN(blR());
 | 
					                BLINKER_emitBlinkN(blR(), 0);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if(evid == evAPclickL) {
 | 
					            if(evid == evAPclickL) {
 | 
				
			||||||
                me->state = STAP_WAIT;
 | 
					                me->state = STAP_WAIT;
 | 
				
			||||||
@@ -110,18 +110,18 @@ bool APP_processEvent(Event* ev){
 | 
				
			|||||||
            if(evid == evAPlongClick) {
 | 
					            if(evid == evAPlongClick) {
 | 
				
			||||||
                me->state = STAP_BLINKER_W;
 | 
					                me->state = STAP_BLINKER_W;
 | 
				
			||||||
                BLINKER_endBlink(blL());
 | 
					                BLINKER_endBlink(blL());
 | 
				
			||||||
                BLINKER_blink(blB());
 | 
					                BLINKER_emitBlink(blB(), 0);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
        case STAP_BLINKER_R:
 | 
					        case STAP_BLINKER_R:
 | 
				
			||||||
            if(evid == evAPclickL){
 | 
					            if(evid == evAPclickL){
 | 
				
			||||||
                me->state = STAP_BLINKER_LR;
 | 
					                me->state = STAP_BLINKER_LR;
 | 
				
			||||||
                BLINKER_blink(blL());
 | 
					                BLINKER_emitBlink(blL(), 0);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if(evid == evAPclickLn){
 | 
					            if(evid == evAPclickLn){
 | 
				
			||||||
                me->state = STAP_BLINKER_LR;
 | 
					                me->state = STAP_BLINKER_LR;
 | 
				
			||||||
                BLINKER_blinkN(blL());
 | 
					                BLINKER_emitBlinkN(blL(), 0);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if(evid == evAPclickR) {
 | 
					            if(evid == evAPclickR) {
 | 
				
			||||||
                me->state = STAP_WAIT;
 | 
					                me->state = STAP_WAIT;
 | 
				
			||||||
@@ -133,7 +133,7 @@ bool APP_processEvent(Event* ev){
 | 
				
			|||||||
            if(evid == evAPlongClick) {
 | 
					            if(evid == evAPlongClick) {
 | 
				
			||||||
                me->state = STAP_BLINKER_W;
 | 
					                me->state = STAP_BLINKER_W;
 | 
				
			||||||
                BLINKER_endBlink(blR());
 | 
					                BLINKER_endBlink(blR());
 | 
				
			||||||
                BLINKER_blink(blB());
 | 
					                BLINKER_emitBlink(blB(), 0);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
@@ -156,7 +156,8 @@ bool APP_processEvent(Event* ev){
 | 
				
			|||||||
                me->state = STAP_BLINKER_W;
 | 
					                me->state = STAP_BLINKER_W;
 | 
				
			||||||
                BLINKER_endBlink(blL());
 | 
					                BLINKER_endBlink(blL());
 | 
				
			||||||
                BLINKER_endBlink(blR());
 | 
					                BLINKER_endBlink(blR());
 | 
				
			||||||
                BLINKER_blink(blB());
 | 
					                BLINKER_emitBlink(blB(), 0);
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -145,12 +145,12 @@ void Factory_build() {
 | 
				
			|||||||
    BUTTON_onReleased(b2(), &CLICK_HANDLER_emitPbrelease, ch2());
 | 
					    BUTTON_onReleased(b2(), &CLICK_HANDLER_emitPbrelease, ch2());
 | 
				
			||||||
    BUTTON_onReleased(b3(), &CLICK_HANDLER_emitPbrelease, ch3());
 | 
					    BUTTON_onReleased(b3(), &CLICK_HANDLER_emitPbrelease, ch3());
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    BLINKER_setTurnOn(blL(), BLINKER_defineCallBack(&LED_on, l1()));
 | 
					    BLINKER_onOn(blL(), &LED_on, l1());
 | 
				
			||||||
    BLINKER_setTurnOff(blL(), BLINKER_defineCallBack(&LED_off, l1()));
 | 
					    BLINKER_onOff(blL(), &LED_off, l1());
 | 
				
			||||||
    BLINKER_setTurnOn(blR(), BLINKER_defineCallBack(&LED_on, l10()));
 | 
					    BLINKER_onOn(blR(), &LED_on, l10());
 | 
				
			||||||
    BLINKER_setTurnOff(blR(), BLINKER_defineCallBack(&LED_off, l10()));
 | 
					    BLINKER_onOff(blR(), &LED_off, l10());
 | 
				
			||||||
    BLINKER_setTurnOn(blB(), BLINKER_defineCallBack(&warningBlink, true));
 | 
					    BLINKER_onOn(blB(), &warningBlink, true);
 | 
				
			||||||
    BLINKER_setTurnOff(blB(), BLINKER_defineCallBack(&warningBlink, false));
 | 
					    BLINKER_onOff(blB(), &warningBlink, false);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -162,8 +162,8 @@ void Factory_start() {
 | 
				
			|||||||
    CLICK_HANDLER_startBehaviour(ch1());
 | 
					    CLICK_HANDLER_startBehaviour(ch1());
 | 
				
			||||||
    CLICK_HANDLER_startBehaviour(ch2());
 | 
					    CLICK_HANDLER_startBehaviour(ch2());
 | 
				
			||||||
    CLICK_HANDLER_startBehaviour(ch3());
 | 
					    CLICK_HANDLER_startBehaviour(ch3());
 | 
				
			||||||
    BLINKER_starBehaviour(blL());
 | 
					    BLINKER_startBehaviour(blL());
 | 
				
			||||||
    BLINKER_starBehaviour(blR());
 | 
					    BLINKER_startBehaviour(blR());
 | 
				
			||||||
    BLINKER_starBehaviour(blB());
 | 
					    BLINKER_startBehaviour(blB());
 | 
				
			||||||
    APP_startBehaviour(app());
 | 
					    APP_startBehaviour(app());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,155 +1,189 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 * @author R<EFBFBD>mi Heredero (remi@heredero.ch)
 | 
					 * @author Rémi Heredero
 | 
				
			||||||
 * @version. 1.0.0
 | 
					 * @version 1.0.0
 | 
				
			||||||
 * @date 2023-06-15
 | 
					 * @date July 2023
 | 
				
			||||||
 | 
					 * @file blinker.c
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "blinker.h"
 | 
					#include "blinker.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BLINKER_init(BLINKER* me){
 | 
				
			||||||
void BLINKER_init(BLINKER* me) {
 | 
					 | 
				
			||||||
    me->state = STBL_INIT;
 | 
					    me->state = STBL_INIT;
 | 
				
			||||||
    me->tON = 500;
 | 
					    me->timeOn = 500;
 | 
				
			||||||
    me->tOFF = 500;
 | 
					    me->timeOff = 500;
 | 
				
			||||||
    me->nBlink = 3;
 | 
					    me->numberOfBlink = 3;
 | 
				
			||||||
    me->nBlinkIsOn = false;
 | 
					    me->nBlinkIsOn = false;
 | 
				
			||||||
    me->remainBlinks = 3;
 | 
					    me->remainBlinks = 3;
 | 
				
			||||||
    me->turnOn.fCallBack = NULL;
 | 
					    me->wait.f = NULL;
 | 
				
			||||||
    me->turnOff.fCallBack = NULL;
 | 
					    me->on.f = NULL;
 | 
				
			||||||
 | 
					    me->off.f = NULL;
 | 
				
			||||||
 | 
					    me->finished.f = NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
blinkerCallBack BLINKER_defineCallBack(fBlinkerCallBack f, void* param) {
 | 
					void BLINKER_startBehaviour(BLINKER* me) {
 | 
				
			||||||
    blinkerCallBack c;
 | 
					 | 
				
			||||||
    c.fCallBack = f;
 | 
					 | 
				
			||||||
    c.param = param;
 | 
					 | 
				
			||||||
    return c;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void BLINKER_starBehaviour(BLINKER* me) {
 | 
					 | 
				
			||||||
    POST(me, &BLINKER_processEvent, evBLinit, 0, 0);
 | 
					    POST(me, &BLINKER_processEvent, evBLinit, 0, 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void BLINKER_setTurnOn(BLINKER* me, blinkerCallBack callBack) {
 | 
					 | 
				
			||||||
    me->turnOn = callBack;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void BLINKER_setTurnOff(BLINKER* me, blinkerCallBack callBack) {
 | 
					 | 
				
			||||||
    me->turnOff = callBack;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void BLINKER_setFinished(BLINKER* me, blinkerCallBack callBack){
 | 
					 | 
				
			||||||
    me->finished = callBack;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void BLINKER_defineNblink(BLINKER* me, uint8_t n){
 | 
					 | 
				
			||||||
    me->nBlink = n;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void BLINKER_setTimeOn(BLINKER*me, uint16_t t) {
 | 
					 | 
				
			||||||
    me->tON = t;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void BLINKER_setTimeOff(BLINKER*me, uint16_t t) {
 | 
					 | 
				
			||||||
    me->tOFF = t;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void BLINKER_blinkN(BLINKER* me){
 | 
					 | 
				
			||||||
    POST(me, &BLINKER_processEvent, evBLblinkN, 0, 0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void BLINKER_blink(BLINKER* me){
 | 
					 | 
				
			||||||
    POST(me, &BLINKER_processEvent, evBLblink, 0, 0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool BLINKER_processEvent(Event* ev) {
 | 
					bool BLINKER_processEvent(Event* ev) {
 | 
				
			||||||
    bool processed = false;
 | 
					    bool processed = false;
 | 
				
			||||||
    BLINKER* me = (BLINKER*) Event_getTarget(ev);
 | 
					    BLINKER* me = (BLINKER*)Event_getTarget(ev);
 | 
				
			||||||
    BLINKER_STATES oldState = me->state;
 | 
					    BLINKER_STATES oldState = me->state;
 | 
				
			||||||
    evIDT evid = Event_getId(ev);
 | 
					    evIDT evid = Event_getId(ev);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    switch(me->state) {
 | 
					    switch (me->state) {        // onState
 | 
				
			||||||
        case STBL_INIT:
 | 
					        case STBL_INIT:
 | 
				
			||||||
            if(evid == evBLinit) {
 | 
					            if (ev->id == evBLinit) {
 | 
				
			||||||
                me->state = STBL_WAIT; 
 | 
					                me->state = STBL_WAIT;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
            
 | 
					        
 | 
				
			||||||
        case STBL_WAIT:
 | 
					        case STBL_WAIT:
 | 
				
			||||||
            me->remainBlinks = me->nBlink;
 | 
					            me->remainBlinks = me->numberOfBlink;
 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            if(evid == evBLblinkN) {
 | 
					            if(evid == evBLblinkN) {
 | 
				
			||||||
                me->state = STBL_ON;
 | 
					                me->state = STBL_ON;
 | 
				
			||||||
                me->nBlinkIsOn = true;
 | 
					                me->nBlinkIsOn = true;
 | 
				
			||||||
                POST(me, &BLINKER_processEvent, evBLtimer, me->tON, 0);
 | 
					                BLINKER_emitTimer(me, me->timeOn);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            
 | 
					            if(evid == evBLblink) {
 | 
				
			||||||
            if(evid==evBLblink) {
 | 
					 | 
				
			||||||
                me->state = STBL_ON;
 | 
					                me->state = STBL_ON;
 | 
				
			||||||
                me->nBlinkIsOn = false;
 | 
					                me->nBlinkIsOn = false;
 | 
				
			||||||
                POST(me, &BLINKER_processEvent, evBLtimer, me->tON, 0);
 | 
					                BLINKER_emitTimer(me, me->timeOn);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
            
 | 
					        
 | 
				
			||||||
        case STBL_ON:
 | 
					        case STBL_ON:
 | 
				
			||||||
            if(me->nBlinkIsOn) me->remainBlinks--;
 | 
					            if (me->nBlinkIsOn) {
 | 
				
			||||||
            
 | 
					                me->remainBlinks--;
 | 
				
			||||||
            if(evid == evBLtimer) {
 | 
					            }
 | 
				
			||||||
                me->state = STBL_OFF;
 | 
					            if (evid == evBLtimer) {
 | 
				
			||||||
                POST(me, &BLINKER_processEvent, evBLtimer, me->tOFF, 0);
 | 
					                me->state = STBL_OFF;
 | 
				
			||||||
 | 
					                BLINKER_emitTimer(me, me->timeOff);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
            
 | 
					        
 | 
				
			||||||
        case STBL_OFF:
 | 
					        case STBL_OFF:
 | 
				
			||||||
            
 | 
					            if (evid == evBLtimer) {
 | 
				
			||||||
            if(evid == evBLtimer) {
 | 
					                if (me->remainBlinks == 0) {
 | 
				
			||||||
                if(me->remainBlinks == 0) {
 | 
					 | 
				
			||||||
                    me->state = STBL_WAIT;
 | 
					                    me->state = STBL_WAIT;
 | 
				
			||||||
                    if(me->finished.fCallBack != NULL) me->finished.fCallBack(me->finished.param);
 | 
					                    if (me->finished.f != NULL) {
 | 
				
			||||||
 | 
					                        me->finished.f(me->finished.p);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    me->state = STBL_ON;
 | 
					                    me->state = STBL_ON;
 | 
				
			||||||
                    POST(me, &BLINKER_processEvent, evBLtimer, me->tON, 0);
 | 
					                    BLINKER_emitTimer(me, me->timeOn);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    if(oldState != me->state) {
 | 
					    if(oldState != me->state){
 | 
				
			||||||
        switch(me->state) { // on entry
 | 
					        switch (oldState) {     // onExit
 | 
				
			||||||
            case STBL_INIT:
 | 
					            case STBL_INIT:
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
            case STBL_WAIT:
 | 
					            case STBL_WAIT:
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
            case STBL_ON:
 | 
					            case STBL_ON:
 | 
				
			||||||
                if(me->turnOn.fCallBack != NULL) me->turnOn.fCallBack(me->turnOn.param);
 | 
					 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
            case STBL_OFF:
 | 
					            case STBL_OFF:
 | 
				
			||||||
                if(me->turnOff.fCallBack != NULL) me->turnOff.fCallBack(me->turnOff.param);
 | 
					 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        switch (me->state) {    // onEntry
 | 
				
			||||||
 | 
					            case STBL_INIT:
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            case STBL_WAIT:
 | 
				
			||||||
 | 
					                if (me->wait.f != NULL) {
 | 
				
			||||||
 | 
					                    me->wait.f(me->wait.p);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            case STBL_ON:
 | 
				
			||||||
 | 
					                if (me->on.f != NULL) {
 | 
				
			||||||
 | 
					                    me->on.f(me->on.p);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            case STBL_OFF:
 | 
				
			||||||
 | 
					                if (me->off.f != NULL) {
 | 
				
			||||||
 | 
					                    me->off.f(me->off.p);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        processed = true;
 | 
					        processed = true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return processed;
 | 
					    return processed;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*************
 | 
				
			||||||
 | 
					 * Callbacks *
 | 
				
			||||||
 | 
					 *************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BLINKER_onWait(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p) {
 | 
				
			||||||
 | 
					    me->wait.f = f;
 | 
				
			||||||
 | 
					    me->wait.p = p;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BLINKER_onOn(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p) {
 | 
				
			||||||
 | 
					    me->on.f = f;
 | 
				
			||||||
 | 
					    me->on.p = p;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BLINKER_onOff(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p) {
 | 
				
			||||||
 | 
					    me->off.f = f;
 | 
				
			||||||
 | 
					    me->off.p = p;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BLINKER_onFinished(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p) {
 | 
				
			||||||
 | 
					    me->finished.f = f;
 | 
				
			||||||
 | 
					    me->finished.p = p;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/************
 | 
				
			||||||
 | 
					 * EMITTERS *
 | 
				
			||||||
 | 
					 ************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BLINKER_emitBlink(BLINKER* me, uint16_t t) {
 | 
				
			||||||
 | 
					    POST(me, &BLINKER_processEvent, evBLblink, t, 0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BLINKER_emitBlinkN(BLINKER* me, uint16_t t) {
 | 
				
			||||||
 | 
					    POST(me, &BLINKER_processEvent, evBLblinkN, t, 0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BLINKER_emitTimer(BLINKER* me, uint16_t t) {
 | 
				
			||||||
 | 
					    POST(me, &BLINKER_processEvent, evBLtimer, t, 0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***********
 | 
				
			||||||
 | 
					 * SETTERS *
 | 
				
			||||||
 | 
					 ***********/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BLINKER_setTimeOn(BLINKER* me, uint16_t v) {
 | 
				
			||||||
 | 
					    me->timeOn = v;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BLINKER_setTimeOff(BLINKER* me, uint16_t v) {
 | 
				
			||||||
 | 
					    me->timeOff = v;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BLINKER_setNumberOfBlink(BLINKER* me, uint8_t v) {
 | 
				
			||||||
 | 
					    me->numberOfBlink = v;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BLINKER_setNBlinkIsOn(BLINKER* me, bool v) {
 | 
				
			||||||
 | 
					    me->nBlinkIsOn = v;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BLINKER_setRemainBlinks(BLINKER* me, uint8_t v) {
 | 
				
			||||||
 | 
					    me->remainBlinks = v;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void BLINKER_endBlink(BLINKER* me) {
 | 
					void BLINKER_endBlink(BLINKER* me) {
 | 
				
			||||||
    me->remainBlinks = 0;
 | 
					    me->remainBlinks = 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
void BLINKER_toggle(BLINKER* me){
 | 
					 | 
				
			||||||
    switch(me->state) {
 | 
					 | 
				
			||||||
        case STBL_WAIT:
 | 
					 | 
				
			||||||
            BLINKER_blink(me);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case STBL_OFF:
 | 
					 | 
				
			||||||
            BLINKER_endBlink(me);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case STBL_ON:
 | 
					 | 
				
			||||||
            BLINKER_endBlink(me);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,11 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 * @author R<EFBFBD>mi Heredero (remi@heredero.ch)
 | 
					 * @author Rémi Heredero
 | 
				
			||||||
 * @version 1.0.0
 | 
					 * @version 1.0.0
 | 
				
			||||||
 * @date 2023-06-15
 | 
					 * @date July 2023
 | 
				
			||||||
 | 
					 * @file blinker.h
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef BLINKER_H
 | 
					#ifndef BLINKER_H
 | 
				
			||||||
#define	BLINKER_H
 | 
					#define BLINKER_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "../xf/xf.h"
 | 
					#include "../xf/xf.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -20,116 +20,148 @@ typedef enum {
 | 
				
			|||||||
    evBLinit = 200,
 | 
					    evBLinit = 200,
 | 
				
			||||||
    evBLblink,
 | 
					    evBLblink,
 | 
				
			||||||
    evBLblinkN,
 | 
					    evBLblinkN,
 | 
				
			||||||
    evBLtimer,
 | 
					    evBLtimer
 | 
				
			||||||
    evEndBlink
 | 
					 | 
				
			||||||
} BLINKER_EVENTS;
 | 
					} BLINKER_EVENTS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef void (*fBlinkerCallBack)(void*);
 | 
					typedef void (*BLINKER_CALLBACK_FUNCTION)(void*);
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
    fBlinkerCallBack fCallBack;
 | 
					    BLINKER_CALLBACK_FUNCTION f; // function
 | 
				
			||||||
    void* param;
 | 
					    void* p; // param(s)
 | 
				
			||||||
} blinkerCallBack;
 | 
					} BLINKER_CALLBACK;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
    BLINKER_STATES state; // Actual state
 | 
					    BLINKER_STATES state; //Actual state
 | 
				
			||||||
    uint16_t tON; // Time on
 | 
					    uint16_t timeOn; // Time on
 | 
				
			||||||
    uint16_t tOFF; // Time off
 | 
					    uint16_t timeOff; // Time off
 | 
				
			||||||
    uint8_t nBlink; // Number of blink for this blinker when start with blinkN
 | 
					    uint8_t numberOfBlink; // Number of blink for this blinker when start with blinkN
 | 
				
			||||||
    bool nBlinkIsOn; // If the nBlink way is enable
 | 
					    bool nBlinkIsOn; // If the nBlink way is enable
 | 
				
			||||||
    uint8_t remainBlinks; // Actual remain blink
 | 
					    uint8_t remainBlinks; // Actual remain blink
 | 
				
			||||||
    blinkerCallBack turnOn; // Callback for turnOn
 | 
					    BLINKER_CALLBACK wait;
 | 
				
			||||||
    blinkerCallBack turnOff; // Calbback for turnOff
 | 
					    BLINKER_CALLBACK on;
 | 
				
			||||||
    blinkerCallBack finished; // Callback for finish n blink
 | 
					    BLINKER_CALLBACK off;
 | 
				
			||||||
}BLINKER;
 | 
					    BLINKER_CALLBACK finished;
 | 
				
			||||||
 | 
					} BLINKER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Initialize the blinker
 | 
					 * Initialize the BLINKER
 | 
				
			||||||
 * @param me blinker itself
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void BLINKER_init(BLINKER* me);
 | 
					void BLINKER_init(BLINKER* me);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Define a callback for BLINKER    
 | 
					 * Start the BLINKER state machine
 | 
				
			||||||
 * @param f callback for BLINKER
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 * @param param callback paramater for ther function 
 | 
					 | 
				
			||||||
 * @return the callback struct
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
blinkerCallBack BLINKER_defineCallBack(fBlinkerCallBack f, void* param);
 | 
					void BLINKER_startBehaviour(BLINKER* me);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Start state machine of the BLINKER
 | 
					 * Process the event
 | 
				
			||||||
 * @param me the blinker itself
 | 
					 * @param ev the event to process
 | 
				
			||||||
 */
 | 
					 * @return true if the event is processed
 | 
				
			||||||
void BLINKER_starBehaviour(BLINKER* me);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Set callback event functions for turn on
 | 
					 | 
				
			||||||
 * @param me the blinker itself
 | 
					 | 
				
			||||||
 * @param callBack function when the blinker is on
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void BLINKER_setTurnOn(BLINKER* me, blinkerCallBack callBack);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Set callback event functions for turn off
 | 
					 | 
				
			||||||
 * @param me the blinker itself
 | 
					 | 
				
			||||||
 * @param callBack function when the blinker is off
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void BLINKER_setTurnOff(BLINKER* me, blinkerCallBack callBack);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Set callback event functions for when the blinker has blink n times
 | 
					 | 
				
			||||||
 * @param me the blinker itseld
 | 
					 | 
				
			||||||
 * @param callBack callBack function when the blinker has blink n times
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void BLINKER_setFinished(BLINKER* me, blinkerCallBack callBack);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * define number of time the Blinker have to blink
 | 
					 | 
				
			||||||
 * @param me the blinker itself
 | 
					 | 
				
			||||||
 * @param n number of blink
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void BLINKER_defineNblink(BLINKER* me, uint8_t n);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * define time to stay ON
 | 
					 | 
				
			||||||
 * @param me the blinker itself
 | 
					 | 
				
			||||||
 * @param t the time to stay ON
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void BLINKER_setTimeOn(BLINKER*me, uint16_t t);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * define time to stay OFF
 | 
					 | 
				
			||||||
 * @param me the blinker itself
 | 
					 | 
				
			||||||
 * @param t the time to stay OFF
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void BLINKER_setTimeOff(BLINKER*me, uint16_t t);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Start to blink n time
 | 
					 | 
				
			||||||
 * @param me the blinker itself
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void BLINKER_blinkN(BLINKER* me);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Start to blink indefinitely
 | 
					 | 
				
			||||||
 * @param me the blinker itself
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void BLINKER_blink(BLINKER* me);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * State machine of the BUTTON
 | 
					 | 
				
			||||||
 * @param ev event to process on the state machine
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
bool BLINKER_processEvent(Event* ev);
 | 
					bool BLINKER_processEvent(Event* ev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*************
 | 
				
			||||||
 | 
					 * Callbacks *
 | 
				
			||||||
 | 
					 *************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Set the callback function to call when the BLINKER is entering state wait
 | 
				
			||||||
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 | 
					 * @param f the function to call
 | 
				
			||||||
 | 
					 * @param p the param(s) to pass to the function
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void BLINKER_onWait(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Set the callback function to call when the BLINKER is entering state on
 | 
				
			||||||
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 | 
					 * @param f the function to call
 | 
				
			||||||
 | 
					 * @param p the param(s) to pass to the function
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void BLINKER_onOn(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Set the callback function to call when the BLINKER is entering state off
 | 
				
			||||||
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 | 
					 * @param f the function to call
 | 
				
			||||||
 | 
					 * @param p the param(s) to pass to the function
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void BLINKER_onOff(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Set the callabck function to call when the BLINKER is entering state finished
 | 
				
			||||||
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 | 
					 * @param f the function to call
 | 
				
			||||||
 | 
					 * @param t the param(s) to pass to the function
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void BLINKER_onFinished(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/************
 | 
				
			||||||
 | 
					 * EMITTERS *
 | 
				
			||||||
 | 
					 ************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Emit the blink event
 | 
				
			||||||
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 | 
					 * @param t time to wait in ms before triggering event
 | 
				
			||||||
 | 
					 */void BLINKER_emitBlink(BLINKER* me, uint16_t t);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Emit the blinkn event
 | 
				
			||||||
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 | 
					 * @param t time to wait in ms before triggering event
 | 
				
			||||||
 | 
					 */void BLINKER_emitBlinkN(BLINKER* me, uint16_t t);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Emit the timer event
 | 
				
			||||||
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 | 
					 * @param t time to wait in ms before triggering event
 | 
				
			||||||
 | 
					 */void BLINKER_emitTimer(BLINKER* me, uint16_t t);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***********
 | 
				
			||||||
 | 
					 * SETTERS *
 | 
				
			||||||
 | 
					 ***********/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Set the time on
 | 
				
			||||||
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 | 
					 * @param v the value to set
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void BLINKER_setTimeOn(BLINKER* me, uint16_t v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Set the time off
 | 
				
			||||||
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 | 
					 * @param v the value to set
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void BLINKER_setTimeOff(BLINKER* me, uint16_t v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Set the number of blink
 | 
				
			||||||
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 | 
					 * @param v the value to set
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void BLINKER_setNumberOfBlink(BLINKER* me, uint8_t v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Set the nBlinkIsOn
 | 
				
			||||||
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 | 
					 * @param v the value to set
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void BLINKER_setNBlinkIsOn(BLINKER* me, bool v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Set the remain blink(s)
 | 
				
			||||||
 | 
					 * @param me the BLINKER itself
 | 
				
			||||||
 | 
					 * @param v the value to set
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void BLINKER_setRemainBlinks(BLINKER* me, uint8_t v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Stop to blink if it was indefinitely blinking
 | 
					 * Stop to blink if it was indefinitely blinking
 | 
				
			||||||
 * @param me the blinker itself
 | 
					 * @param me the blinker itself
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void BLINKER_endBlink(BLINKER* me);
 | 
					void BLINKER_endBlink(BLINKER* me);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void BLINKER_toggle(BLINKER* me);
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif	/* BLINKER_H */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,52 +0,0 @@
 | 
				
			|||||||
/**
 | 
					 | 
				
			||||||
 * @author Rémi Heredero
 | 
					 | 
				
			||||||
 * @version 1.0.0
 | 
					 | 
				
			||||||
 * @date July 2023
 | 
					 | 
				
			||||||
 * @file ${FILENAME}.c
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "${FILENAME}.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void ${FILENAME}_init(${FILENAME}* me){
 | 
					 | 
				
			||||||
    me->state = ST${FN}_INIT;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void ${FILENAME}_startBehaviour(${FILENAME}* me){
 | 
					 | 
				
			||||||
    POST(me, &${FILENAME}_processEvent, ev${FN}init, 0, 0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool ${FILENAME}_processEvent(Event* ev) {
 | 
					 | 
				
			||||||
    bool processed = false;
 | 
					 | 
				
			||||||
    ${FILENAME}* me = (${FILENAME}*)Event_getTarget(ev);
 | 
					 | 
				
			||||||
    switch (me->state) {        // onState
 | 
					 | 
				
			||||||
        case ST${FN}_INIT:
 | 
					 | 
				
			||||||
            if (ev->id == ev${FN}init) {}
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        {STATES}
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if(oldState != me->state){
 | 
					 | 
				
			||||||
        switch (oldState) {     // onExit
 | 
					 | 
				
			||||||
            case ST${FN}_INIT:
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
            {STATES}
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        switch (me->state) {    // onEntry
 | 
					 | 
				
			||||||
            case ST${FN}_INIT:
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
            {STATES}
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        processed = true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return processed;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void ${FILENAME}_set{VAR}(${FILENAME}*me, uint16_t t) {
 | 
					 | 
				
			||||||
    me->tON = t;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void ${FILENAME}_emit${EVENT}(${FILENAME}*me, uint16_t t) {
 | 
					 | 
				
			||||||
    POST(me, &${FILENAME}_processEvent, ev${FN}${EVENT}, t, 0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,55 +0,0 @@
 | 
				
			|||||||
/**
 | 
					 | 
				
			||||||
 * @author Rémi Heredero
 | 
					 | 
				
			||||||
 * @version 1.0.0
 | 
					 | 
				
			||||||
 * @date July 2023
 | 
					 | 
				
			||||||
 * @file ${FILENAME}.h
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#ifndef ${FILENAME}_H
 | 
					 | 
				
			||||||
#define ${FILENAME}_H
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "../xf/xf.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef enum{
 | 
					 | 
				
			||||||
    ST${FN}_INIT,
 | 
					 | 
				
			||||||
    {STATES}
 | 
					 | 
				
			||||||
} ${FILENAME}_STATES;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef enum{
 | 
					 | 
				
			||||||
    ev${FN}init = 100, // TODO change this number
 | 
					 | 
				
			||||||
    {EVENTS}
 | 
					 | 
				
			||||||
} ${FILENAME}_EVENTS;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef struct{
 | 
					 | 
				
			||||||
    ${FILENAME}_STATES state;
 | 
					 | 
				
			||||||
} ${FILENAME};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Initialize the ${FILENAME}
 | 
					 | 
				
			||||||
 * @param me the ${FILENAME} itself
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void ${FILENAME}_init(${FILENAME}* me);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Start the ${FILENAME} state machine
 | 
					 | 
				
			||||||
 * @param me the ${FILENAME} itself
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void ${FILENAME}_startBehaviour(${FILENAME}* me);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Process the event
 | 
					 | 
				
			||||||
 * @param ev the event to process
 | 
					 | 
				
			||||||
 * @return true if the event is processed
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
bool ${FILENAME}_processEvent(Event* ev);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void ${FILENAME}_set{TIMEON}(${FILENAME}*me, uint16_t t);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Emit the ${EVENT} event
 | 
					 | 
				
			||||||
 * @param me the ${FILENAME} itself
 | 
					 | 
				
			||||||
 * @param t Time to wait before trig the event
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void ${FILENAME}_emit${EVENT}(${FILENAME}*me, uint16_t t);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user