静态代码分析之- CanIf_Transmit

目录

简述

代码分析

定义local变量

获取控制器Id

控制器状态判断

Pdu模式判断

填充localPdu信息

总结


简述

CanIf_Transmit()是AUTOSAR标准文档定义的服务函数,该函数服务是基于L-PDU。对L-SDU特定数据的访问是根据如下参数组织的:

  • 发送L-PDU -> L-SDU ID。
  • 数据结构指针,该数据结构包含L-SDU相关的数据,即指向L-SDU的指针,指向MetaData的指针和L-SDU的长度。

函数定义:

Std_ReturnType CanIf_Transmit (PduIdType TxPduId,const PduInfoType* PduInfoPtr )

第一个传参TxPduId是要发送的PDU buffer的identifier,即CanIfTxPdu的handle Id,

第二个传参PduInfoPrt指针是指向一个数据结构的指针,该数据结构包括两个元素:Pdu的数据和Pdu的长度,一般定义方式如下:

typedef struct
{
  SduDataPtrType SduDataPtr;
  PduLengthType SduLength;
} PduInfoType;

接下来,详细分析下CanIf_Transmit的静态代码,从代码上去理解如何实现报文的发送。

代码分析

定义local变量

  Std_ReturnType retval = E_NOT_OK;
  uint8 errorId = CANIF_E_NO_ERROR;
#if (CANIF_DATA_CHECKSUM_TX_SUPPORT == STD_ON)
  uint8 txPduDataWithChecksum[CANIF_CFG_MAXTXDLC_PLUS_DATACHECKSUM];
#endif
  Can_PduType localPdu;
#if CANIF_SETDYNAMICTXID_API == STD_ON
  PduIdType DynamicPduId;
#endif
  uint8 controllerId;

reteval为函数返回值,默认为E_NOT_OK;

errorId为故障码,默认为CANIF_E_NO_ERROR;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车电子开发攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值