About typedef

博客介绍了typedef,它可定义类型同义词,定义以typedef关键字开头,后跟数据类型和标识符,该标识符并非引入新类型,而是现有类型的同义词,可在类型名能出现的任何地方使用。还说明了typedef常用于隐藏类型实现、简化复杂类型定义、让单一类型用于多目的并明确用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Typedef Names

A typedef lets us define a synonym for a type:

     typedef double wages;       //  wages is a synonym for double
     typedef int exam_score;     //  exam_score is a synonym for int
     typedef wages salary;       //  indirect synonym for double

A typedef name can be used as a type specifier:

     wages hourly, weekly;     // double hourly, weekly;
     exam_score test_result;   // int test_result;

A typedef definition begins with the keyword typedef, followed by the data type and identifier. The identifier, or typedef name, does not introduce a new type but rather a synonym for the existing data type. A typedef name can appear anywhere in a program that a type name can appear.

Typedefs are commonly used for one of three purposes:

  • To hide the implementation of a given type and emphasize instead the purpose for which the type is used

  • To streamline complex type definitions, making them easier to understand

  • To allow a single type to be used for more than one purpose while making the purpose clear each time the type is used

/** ****************************************************************************** * @file usbpd_core.h * @author MCD Application Team * @brief This file contains the core stack API. ****************************************************************************** * @attention * * Copyright (c) 2021 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ #ifndef USBPD_CORE_H_ #define USBPD_CORE_H_ #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "usbpd_def.h" #if defined(USBPDCORE_TCPM_SUPPORT) #include "tcpc.h" #endif /* USBPDCORE_TCPM_SUPPORT */ /** @addtogroup STM32_USBPD_LIBRARY * @{ */ /** @addtogroup USBPD_CORE * @{ */ /** @addtogroup USBPD_CORE_CAD * @{ */ /* Exported types ------------------------------------------------------------*/ /** @defgroup USBPD_CORE_CAD_Exported_Types USBPD CORE CAD Exported Types * @{ */ /** * @brief function return value @ref USBPD_CORE_CAD * @{ */ typedef enum { USBPD_CAD_OK, /*!< USBPD CAD Status OK */ USBPD_CAD_INVALID_PORT, /*!< USBPD CAD Status INVALID PORT */ USBPD_CAD_ERROR, /*!< USBPD CAD Status ERROR */ USBPD_CAD_MALLOCERROR, /*!< USBPD CAD Status ERROR MALLOC */ USBPD_CAD_INVALIDRESISTOR /*!< USBPD CAD Status INVALID RESISTOR */ } USBPD_CAD_StatusTypeDef; /** * @} */ /** * @brief activation value @ref USBPD_CORE_CAD * @{ */ typedef enum { USBPD_CAD_DISABLE, /*!< USBPD CAD activation status Disable */ USBPD_CAD_ENABLE /*!< USBPD CAD activation status Enable */ } USBPD_CAD_activation; /** * @} */ /** * @brief CallBacks exposed by the @ref USBPD_CORE_CAD */ typedef struct { /** * @brief CallBack used to report events to DPM. * @param PortNum The handle of the port * @param State CAD state @ref USBPD_CAD_EVENT * @param Cc The Communication Channel for the USBPD communication @ref CCxPin_TypeDef * @retval None */ void (*USBPD_CAD_CallbackEvent)(uint8_t PortNum, USBPD_CAD_EVENT State, CCxPin_TypeDef Cc); /** * @brief CallBack to wakeup the CAD. * @retval None */ void (*USBPD_CAD_WakeUp)(void); } USBPD_CAD_Callbacks; /** * @} */ /** @defgroup USBPD_CORE_CAD_Exported_Functions_Grp1 USBPD CORE CAD Exported Functions * @{ */ /** * @brief Initialize the CAD module for a specified port. * @param PortNum Index of current used port * @param CallbackFunctions CAD port callback function * @param Settings Pointer on @ref USBPD_SettingsTypeDef structure * @param Params Pointer on @ref USBPD_ParamsTypeDef structure * @retval USBPD_CAD status */ USBPD_CAD_StatusTypeDef USBPD_CAD_Init(uint8_t PortNum, const USBPD_CAD_Callbacks *CallbackFunctions, const USBPD_SettingsTypeDef *Settings, USBPD_ParamsTypeDef *Params); /** * @brief function used to process type C state machine detection. * @retval time (in ms) after which the process must be executed */ uint32_t USBPD_CAD_Process(void); /** * @brief Enable or Disable CAD port. * @param PortNum Index of current used port * @param State The new state of the port @ref USBPD_CAD_activation * @retval None */ void USBPD_CAD_PortEnable(uint8_t PortNum, USBPD_CAD_activation State); /** * @brief Set the resistor to present a SNK. * @param PortNum Index of current used port * @retval None */ void USBPD_CAD_AssertRd(uint8_t PortNum); /** * @brief Set the resistor to present a SRC. * @param PortNum Index of current used port * @retval None */ void USBPD_CAD_AssertRp(uint8_t PortNum); /** * @brief Force type C state machine to enter recovery state * @param PortNum Index of current used port * @retval None */ void USBPD_CAD_EnterErrorRecovery(uint8_t PortNum); #if defined(USBPDCORE_DRP) || defined(USBPDCORE_SRC) /** * @brief Set the default Rd resistor (valid for SRC only) * @param PortNum Index of current used port * @param RdValue * @retval USBPD_CAD_OK or USBPD_CAD_INVALIDRESISTOR */ USBPD_CAD_StatusTypeDef USBPD_CAD_SRC_SetRpResistor(uint8_t PortNum, CAD_RP_Source_Current_Adv_Typedef RdValue); /** @defgroup USBPD_CORE_CAD_Exported_Functions_Legacy USBPD CORE CAD Legacy Function * @{ */ /* Keep for legacy reason */ USBPD_CAD_StatusTypeDef USBPD_CAD_SetRpResistor(uint8_t PortNum, CAD_RP_Source_Current_Adv_Typedef RdValue); /** * @} */ #endif /* USBPDCORE_DRP || USBPDCORE_SRC */ /** * @} */ /** * @} */ /** @addtogroup USBPD_CORE_TRACE * @{ */ /** @defgroup USBPD_CORE_TRACE_Exported_Types USBPD CORE TRACE Exported Types * @{ */ typedef enum { USBPD_TRACE_FORMAT_TLV = 0, USBPD_TRACE_MESSAGE_IN = 1, USBPD_TRACE_MESSAGE_OUT = 2, USBPD_TRACE_CADEVENT = 3, USBPD_TRACE_PE_STATE = 4, USBPD_TRACE_CAD_LOW = 5, USBPD_TRACE_DEBUG = 6, USBPD_TRACE_SRC = 7, USBPD_TRACE_SNK = 8, USBPD_TRACE_NOTIF = 9, USBPD_TRACE_POWER = 10, USBPD_TRACE_TCPM = 11, USBPD_TRACE_PRL_STATE = 12, USBPD_TRACE_PRL_EVENT = 13, USBPD_TRACE_PHY_NOTFRWD = 14, USBPD_TRACE_CPU = 15, USBPD_TRACE_TIMEOUT = 16, USBPD_TRACE_UCSI = 18, USBPD_TRACE_MSG_MSC = 19, } TRACE_EVENT; typedef void (*TRACE_ENTRY_POINT)(TRACE_EVENT type, uint8_t port, uint8_t sop, uint8_t *ptr, uint32_t size); /** * @} */ /** * @} */ /** @addtogroup USBPD_CORE_PE * @{ */ /** @defgroup USBPD_CORE_PE_Private_Defines USBPD CORE PE Private Defines * @brief These defines are used in the stack library. Just provided for information. * Those timers values are not to be changed by user (changing values on user side, * will not have any impacts on lib behavior). * @{ * */ /* Policy Engine Timers */ #ifdef USBPDCORE_PPS #define PE_TPPSREQUEST 9000u /*!< tPPSRequest: Max value set to 10s */ #define PE_TPPSTIMEOUT 14000u /*!< tPPSTimeout: min 12s to max 15s */ #endif /* USBPDCORE_PPS */ #define PE_TPSHARDRESET 27u /*!< tPSHardReset: min 25ms to max 30ms */ #define PE_SRC_TSRCRECOVER 800u /*!< tSrcRecover for SRC: min 660 ms max 1s */ #define PE_SNK_TSRCRECOVER 2000u /*!< tSrcRecover for SNK: 2s (less restrictive for SINK tests) */ #define PE_SRC_TSAFE0V_T2 650u /*!< tSafe0V for SRC: 650 ms */ #define PE_SNK_TSAFE0V_T2 1000u /*!< tSafe0V for SNK: 1000 ms */ #define PE_TSRCTURNON_T4 275u /*!< tSrcTurnOn: 275 ms */ #define PE_TPSSOURCEOFF 900u /*!< tPSSourceOff: min 750ms to max 920ms */ #define PE_TPSSOURCEON 440u /*!< tPSSourceOn: min 390ms to max 480ms */ #define PE_TPSTRANSITION 475u /*!< tPSTransition: min 450ms to max 550ms */ #define PE_TPSTRANSITION_EPR 925u /*!< tPSTransition: min 830ms to max 1020ms */ #define PE_TSENDERRESPONSE 28u /*!< tSenderResponse: min 27ms to max 33ms (PD3) */ #define PE_TSENDERRESPONSE_PD2 25u /*!< tSenderResponse: min 24ms to max 30ms (PD2) */ #define PE_TTYPECSINKWAITCAP 400u /*!< tTypeCSinkWaitCap: min 310ms to max 620ms */ #define PE_TTYPECSENDSOURCECAPA 150u /*!< tTypeCSendSourceCap: min 100ms to max 200ms */ #define PE_TSRCTRANSITION 30u /*!< tSrcTransition: min 25ms to max 35ms */ #define PE_TSWAPSRCSTART_MIN 20u /*!< tSwapSourceStart: 20 ms */ #define PE_TBISTCONTMODE 35u /*!< tBISTContMode: min 30ms to 60 ms */ #if defined(USBPDCORE_VCONN_SUPPORT) #define PE_TDISCOVERIDENTITY 45u /*!< tDiscoverIdentity: min 40ms to max 50ms */ #endif /* USBPDCORE_VCONN_SUPPORT */ #define PE_TVDMSENDERRESPONSE 30u /*!< tVDMSenderResponse: min 24ms to max 30ms */ #if defined(USBPDCORE_SVDM) || defined(USBPDCORE_ANSWER_DISCOIDENT) #define PE_TVDMRECEIVERRESPONSE 15u /*!< tVDMReceiverResponse: max 15ms */ #endif /* USBPDCORE_SVDM || USBPDCORE_ANSWER_DISCOIDENT */ #if defined(USBPDCORE_SVDM) #define PE_TVDMENTERMODE 25u /*!< tVDMEnterMode: max 25ms */ #define PE_TVDMEXITMODE 25u /*!< tVDMExitMode: max 25ms */ #endif /* USBPDCORE_SVDM */ #if defined(USBPDCORE_SVDM) || defined(USBPDCORE_VCONN_SUPPORT) #define PE_TVDMWAITMODEENTRY 50u /*!< tVDMWaitModeEntry: max 40ms to 50ms */ #define PE_TVDMWAITMODEEXIT 50u /*!< tVDMWaitModeExit: max 40ms to 50ms */ #endif /* USBPDCORE_SVDM || USBPDCORE_VCONN_SUPPORT */ #ifdef USBPDCORE_VCONN_SUPPORT #define PE_TVCONNSOURCETIMEOUT 150u /*!< tVCONNSourceTimeout: min 100ms to max 200ms */ #endif /* USBPDCORE_VCONN_SUPPORT */ #define PE_TVCONNZERO 125u /*!< tVCONNZero :max 125ms */ #define PE_TVCONNREAPPLIED 10u /*!< tVCONNZero :min 10 max 20ms */ #define PE_TDATARESETFAIL 300u /*!< tDataResetFail :min 300ms */ #define PE_TDATARESET 200u /*!< tDataReset :min 200ms 225ms max 250ms */ #define PE_AMETIMEOUT 1100u /*!< tAMETimeout :min 1000ms */ /** * @} */ #if defined(USBPDCORE_SVDM) || defined(USBPDCORE_UVDM) || defined(USBPDCORE_VCONN_SUPPORT) \ || defined(USBPDCORE_ANSWER_DISCOIDENT) /** @defgroup USBPD_CORE_VDM_Exported_Callback USBPD CORE VDM Exported Callback * @{ */ /** * @brief CallBacks exposed by the @ref USBPD_CORE_PE * */ typedef struct { #if defined(USBPDCORE_SVDM) || defined(USBPDCORE_VCONN_SUPPORT) || defined(USBPDCORE_ANSWER_DISCOIDENT) /** * @brief VDM Discovery identity callback * @note Function is called to get Discovery identity information linked to the device and answer * to SVDM Discovery identity init message sent by port partner * @param PortNum current port number * @param pIdentity Pointer on @ref USBPD_DiscoveryIdentity_TypeDef structure * @retval USBPD status: @ref USBPD_ACK or @ref USBPD_BUSY */ USBPD_StatusTypeDef(*USBPD_VDM_DiscoverIdentity)(uint8_t PortNum, USBPD_DiscoveryIdentity_TypeDef *pIdentity); #endif /* USBPDCORE_SVDM || USBPDCORE_VCONN_SUPPORT || USBPDCORE_ANSWER_DISCOIDENT */ #if defined(USBPDCORE_SVDM) || defined(USBPDCORE_VCONN_SUPPORT) /** * @brief VDM Discover SVID callback * @note Function is called to retrieve SVID supported by device and answer * to SVDM Discovery SVID init message sent by port partner * @param PortNum current port number * @param p_SVID_Info Pointer on @ref USBPD_SVIDInfo_TypeDef structure * @param pNbSVID Pointer on number of SVID * @retval USBPD status @ref USBPD_BUSY or @ref USBPD_ACK or @ref USBPD_NAK */ USBPD_StatusTypeDef(*USBPD_VDM_DiscoverSVIDs)(uint8_t PortNum, uint16_t **p_SVID_Info, uint8_t *pNbSVID); /** * @brief VDM Discover Mode callback (report all the modes supported by SVID) * @note Function is called to report all the modes supported by selected SVID and answer * to SVDM Discovery Mode init message sent by port partner * @param PortNum current port number * @param SVID SVID value * @param p_ModeTab Pointer on the mode value * @param NumberOfMode Number of mode available * @retval USBPD status */ USBPD_StatusTypeDef(*USBPD_VDM_DiscoverModes)(uint8_t PortNum, uint16_t SVID, uint32_t **p_ModeTab, uint8_t *NumberOfMode); /** * @brief VDM Mode enter callback * @note Function is called to check if device can enter in the mode received for the selected SVID in the * SVDM enter mode init message sent by port partner * @param PortNum current port number * @param SVID SVID value * @param ModeIndex Index of the mode to be entered * @retval USBPD status @ref USBPD_ACK/@ref USBPD_NAK */ USBPD_StatusTypeDef(*USBPD_VDM_ModeEnter)(uint8_t PortNum, uint16_t SVID, uint32_t ModeIndex); /** * @brief VDM Mode exit callback * @note Function is called to check if device can exit from the mode received for the selected SVID in the * SVDM exit mode init message sent by port partner * @param PortNum current port number * @param SVID SVID value * @param ModeIndex Index of the mode to be exited * @retval USBPD status @ref USBPD_ACK/@ref USBPD_NAK */ USBPD_StatusTypeDef(*USBPD_VDM_ModeExit)(uint8_t PortNum, uint16_t SVID, uint32_t ModeIndex); /** * @brief Inform identity callback * @note Function is called to save Identity information received in Discovery identity from port partner (answer to SVDM discovery identity sent by device) * @param PortNum current port number * @param SOPType SOP type * @param CommandStatus Command status based on @ref USBPD_VDM_CommandType_Typedef * @param pIdentity Pointer on the discovery identity information based on @ref USBPD_DiscoveryIdentity_TypeDef * @retval None */ void (*USBPD_VDM_InformIdentity)(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType, USBPD_VDM_CommandType_Typedef CommandStatus, USBPD_DiscoveryIdentity_TypeDef *pIdentity); /** * @brief Inform SVID callback * @note Function is called to save list of SVID received in Discovery SVID from port partner (answer to SVDM discovery SVID sent by device) * @param PortNum current port number * @param SOPType SOP type * @param CommandStatus Command status based on @ref USBPD_VDM_CommandType_Typedef * @param pListSVID Pointer of list of SVID based on @ref USBPD_SVIDInfo_TypeDef * @retval None */ void (*USBPD_VDM_InformSVID)(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType, USBPD_VDM_CommandType_Typedef CommandStatus, USBPD_SVIDInfo_TypeDef *pListSVID); /** * @brief Inform Mode callback ( received in Discovery Modes ACK) * @note Function is called to save list of modes linked to SVID received in Discovery mode from port partner (answer to SVDM discovery mode sent by device) * @param PortNum current port number * @param SOPType SOP type * @param CommandStatus Command status based on @ref USBPD_VDM_CommandType_Typedef * @param pModesInfo Pointer of Modes info based on @ref USBPD_ModeInfo_TypeDef * @retval None */ void (*USBPD_VDM_InformMode)(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType, USBPD_VDM_CommandType_Typedef CommandStatus, USBPD_ModeInfo_TypeDef *pModesInfo); /** * @brief Inform Mode enter callback * @note Function is called to inform if port partner accepted or not to enter in the mode * specified in the SVDM enter mode sent by the device * @param PortNum current port number * @param SOPType SOP type * @param CommandStatus Command status based on @ref USBPD_VDM_CommandType_Typedef * @param SVID SVID ID * @param ModeIndex Index of the mode to be entered * @retval None */ void (*USBPD_VDM_InformModeEnter)(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType, USBPD_VDM_CommandType_Typedef CommandStatus, uint16_t SVID, uint32_t ModeIndex); /** * @brief Inform Mode exit callback * @note Function is called to inform if port partner accepted or not to exit from the mode * specified in the SVDM exit mode sent by the device * @param PortNum current port number * @param SOPType SOP type * @param CommandStatus Command status based on @ref USBPD_VDM_CommandType_Typedef * @param SVID SVID ID * @param ModeIndex Index of the mode to be exited * @retval None */ void (*USBPD_VDM_InformModeExit)(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType, USBPD_VDM_CommandType_Typedef CommandStatus, uint16_t SVID, uint32_t ModeIndex); /** * @brief Send VDM Attention message callback * @note Function is called when device wants to send a SVDM attention message to port partner * (for instance DP status can be filled through this function) * @param PortNum current port number * @param pNbData Pointer of number of VDO to send * @param pVDO Pointer of VDO to send * @retval None */ void (*USBPD_VDM_SendAttention)(uint8_t PortNum, uint8_t *pNbData, uint32_t *pVDO); /** * @brief Receive VDM Attention callback * @note Function is called when a SVDM attention init message has been received from port partner * (for instance, save DP status data through this function) * @param PortNum current port number * @param NbData Number of received VDO * @param VDO Received VDO * @retval None */ void (*USBPD_VDM_ReceiveAttention)(uint8_t PortNum, uint8_t NbData, uint32_t VDO); /** * @brief VDM Send Specific message callback * @note Function is called when device wants to send a SVDM specific init message to port partner * (for instance DP status or DP configure can be filled through this function) * @param PortNum current port number * @param SOPType SOP type * @param VDMCommand VDM command based on @ref USBPD_VDM_Command_Typedef * @param pNbData Pointer of number of VDO to send * @param pVDO Pointer of VDO to send * @retval None */ void (*USBPD_VDM_SendSpecific)(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType, USBPD_VDM_Command_Typedef VDMCommand, uint8_t *pNbData, uint32_t *pVDO); /** * @brief VDM Receive Specific message callback * @note Function is called to answer to a SVDM specific init message received by port partner. * (for instance, retrieve DP status or DP configure data through this function) * @param PortNum Current port number * @param VDMCommand VDM command based on @ref USBPD_VDM_Command_Typedef * @param pNbData Pointer of number of received VDO and used for the answer * @param pVDO Pointer of received VDO and use for the answer * @retval USBPD Status */ USBPD_StatusTypeDef(*USBPD_VDM_ReceiveSpecific)(uint8_t PortNum, USBPD_VDM_Command_Typedef VDMCommand, uint8_t *pNbData, uint32_t *pVDO); /** * @brief VDM Specific message callback to inform user of reception of VDM specific message * @note Function is called when answer from SVDM specific init message has been received by the device * (for instance, save DP status and DP configure data through this function) * @param PortNum current port number * @param SOPType SOP type * @param VDMCommand VDM command based on @ref USBPD_VDM_Command_Typedef * @param pNbData Pointer of number of received VDO * @param pVDO Pointer of received VDO * @retval None */ void (*USBPD_VDM_InformSpecific)(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType, USBPD_VDM_Command_Typedef VDMCommand, uint8_t *pNbData, uint32_t *pVDO); #endif /* USBPDCORE_SVDM || USBPDCORE_VCONN_SUPPORT */ #if defined(USBPDCORE_UVDM) /** * @brief VDM Send Unstructured message callback * @param PortNum current port number * @param pUVDM_Header Pointer on UVDM header based on @ref USBPD_UVDMHeader_TypeDef * @param pNbData Pointer of number of VDO to send * @param pVDO Pointer of VDO to send * @retval None */ void (*USBPD_VDM_SendUVDM)(uint8_t PortNum, USBPD_UVDMHeader_TypeDef *pUVDM_Header, uint8_t *pNbData, uint32_t *pVDO); /** * @brief Unstructured VDM message callback to inform user of reception of UVDM message * @param PortNum current port number * @param UVDM_Header UVDM header based on @ref USBPD_UVDMHeader_TypeDef * @param pNbData Pointer of number of received VDO * @param pVDO Pointer of received VDO * @retval USBPD Status */ USBPD_StatusTypeDef(*USBPD_VDM_ReceiveUVDM)(uint8_t PortNum, USBPD_UVDMHeader_TypeDef UVDM_Header, uint8_t *pNbData, uint32_t *pVDO); #endif /* USBPDCORE_UVDM */ } USBPD_VDM_Callbacks; /** * @} */ #endif /* USBPDCORE_SVDM || USBPDCORE_UVDM || USBPDCORE_VCONN_SUPPORT || USBPDCORE_ANSWER_DISCOIDENT */ /** @defgroup USBPD_CORE_PE_Exported_TypesDefinitions USBPD CORE PE Exported Types Definitions * @{ */ /** @defgroup PE_CallBacks_structure_definition PE CallBacks structure definition * @brief PE CallBacks exposed by the PE to the DPM * @{ */ typedef struct { /** * @brief Callback used to request DPM to setup the new power level. * @note this callback is mandatory for a SRC and DRP. * @param PortNum Port number * @retval Returned values are: @ref USBPD_ACCEPT, @ref USBPD_REJECT, @ref USBPD_WAIT */ USBPD_StatusTypeDef(*USBPD_PE_RequestSetupNewPower)(uint8_t PortNum); /** * @brief Callback used to inform the DPM about the different HardReset step. * @param PortNum Port number * @param Role of the board @ref USBPD_PortPowerRole_TypeDef * @param Status HR Status @ref USBPD_HR_Status_TypeDef * @retval None */ void (*USBPD_PE_HardReset)(uint8_t PortNum, USBPD_PortPowerRole_TypeDef CurrentRole, USBPD_HR_Status_TypeDef Status); /** * @brief Callback used to ask application the reply status for a power role swap request. * @note if the callback is NULL, the request power role swap are automatically rejected. * @param PortNum Port number * @retval Returned values are: @ref USBPD_ACCEPT, @ref USBPD_WAIT, @ref USBPD_REJECT */ USBPD_StatusTypeDef(*USBPD_PE_EvaluatPRSwap)(uint8_t PortNum); /** * @brief Callback used by the stack to notify an event. * @note this callback is mandatory * @param PortNum Port number * @param EventVal @ref USBPD_NotifyEventValue_TypeDef * @retval none */ void (*USBPD_PE_Notify)(uint8_t PortNum, USBPD_NotifyEventValue_TypeDef EventVal); /** * @brief Callback used by the stack to inform DPM that an extended message has been received. * @param PortNum port number value * @param MsgId extended message id @ref USBPD_ExtendedMsg_TypeDef * @param ptrData pointer on the data * @param DataSize size of the data * @retval None */ void (*USBPD_PE_ExtendedMessage)(uint8_t PortNum, USBPD_ExtendedMsg_TypeDef MsgId, uint8_t *ptrData, uint16_t DataSize); /** * @brief Callback used by the stack to get information from DPM or PWR_IF. * @param PortNum Port number * @param DataId Type of data to be read from DPM based on @ref USBPD_CORE_DataInfoType_TypeDef * @param Ptr Pointer on address where DPM data should be written (u8 pointer) * @param Size Pointer on nb of bytes written by DPM * @retval None */ void (*USBPD_PE_GetDataInfo)(uint8_t PortNum, USBPD_CORE_DataInfoType_TypeDef DataId, uint8_t *Ptr, uint32_t *Size); /** * @brief Callback used by the stack to set information inside DPM or PWR_IF. * @param PortNum Port number * @param DataId Type of data to be read from DPM based on @ref USBPD_CORE_DataInfoType_TypeDef * @param Ptr Pointer on address where DPM data to be updated could be read (u8 pointer) * @param Size Nb of byte to be updated in DPM * @retval None */ void (*USBPD_PE_SetDataInfo)(uint8_t PortNum, USBPD_CORE_DataInfoType_TypeDef DataId, uint8_t *Ptr, uint32_t Size); /** * @brief Callback used by a SOURCE to evaluate the SINK request * @param PortNum Port number * @param PtrPowerObject Pointer on the power data object * @retval Returned values are: @ref USBPD_ACCEPT, @ref USBPD_REJECT, @ref USBPD_WAIT, @ref USBPD_GOTOMIN */ USBPD_StatusTypeDef(*USBPD_PE_SRC_EvaluateRequest)(uint8_t PortNum, USBPD_CORE_PDO_Type_TypeDef *PtrPowerObject); /** * @brief Callback used by a sink to evaluate the Source Capabilities. * @note the callback is used in the SNK and DRP context. * @param PortNum Port number * @param PtrRequestData Pointer on selected request data object * @param PtrPowerObject Pointer on selected power data object * @retval None */ void (*USBPD_PE_SNK_EvaluateCapabilities)(uint8_t PortNum, uint32_t *RequestData, USBPD_CORE_PDO_Type_TypeDef *PtrPowerObject); /** * @brief Callback used during the different step of the power role swap * @note see MSC documentation to get more detail * @param PortNum Port number * @param Role of the board @ref USBPD_PortPowerRole_TypeDef * @param Status HR Status update @ref USBPD_PRS_Status_TypeDef * @retval None */ void (*USBPD_PE_PowerRoleSwap)(uint8_t PortNum, USBPD_PortPowerRole_TypeDef CurrentRole, USBPD_PRS_Status_TypeDef Status); /** * @brief Callback used to wakeup the current state machine * @note this function is mandatory but has effect only in RTOS context * @param PortNum Port number * @retval None */ void (*USBPD_PE_WakeupCallback)(uint8_t PortNum); /** * @brief Callback used to ask application the reply status for a Vconn swap request * @param PortNum Port number * @retval Returned values are: @ref USBPD_ACCEPT, @ref USBPD_REJECT, @ref USBPD_WAIT */ USBPD_StatusTypeDef(*USBPD_PE_EvaluateVconnSwap)(uint8_t PortNum); /** * @brief Callback used to enable/disable the vconn power * @note the function is mandatory to manage the VconnPower * @param PortNum Port number * @param State Enable or Disable VConn on CC lines * @retval Returned values are: @ref USBPD_ACCEPT, @ref USBPD_REJECT */ USBPD_StatusTypeDef(*USBPD_PE_VconnPwr)(uint8_t PortNum, USBPD_FunctionalState State); /** * @brief Callback used by PE to enter in error recovery state * @param PortNum Port number * @retval None */ void (*USBPD_PE_EnterErrorRecovery)(uint8_t PortNum); /** * @brief Callback used to ask application the reply status for a DataRoleSwap request * @note if the callback is not set (ie NULL) the stack will automatically reject the request * @param PortNum Port number * @retval Returned values are: @ref USBPD_ACCEPT if DRS can be accepted @ref USBPD_REJECT if DRS is not accepted in one data role (DFP or UFP) or in PD2.0 config @ref USBPD_NOTSUPPORTED if DRS is not supported at all by the application (in both data roles) - P3.0 only */ USBPD_StatusTypeDef(*USBPD_PE_DataRoleSwap)(uint8_t PortNum); /** * @brief Callback used to check the VBUS status * @note this function is mandatory for a SNK port and used inside the hardreset process * @param PortNum Port number * @param Vsafe Vsafe status based on @ref USBPD_VSAFE_StatusTypeDef * @retval Returned values are: @ref USBPD_DISABLE or @ref USBPD_ENABLE */ USBPD_FunctionalState(*USBPD_PE_IsPowerReady)(uint8_t PortNum, USBPD_VSAFE_StatusTypeDef Vsafe); #if defined(USBPDCORE_EPR) /** * @brief Callback used to request DPM what to do * @note this function is a common function to ask DPM what the policy engine shall do. * @param PortNum Port number * @param Id of the action @ref USBPD_CORE_ActionType_TypeDef * @retval Returned values are: @ref USBPD_ACCEPT, USBPD_REJECT, USBPD_WAIT, USBPD_DELAYANSWER, USBPD_NOTSUPPORTED */ uint32_t (*USBPD_PE_RequestDPMWhatToDo)(uint8_t PortNum, uint32_t IDAction); #endif /* (USBPDCORE_USBDATA || USBPDCORE_EPR) */ } USBPD_PE_Callbacks; /** * @} */ /** * @} */ /** @defgroup USBPD_CORE_PE_Exported_Functions USBPD CORE PE Exported Functions * @{ */ /** @defgroup USBPD_CORE_PE_Exported_Functions_Group1 USBPD CORE PE Exported Functions to DPM CORE * @{ */ /** * @brief Initialize Policy Engine layer for a Port * @note the value pSettings and pParams shall be presistante because the stack keep there memory location * @param PortNum Index of current used port * @param pSettings Pointer on @ref USBPD_SettingsTypeDef structure * @param pParams Pointer on @ref USBPD_ParamsTypeDef structure * @param PECallbacks Callback function to be passed to PRL layer * @retval USBPD status Possible values are - @ref USBPD_OK - @ref USBPD_ERROR - @ref USPD_ERROR_CALLBACKMISSING - @ref USBPD_INVALID_PORT_NUMBER - @ref USBPD_MALLOCERROR */ USBPD_StatusTypeDef USBPD_PE_Init(uint8_t PortNum, USBPD_SettingsTypeDef *pSettings, USBPD_ParamsTypeDef *pParams, const USBPD_PE_Callbacks *PECallbacks); /** * @brief Check coherence between lib selected and the lib include inside the project * @note This function can be used only during development process to avoid mismatch * @param LibId Value fix defined with the switch lib. * @retval if the check is OK @ref USBPD_TRUE else @ref USBPD_FALSE */ uint32_t USBPD_PE_CheckLIB(uint32_t LibId); /** * @brief Return the need of the stack in terms of dynamique allocation * @note the value returned corresponds to the allocation need for 2 ports so if application manages * only one port the need is be divided by 2 * @retval Memory size */ uint32_t USBPD_PE_GetMemoryConsumption(void); uint32_t USBPD_PRL_ManageChunkRx(uint8_t PortNum); /** * @brief Set the trace pointer and the debug level * @note the recommended value for debug trace level is 0x3 * 0x1 : Policy engine state * 0x2 : Notification * 0x3 : Policy engine state + Notification * @param Ptr function on trace * @param Debug Trace debug level * @retval None */ void USBPD_PE_SetTrace(TRACE_ENTRY_POINT Ptr, uint8_t Debug); /** * @brief Notification function * @note this function is used by DPM_CORE or the stack to inform the user DPM application * @param PortNum Index of current used port * @param EventVal event based on @ref USBPD_NotifyEventValue_TypeDef * @retval None */ void USBPD_PE_Notification(uint8_t PortNum, USBPD_NotifyEventValue_TypeDef EventVal); #ifdef USBPDCORE_DRP /** * @brief Policy Engine DRP state machine * @param PortNum Index of current used port * @retval Timing in ms */ uint32_t USBPD_PE_StateMachine_DRP(uint8_t PortNum); #endif /* USBPDCORE_DRP */ #if defined(USBPDCORE_VPD) && defined(USBPDCORE_SNK) /** * @brief Policy Engine SNK state machine supporting VPD * @param PortNum Index of current used port * @retval Timing in ms */ uint32_t USBPD_PE_StateMachine_SNKwVPD(uint8_t PortNum); #endif /* USBPDCORE_VPD && USBPDCORE_SNK */ /** * @brief Function called by DPM to before calling the state machine. * @param PortNum Index of current used port * @retval none */ void USBPD_PE_StateMachine_Reset(uint8_t PortNum); /** * @brief Function called by DPM to exit the state machine. * @param PortNum Index of current used port * @retval none */ void USBPD_PE_StateMachine_Stop(uint8_t PortNum); /** * @brief Function called by DPM to set the cable status connected or disconnected. * @param PortNum Index of current used port * @param IsConnected Cable connection status: 1 if connected and 0 is disconnected * @retval USBPD status @ref USBPD_OK * @note this function is obsolete the connection information are managed at cad level */ void USBPD_PE_IsCableConnected(uint8_t PortNum, uint8_t IsConnected); /** * @brief Increment PE Timers tick * @note This function must be called each elapsed ms * @param PortNum Index of current used port * @retval None */ void USBPD_PE_TimerCounter(uint8_t PortNum); /** * @brief Update PE Timers tick * @note This function must be called when exited the low power mode * @param PortNum Index of current used port * @param Tick value in ms (can't execed the value 0x.... else the value will not be take into account) * @retval None */ void USBPD_PE_TimerCounteUpdate(uint8_t PortNum, uint16_t Tick); /** * @} */ #if defined(USBPDCORE_SRC) || defined(USBPDCORE_DRP) /** @defgroup USBPD_CORE_SRC_Exported_Functions_Group1 USBPD CORE PE SRC Exported Functions to DPM CORE * @{ */ /** * @brief Policy Engine Source state machine * @param PortNum Index of current used port * @retval Timing in ms */ uint32_t USBPD_PE_StateMachine_SRC(uint8_t PortNum); /** * @} */ #endif /* USBPDCORE_SRC || USBPDCORE_DRP */ #if defined(USBPDCORE_SNK) || defined(USBPDCORE_DRP) /** @defgroup USBPD_CORE_PE_SNK_Exported_Functions_Group1 USBPD CORE PE SNK Exported Functions to DPM CORE * @{ */ /** * @brief Policy Engine Sink state machine * @param PortNum Index of current used port * @retval Timing in ms */ uint32_t USBPD_PE_StateMachine_SNK(uint8_t PortNum); /** * @} */ #endif /* USBPDCORE_SNK || USBPDCORE_DRP */ #if defined(USBPDCORE_SVDM) || defined(USBPDCORE_UVDM) || defined(USBPDCORE_VCONN_SUPPORT) \ || defined(USBPDCORE_ANSWER_DISCOIDENT) /** @defgroup USBPD_CORE_PE_Exported_Functions_Group2 USBPD CORE PE Exported Functions to VDM USER * @{ */ /** * @brief Initialize VDM callback functions in PE * @param PortNum Index of current used port * @param VDMCallbacks Pointer on VDM callbacks based on @ref USBPD_VDM_Callbacks * @retval None */ void USBPD_PE_InitVDM_Callback(uint8_t PortNum, USBPD_VDM_Callbacks *VDMCallbacks); /** * @} */ #endif /* USBPDCORE_SVDM || USBPDCORE_UVDM || USBPDCORE_VCONN_SUPPORT || USBPDCORE_ANSWER_DISCOIDENT */ /** @defgroup USBPD_CORE_PE_Exported_Functions_Group3 USBPD CORE PE Exported Functions to DPM USER * @{ */ /** * @brief This generic function to send a control message * @param PortNum Index of current used port * @param CtrlMsg Control message id @ref USBPD_ControlMsg_TypeDef * @param SOPType SOP Type based on @ref USBPD_SOPType_TypeDef * @retval status @ref USBPD_OK, @ref USBPD_BUSY, @ref USBPD_ERROR or @ref USBPD_FAIL */ USBPD_StatusTypeDef USBPD_PE_Request_CtrlMessage(uint8_t PortNum, USBPD_ControlMsg_TypeDef CtrlMsg, USBPD_SOPType_TypeDef SOPType); /** * @brief This generic function is used to send data message * @note the parameter pData is used only if DataMsg is equal to USBPD_DATAMSG_ALERT or USBPD_DATAMSG_GET_COUNTRY_INFO * @param PortNum Index of current used port * @param DataMsg Data message id based on @ref USBPD_DataMsg_TypeDef * @param pData Pointer on the data to send * @retval status @ref USBPD_OK, @ref USBPD_BUSY, @ref USBPD_ERROR or @ref USBPD_FAIL */ USBPD_StatusTypeDef USBPD_PE_Request_DataMessage(uint8_t PortNum, USBPD_DataMsg_TypeDef DataMsg, uint32_t *pData); /** * @brief This function is used to force PE to perform an Hard Reset. * @param PortNum Index of current used port * @retval status @ref USBPD_OK */ USBPD_StatusTypeDef USBPD_PE_Request_HardReset(uint8_t PortNum); /** * @brief Request the PE to send a cable reset. * @note Only a DFP Shall generate Cable Reset Signaling. A DFP Shall only generate Cable Reset Signaling within an Explicit Contract. The DFP has to be supplying VCONN prior to a Cable Reset * @param PortNum The current port number * @retval USBPD Status */ USBPD_StatusTypeDef USBPD_PE_Request_CableReset(uint8_t PortNum); #if defined(USBPDCORE_SNK) || defined(USBPDCORE_DRP) /** * @brief This function request PE to send a request message * @param PortNum Index of current used port * @param Rdo Requested data object * @param PWobject Power Object * @retval status @ref USBPD_OK, @ref USBPD_BUSY, @ref USBPD_ERROR or @ref USBPD_FAIL */ USBPD_StatusTypeDef USBPD_PE_Send_Request(uint8_t PortNum, uint32_t Rdo, USBPD_CORE_PDO_Type_TypeDef PWobject); #endif /* USBPDCORE_SNK || USBPDCORE_DRP */ #if defined(USBPDCORE_BATTERY) || defined(USBPDCORE_MANU_INFO) || \ defined(USBPDCORE_SECURITY_MSG) || defined(USBPDCORE_FWUPD) /** * @brief This function send an extended message * @note The management of chunk or unchunked message is manage inside the * @param PortNum Port number value * @param SOPType Message type based on @ref USBPD_SOPType_TypeDef * @param MessageType Extended Msg type @ref USBPD_ExtendedMsg_TypeDef * @param Ptrdata Data pointer to PRL layer * @param DataSize Size of the data (<= 260) * @retval status @ref USBPD_OK, @ref USBPD_BUSY, @ref USBPD_ERROR or @ref USBPD_FAIL */ USBPD_StatusTypeDef USBPD_PE_SendExtendedMessage(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType, USBPD_ExtendedMsg_TypeDef MessageType, uint8_t *Ptrdata, uint16_t DataSize); #endif /* USBPDCORE_BATTERY || USBPDCORE_MANU_INFO || USBPDCORE_SECURITY_MSG || USBPDCORE_FWUPD */ #if defined(USBPDCORE_FASTROLESWAP) /** * @brief this function request PE to perform an FRS signalling. * @param PortNum * @retval None */ void USBPD_PE_ExecFastRoleSwapSignalling(uint8_t PortNum); #endif /* USBPDCORE_FASTROLESWAP */ #if defined(USBPDCORE_SVDM) || defined(USBPDCORE_VCONN_SUPPORT) /** * @brief Called by DPM to request the PE to perform a VDM identity request. * @note On PD2.0, SVDM Identity cannot be sent by UFP. * @param PortNum Index of current used port * @param SOPType SOP Type (Only SOP or SOP') * @retval USBPD status */ USBPD_StatusTypeDef USBPD_PE_SVDM_RequestIdentity(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType); /** * @brief Called by DPM to request the PE to perform a VDM SVID request. * @param PortNum Index of current used port * @param SOPType SOP Type (only valid for SOP or SOP') * @retval USBPD status: @ref USBPD_BUSY, @ref USBPD_OK, @ref USBPD_FAIL */ USBPD_StatusTypeDef USBPD_PE_SVDM_RequestSVID(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType); /** * @brief Called by DPM to request the PE to perform a VDM Discovery mode message on one SVID. * @param PortNum Index of current used port * @param SOPType SOP Type * @param SVID SVID used for discovery mode message * @retval USBPD status: @ref USBPD_BUSY, @ref USBPD_OK, @ref USBPD_FAIL */ USBPD_StatusTypeDef USBPD_PE_SVDM_RequestMode(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType, uint16_t SVID); /** * @brief Called by DPM to request the PE to perform a VDM Discovery mode message on one SVID. * @param PortNum Index of current used port * @param SOPType SOP Type * @param SVID SVID used for discovery mode message * @param ModeIndex Index of the mode to be entered * @retval USBPD status: @ref USBPD_BUSY, @ref USBPD_OK, @ref USBPD_FAIL */ USBPD_StatusTypeDef USBPD_PE_SVDM_RequestModeEnter(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType, uint16_t SVID, uint8_t ModeIndex); /** * @brief Called by DPM to request the PE to perform a VDM mode exit. * @param PortNum Index of current used port * @param SOPType SOP Type * @param SVID SVID used for discovery mode message * @param ModeIndex Index of the mode to be exit * @retval USBPD status: @ref USBPD_BUSY, @ref USBPD_OK, @ref USBPD_FAIL */ USBPD_StatusTypeDef USBPD_PE_SVDM_RequestModeExit(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType, uint16_t SVID, uint8_t ModeIndex); /** * @brief Called by DPM to request the PE to send a specific SVDM message. * @param PortNum Index of current used port * @param SOPType Received message type based on @ref USBPD_SOPType_TypeDef * @param Command VDM command based on @ref USBPD_VDM_Command_Typedef * @param SVID Used SVID * @retval USBPD status: @ref USBPD_BUSY, @ref USBPD_OK, @ref USBPD_FAIL */ USBPD_StatusTypeDef USBPD_PE_SVDM_RequestSpecific(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType, USBPD_VDM_Command_Typedef Command, uint16_t SVID); #endif /* USBPDCORE_SVDM || USBPDCORE_VCONN_SUPPORT */ #if defined(USBPDCORE_SVDM) /** * @brief Called by DPM to request the PE to perform a VDM Attention. * @param PortNum Index of current used port * @param SOPType Received message type based on @ref USBPD_SOPType_TypeDef (valid with SOP only) * @param SVID Used SVID * @retval USBPD status: @ref USBPD_BUSY, @ref USBPD_OK, @ref USBPD_FAIL */ USBPD_StatusTypeDef USBPD_PE_SVDM_RequestAttention(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType, uint16_t SVID); #endif /* USBPDCORE_SVDM */ #if defined(USBPDCORE_UVDM) /** * @brief Called by DPM to request the PE to send a UVDM message. * @param PortNum Index of current used port * @param SOPType Received message type based on @ref USBPD_SOPType_TypeDef * @retval USBPD status: @ref USBPD_BUSY, @ref USBPD_OK, @ref USBPD_FAIL */ USBPD_StatusTypeDef USBPD_PE_UVDM_RequestMessage(uint8_t PortNum, USBPD_SOPType_TypeDef SOPType); #endif /* USBPDCORE_UVDM */ /** * @} */ /** * @} */ /** * @} */ /** @addtogroup USBPD_CORE_PRL * @{ */ /** @defgroup USBPD_CORE_PRL_Exported_Functions USBPD CORE PRL Exported Functions * @{ */ /** @defgroup USBPD_CORE_PRL_Exported_Functions_Group1 USBPD CORE PRL Interface function for timer * @{ */ /** * @brief Decrement The PRL Timers values * @param PortNum port number value * @retval None */ void USBPD_PRL_TimerCounter(uint8_t PortNum); /** * @} */ /** * @} */ /** * @} */ #if defined(USBPDCORE_TCPM_SUPPORT) /** @addtogroup USBPD_CORE_TCPM * @{ */ /** @defgroup USBPD_CORE_TCPM_Exported_Functions USBPD CORE TCPM Exported Functions * @{ */ /** @defgroup USBPD_CORE_TCPM_Exported_Functions_Grp1 USBPD CORE TCPM Exported Functions to DPM and PWR_IF applications * @{ */ /** * @brief Initialize TCPC devices * @param PortNum Port number value * @param TCPC_ToggleRole Indication if TCPC should perform a role toggle or not * @param Params Pointer on PE parameters based on @ref USBPD_ParamsTypeDef * @param CallbackFunctions Pointer on CAD callbacks * @param TCPC_Driver Pointer on TCPC drivers based on @ref TCPC_DrvTypeDef * @retval USBPD status */ USBPD_StatusTypeDef USBPD_TCPM_HWInit(uint8_t PortNum, uint8_t TCPC_ToggleRole, USBPD_ParamsTypeDef *Params, USBPD_CAD_Callbacks *CallbackFunctions, TCPC_DrvTypeDef *TCPC_Driver); /** * @brief Set CC line for PD connection * @param PortNum Port number value * @param Pull Power role can be one of the following values: * @arg @ref TYPEC_CC_RA * @arg @ref TYPEC_CC_RP * @arg @ref TYPEC_CC_RD * @arg @ref TYPEC_CC_OPEN * @param State Activation or deactivation of connection * @retval USBPD status */ USBPD_StatusTypeDef USBPD_TCPM_set_cc(uint32_t PortNum, TCPC_CC_Pull_TypeDef Pull, USBPD_FunctionalState State); /** * @brief Enable or disable VCONN * @param PortNum Port number value * @param State Activation or deactivation of VCONN * @retval USBPD status */ USBPD_StatusTypeDef USBPD_TCPM_set_vconn(uint32_t PortNum, USBPD_FunctionalState State); /** * @brief Enable VBUS * @param PortNum The port handle. * @retval USBPD status */ USBPD_StatusTypeDef USBPD_TCPM_VBUS_Enable(uint32_t PortNum); /** * @brief Disable VBUS * @param PortNum The port handle. * @retval USBPD status */ USBPD_StatusTypeDef USBPD_TCPM_VBUS_Disable(uint32_t PortNum); /** * @brief Get VBUS voltage * @param PortNum The port handle. * @retval VBUS value in mV */ uint16_t USBPD_TCPM_VBUS_GetVoltage(uint32_t PortNum); /** * @brief Retrieve the VBUS VSafe0 status for a specified port. * @param PortNum The port handle. * @retval USBPD_StatusTypeDef */ USBPD_StatusTypeDef USBPD_TCPM_VBUS_IsVsafe0V(uint32_t PortNum); /** * @brief Retrieve the VBUS Vsafe5V status for a specified port. * @param PortNum The port handle. * @retval USBPD_StatusTypeDef */ USBPD_StatusTypeDef USBPD_TCPM_VBUS_IsVsafe5V(uint32_t PortNum); /** * @brief Management of ALERT * @param Event Event reported by application * @retval USBPD status */ USBPD_StatusTypeDef USBPD_TCPM_alert(uint32_t Event); /** * @brief Force type C state machine to enter recovery state * @param PortNum Index of current used port * @retval USBPD status */ USBPD_StatusTypeDef USBPD_TCPM_EnterErrorRecovery(uint32_t PortNum); /** * @} */ /** * @} */ /** * @} */ #endif /* USBPDCORE_TCPM_SUPPORT */ #if defined(USBPDCORE_EPR) /** * @brief This function is used to send an extended control message * @param PortNum Port number value * @param MessageType Extended control Msg type @ref USBPD_ExtendedControl_Typedef * @retval USBPD status * USBPD_BUSY : the request can be execute because an action is ongoing * USBPD_ERROR : the PD state doesn't allow this operation * USBPD_FAIL : the operation is not allowed in this context * USBPD_OK : the request has been post to the stack */ USBPD_StatusTypeDef USBPD_PE_Send_ExtendeControlMessage(uint8_t PortNum, USBPD_ExtendedControl_Typedef MessageType); #if defined(USBPDCORE_EPR) && (defined(USBPDCORE_SNK) || defined(USBPDCORE_DRP)) /** * @brief This function request PE to send an EPR_Mode enter * @param PortNum Index of current used port * @retval status @ref USBPD_OK, @ref USBPD_BUSY, @ref USBPD_ERROR or @ref USBPD_FAIL * * @note : this function can be only called by a sink with an explicit contract */ USBPD_StatusTypeDef USBPD_PE_Request_EPRModeEnter(uint8_t PortNum); /** * @brief This function request PE to send an EPR_Mode exit * @param PortNum Index of current used port * @retval status @ref USBPD_OK, @ref USBPD_BUSY, @ref USBPD_ERROR or @ref USBPD_FAIL * * @note : this function can be only called by a sink with an explicit contract */ USBPD_StatusTypeDef USBPD_PE_Request_EPRModeExit(uint8_t PortNum); #endif /* USBPDCORE_EPR && (USBPDCORE_SNK || USBPDCORE_DRP) */ #endif /* (USBPDCORE_EPR || USBPDCORE_USBDATA) */ /** * @} */ /** * @} */ #ifdef __cplusplus } #endif #endif /* USBPD_CORE_H_ */ 在这里面有吗
最新发布
08-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值