Archived
Template
1
0

add callbacks

This commit is contained in:
2023-07-11 22:58:18 +02:00
parent ef56b5b6ae
commit 29a6be78b3
5 changed files with 36 additions and 18 deletions

View File

@@ -1,17 +1,24 @@
/**
* @author R<>mi Heredero (remi@heredero.ch)
* @author R<>mi Heredero (remi@heredero.ch)
* @version. 1.0.0
* @date 2023-06-15
*/
#include "clickHandler.h"
#include "../board/led.h"
#include "../app/factory.h"
typedef struct {
CLICK_HANDLER* me;
uint16_t t;
} foo;
void CLICK_HANDLER_BUTTON_PRESS(CLICK_HANDLER* me){
POST(me, &CLICK_HANDLER_processEvent, evCHpbPress, 0, 0);
}
void CLICK_HANDLER_BUTTON_RELEASE(CLICK_HANDLER * me) {
POST(me, &CLICK_HANDLER_processEvent, evCHpbRelease, 0, 0);
void CLICK_HANDLER_BUTTON_RELEASE(CLICK_HANDLER* me) {
POST(me, &CLICK_HANDLER_processEvent, evCHpbRelease,0, 0);
}
void CLICK_HANDLER_init(CLICK_HANDLER* me, BUTTON* b){
@@ -21,15 +28,8 @@ void CLICK_HANDLER_init(CLICK_HANDLER* me, BUTTON* b){
me->singleClick.fCallBack = NULL;
me->doubleClick.fCallBack = NULL;
buttonCallBack pbPressCallBack;
pbPressCallBack.fCallBack = CLICK_HANDLER_BUTTON_PRESS;
pbPressCallBack.param = me;
buttonCallBack pbReleaseCallBack;
pbReleaseCallBack.fCallBack = CLICK_HANDLER_BUTTON_RELEASE;
pbReleaseCallBack.param = me;
BUTTON_setEventFunctions(b, pbPressCallBack, pbReleaseCallBack);
BUTTON_onPress(b, CLICK_HANDLER_BUTTON_PRESS, me);
BUTTON_onRelease(b, CLICK_HANDLER_BUTTON_RELEASE, me);
}
void CLICK_HANDLER_startBehaviour(CLICK_HANDLER* me){
@@ -71,8 +71,12 @@ bool CLICK_HANDLER_processEvent(Event* ev) {
case STCH_WAIT:
if(evid == evCHpbPress) {
me->state = STCH_LONG_CLICK;
POST(me, &CLICK_HANDLER_processEvent, evCHtimer, CH_CLICK_TIMER, 0);
LED_on(l2());
//me->state = STCH_LONG_CLICK;
//POST(me, &CLICK_HANDLER_processEvent, evCHtimer, CH_CLICK_TIMER, 0);
}
if(evid==evCHpbRelease) {
LED_off(l2());
}
break;
@@ -86,7 +90,9 @@ bool CLICK_HANDLER_processEvent(Event* ev) {
if(evid == evCHtimer) {
me->state = STCH_WAIT;
LED_on(l4());
if(me->longClick.fCallBack != NULL) {
LED_on(l5());
me->longClick.fCallBack(me->longClick.param);
}
}
@@ -97,10 +103,12 @@ bool CLICK_HANDLER_processEvent(Event* ev) {
case STCH_SINGLE_CLICK:
if(evid == evCHpbPress) {
LED_on(l2());
me->state = STCH_DOUBLE_CLICK;
}
if(evid == evCHtimer) {
LED_on(l3());
me->state = STCH_WAIT;
if(me->singleClick.fCallBack != NULL) {
me->singleClick.fCallBack(me->singleClick.param);