本文最后更新于4 天前,其中的信息可能已经过时,如有错误请留言评论。
DcmRbApplTxConfirmationRequiredAlways是啥?
该参数启用应用程序的Tx确认调用。如果将该参数设置为TRUE,则即使服务位于DSP内部,也会在响应传输后向应用程序提供确认。此外,在AppITxConfirmationRequiredAlways为TRUE的情况下,将发送对应用程序的确认。如果ApplTxConfirmationRequiredAlways为TRUE,Dcm应用接口 DcmAppl_DcmConfirmation将从Dcm调用。
DcmRbApplTxConfirmationRequiredAlways的作用
该参数用于控制 DCM 在响应发送完成后是否总是通知应用层。
当设为 true
时:DCM 无论什么情况,都会在发送响应完成后调用回调函数:
void DcmAppl_DcmConfirmation(
PduIdType id,
NotifResultType result
);
即使该服务:
- 是 DCM 自己内部处理的(不走应用层);
- 被 DCM 拦截或禁止响应(例如负响应被禁止);
也依然会调用这个 DcmAppl_DcmConfirmation()
,通知应用“这个请求结束了”。
如果是默认行为(即为 false
)下,只有应用层处理的请求,DCM 才会回调确认;
如果服务是在 DSD/DSP 直接响应的,应用层就不知道什么时候结束。
配置说明
配置项值 | 含义 |
false | 不执行任何操作 |
true | DCM 无论什么情况,都会在发送响应完成后调用回调函数 |
用途场景
场景 | 说明 |
---|---|
请求-响应记录 | 应用层需要知道请求处理是否完成,用于日志或审计 |
资源释放 | 某些服务可能在开始时占用资源(如 OTA 通道),需要在确认后释放 |
协议管理 | 实现一些特殊流程(如发送后进入某种状态)时必须知道发送成功 |
//示例:
void DcmAppl_DcmConfirmation(PduIdType id, NotifResultType result) {
if (result == NTFRSLT_OK) {
// 发送成功,释放资源
} else {
// 失败重试或记录错误
}
}