/** * @file module_driver_trgsel.h * @author flagchip * @brief TRGSEL driver type definition and API * @version 2.0.0 * @date 2024-08-20 * * SDK Version: 2.6.0 * * @copyright Copyright (c) 2020-2024 Flagchip Semiconductors Co., Ltd. * */ /* ******************************************************************************** * Revision History: * * Version Date Initials CR# Descriptions * --------- ---------- ------------ ---------- --------------- * 0.1.0 2023-12-15 Flagchip030 N/A First version for FC7300 * 2.0.0 2024-10-12 Flagchip030 N/A Change version and release ******************************************************************************** */ #ifndef _DRIVER_MODULE_DRIVER_TRGSEL_H_ #define _DRIVER_MODULE_DRIVER_TRGSEL_H_ #include "HwA_trgsel.h" #if TRGSEL_INSTANCE_COUNT > 0U #if defined(__cplusplus) extern "C" { #endif /** * @addtogroup module_driver_trgsel * @{ */ /** * @name TRGSEL API Service IDs * * @{ */ #define TRGSEL_GET_TARGET_TRIGGER_SOURCE_ID 0U #define TRGSEL_SET_TARGET_TRIGGER_SOURCE_ID 1U #define TRGSEL_GET_TARGET_LOCK_STATUS_ID 2U #define TRGSEL_LOCK_TARGET_TRIGGER_SOURCE_ID 3U #define TRGSEL_GENERATE_SW_TRIGGER_ID 4U /** @}*/ /** * @name TRGSEL Dev Error Code * @brief Error Code of calling TRGSEL apis * * @{ */ #define TRGSEL_E_PARAM_INSTANCE_NUMBER 0x01U #define TRGSEL_E_INVALID_TARGET 0x02U #define TRGSEL_E_INVALID_SOURCE 0x03U #define TRGSEL_E_TARGET_LOCKED 0x04U #define TRGSEL_E_INVALID_SW_TRIGGIER 0x05U /** @}*/ /** * @brief TrgSel trigger targets * */ typedef uint32_t TRGSEL_TargetType; /** * @brief TrgSel trigger sources * */ typedef uint32_t TRGSEL_SourceType; /** * @brief The TrgSel eInstance to select * */ /** * @brief Software trigger channels for SMISC software trigger channel 0~7 * */ typedef enum { TRGSEL_SW_TRIGGER_CHANNEL_0 = 0U, TRGSEL_SW_TRIGGER_CHANNEL_1 = 1U, TRGSEL_SW_TRIGGER_CHANNEL_2 = 2U, TRGSEL_SW_TRIGGER_CHANNEL_3 = 3U, TRGSEL_SW_TRIGGER_CHANNEL_4 = 4U, TRGSEL_SW_TRIGGER_CHANNEL_5 = 5U, TRGSEL_SW_TRIGGER_CHANNEL_6 = 6U, TRGSEL_SW_TRIGGER_CHANNEL_7 = 7U } TRGSEL_SwTriggerChannelType; /** * @brief Get the trigger source of the selected trigger eTarget * * @param eInstance the TrgSel instance to which the trigger target belongs * @param eTarget the trigger target to get the trigger source * @return TRGSEL_SourceType the trigger source of the selected trigger target */ TRGSEL_SourceType TRGSEL_GetTargetTriggerSource(const TRGSEL_InstanceType eInstance, const TRGSEL_TargetType eTarget); /** * @brief Set the trigger source of the selected trigger target * * @param eInstance the TrgSel instance to which the trigger target belongs * @param eTarget the trigger target to set the trigger source * @param eSource the selected trigger source to trig the target */ void TRGSEL_SetTargetTriggerSource(const TRGSEL_InstanceType eInstance, const TRGSEL_TargetType eTarget, const TRGSEL_SourceType eSource); /** * @brief Get wether the trigger source of the selected target is locked * * @param eInstance the TrgSel instance to which the trigger target belongs * @param eTarget the trigger target to get the lock status * @return true the trigger source of the selected target cannot be modified * @return false the trigger source of the selected target can be modified */ bool TRGSEL_GetTargetLockStatus(const TRGSEL_InstanceType eInstance, const TRGSEL_TargetType eTarget); /** * @brief Lock the trigger source of the selected target * * @note The trigger target is grouped by four, so if you lock the trigger source of one target, the * adjacent three trigger targets in the same register group are also be locked. So please ensure the * trigger sources are not to be modified before lock the trigger target. * * @param eInstance the TrgSel instance to which the trigger target belongs * @param eTarget the trigger target to lock the trigger source */ void TRGSEL_LockTargetTriggerSource(const TRGSEL_InstanceType eInstance, const TRGSEL_TargetType eTarget); /** * @brief Generate trigger signal for the selected software trigger source channel * * @param channel the selected software trigger source channel */ void TRGSEL_GenerateSwTrigger(const TRGSEL_SwTriggerChannelType eChannel); /** @}*/ /* module_driver_trgsel */ #if defined(__cplusplus) } #endif #endif /* #if TRGSEL_INSTANCE_COUNT > 0U */ #endif