Chinaunix首页 | 论坛 | 博客
  • 博客访问: 22799
  • 博文数量: 3
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 17
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-10 16:12
文章分类

全部博文(3)

文章存档

2013年(2)

2012年(1)

我的朋友
最近访客

分类: LINUX

2013-10-31 16:55:13

原文地址:api_Guide_ipnc_dm36x分析 作者:akls_21

今天把DM365_IPNC接口系统根据代码总结了一下:

一、How to use alarm message driver

(1)Alarm_Msg_Def.h中定义新的Message ID与报警管理进程交互;

(2)其中AlarmDrvInit在util/alarm_msg_drv.c中定义并生成alarm_msg_drv.a供其他进程使用;

(3)通过alarm_msg_drv.a使AV_Server和system_server之间建立通信。

二、Usage Guide for GetAVData

(1)Util/Appro_interface.c中定义了GetAV_Data,并生成Appro_interface.a静态库,哪个进程想要获取音视频帧就需要包含该库;

(2)Util/ApproDrvMsg.a中定义了与AV_Server通信的接口,通信通过消息队列进行;

(3)在AV_Server中通过pParm->qid = Msg_Init(MSG_KEY);来初始化消息队列,而其他进程则是通过调用ApproDrvInit来实现消息队列的初始化;如system_server想要调用ApproDrvMsg.a中的接口,则需要在调用前通过ApproDrvInit来实现消息队列的初始化。

三、How to use file message driver

(1)File_Msg_Def.h中定义新的msg_id与file manage进程交互;

(2)InitFileMsgDrv(key,procid)来初始化共享内存和消息队列,如boa想与file manage进程通信,则在boa中必须首先调用InitFileMsgDrv,其中key = FILE_MSG_KEY,procid = FILE_BOA_MSG;FILE_BOA_MSG表示与file manage进程通信的id,在File_Msg_Def.h中定义;而在file manage进程中则是通过mFileId = pShareMemInit(FILE_MSG_KEY)和qFileId = Msg_Init(FILE_MSG_KEY)来初始化共享内存和消息队列;由于是使用同一个FILE_MSG_KEY,因此这两个进程的用户态指针指向同一片共享内存区域,该共享内存区应该存储的是整个系统的配置信息;

(3)在相机起来的时候,file manage进程调用SetUpEnv中的FileMngInit (PFileShareMem),而PFileShareMem就是共享内存映射后的指针地址,在该函数中首先通过ReadGlobal(SYS_FILE,ShareMem)来读取sysenv.cfg文件并将该文件内容读取到PFileShareMem中,如果读取sysenv.cfg失败,则读取sysenv.backup文件,如果仍然读取不成功,则使用默认配置创建sysenv.cfg文件并将该默认配置copy到PFileShareMem中;至此共享内存中保存就是系统的配置信息,其他进程可以通过GetSysInfo来获取该共享内存中的数据。其中GetSysInfo作用可以通过注释了解:* Get system information from file manager. In order to make every change can update quickly, this function return the pointer to share memory.*

四、How to use message queue API

Msg_Init可以供任何一个进程使用;

具体可以参考:AlarmDrvInit();ApproDrvInit();GetSysInfo();InitFileMsgDrv();SysDrvInit();

五、How to use system message driver

(1)sys_msg_def.h中定义新的msg_id与system server进程交互;

(2)任何想与system_server通信的进程都要首先调用SysDrvInit来初始化消息队列,信号量,共享内存;

(3)以boa为例,则在boa中调用SysDrvInit(SYS_BOA_MSG),而在system_server中则是调用qid = Msg_Init(SYS_MSG_KEY)和mid = ShareMemInit(SYS_MSG_KEY)来初始化消息队列和共享内存。

六、Collaboration diagram for Utility API:

 

阅读(2226) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~