12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /******************************* (C) LiteMesh **********************************
- * @module buttons
- * @file buttons.h
- * @version 1.0.0
- * @date XX.XX.XXXX
- * $brief buttons
- *******************************************************************************
- * @history Version Author Comment
- * XX.XX.XXXX 1.0.0 Telenkov D.A. First release.
- *******************************************************************************
- */
- /* Define to prevent recursive ----------------------------------------------*/
- #ifndef BUTTONS_H
- #define BUTTONS_H
- #include <stdbool.h>
- #include "gpio.h"
- /**
- * Статус кнопки
- */
- typedef enum
- {
- BUT_ON = 0,
- BUT_OFF,
- BUT_NO_DEFINE,
-
- } BUTTON_STATE_t;
- /**
- * @brief Структура параметров объекта Button
- */
- typedef struct
- {
- gpio_t id_pin;
- uint16_t timeDelay; // Время задержки антидребезга (время измеряется
- // во временных интервалах с которыми вызывается
- // обработчик кнопки
- uint16_t counterDelay; // Счетчик антидребезга
- BUTTON_STATE_t stateOld; // Прошлое состояние кнопки
- BUTTON_STATE_t stateNew; // Текущее состояние кнопки
- void (*pressHandler)(); // Обработчик нажатия кнопки
- void (*unpressHandler)(); // Обработчик отпускания кнопки
- uint8_t ID; // уникальный идентификатор (можно не использовать)
- uint32_t counterActivation;
- uint16_t timeActivation;
- bool fActivation;
- } BUTTON_NO_FIX_t;
- /**
- * @brief
- */
- void BUTTON_Init(void);
-
- /**
- * @brief Возвращает сотояние ключа
- * @retval 1 - линия разомкнута
- * 0 - линия замкнута
- */
- BUTTON_STATE_t BUTTON_GetState(BUTTON_NO_FIX_t *button);
- /**
- * @brief Обработчик кнопки без фиксации. В обработчике реализована защита
- * от дребезга с помощью задержки. Защита срабатывает при нажатии
- * и при отпускании.
- * @param *button: указатель на структуру типа BUTTON_NO_FIX
- * @retval нет
- */
- void BUTTON_NoFixHandler(BUTTON_NO_FIX_t *button);
- /**
- * @brief Опрос кнопок
- */
- void vTaskButtons(void *pvParameters);
- /**
- * @brief Заглушка
- */
- void BUTTON_VoidHandler(void);
- /**
- * @brief Хендлер кнопки DEFAULT
- */
- void BUTTON_DEF_DownHandler(void);
- /**
- * @brief Хендлер кнопки SET
- */
- void BUTTON_SET_DownHandler(void);
- #endif /* #ifndef BUTTONS_H */
- /****************************** (C) LiteMesh ***************** end of file ****/
|