Advanced Distributed Systems module at HSLU
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

61 lines
1.8 KiB

/**
* \file
* \brief Trigger module interface.
* \author Erich Styger, erich.styger@hslu.ch
* \license SPDX-License-Identifier: BSD-3-Clause
* This module implements Trigger module.
* Triggers are used to callback functions or hooks with a given relative time delay.
*/
#ifndef TRIGGER_H_
#define TRIGGER_H_
#include "platform.h"
#include "Timer.h"
#include <stdint.h>
#define TRG_TICKS_MS TMR_TICK_MS
/*!< Defines the period at which TRG_IncTick gets called */
/*! \brief Triggers which can be used from the application */
typedef enum {
TRG_BUZ_BEEP, /*!< Buzzer beep */
TRG_KEYPRESS, /*!< key debounce */
TRG_BUZ_TUNE, /*!< buzzer tune */
TRG_NOF_TRIGGERS /*!< Must be last! */
/* Extend the list of triggers as needed */
} TRG_TriggerKind;
/*! \brief Type for the data pointer used by the callback */
typedef void *TRG_CallBackDataPtr;
/*! \brief Function callback prototype, with having an optional parameter pointer */
typedef void (*TRG_Callback)(TRG_CallBackDataPtr);
/*! \brief Type to hold the trigger ticks */
typedef uint16_t TRG_TriggerTime;
/*!
* \brief Adds a new trigger
* \param trigger Trigger to be added
* \param ticks Trigger time in ticks. The time is relative from the current time.
* \param callback Callback to be called when the trigger fires
* \param data Optional pointer to data
* \return error code, ERR_OK if everything is fine
*/
uint8_t TRG_SetTrigger(TRG_TriggerKind trigger, TRG_TriggerTime ticks, TRG_Callback callback, TRG_CallBackDataPtr data);
/*! \brief Stop a trigger */
uint8_t TRG_StopTrigger(TRG_TriggerKind trigger);
/*! \brief Called from interrupt service routine with a period of TRG_TICKS_MS. */
void TRG_AddTick(void);
/*!\brief De-initializes the module. */
void TRG_Deinit(void);
/*!\brief Initializes the module. */
void TRG_Init(void);
#endif /* TRIGGER_H_ */