This repository has been archived on 2024-01-25. You can view files and clone it, but cannot push or open issues or pull requests.
ButtonManager/src/mdw/button/ButtonEventsHandler.h

46 lines
1.2 KiB
C
Raw Normal View History

2023-11-26 20:13:49 +01:00
/*
* ButtonEventsHandler.h
*
* Created on: 19 nov. 2023
* Author: remi.heredero
*/
#ifndef BUTTON_BUTTONEVENTSHANDLER_H_
#define BUTTON_BUTTONEVENTSHANDLER_H_
#include "xf/behavior.h"
#include "interface/buttonscontrollercallbackprovider.h"
#include "interface/buttoneventshandlersubject.h"
#include "interface/buttoneventshandlerobserver.h"
#include "button/ButtonStateSm.h"
#define MAX_OBSERVER 5
class ButtonEventsHandler : public XFBehavior, public interface::ButtonsControllerCallbackProvider, public interface::ButtonEventsHandlerSubject {
public:
~ButtonEventsHandler() override = default;
static ButtonEventsHandler* getInstance();
void onButtonChangeState(uint16_t buttonIndex, bool pressed);
virtual bool subscribe(interface::ButtonEventsHandlerObserver* observer);
virtual void unsubscribe(interface::ButtonEventsHandlerObserver* observer);
virtual void notifyButtonShortPressed(ButtonIndex buttonIndex);
virtual void notifyButtonLongPressed(ButtonIndex buttonIndex);
protected:
ButtonEventsHandler();
2023-11-27 08:06:53 +01:00
void startButtonSM();
2023-11-26 20:13:49 +01:00
2023-11-26 20:19:58 +01:00
XFState stRun;
2023-11-26 20:13:49 +01:00
interface::ButtonEventsHandlerObserver* observer_[MAX_OBSERVER];
ButtonStateSm buttonStateSm_[4];
};
#endif /* BUTTON_BUTTONEVENTSHANDLER_H_ */