在程序猿界混迹了多年,一直有个苦恼的问题,不管是什么样子的编程,最早的汇编,后来C语言,又接触了JAVA,始终有个念头就是整体程序架构问题,不管是你自己用不用操作系统,都要有一套很出色的编程模板。当然自己能搞出来的绝对是要花费大把时间,然而对于工作而言时间确实是非常奢侈的东西。那么,另一种方法就出现了,“抄袭”,但抄袭也是要自己有两把刷子的,而且要有广阔的眼界,有了眼界你才能找到多种多样的模式,模板。废话少说,先上个LINUX下编程的系统模板,这个是来自TI的ipnc中的对Linux下的系统编程。也当自己的记录笔记。
应用方法:
int AVSERVER_tskMain(struct OSA_TskHndl *pTsk, OSA_MsgHndl *pMsg, Uint32 curState )
{
int status;
Uint16 cmd = OSA_msgGetCmd(pMsg);
#ifdef AVSERVER_DEBUG_MAIN_THR
OSA_printf(" AVSERVER MAIN: Recevied CMD = 0x%04x, state = 0x%04x\n", cmd, curState);
#endif
switch(cmd) {
case AVSERVER_MAIN_CMD_START:
if(curState==AVSERVER_MAIN_STATE_IDLE) {
status = AVSERVER_tskStart(pTsk, pMsg);
if(status!=OSA_SOK)
AVSERVER_tskStop(pTsk, pMsg);
}
OSA_tskAckOrFreeMsg(pMsg, OSA_SOK);
break;
case AVSERVER_MAIN_CMD_STOP:
if(curState==AVSERVER_MAIN_STATE_RUNNING) {
AVSERVER_tskStop(pTsk, pMsg);
}
OSA_tskAckOrFreeMsg(pMsg, OSA_SOK);
break;
}
return OSA_SOK;
}
int AVSERVER_mainCreate()
{
int status;
status = OSA_mbxCreate(&gAVSERVER_ctrl.uiMbx);
if(status!=OSA_SOK) {
OSA_ERROR("OSA_mbxCreate()\n");
return status;
}
status = OSA_tskCreate( &gAVSERVER_ctrl.mainTsk, AVSERVER_tskMain, AVSERVER_MAIN_THR_PRI, AVSERVER_MAIN_STACK_SIZE, AVSERVER_MAIN_STATE_IDLE);
if(status!=OSA_SOK) {
OSA_ERROR("OSA_tskCreate()\n");
return status;
}
return status;
}
int AVSERVER_mainDelete()
{
int status;
status = OSA_tskDelete(&gAVSERVER_ctrl.mainTsk);
status |= OSA_mbxDelete(&gAVSERVER_ctrl.uiMbx);
if(status!=OSA_SOK)
OSA_ERROR("\n");
return status;
}
启动:
status |= OSA_tskSendMsg(&gVIDEO_ctrl.swosdTsk, pTsk, AVSERVER_CMD_DELETE, NULL, OSA_MBX_WAIT_ACK);
代码下载:
https://download.csdn.net/download/ye_c1988/10467869