/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file usbpd_pwr_user.c * @author MCD Application Team * @brief USBPD PWR user code ****************************************************************************** * @attention * * Copyright (c) 2026 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 */ #include "gpio.h" /* 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 */ /* 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 { HAL_GPIO_WritePin(UCPD1_VBUS_GPIO_Port, UCPD1_VBUS_Pin, GPIO_PIN_RESET); PWR_DEBUG_TRACE(Instance, "ADVICE: Update BSP_USBPD_PWR_VBUSInit"); /* Need to keep DISCHARGE ON as soon as not powering VBUS on MB1397 */ //DISCHARGE_SET_ON(); } 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 = BSP_ERROR_NONE; if (Instance >= USBPD_PWR_INSTANCES_NBR) { ret = BSP_ERROR_WRONG_PARAM; } else { PWR_DEBUG_TRACE(Instance, "ADVICE: Update BSP_USBPD_PWR_VBUSOn"); // Turning discharger off; HAL_GPIO_WritePin(UCPD1_VBUS_GPIO_Port, UCPD1_VBUS_Pin, GPIO_PIN_SET); // Turning Power Source on; } 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 = BSP_ERROR_NONE; if (Instance >= USBPD_PWR_INSTANCES_NBR) { ret = BSP_ERROR_WRONG_PARAM; } else { PWR_DEBUG_TRACE(Instance, "ADVICE: Update BSP_USBPD_PWR_VBUSOff"); HAL_GPIO_WritePin(UCPD1_VBUS_GPIO_Port, UCPD1_VBUS_Pin, GPIO_PIN_RESET); // Turning Power Source off // Turning on Discharge and waiting till Vbus voltage is at low level (750mV) } 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 { PWR_DEBUG_TRACE(Instance, "ADVICE: Update BSP_USBPD_PWR_VBUSGetVoltage"); val = 5000U; } *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 = BSP_ERROR_NONE; uint8_t state = 0U; if (Instance >= USBPD_PWR_INSTANCES_NBR) { ret = BSP_ERROR_WRONG_PARAM; } else { if (HAL_GPIO_ReadPin(UCPD1_VBUS_GPIO_Port, UCPD1_VBUS_Pin) == GPIO_PIN_SET) state = 1U; 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 */ /** * @} */ /** * @} */ /** * @} */ /** * @} */