256 lines
12 KiB
C
256 lines
12 KiB
C
/**
|
|
******************************************************************************
|
|
* @file gui_api.h
|
|
* @author MCD Application Team
|
|
* @brief This file contains all the functions prototypes for GUI
|
|
* interface.
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* <h2><center>© Copyright (c) 2018 STMicroelectronics.
|
|
* All rights reserved.</center></h2>
|
|
*
|
|
* This software component is licensed by ST under BSD 3-Clause license,
|
|
* the "License"; You may not use this file except in compliance with the
|
|
* License. You may obtain a copy of the License at:
|
|
* opensource.org/licenses/BSD-3-Clause
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
#ifndef _GUI_API_H
|
|
#define _GUI_API_H
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "main.h"
|
|
#include "usbpd_def.h"
|
|
|
|
/** @addtogroup STM32_USBPD_LIBRARY
|
|
* @{
|
|
*/
|
|
|
|
/** @addtogroup USBPD_GUI_API
|
|
* @{
|
|
*/
|
|
|
|
/* Exported constants --------------------------------------------------------*/
|
|
/** @defgroup USBPD_GUI_API_Exported_Defines USBPD GUI API exported Defines
|
|
* @{
|
|
*/
|
|
#define GUI_PE_PORT_NUM_Pos (24u)
|
|
#define GUI_PE_PORT_NUM_Msk (0x3u << GUI_PE_PORT_NUM_Pos)
|
|
#define GUI_PE_PORT_NUM_0 (0x0u << GUI_PE_PORT_NUM_Pos)
|
|
#define GUI_PE_PORT_NUM_1 (0x1u << GUI_PE_PORT_NUM_Pos)
|
|
#define GUI_PE_NOTIF_Pos (4u)
|
|
#define GUI_PE_NOTIF_Msk (0xFFu << GUI_PE_NOTIF_Pos)
|
|
|
|
#define GUI_NOTIF_MEASUREMENT (USBPD_NOTIFY_ALL + 1)
|
|
#define GUI_NOTIF_MEASUREMENT_STEP 40u
|
|
|
|
/**
|
|
* @brief USB PD GUI STATE MACHINE STATE
|
|
*/
|
|
typedef enum
|
|
{
|
|
GUI_STATE_INIT, /*!< GUI init state */
|
|
GUI_STATE_RUNNING, /*!< GUI running state */
|
|
GUI_STATE_RESET, /*!< GUI reset state */
|
|
} USBPD_GUI_State;
|
|
|
|
/**
|
|
* @brief USB PD GUI TAG TYPE
|
|
*/
|
|
typedef enum
|
|
{
|
|
DPM_RESET_REQ = 0x01,
|
|
DPM_INIT_REQ = 0x02,
|
|
DPM_INIT_CNF = 0x03,
|
|
DPM_CONFIG_GET_REQ = 0x04,
|
|
DPM_CONFIG_GET_CNF = 0x05,
|
|
DPM_CONFIG_SET_REQ = 0x06,
|
|
DPM_CONFIG_SET_CNF = 0x07,
|
|
DPM_CONFIG_REJ = 0x08,
|
|
DPM_MESSAGE_REQ = 0x09,
|
|
DPM_MESSAGE_CNF = 0x0A,
|
|
DPM_MESSAGE_REJ = 0x0B,
|
|
DPM_MESSAGE_IND = 0x0C,
|
|
DPM_MESSAGE_RSP = 0x0D,
|
|
DPM_REGISTER_READ_REQ = 0x0E,
|
|
DPM_REGISTER_READ_CNF = 0x0F,
|
|
DPM_REGISTER_WRITE_REQ = 0x10,
|
|
DPM_REGISTER_WRITE_CNF = 0x11,
|
|
DEBUG_STACK_MESSAGE = 0x12,
|
|
} USBPD_GUI_Tag_TypeDef;
|
|
|
|
/** @defgroup USBPD_CORE_GUI_TYPE_NOTIFICATION USBPD CORE TRACE TYPE NOTIFICATION
|
|
* @{
|
|
*/
|
|
#define GUI_NOTIF_NUMBEROFRCVSNKPDO (1 << 0)
|
|
#define GUI_NOTIF_RDOPOSITION (1 << 1)
|
|
#define GUI_NOTIF_LISTOFRCVSRCPDO (1 << 2)
|
|
#define GUI_NOTIF_NUMBEROFRCVSRCPDO (1 << 3)
|
|
#define GUI_NOTIF_LISTOFRCVSNKPDO (1 << 4)
|
|
#define GUI_NOTIF_ISCONNECTED (1 << 5)
|
|
#define GUI_NOTIF_DATAROLE (1 << 6)
|
|
#define GUI_NOTIF_POWERROLE (1 << 7)
|
|
#define GUI_NOTIF_CCDEFAULTCURRENTADVERTISED (1 << 8)
|
|
#define GUI_NOTIF_VCONNON (1 << 9)
|
|
#define GUI_NOTIF_VCONNSWAPED (1 << 10)
|
|
#define GUI_NOTIF_MEASUREREPORTING (1 << 11)
|
|
#define GUI_NOTIF_CC (1 << 12)
|
|
#define GUI_NOTIF_PE_EVENT (1 << 13)
|
|
#define GUI_NOTIF_TIMESTAMP (1 << 14)
|
|
#define GUI_NOTIF_POWER_EVENT (1 << 15)
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Exported types ------------------------------------------------------------*/
|
|
/** @defgroup USBPD_GUI_API_Exported_TypeDef USBPD GUI API exported TypeDef
|
|
* @{
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t VBUS_Level :16; /*!< VBUS Level */
|
|
uint16_t IBUS_Level :16; /*!< IBUS Level */
|
|
/* Measurement Reporting */
|
|
union {
|
|
uint8_t MeasurementReporting;
|
|
struct {
|
|
uint8_t MeasReportValue :7; /*!< Enable Measure reporting every tr x 40 ms */
|
|
uint8_t MeasReportActivation :1; /*!< Enable or Disable Measure reporting */
|
|
}d;
|
|
}u;
|
|
uint8_t Reserved :8; /*!< Reserved bits */
|
|
} GUI_USER_ParamsTypeDef;
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t PE_DataSwap : 1; /*!< support data swap */
|
|
uint32_t PE_VconnSwap : 1; /*!< support VCONN swap */
|
|
uint32_t PE_DR_Swap_To_DFP : 1U; /*!< If supported, DR Swap to DFP can be accepted or not by the user else directly rejected */
|
|
uint32_t PE_DR_Swap_To_UFP : 1U; /*!< If supported, DR Swap to UFP can be accepted or not by the user else directly rejected */
|
|
uint32_t Reserved1 : 28U; /*!< Reserved bits */
|
|
#if defined(_SNK) || defined(_DRP)
|
|
USBPD_SNKPowerRequest_TypeDef DPM_SNKRequestedPower; /*!< Requested Power by the sink board */
|
|
#else
|
|
uint32_t Reserved_ReqPower[6]; /*!< Reserved bits to match with Resquested power information */
|
|
#endif /* _SNK || _DRP */
|
|
#if defined(USBPD_REV30_SUPPORT)
|
|
#if _MANU_INFO
|
|
USBPD_MIDB_TypeDef DPM_ManuInfoPort; /*!< Manufacturer information used for the port */
|
|
uint16_t ReservedManu; /*!< Reserved bits to match with Manufacturer information */
|
|
#else
|
|
uint32_t ReservedManu[7]; /*!< Reserved bits to match with Manufacturer information */
|
|
#endif /* _MANU_INFO */
|
|
#if _SRC_CAPA_EXT && (defined(_SRC)||defined(_DRP))
|
|
USBPD_SCEDB_TypeDef DPM_SRCExtendedCapa; /*!< SRC Extended Capability */
|
|
#else
|
|
uint32_t ReservedSrcCapa[6]; /*!< Reserved bits to match with SrcCapa information */
|
|
#endif /* _SRC_CAPA_EXT && (_SRC || _DRP) */
|
|
#if defined(_SNK)||defined(_DRP)
|
|
USBPD_SKEDB_TypeDef DPM_SNKExtendedCapa; /*!< SNK Extended Capability */
|
|
uint8_t ReservedSnkCapa[3]; /*!< Reserved bits to match with SnkCapaExt information */
|
|
#else
|
|
uint32_t ReservedSnkCapa[6]; /*!< Reserved bits to match with SnkCapaExt information */
|
|
#endif /* _SNK || _DRP */
|
|
#else
|
|
uint32_t ReservedRev3[13]; /*!< Reserved bits to match with PD3.0 information */
|
|
#endif /* USBPD_REV30_SUPPORT */
|
|
uint32_t PWR_AccessoryDetection : 1; /*!< It enables or disables powered accessory detection */
|
|
uint32_t PWR_AccessoryTransition : 1; /*!< It enables or disables transition from Powered.accessory to Try.SNK */
|
|
USBPD_CORE_PDO_ExtPowered_TypeDef PWR_UnconstrainedPower: 1; /*!< UUT has an external power source available that is sufficient to adequately power the system while charging external devices or the UUT primary function is to charge external devices. */
|
|
CAD_SNK_Source_Current_Adv_Typedef PWR_RpResistorValue : 2; /*!< RP resitor value based on @ref CAD_SNK_Source_Current_Adv_Typedef */
|
|
USBPD_CORE_PDO_USBCommCapable_TypeDef USB_Support : 1; /*!< USB_Comms_Capable, is the UUT capable of enumerating as a USB host or device? */
|
|
uint32_t USB_Device : 1; /*!< Type_C_Can_Act_As_Device, Indicates whether the UUT can communicate with USB 2.0 or USB 3.1 as a device or as the Upstream Facing Port of a hub. */
|
|
uint32_t USB_Host : 1; /*!< Type_C_Can_Act_As_Host, Indicates whether the UUT can communicate with USB 2.0 or USB 3.1 as a host or as the Downstream Facing Port of a hub */
|
|
USBPD_CORE_PDO_USBSuspendSupport_TypeDef USB_SuspendSupport: 1; /*!< USB Suspend support values in PDO definition (Source) */
|
|
uint32_t CAD_tDRP :7; /*!< The period that DRP shall complete a Source to Sink and back advertisement */
|
|
uint32_t CAD_dcSRC_DRP :7; /*!< The percent of time that a DRP shall advertise Source during tDRP (in %) */
|
|
uint32_t Reserved2 :31; /*!< reserved bits */
|
|
} USBPD_USER_SettingsTypeDef;
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t XID; /*!< Value provided by the USB-IF assigned to the product */
|
|
uint16_t VID; /*!< Vendor ID (assigned by the USB-IF) */
|
|
uint16_t PID; /*!< Product ID (assigned by the manufacturer) */
|
|
} USBPD_IdSettingsTypeDef;
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t VDM_XID_SOP :32; /*!< A decimal number assigned by USB-IF before certification */
|
|
uint32_t VDM_USB_VID_SOP :16; /*!< A unique 16-bit number, assigned to the Vendor by USB-IF. */
|
|
uint32_t VDM_PID_SOP :16; /*!< A unique number assigned by the Vendor ID holder identifying the product. */
|
|
uint32_t VDM_bcdDevice_SOP :16; /*!< A unique number assigned by the Vendor ID holder containing identity information relevant to the release version of the product. */
|
|
USBPD_ModalOp_TypeDef VDM_ModalOperation : 1; /*!< Product support Modes based on @ref USBPD_ModalOp_TypeDef */
|
|
USBPD_USBCapa_TypeDef VDM_USBHostSupport : 1; /*!< Indicates whether the UUT is capable of enumerating USB Host */
|
|
USBPD_USBCapa_TypeDef VDM_USBDeviceSupport: 1; /*!< Indicates whether the UUT is capable of enumerating USB Devices */
|
|
USBPD_ProductType_TypeDef VDM_ProductTypeUFPorCP : 3; /*!< Product type UFP or CablePlug of the UUT based on @ref USBPD_ProductType_TypeDef */
|
|
#if defined(USBPD_REV30_SUPPORT)
|
|
USBPD_ProductType_TypeDef VDM_ProductTypeDFP : 3; /*!< Product type DFP of the UUT based on @ref USBPD_ProductType_TypeDef */
|
|
uint32_t Reserved3 : 7; /*!< Reserved bits */
|
|
#else
|
|
uint32_t Reserved3 :10; /*!< Reserved bits */
|
|
#endif /* USBPD_REV30_SUPPORT */
|
|
} USBPD_VDM_SettingsTypeDef;
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Exported macro ------------------------------------------------------------*/
|
|
/* Exported variable ---------------------------------------------------------*/
|
|
/** @defgroup USBPD_GUI_API_Exported_Variable USBPD GUI API exported Variable
|
|
* @{
|
|
*/
|
|
extern GUI_USER_ParamsTypeDef GUI_USER_Params[USBPD_PORT_COUNT];
|
|
#if !defined(_RTOS)
|
|
extern volatile uint32_t GUI_Flag;
|
|
#endif /* !_RTOS */
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Exported functions ------------------------------------------------------- */
|
|
/** @defgroup USBPD_GUI_API_Exported_Functions USBPD GUI API exported functions
|
|
* @{
|
|
*/
|
|
|
|
USBPD_FunctionalState GUI_Init(const uint8_t* (*CB_HWBoardVersion)(void), const uint8_t* (*CB_HWPDType)(void), uint16_t (*CB_GetVoltage)(uint8_t), int16_t (*CB_GetCurrent)(uint8_t));
|
|
void GUI_Start(void);
|
|
void GUI_TimerCounter(void);
|
|
uint32_t GUI_RXProcess(uint32_t Event);
|
|
uint32_t GUI_FormatAndSendNotification(uint32_t PortNum, uint32_t TypeNotification, uint32_t Value);
|
|
uint32_t GUI_GetMessage(uint8_t Character, uint8_t Error);
|
|
USBPD_GUI_State GUI_SendAnswer(uint8_t **pMsgToSend, uint8_t *pSizeMsg);
|
|
USBPD_GUI_State GUI_SendNotification(uint8_t PortNum, uint8_t **pMsgToSend, uint8_t *pSizeMsg, uint32_t TypeNotifcation, uint32_t Value);
|
|
void GUI_PostNotificationMessage(uint8_t PortNum, uint16_t EventVal);
|
|
void GUI_SaveInfo(uint8_t PortNum, uint8_t DataId, uint8_t *Ptr, uint32_t Size);
|
|
USBPD_FunctionalState GUI_IsRunning(void);
|
|
#if !defined(USE_STM32_UTILITY_OS)
|
|
void GUI_Execute(void);
|
|
#endif /* !USE_STM32_UTILITY_OS */
|
|
void GUI_RegisterCallback_FreeText(USBPD_StatusTypeDef (*CB_FreeText)(uint8_t, uint8_t*, uint16_t));
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#endif /* _GUI_API_H */
|
|
|