/** ****************************************************************************** * @copyright Copyright (C), 2016-2022, ConvenientPower. Co., Ltd. * @file app_spec.h * @version 1.0 * @author CPS SW Team * @date 2022-10-24 * @brief Header file of APP_SPEC_H module. ****************************************************************************** */ #ifndef _APP_SPEC_H_ #define _APP_SPEC_H_ #include "customized.h" #include "config.h" #include "pd_protocol.h" #include "dpdn_protocol.h" #define MTP_TRIM_MAGIC_WORD 0xAA55AA55 typedef union { uint8_t byte; struct { uint8_t read_not_support: 1; uint8_t write_not_support: 1; uint8_t mtp_not_check: 1; uint8_t erase_not_all: 1; uint8_t resverd0: 4; } bits; } mtp_trim_flag_u; typedef struct mtp_trim_callback_s { void(*rom_dpdn_init)(void); void(*rom_callback_deal)(uint8_t port, pd_param_s* pd_param); void(*rom_errase_sector_deal)(uint32_t addr, uint32_t len); } mtp_trim_callback_s; typedef union support_protocol_u { uint8_t byte; struct { //byte uint8_t scp_support: 1; uint8_t qc_support: 1; uint8_t pd_support: 1; uint8_t ufcs_support: 1; uint8_t tfcp_support: 1; uint8_t vfcp_support: 1; uint8_t reserved: 2; }; } support_protocol_u; typedef enum { PROTOCOL_DISABLE_ALL = 0x00, PROTOCOL_ONLY_ENABLE_SCP = 0x01, PROTOCOL_ONLY_ENABLE_QC = 0x02, PROTOCOL_ONLY_ENABLE_PD = 0x04, PROTOCOL_DISABLE_QC_UFCS = 0X05, PROTOCOL_DISABLE_UFCS = 0x07, PROTOCOL_ONLY_ENABLE_UFCS = 0x08, PROTOCOL_ONLY_ENABLE_TFCP = 0x10, PROTOCOL_DISABLE_PD = 0x0B, PROTOCOL_DISABLE_QC = 0x0D, PROTOCOL_DISABLE_SCP = 0x0E, PROTOCOL_ALL_ENABLE = 0xFF } PROTOCOL_SELECT_e; typedef enum { PROTOCOL_PD = 0, PROTOCOL_QC, PROTOCOL_FCP, PROTOCOL_SCP, PROTOCOL_UFCS, PROTOCOL_TFCP, PROTOCOL_AFC, PROTOCOL_UNKNOWN, } PROTOCOL_TYPE_e; typedef struct fw_footprint_s { uint8_t custom_id; uint8_t project_id; uint8_t fw_ver_major; uint8_t fw_ver_minor; uint8_t hw_ver_minor; uint8_t hw_ver_major; uint8_t fw_len[4]; uint8_t fw_magic[2]; mtp_trim_flag_u mtp_trim_flag; uint16_t boot_to_mtp_delay; uint8_t resverd1; const mtp_trim_callback_s *mtp_trim_callback; uint32_t magic_word; } __attribute__((packed)) fw_footprint_s; typedef struct app_protocol_param_s { #if PD_SUPPORT | TYPEC_SUPPORT pd_param_s pd_param; #endif #if HVDCP_SUPPORT | QC_SCP_SUPPORT | UFCS_SUPPORT dpdn_param_s dpdn_param; #endif uint8_t protocol_type; support_protocol_u support_protocol; } app_protocol_param_s; extern app_protocol_param_s g_app_protocol_param[TYPEC_PORT_MAX]; #define DN_TRIGGER_COMP_ENABLE()\ do{\ drv_analog_gp_mask_set(0x08);\ }while(0) #define MAX_LOOP_TASK_NUM ARRY_LEN(loop_task_action) typedef void (*task_action_t)(uint8_t port); #define LOOP_TASK_RUN(x)\ loop_task_run(x) /* * @brief rom_dpdn_init_patch * @param NULL * @note * @retval */ void rom_dpdn_init_patch(void); /* * @brief app_protocol_reset * @param null * @note * @retval null */ void app_protocol_reset(uint8_t port); /* * @brief app_spec_run * @param null * @note * @retval null */ void app_spec_run(uint8_t port); /* * @brief periodic_work * @param port * @note * @retval null */ void periodic_work(uint8_t port); #endif