Files
alim_STM32/USBPD/usbpd_pwr_user.c
2025-05-14 10:54:37 +02:00

803 lines
23 KiB
C

/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file usbpd_pwr_user.c
* @author MCD Application Team
* @brief USBPD PWR user code
******************************************************************************
* @attention
*
* Copyright (c) 2025 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.
*
******************************************************************************
*/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "usbpd_pwr_user.h"
#include "stm32g4xx_hal.h"
#if defined(_TRACE)
#include "usbpd_core.h"
#include "usbpd_trace.h"
#endif /* _TRACE */
/* USER CODE BEGIN include */
/* USER CODE END include */
/** @addtogroup BSP
* @{
*/
/** @addtogroup POWER
* @{
*/
/** @defgroup POWER_Private_Typedef Private Typedef
* @{
*/
/* USER CODE BEGIN POWER_Private_Typedef */
/* USER CODE END POWER_Private_Typedef */
/**
* @}
*/
/** @defgroup POWER_Private_Constants Private Constants
* @{
*/
/* USER CODE BEGIN POWER_Private_Constants */
#define TCPP_EN_GPIO_Port GPIOA
#define TCPP_EN_Pin GPIO_PIN_9
/* USER CODE END POWER_Private_Constants */
/**
* @}
*/
/** @defgroup POWER_Private_Macros Private Macros
* @{
*/
#if defined(_TRACE)
#define PWR_DEBUG_TRACE(_PORT_, __MESSAGE__) USBPD_TRACE_Add(USBPD_TRACE_DEBUG, (_PORT_), 0u, (uint8_t*)(__MESSAGE__), sizeof(__MESSAGE__) - 1u)
#else
#define PWR_DEBUG_TRACE(_PORT_, __MESSAGE__)
#endif /* _TRACE */
/* USER CODE BEGIN POWER_Private_Macros */
/* USER CODE END POWER_Private_Macros */
/**
* @}
*/
/** @defgroup POWER_Private_Variables Private Variables
* @{
*/
/* USER CODE BEGIN POWER_Private_Variables */
/* USER CODE END POWER_Private_Variables */
/**
* @}
*/
/** @defgroup POWER_Private_Functions Private Functions
* @{
*/
/* USER CODE BEGIN POWER_Private_Prototypes */
/* USER CODE END POWER_Private_Prototypes */
/**
* @}
*/
/** @defgroup POWER_Exported_Variables Exported Variables
* @{
*/
/* USER CODE BEGIN POWER_Exported_Variables */
/* USER CODE END POWER_Exported_Variables */
/**
* @}
*/
/** @addtogroup POWER_Exported_Functions
* @{
*/
/**
* @brief Global initialization of PWR resource used by USB-PD
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_Init(uint32_t Instance)
{
/* USER CODE BEGIN BSP_USBPD_PWR_Init */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_NONE;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_Init */
}
/**
* @brief Global de-initialization of PWR resource used by USB-PD
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_Deinit(uint32_t Instance)
{
/* USER CODE BEGIN BSP_USBPD_PWR_Deinit */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_NONE;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
else
{
PWR_DEBUG_TRACE(Instance, "ADVICE: Update BSP_USBPD_PWR_Deinit");
}
return ret;
/* USER CODE END BSP_USBPD_PWR_Deinit */
}
/**
* @brief Assign Power role for current Port (Source or Sink)
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param Role Type-C port role
* This parameter can be take one of the following values:
* @arg @ref POWER_ROLE_SOURCE
* @arg @ref POWER_ROLE_SINK
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_SetRole(uint32_t Instance, USBPD_PWR_PowerRoleTypeDef Role)
{
/* USER CODE BEGIN BSP_USBPD_PWR_SetRole */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_NONE;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
else
{
PWR_DEBUG_TRACE(Instance, "ADVICE: Update BSP_USBPD_PWR_SetRole");
}
return ret;
/* USER CODE END BSP_USBPD_PWR_SetRole */
}
/**
* @brief Set operating mode of Port regarding power saving constraints
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param PwrMode Type-C port power saving mode
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_MODE_OFF
* @arg @ref USBPD_PWR_MODE_HIBERNATE
* @arg @ref USBPD_PWR_MODE_LOWPOWER
* @arg @ref USBPD_PWR_MODE_NORMAL
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_SetPowerMode(uint32_t Instance, USBPD_PWR_PowerModeTypeDef PwrMode)
{
/* USER CODE BEGIN BSP_USBPD_PWR_SetPowerMode */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_NONE;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
else
{
PWR_DEBUG_TRACE(Instance, "ADVICE: Update BSP_USBPD_PWR_SetPowerMode");
}
return ret;
/* USER CODE END BSP_USBPD_PWR_SetPowerMode */
}
/**
* @brief Get operating mode of Port regarding power saving constraints
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param PwrMode Pointer on current Type-C port power saving mode value
* Following values are available :
* @arg @ref USBPD_PWR_MODE_OFF
* @arg @ref USBPD_PWR_MODE_HIBERNATE
* @arg @ref USBPD_PWR_MODE_LOWPOWER
* @arg @ref USBPD_PWR_MODE_NORMAL
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_GetPowerMode(uint32_t Instance, USBPD_PWR_PowerModeTypeDef *PwrMode)
{
/* USER CODE BEGIN BSP_USBPD_PWR_GetPowerMode */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_NONE;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
else
{
PWR_DEBUG_TRACE(Instance, "ADVICE: Update BSP_USBPD_PWR_GetPowerMode");
}
return ret;
/* USER CODE END BSP_USBPD_PWR_GetPowerMode */
}
/**
* @brief Initialize the hardware resources used by the Type-C power delivery (PD)
* controller.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VBUSInit(uint32_t Instance)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VBUSInit */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_NONE;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
else
{
PWR_DEBUG_TRACE(Instance, "ADVICE: Update BSP_USBPD_PWR_VBUSInit");
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VBUSInit */
}
/**
* @brief Release the hardware resources used by the Type-C power delivery (PD)
* controller.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VBUSDeInit(uint32_t Instance)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VBUSDeInit */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VBUSDeInit */
}
/**
* @brief Enable power supply over VBUS.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VBUSOn(uint32_t Instance)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VBUSOn */
/* Check if instance is valid */
int32_t ret;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
else
{
HAL_GPIO_WritePin(TCPP_EN_GPIO_Port, TCPP_EN_Pin, GPIO_PIN_SET);
return BSP_ERROR_NONE;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VBUSOn */
}
/**
* @brief Disable power supply over VBUS.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VBUSOff(uint32_t Instance)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VBUSOff */
/* Check if instance is valid */
int32_t ret;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
else
{
HAL_GPIO_WritePin(TCPP_EN_GPIO_Port, TCPP_EN_Pin, GPIO_PIN_RESET);
return BSP_ERROR_NONE;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VBUSOff */
}
/**
* @brief Set a fixed/variable PDO and manage the power control.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param VbusTargetInmv the vbus Target (in mV)
* @param OperatingCurrent the Operating Current (in mA)
* @param MaxOperatingCurrent the Max Operating Current (in mA)
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VBUSSetVoltage_Fixed(uint32_t Instance,
uint32_t VbusTargetInmv,
uint32_t OperatingCurrent,
uint32_t MaxOperatingCurrent)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VBUSSetVoltage_Fixed */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_NONE;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VBUSSetVoltage_Fixed */
}
/**
* @brief Set a fixed/variable PDO and manage the power control.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param VbusTargetMinInmv the vbus Target min (in mV)
* @param VbusTargetMaxInmv the vbus Target max (in mV)
* @param OperatingCurrent the Operating Current (in mA)
* @param MaxOperatingCurrent the Max Operating Current (in mA)
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VBUSSetVoltage_Variable(uint32_t Instance,
uint32_t VbusTargetMinInmv,
uint32_t VbusTargetMaxInmv,
uint32_t OperatingCurrent,
uint32_t MaxOperatingCurrent)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VBUSSetVoltage_Variable */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VBUSSetVoltage_Variable */
}
/**
* @brief Set a Battery PDO and manage the power control.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param VbusTargetMin the vbus Target min (in mV)
* @param VbusTargetMax the vbus Target max (in mV)
* @param OperatingPower the Operating Power (in mW)
* @param MaxOperatingPower the Max Operating Power (in mW)
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VBUSSetVoltage_Battery(uint32_t Instance,
uint32_t VbusTargetMin,
uint32_t VbusTargetMax,
uint32_t OperatingPower,
uint32_t MaxOperatingPower)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VBUSSetVoltage_Battery */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VBUSSetVoltage_Battery */
}
/**
* @brief Set a APDO and manage the power control.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param VbusTargetInmv the vbus Target (in mV)
* @param OperatingCurrent the Operating current (in mA)
* @param Delta Delta between with previous APDO (in mV), 0 means APDO start
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VBUSSetVoltage_APDO(uint32_t Instance,
uint32_t VbusTargetInmv,
uint32_t OperatingCurrent,
int32_t Delta)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VBUSSetVoltage_APDO */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VBUSSetVoltage_APDO */
}
/**
* @brief Get actual voltage level measured on the VBUS line.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param pVoltage Pointer on measured voltage level (in mV)
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VBUSGetVoltage(uint32_t Instance, uint32_t *pVoltage)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VBUSGetVoltage */
/* Check if instance is valid */
int32_t ret;
uint32_t val = 0U;
if ((Instance >= USBPD_PWR_INSTANCES_NBR) || (NULL == pVoltage))
{
ret = BSP_ERROR_WRONG_PARAM;
}
else
{
ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
PWR_DEBUG_TRACE(Instance, "ADVICE: Update BSP_USBPD_PWR_VBUSGetVoltage");
}
*pVoltage = val;
return ret;
/* USER CODE END BSP_USBPD_PWR_VBUSGetVoltage */
}
/**
* @brief Get actual current level measured on the VBUS line.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param pCurrent Pointer on measured current level (in mA)
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VBUSGetCurrent(uint32_t Instance, int32_t *pCurrent)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VBUSGetCurrent */
/* Check if instance is valid */
int32_t ret;
if ((Instance >= USBPD_PWR_INSTANCES_NBR) || (NULL == pCurrent))
{
ret = BSP_ERROR_WRONG_PARAM;
}
else
{
*pCurrent = 0;
ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VBUSGetCurrent */
}
/**
* @brief Initialize VCONN sourcing.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param CCPinId Type-C CC pin identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_CC1
* @arg @ref USBPD_PWR_TYPE_C_CC2
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VCONNInit(uint32_t Instance,
uint32_t CCPinId)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VCONNInit */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VCONNInit */
}
/**
* @brief Un-Initialize VCONN sourcing.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param CCPinId Type-C CC pin identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_CC1
* @arg @ref USBPD_PWR_TYPE_C_CC2
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VCONNDeInit(uint32_t Instance,
uint32_t CCPinId)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VCONNDeInit */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VCONNDeInit */
}
/**
* @brief Enable VCONN sourcing.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param CCPinId Type-C CC pin identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_CC1
* @arg @ref USBPD_PWR_TYPE_C_CC2
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VCONNOn(uint32_t Instance,
uint32_t CCPinId)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VCONNOn */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VCONNOn */
}
/**
* @brief Disable VCONN sourcing.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param CCPinId CC pin identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_CC1
* @arg @ref USBPD_PWR_TYPE_C_CC2
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VCONNOff(uint32_t Instance,
uint32_t CCPinId)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VCONNOff */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VCONNOff */
}
/**
* @brief Get actual VCONN status.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param CCPinId Type-C CC pin identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_CC1
* @arg @ref USBPD_PWR_TYPE_C_CC2
* @param pState VCONN status (1: On, 0: Off)
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VCONNIsOn(uint32_t Instance,
uint32_t CCPinId, uint8_t *pState)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VCONNIsOn */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
*pState = 0u;
return ret;
/* USER CODE END BSP_USBPD_PWR_VCONNIsOn */
}
/**
* @brief Set the VBUS disconnection voltage threshold.
* @note Callback function registered through BSP_USBPD_PWR_RegisterVBUSDetectCallback
* function call is invoked when VBUS falls below programmed threshold.
* @note By default VBUS disconnection threshold is set to 3.3V
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param VoltageThreshold VBUS disconnection voltage threshold (in mV)
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_SetVBUSDisconnectionThreshold(uint32_t Instance,
uint32_t VoltageThreshold)
{
/* USER CODE BEGIN BSP_USBPD_PWR_SetVBUSDisconnectionThreshold */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_SetVBUSDisconnectionThreshold */
}
/**
* @brief Register USB Type-C Current callback function.
* @note Callback function invoked when VBUS rises above 4V (VBUS present) or
* when VBUS falls below programmed threshold (VBUS absent).
* @note Callback function is un-registered when callback function pointer
* argument is NULL.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param pfnVBUSDetectCallback callback function pointer
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_RegisterVBUSDetectCallback(uint32_t Instance,
USBPD_PWR_VBUSDetectCallbackFunc *pfnVBUSDetectCallback)
{
/* USER CODE BEGIN BSP_USBPD_PWR_RegisterVBUSDetectCallback */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
return ret;
/* USER CODE END BSP_USBPD_PWR_RegisterVBUSDetectCallback */
}
/**
* @brief Get actual VBUS status.
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param pState VBUS status (1: On, 0: Off)
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VBUSIsOn(uint32_t Instance, uint8_t *pState)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VBUSIsOn */
/* Check if instance is valid */
int32_t ret;
uint8_t state = 0U;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
else
{
ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
PWR_DEBUG_TRACE(Instance, "ADVICE: Update BSP_USBPD_PWR_VBUSIsOn");
}
*pState = state;
return ret;
/* USER CODE END BSP_USBPD_PWR_VBUSIsOn */
}
/**
* @brief Set state of VCC (specific functions)
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @param State VCC state
* @retval BSP status
*/
__weak int32_t BSP_USBPD_PWR_VCCSetState(uint32_t Instance, uint32_t State)
{
/* USER CODE BEGIN BSP_USBPD_PWR_VCCSetState */
/* Check if instance is valid */
int32_t ret = BSP_ERROR_NONE;
if (Instance >= USBPD_PWR_INSTANCES_NBR)
{
ret = BSP_ERROR_WRONG_PARAM;
}
else
{
ret = BSP_ERROR_FEATURE_NOT_SUPPORTED;
PWR_DEBUG_TRACE(Instance, "ADVICE: Update BSP_USBPD_PWR_VCCSetState");
}
return ret;
/* USER CODE END BSP_USBPD_PWR_VCCSetState */
}
/**
* @brief USBPD PWR callback used to notify a asynchronous PWR event.
* (This callback caould be called fromp an IT routine, associated to
* any PWR related event detection mechanism)
* @param Instance Type-C port identifier
* This parameter can be take one of the following values:
* @arg @ref USBPD_PWR_TYPE_C_PORT_1
* @retval None
*/
__weak void BSP_USBPD_PWR_EventCallback(uint32_t Instance)
{
/* USER CODE BEGIN BSP_USBPD_PWR_EventCallback */
PWR_DEBUG_TRACE(Instance, "ADVICE: Update BSP_USBPD_PWR_EventCallback");
/* USER CODE END BSP_USBPD_PWR_EventCallback */
}
/**
* @}
*/
/** @addtogroup POWER_Private_Functions
* @{
*/
/* USER CODE BEGIN POWER_Private_Functions */
/* USER CODE END POWER_Private_Functions */
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/