本篇文章主要讲述应用程序使用驱动程序DPM所要调用的API。
文章目录
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已将信息传递给应用程序