【AutoSar CP】SoAd模块

【AutoSar CP】SoAd模块

1. SoAd总体说明

1.1. SoAd在AutoSar CP中的层级关系

在这里插入图片描述

1.2. SoAd的作用

  • 对于TCP/IP协议栈,数据的传输依赖基于ip和端口的Sockt,而对于PDU的传输则依赖PduId,SoAd模块将AUTOSAR中定义的PDU通信转换成基于socket的通信。实现Socket和PDU数据之间的切换
  • 对于PDU的路由,可以控制哪些PDU路由使能、哪些PDU路由禁止
  • AUTOSAR遵循静态通信关系,而TCP/IP概念中存在动态配置和路由,SoAd模块旨在弥合这两个概念之间的差距。通过建立一个包含AUTOSAR所需信息的预先确定的配置,并保留一些项,以便在运行时进行更新

    比如对于特定的PDU,其PduId在程序编译时就确定了,但是在代码运行中,该PduId可能需要发送到不同的远端ip,这时就需要用SoAd来设置连接远端地址信息

2. 主要配置参数

  • SoAdSocketConnectionGroup(连接参数)
    • 指定套接字ConnectionGroup的配置,主要包含本地ip、本地端口、远端ip,远端端口,连接协议(TCP/UDP)
    • 每一个ConnectionGroup内需要指定有几个Connection(远端),可以理解为一个服务端指定最多有几个客户端连它
    • 可以设置每个Connection(远端)的ip和端口。如果ip设置为ANY,端口设置为0 ,可以理解为连接本服务器的这个客户端可以是任何ip,任何端口
    • 注意:在一个ConnectionGroup内,只有本地ip必须唯一,本地端口、远端ip,远端端口都可以设置为任意值(ip:ANY,端口:0)
    • 对于接收组播,本地ip需要设置为组播地址
    • 对于UDP来说,一个ConnectionGroup下的Connection共享同一个Socket
    • 对于TCP来说,一个ConnectionGroup下的每一个Connection都单独对应一个Socket(TCP需要accept)
  • SoAdPduRoute(发送数据)
    • PDU发送路径:PduR --> SoAd --> TCP/IP
    • 需要指定PduR SoAd上层接口类型,IF/TP
    • 需要指定接收的数据走的是哪一个ConnectionGroup或Connection
    • 需要指定接收的数据与哪一个PduId对应,PduId由PduR中配置
    • 需要指定SoAdRoutingGroup(开关),来控制该种PduId数据是否从SoAd向下传输
  • SoAdSocketRoute(接收数据)
    • PDU接收路径:PduR <-- SoAd <-- TCP/IP
    • 需要指定SoAd PduR上层接口类型,IF/TP
    • 需要指定接收的数据走的是哪一个ConnectionGroup或Connection
    • 需要指定接收的数据与哪一个PduId对应,PduId由PduR中配置
    • 需要指定SoAdRoutingGroup(开关),来控制该种PduId数据是否从SoAd向上传输
  • SoAdRoutingGroup(开关)
    • 一个可以启用或禁用的特定路由组的合集。
    • SoAdRoutingGroupIsEnabledAtInit:如果设置为 true,此路由组将在初始化 SoAd 模块后启用(即在SoAd_Init 函数中启用)
    • SoAdRoutingGroupTxTriggerable: 指定与此路由组相关的PduRouteDest容器所引用的If-TxPDUs是否可以通过SoAd_IfRoutingGroupTransmit函数触发传输。当该参数设置为TRUE时,表示可以通过SoAd_IfRoutingGroupTransmit触发传输;当该参数设置为FALSE时,表示不可以通过SoAd_IfRoutingGroupTransmit触发传输

3. Sock连接

  • 对于SoAd模块,建立链接是调用接口SoAd_OpenSoCon(SoConId), 入参 SoConId 对应配置参数SoAdSocketConnectionGroup中的索引值
  • 调用SoAd_OpenSoCon(SoConId)的实际作用是设置该SoConId需要建立链接的flag
  • 在周期调度函数SoAd_MainFunction()中,对于需要建立链接的SoConId ,依次调用如下接口建立链接
    //TCP/UDP
    TcpIp_SoAdGetSocket(Std_ReturnType,
    TcpIp_DomainType, TcpIp_ProtocolType,
    TcpIp_SocketIdType**);
    //TCP/UDP
    TcpIp_Bind(Std_ReturnType, TcpIp_SocketIdType,
    TcpIp_LocalAddrIdType, uint16**);
    /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TAlice

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

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

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

打赏作者

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

抵扣说明:

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

余额充值