123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /*
- * Copyright (c) 2021 HPMicro
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
- #ifndef HPM_BUTN_DRV_H
- #define HPM_BUTN_DRV_H
- #include "hpm_common.h"
- #include "hpm_butn_regs.h"
- /**
- *
- * @brief BUTN driver APIs
- * @defgroup butn_interface BUTN driver APIs
- * @ingroup io_interfaces
- * @{
- *
- */
- #define BUTN_EVENT_POWER_PRESSED (BUTN_BTN_STATUS_PBTN_SET(1))
- #define BUTN_EVENT_POWER_PRESSED_HOLD_0_5_S (BUTN_BTN_STATUS_PBTN_SET(2))
- #define BUTN_EVENT_POWER_PRESSED_HOLD_8_S (BUTN_BTN_STATUS_PBTN_SET(4))
- #define BUTN_EVENT_POWER_PRESSED_HOLD_16_S (BUTN_BTN_STATUS_PBTN_SET(8))
- #define BUTN_EVENT_WAKE_PRESSED (BUTN_BTN_STATUS_WBTN_SET(1))
- #define BUTN_EVENT_WAKE_PRESSED_HOLD_0_5_S (BUTN_BTN_STATUS_WBTN_SET(2))
- #define BUTN_EVENT_WAKE_PRESSED_HOLD_8_S (BUTN_BTN_STATUS_WBTN_SET(4))
- #define BUTN_EVENT_WAKE_PRESSED_HOLD_16_S (BUTN_BTN_STATUS_WBTN_SET(8))
- #define BUTN_EVENT_WAKE_POWER_PRESSED (BUTN_BTN_STATUS_DBTN_SET(1))
- #define BUTN_EVENT_WAKE_POWER_PRESSED_HOLD_0_5_S (BUTN_BTN_STATUS_DBTN_SET(2))
- #define BUTN_EVENT_WAKE_POWER_PRESSED_HOLD_8_S (BUTN_BTN_STATUS_DBTN_SET(4))
- #define BUTN_EVENT_WAKE_POWER_PRESSED_HOLD_16_S (BUTN_BTN_STATUS_DBTN_SET(8))
- #define BUTN_EVENT_POWER_CLICKED (BUTN_BTN_STATUS_PCLICK_SET(1))
- #define BUTN_EVENT_POWER_CLICKED_X2 (BUTN_BTN_STATUS_PCLICK_SET(2))
- #define BUTN_EVENT_POWER_CLICKED_X3 (BUTN_BTN_STATUS_PCLICK_SET(4))
- #define BUTN_EVENT_POWER_CLICKED_WAKE_HELD (BUTN_BTN_STATUS_XPCLICK_SET(1))
- #define BUTN_EVENT_POWER_CLICKED_X2_WAKE_HELD (BUTN_BTN_STATUS_XPCLICK_SET(2))
- #define BUTN_EVENT_POWER_CLICKED_X3_WAKE_HELD (BUTN_BTN_STATUS_XPCLICK_SET(4))
- #define BUTN_EVENT_WAKE_CLICKED (BUTN_BTN_STATUS_WCLICK_SET(1))
- #define BUTN_EVENT_WAKE_CLICKED_X2 (BUTN_BTN_STATUS_WCLICK_SET(2))
- #define BUTN_EVENT_WAKE_CLICKED_X3 (BUTN_BTN_STATUS_WCLICK_SET(4))
- #define BUTN_EVENT_WAKE_CLICKED_POWER_HELD (BUTN_BTN_STATUS_XWCLICK_SET(1))
- #define BUTN_EVENT_WAKE_CLICKED_X2_POWER_HELD (BUTN_BTN_STATUS_XWCLICK_SET(2))
- #define BUTN_EVENT_WAKE_CLICKED_X3_POWER_HELD (BUTN_BTN_STATUS_XWCLICK_SET(4))
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * @brief Get status
- *
- * @param[in] ptr BUTN base address
- * @retval status mask in 32 bits, please refer to BUTN_EVENT_* macros
- */
- static inline uint32_t butn_get_status(BUTN_Type *ptr)
- {
- return ptr->BTN_STATUS;
- }
- /**
- * @brief Enable interrupt with mask
- *
- * @param[in] ptr BUTN base address
- * @param[in] mask Mask of interrupts to be enabled, please refer to BUTN_EVENT_* macros
- */
- static inline void butn_enable_irq(BUTN_Type *ptr, uint32_t mask)
- {
- ptr->BTN_IRQ_MASK |= mask;
- }
- /**
- * @brief Disable interrupt with mask
- *
- * @param[in] ptr BUTN base address
- * @param[in] mask Mask of interrupts to be disabled, please refer to BUTN_EVENT_* macros
- */
- static inline void butn_disable_irq(BUTN_Type *ptr, uint32_t mask)
- {
- ptr->BTN_IRQ_MASK &= ~mask;
- }
- /**
- * @brief Set intense of PLED and RLED/WLED
- *
- * @param[in] ptr BUTN base address
- * @param[in] intense Intense value (0~15)
- */
- static inline void butn_set_intense(BUTN_Type *ptr, uint8_t intense)
- {
- ptr->LED_INTENSE = BUTN_LED_INTENSE_PLED_SET(intense)
- | BUTN_LED_INTENSE_RLED_SET(intense);
- }
- #ifdef __cplusplus
- }
- #endif
- /**
- * @}
- */
- #endif /* HPM_BUTN_DRV_H */
|