本篇文章主要讲述应用程序使用驱动程序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详解相关推荐

  1. Xiaojie雷达之路---EDMA Driver External Functions详解

    文章目录 getNumInstances init open configErrorMonitoring configChannel startDmaTransfer isTransferComple ...

  2. Xiaojie雷达之路---Mailbox Driver External Functions详解

    文章目录 init Config_init open write read readFlush 本文主要讲解为了使用驱动程序Mailbox而需要调用的所有导出的API init 函数原型: int32 ...

  3. Xiaojie雷达之路---TI实战笔记---MRR_MSS_CLIAdvancedFrameCfg详解

    本篇文章主要是对MSS项目中的源文件中mss_pa_cli.c的函数进行MRR_MSS_CLIAdvancedFrameCfg详解 函数源程序如下: static int32_t MRR_MSS_CL ...

  4. Xiaojie雷达之路---详解ADCBuf driver源码

    Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,本篇文章主要是介绍一下TI毫米波雷达中的ADCBuf Driver API详解,一起来看看吧!!! 本篇文 ...

  5. Xiaojie雷达之路---Mailbox深挖

    Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,本片文章主要是对Mailbox通信进行深挖: 有关Mailbox的源码解析已经在<Xiaojie雷达 ...

  6. Xiaojie雷达之路---TDM-MIMO及雷达处理流程仿真

    Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,本篇文章主要目的是介绍TDM-MIMO及雷达信号处理流程的仿真.一起来看看吧!!! 前言 在以前简单的仿真 ...

  7. oracle11g 常用函数(Functions)详解

    Oracle11g常用函数(Functions)详解 目录 ABS. 3 ACOS. 3 ADD_MONTHS. 4 ASCII 4 ASCIISTR. 5 ASIN.. 5 ATAN.. 5 ATA ...

  8. 前端修仙路-Babel 7.x 详解

    前端修仙路-Babel 7.x 详解 前言:Babel 是一个 JavaScript 编译器,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便 ...

  9. 如何开发优秀的HTML5游戏?-迪斯尼《寻找奥兹之路》游戏技术详解(二)

    (接上文)桌面游戏通常创建于一个核心的物理引擎.因此,要在3D世界中模拟一个柔软的物体,需要一个完整的物理模拟器,并且建立一种可信的行为. WebGL和JavaScript还不能奢华到可以运行一个完全 ...

  10. pyspark操作 rdd dataframe,pyspark.sql.functions详解 行列变换

    官网文档可以参考:https://spark.apache.org/docs/latest/api/python/index.html dataframe读写 生成以逗号分隔的数据 stringCSV ...

最新文章

  1. Linux shell 学习笔记(4)— linux 环境变量(全局变量、局部变量及变量持久化)
  2. java精确浮点型小数,java练习 计算n位可被浮点数精确表示的小数
  3. C#中数组、ArrayList和List三者的区别
  4. 新人新气象,给自己加油!
  5. 【LeetCode从零单排】No.160 Intersection of Two Linked Lists
  6. Java并发编程系列之CountDownLatch用法及详解
  7. php如何获取常量的值,php – 如何获取常量的名称?
  8. MySQL之IFNULL()、ISNULL、NULLIF用法
  9. ​vSphere 性能优化方法总结
  10. 完美仿MSN右下角弹出广告代码并可自动消失,附带关闭按钮
  11. php小红针有副作用吗,hph小红针精华液怎么样?hph小红针精华液测评
  12. ESP32/ESP32S2直连腾讯云,实现微信小程序控制
  13. RDLC报表横向放纸不能横向打印问题解决
  14. Maven使用Profile
  15. 未检测到与wia兼容的设备_WIA-TWAIN 兼容性
  16. 数字化办公,就选流畅、清晰的华为云桌面
  17. 重装系统中遇到的问题
  18. win7信息服务器iis管理器,win7系统打开Internet信息服务(IIS)管理器的操作方法
  19. 谷歌浏览器升级后 ,chromedriver过期
  20. 注册公用设备工程师考试——给水排水专业常用规范

热门文章

  1. java关于文件上传和下载,保存到后台并修改名字。
  2. 【USACO 2019 February Bronze】Sleepy Cow Herding
  3. 行杂记之Zookeeper SessionTimeOut分析
  4. 雷达波形样式_系统工程与电子技术专栏征稿丨雷达抗干扰技术
  5. java一直显示载入中_java – 当类在包中时为GUI加载图像的问题
  6. C#图片处理:生成大尺寸图片,以边框颜色填充
  7. 用Ps制作网页展示总结
  8. 瑞尔森大学计算机网络专业怎么样,瑞尔森大学计算机网络硕士录取.pdf
  9. Office Word如何设置页码(MacOS中为例)
  10. 三十岁,研究生毕业的你,现在收入多少?