123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- /******************************* (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_DEF_UpHandler(void);
- /**
- * @brief Хендлер кнопки DEFAULT
- */
- void BUTTON_DEF_DownHandler(void);
- /**
- * @brief
- */
- void BUTTON_SET_UpHandler(void);
- /**
- * @brief Хендлер кнопки SET
- */
- void BUTTON_SET_DownHandler(void);
- #endif /* #ifndef BUTTONS_H */
- /****************************** (C) LiteMesh ***************** end of file ****/
|