openWF display解析xml配置文件流程

MDSS: multimedia Display sub system 多媒体显示子系统

1. xml解析函数流程

​​​​openWF display解析xml配置文件流程_第1张图片

2. 相关函数分析

1)MDSS_DrvConfig_Install()

实例化MDSS_DrvConfig_FunctionTableType结构体中的函数指着

typedef struct
{
   MDSS_Status (*pMDSS_DrvConfig_Init)        (void);
   MDSS_Status (*pMDSS_DrvConfig_Term)        (void);
   MDSS_Status (*pMDSS_DrvConfig_GetProperty) (MDSS_DrvConfig_PropertyType ePropertyType,
                                                                               void *pPropertyInfo);

} MDSS_DrvConfig_FunctionTableType;
psFunctionTable->pMDSS_DrvConfig_Init        = _MDSS_DrvConfig_Init;
psFunctionTable->pMDSS_DrvConfig_Term        = _MDSS_DrvConfig_Term;
psFunctionTable->pMDSS_DrvConfig_GetProperty = _MDSS_DrvConfig_GetProperty;

2)_MDSS_DrvConfig_Init()

MDSS_INTERNAL_API MDSS_Status _MDSS_DrvConfig_Init(void)

初始化qcdisplay*.xml的相关信息:校验路径,打开文件,读取文件信息等

3)MDSS_DrvConfig_GetConfigFilePath()

static void MDSS_DrvConfig_GetConfigFilePath(MDSS_DrvConfig_ParserCtxType  *pParserCtx)

确认xml文件是否存在

MDSS_DrvConfig_ParserCtxType结构体:

typedef struct _DrvConfig_ParserCtxType
{
   MDSS_CharType  *pBuffer;   //读取文件后数据存放buffer
   MDSS_CharType  pConfigFilePath[MDSS_DRVCONFIG_MAX_PATH_SIZE];  //文件路径
   uint32         uFileSize;  //文件大小
   bool32         bFileExists;  //文件是否存在
   bool32         bParserInit;  //解析是否完成标志
   uint32         uCurrentlyProcessingDisplayID; /* ID of the current display being processed */
                                                                        /* 0 if not processing any display */

//物理通道的id号
   XML_Parser     XMLParser;  //xml解析器句柄
   uint32         uVersionID;  //使用的配置版本

} MDSS_DrvConfig_ParserCtxType;

4)MDSS_DrvConfig_ReadConfigFile()

static MDSS_Status MDSS_DrvConfig_ReadConfigFile(MDSS_DrvConfig_ParserCtxType  *pParserCtx)

打开xml文件,并将文件内容读取到pBuffer中

5)MDSS_DrvConfig_XMLParse()

static MDSS_Status MDSS_DrvConfig_XMLParse(MDSS_DrvConfig_ParserCtxType *pParserCtx)

解析xml内容

·XML_SetElementHandler() 串联需要执行的函数,并指定其执行的先后顺序。

·XML_Parse() 按照xml规则解析xml文件,根据函数的调用顺序依次解析

相关解析函数:

MDSS_DrvConfig_ProcessVersionTag()	获取版本号
MDSS_DrvConfig_ProcessGlobalConfigTag()	获取config信息
MDSS_DrvConfig_ProcessHdmiModeBoundsTag()	获取hdmi模式信息
MDSS_DrvConfig_ProcessSplitDSIConfigTag()	获取dsi split信息
MDSS_DrvConfig_ProcessWFDClientTag()	获取wfd client id
MDSS_DrvConfig_ProcessWFDPortTag()	获取wfd port id
MDSS_DrvConfig_ProcessPortAttribsTag()	获取wfd port信息,包含display id,display node,port type,zorder base
MDSS_DrvConfig_ProcessWFDPipelineTag()	获取pipeline和z-order
MDSS_DrvConfig_ProcessDisplayTag()	获取物理通道号
MDSS_DrvConfig_ProcessPanelLibraryNameTag()	获取调用的库路径名
MDSS_DrvConfig_ProcessPanelVideoTimingTag()	获取屏的相关参数配置
MDSS_DrvConfig_ProcessLVDSConfigTag()	获取dsi的相关配置,包括bridgechip id, 数据格式,dsi lanes
MDSS_DrvConfig_ProcessVideoModeTag()	获取HDMI/DP通道上的屏参数配置
MDSS_DrvConfig_ProcessDispNodeTag()	获取display node模式的id
MDSS_DrvConfig_ProcessDispNodeAttributesTag()	获取node模式下的偏移配置
MDSS_DrvConfig_ProcessExtendedAttribsTag()	获取扩展属性配置

6)MDSS_DrvConfig_Term

MDSS_INTERNAL_API MDSS_Status _MDSS_DrvConfig_Term(void)

释放display config的信息

7)MDSS_DrvConfig_GetProperty

MDSS_INTERNAL_API MDSS_Status _MDSS_DrvConfig_GetProperty(
                                                                                      MDSS_DrvConfig_PropertyType ePropertyType,
                                                                                      void *pPropertyInfo)

根据ePropertyType获取配置的相关信息

你可能感兴趣的:(qnx)