此文件就是来管理显示的比如开发板显示或pc的显示,就是把支持显示的结构体比如fb0加入链表,其中找显示方式是根据名字来找的,也把支持显示的方式的名字打印出来
#include <config.h>
#include <disp_manager.h>
#include <string.h>
static PT_DispOpr g_ptDispOprHead;
//功能把ptDispOpr加到链表
int RegisterDispOpr(PT_DispOpr ptDispOpr)
{
PT_DispOpr ptTmp;
if (!g_ptDispOprHead)//链表头空
{
g_ptDispOprHead = ptDispOpr;//链表头指向传进的ptDispOpr
ptDispOpr->ptNext = NULL;
}
else
{
ptTmp = g_ptDispOprHead;//链表头不空
while (ptTmp->ptNext)//找出最后空项
{
ptTmp = ptTmp->ptNext;
}
ptTmp->ptNext = ptDispOpr;//然后再执邢向ptDispOpr
ptDispOpr->ptNext = NULL;
}
return 0;
}
//功能把链表的ptDispOpr的的名字都打印出来
void ShowDispOpr(void)
{
int i = 0;
PT_DispOpr ptTmp = g_ptDispOprHead;
while (ptTmp)
{
printf("%02d %s\n", i++, ptTmp->name);
ptTmp = ptTmp->ptNext;
}
}
//通过名字找到对应的PT_DispOpr
PT_DispOpr GetDispOpr(char *pcName)
{
PT_DispOpr ptTmp = g_ptDispOprHead;
while (ptTmp)
{
if (strcmp(ptTmp->name, pcName) == 0)
{
return ptTmp;
}
ptTmp = ptTmp->ptNext;
}
return NULL;
}
int DisplayInit(void)
{
int iError;
iError = FBInit();//把fb0的结构体加入链表
return iError;
}