Xiaojie雷达之路---DPM External Functions详解
本篇文章主要讲述应用程序使用驱动程序DPM所要调用的API。
文章目录
- DPM_init
- DPM_synch
- DPM_execute
- DPM_ioctl
- DPM_start
- DPM_notifyExecute
- DPM_relayResult
- DPM_sendResult
- DPM_stop
- DPM_deinit
- DPM_Report
DPM_init
函数原型:
DPM_Handle DPM_init ( DPM_InitCfg * ptrInitCfg,int32_t * errCode
)
函数功能:
该函数用于初始化dpm和初始化并加载处理链
函数参数:
第一个参数是输入参数ptrInitCfg,是DPM_InitCfg的指针指向的初始化配置
DPM_InitCfg结构体:
SOC_Handle socHandle:SOC驱动的句柄
DPM_Domain domain:DPM的执行域
uint32_t instanceId:每个DPM实例应分配一个唯一标识符。该标识符通过报告机制报告给应用程序。如果在分布域模式下运行,则唯一的DPM实例标识符特别有用
void * arg:这是一个参数,在初始化期间传递给处理链。DPM框架不会对此进行解释,而是按原样将其传递给处理链
uint32_t argSize:这是上面指定的参数的大小。DPM框架不使用它,而是按原样传递给处理链
struct DPM_ProcChainCfg_t * ptrProcChainCfg:指向要在DPM实例中加载和执行的处理配置的指针
DPM_ReportFxn reportFxn:报告函数:DPM模块将调用应用注册函数来报告有关处理链的事件和状态
DPM_Domain 枚举:
DPM_Domain_LOCALIZED:本地域:控制和数据路径链都在一个子系统中执行
DPM_Domain_REMOTE:远端域:DPM数据路径处理链执行在单个子系统上下文中,而DPM控制能被执行在另一个子系统中
DPM_Domain_DISTRIBUTED:分布式域:DPM数据路径链被执行在多个子系统上下文中。DPM控制可以在任一子系统中
DPM_ProcChainCfg_t 结构体(DPM模块负责处理链的注册和执行,通过下面来进行配置):
DPM_ProcChainInitFxn initFxn:初始化函数
DPM_ProcChainStartFxn startFxn:开始函数
DPM_ProcChainExecuteFxn executeFxn:执行函数
DPM_ProcChainIoctlFxn ioctlFxn:IOCTL函数
DPM_ProcChainStopFxn stopFxn:停止函数
DPM_ProcChainDeinitFxn deinitFxn:反初始化函数
DPM_ProcChainInjectDataFxn injectDataFxn:[可选]注入数据函数
DPM_ProcChainChirpAvailableCallbackFxn chirpAvailableFxn:[可选]chirp可用的回调函数
DPM_ProcChainFrameStartCallbackFxn frameStartFxn:[可选]帧开始的回调函数
第二个参数是输出参数errCode ,是执行此函数时产生错误时的错误代码
函数返回值:
当函数执行成功时,返回值为DPM模块的句柄,当函数执行失败后,返回值为NULL。
DPM_synch
函数原型:
int32_t DPM_synch ( DPM_Handle handle,int32_t * errCode
)
函数功能:
该函数用于同步DPM域之间框架的执行。这是一个[可选]步骤,如果DPM在不同的域上执行,则提供同步方法
函数参数:
第一个参数是输入参数handle,是DPM指向DPM的句柄
第二个参数是输出参数errCode,是执行此函数时产生错误时的错误代码
函数返回值
同步成功后返回值为1;没有同步,返回值为0;发生错误,返回值小于0
DPM_execute
函数原型:
int32_t DPM_execute ( DPM_Handle handle,DPM_Buffer * ptrResult
)
函数功能:
函数执行DPM模块。DPM模块的执行包含下面两个方面:
- 处理DPM对等方之间交换的IPC消息的接收
- 执行和处理通过可用线性调频信号注入或接收的输入数据
函数参数:
第一个参数是输入参数handle,是DPM模块的句柄
第二个参数是输出参数ptrResult指针,指向由加载的处理链产生的结果
函数返回值:
当函数执行成功后,返回值为0,当函数执行错误后,返回下面DPM错误代码中的一个
DPM_EINVAL 无效的参数
DPM_ENOMEM 内存不足
DPM_ENOTSUP 不支持
DPM_EPROFCFG处理链配置错误
CPM_EINVCMD 传递给处理链的IOCTL命令无效。如果配置期间的命令不再支持范围内,则处理链开发人员应将错误代码设置为此值
DPM_ioctl
函数原型:
int32_t DPM_ioctl ( DPM_Handle handle,uint32_t cmd,void * arg,uint32_t argLen
)
函数功能:
该函数用于配置处理链
函数参数:
第一个参数是输入参数handle:是DPM模块的句柄
第二个参数是输入参数cmd:是大概范围的特定的命令
第三个参数是输入参数arg:参数
第四个参数是输入参数argLen:参数的长度
函数返回值:
当函数执行成功后,返回值为0,当函数执行错误后,返回下面DPM错误代码中的一个
DPM_EINVAL 无效的参数
DPM_ENOMEM 内存不足
DPM_ENOTSUP 不支持
DPM_EPROFCFG处理链配置错误
CPM_EINVCMD 传递给处理链的IOCTL命令无效。如果配置期间的命令不再支持范围内,则处理链开发人员应将错误代码设置为此值
DPM_start
函数原型:
int32_t DPM_start ( DPM_Handle handle )
函数功能:
该函数主要被用于启动处理链
函数参数:
参数是输入参数handle:是DPM模块的句柄
函数返回值:
当函数执行成功后,返回值为0,当函数执行错误后,返回下面DPM错误代码中的一个
DPM_EINVAL 无效的参数
DPM_ENOMEM 内存不足
DPM_ENOTSUP 不支持
DPM_EPROFCFG处理链配置错误
CPM_EINVCMD 传递给处理链的IOCTL命令无效。如果配置期间的命令不再支持范围内,则处理链开发人员应将错误代码设置为此值
DPM_notifyExecute
函数原型:
int32_t DPM_notifyExecute ( DPM_Handle handle,DPM_DPCHandle dpcHandle,bool isrContext
)
函数功能:
处理链开发人员可以使用此功能通知DPM模块处理链已准备好执行。此函数需要由DPC调用,DPC将允许DPM框架调用大概注册的execute方法
注意:DPC开发人员应该知道,即使DPC在DPC执行之前或执行期间发出了多个通知,DPM也只会发出一次DPC提供的execute。换句话说,DPM不会跟踪多个未完成的通知,它们都被视为单个通知。因此,DPC需要保持自己的执行状态,以便在单个执行方法中处理多个通知
函数参数
第一个参数是输入参数handle:是DPM模块的句柄
第二个参数是输入参数dpcHandle:是处理链的句柄
第三个参数是输入参数isrContext:如果正在从ISR上下文调用函数,则将该标志设置为true,否则将该标志位设置为false
函数返回值:
当函数执行成功后,返回值为0,当函数执行错误后,返回下面DPM错误代码中的一个
DPM_EINVAL 无效的参数
DPM_ENOMEM 内存不足
DPM_ENOTSUP 不支持
DPM_EPROFCFG处理链配置错误
CPM_EINVCMD 传递给处理链的IOCTL命令无效。如果配置期间的命令不再支持范围内,则处理链开发人员应将错误代码设置为此值
DPM_relayResult
函数原型:
int32_t DPM_relayResult ( DPM_Handle handle,DPM_DPCHandle dpcHandle,DPM_Buffer * ptrResult
)
函数功能:
该函数用于将部分处理链结果从一个域中发送到另一个域。这个仅适用于在分布式域模式下操作的处理链
函数参数:
第一个参数是输入参数handle:是DPM模块的句柄
第二个参数是输入参数dpcHandle:是处理链的句柄
第三个参数是输入参数ptrResult:是要发送的结果
函数返回值:
当函数执行成功后,返回值为0,当函数执行错误后,返回下面DPM错误代码中的一个
DPM_EINVAL 无效的参数
DPM_ENOMEM 内存不足
DPM_ENOTSUP 不支持
DPM_EPROFCFG处理链配置错误
CPM_EINVCMD 传递给处理链的IOCTL命令无效。如果配置期间的命令不再支持范围内,则处理链开发人员应将错误代码设置为此值
DPM_sendResult
函数原型:
int32_t DPM_sendResult ( DPM_Handle handle,bool isAckNeeded,DPM_Buffer * ptrResult
)
函数功能:
该函数用于将处理链结果发送到远程DPM实体。此功能仅适用于远程和分布式域
该函数用于将处理链结果发送到远程DPM实体。此功能仅适用于远程和分布式域
可以设置标志isAckNeeded",这将导致DPM框架在通知对等域结果可用性后发送到报告。这很有用,可以用来确保结果缓冲区不被重用
函数参数:
第一个参数是输入参数handle:是DPM模块的句柄
第二个参数是输入参数isAckNeeded:是一个标志,指示将结果传递给远程的DPM后,是否需要确认
第三个参数是输入参数ptrResult:是要发送的结果
函数返回值:
当函数执行成功后,返回值为0,当函数执行错误后,返回下面DPM错误代码中的一个
DPM_EINVAL 无效的参数
DPM_ENOMEM 内存不足
DPM_ENOTSUP 不支持
DPM_EPROFCFG处理链配置错误
CPM_EINVCMD 传递给处理链的IOCTL命令无效。如果配置期间的命令不再支持范围内,则处理链开发人员应将错误代码设置为此值
DPM_stop
函数原型:
int32_t DPM_stop ( DPM_Handle handle )
函数功能:
该函数用于停止处理链
函数参数:
第一个参数是输入参数handle:是DPM模块的句柄
函数返回值:
当函数执行成功后,返回值为0,当函数执行错误后,返回下面DPM错误代码中的一个
DPM_EINVAL 无效的参数
DPM_ENOMEM 内存不足
DPM_ENOTSUP 不支持
DPM_EPROFCFG处理链配置错误
CPM_EINVCMD 传递给处理链的IOCTL命令无效。如果配置期间的命令不再支持范围内,则处理链开发人员应将错误代码设置为此值
DPM_deinit
函数原型:
int32_t DPM_deinit ( DPM_Handle handle )
函数功能:
该函数用于将发初始化和关闭处理链
函数参数:
第一个参数是输入参数handle:是DPM模块的句柄
函数返回值:
当函数执行成功后,返回值为0,当函数执行错误后,返回下面DPM错误代码中的一个
DPM_EINVAL 无效的参数
DPM_ENOMEM 内存不足
DPM_ENOTSUP 不支持
DPM_EPROFCFG处理链配置错误
CPM_EINVCMD 传递给处理链的IOCTL命令无效。如果配置期间的命令不再支持范围内,则处理链开发人员应将错误代码设置为此值
DPM_Report
DMP_Report是一个枚举类型,用于描述模块生成的各种报告。通过注册报告功能,通过这些报告向应用程序通知模块的运行状态。应用程序解释这些报告并采取适当措施
DPM_Report_DPC_STARTED:表明处理链已经打开
DPM_Report_DPC_STOPPED:表明处理链已经结束
DPM_Report_DPC_ASSERT:表明链执行检测到异常
DPM_Report_IOCTL:表明正在通过DPM_ioctl配置处理链
DPM_Report_NOTIFY_DPC_RESULT:表明处理链有可用的结果
DPM_Report_NOTIFY_DPC_RESULT_ACKED:表明远端的DPM已经接收到DPC结果
DPM_Report_DPC_INFO:表明DPC已将信息传递给应用程序
Xiaojie雷达之路---DPM External Functions详解相关推荐
- Xiaojie雷达之路---EDMA Driver External Functions详解
文章目录 getNumInstances init open configErrorMonitoring configChannel startDmaTransfer isTransferComple ...
- Xiaojie雷达之路---Mailbox Driver External Functions详解
文章目录 init Config_init open write read readFlush 本文主要讲解为了使用驱动程序Mailbox而需要调用的所有导出的API init 函数原型: int32 ...
- Xiaojie雷达之路---TI实战笔记---MRR_MSS_CLIAdvancedFrameCfg详解
本篇文章主要是对MSS项目中的源文件中mss_pa_cli.c的函数进行MRR_MSS_CLIAdvancedFrameCfg详解 函数源程序如下: static int32_t MRR_MSS_CL ...
- Xiaojie雷达之路---详解ADCBuf driver源码
Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,本篇文章主要是介绍一下TI毫米波雷达中的ADCBuf Driver API详解,一起来看看吧!!! 本篇文 ...
- Xiaojie雷达之路---Mailbox深挖
Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,本片文章主要是对Mailbox通信进行深挖: 有关Mailbox的源码解析已经在<Xiaojie雷达 ...
- Xiaojie雷达之路---TDM-MIMO及雷达处理流程仿真
Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,本篇文章主要目的是介绍TDM-MIMO及雷达信号处理流程的仿真.一起来看看吧!!! 前言 在以前简单的仿真 ...
- oracle11g 常用函数(Functions)详解
Oracle11g常用函数(Functions)详解 目录 ABS. 3 ACOS. 3 ADD_MONTHS. 4 ASCII 4 ASCIISTR. 5 ASIN.. 5 ATAN.. 5 ATA ...
- 前端修仙路-Babel 7.x 详解
前端修仙路-Babel 7.x 详解 前言:Babel 是一个 JavaScript 编译器,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便 ...
- 如何开发优秀的HTML5游戏?-迪斯尼《寻找奥兹之路》游戏技术详解(二)
(接上文)桌面游戏通常创建于一个核心的物理引擎.因此,要在3D世界中模拟一个柔软的物体,需要一个完整的物理模拟器,并且建立一种可信的行为. WebGL和JavaScript还不能奢华到可以运行一个完全 ...
- pyspark操作 rdd dataframe,pyspark.sql.functions详解 行列变换
官网文档可以参考:https://spark.apache.org/docs/latest/api/python/index.html dataframe读写 生成以逗号分隔的数据 stringCSV ...
最新文章
- Linux shell 学习笔记(4)— linux 环境变量(全局变量、局部变量及变量持久化)
- java精确浮点型小数,java练习 计算n位可被浮点数精确表示的小数
- C#中数组、ArrayList和List三者的区别
- 新人新气象,给自己加油!
- 【LeetCode从零单排】No.160 Intersection of Two Linked Lists
- Java并发编程系列之CountDownLatch用法及详解
- php如何获取常量的值,php – 如何获取常量的名称?
- MySQL之IFNULL()、ISNULL、NULLIF用法
- ​vSphere 性能优化方法总结
- 完美仿MSN右下角弹出广告代码并可自动消失,附带关闭按钮
- php小红针有副作用吗,hph小红针精华液怎么样?hph小红针精华液测评
- ESP32/ESP32S2直连腾讯云,实现微信小程序控制
- RDLC报表横向放纸不能横向打印问题解决
- Maven使用Profile
- 未检测到与wia兼容的设备_WIA-TWAIN 兼容性
- 数字化办公,就选流畅、清晰的华为云桌面
- 重装系统中遇到的问题
- win7信息服务器iis管理器,win7系统打开Internet信息服务(IIS)管理器的操作方法
- 谷歌浏览器升级后 ,chromedriver过期
- 注册公用设备工程师考试——给水排水专业常用规范
热门文章
- java关于文件上传和下载,保存到后台并修改名字。
- 【USACO 2019 February Bronze】Sleepy Cow Herding
- 行杂记之Zookeeper SessionTimeOut分析
- 雷达波形样式_系统工程与电子技术专栏征稿丨雷达抗干扰技术
- java一直显示载入中_java – 当类在包中时为GUI加载图像的问题
- C#图片处理:生成大尺寸图片,以边框颜色填充
- 用Ps制作网页展示总结
- 瑞尔森大学计算机网络专业怎么样,瑞尔森大学计算机网络硕士录取.pdf
- Office Word如何设置页码(MacOS中为例)
- 三十岁,研究生毕业的你,现在收入多少?