#ifndef CCONTROLLEROBSERVER_HPP
#define CCONTROLLEROBSERVER_HPP

/**
 * @file CControllerObserver.hpp
 * @brief file of the CControllerObserver class, abstract class to extend, alloy the daugther class to handle controller event.
 */

/**
 * @brief Abstract class to extend, alloy the daugther class to handle controller event.
 */
class CControllerObserver {
private:

public:
    /**
     * @brief Handle button down event.
     * @param[in] controllerId The controller id.
     * @param[in] which The code of the button.
     */
	virtual void onCButtonDown(unsigned int controllerId, unsigned int which) = 0;

    /**
     * @brief Handle button up event.
     * @param[in] controllerId The controller id.
     * @param[in] which The code of the button.
     */
	virtual void onCButtonUp(unsigned int controllerId, unsigned int which) = 0;

    /**
     * @brief Handle axis event.
     * @param[in] controllerId The controller id.
     * @param[in] which The id of the axis.
     * @param[in] value the new Value of the axis.
     */
	virtual void onCAxis(unsigned int controllerId, unsigned int which, int value) = 0;
};

#endif