本篇文章主要讲述应用程序使用驱动程序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已将信息传递给应用程序
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐