PREEvision AP SOA建模如何配置Type Emitter (一)

目录

一、PREEvision建模中会在哪里遇到Type Emitter?

二、Type Emitter是什么?

三、总结


一、PREEvision建模中会在哪里遇到Type Emitter?

在使用PREEvision进行基于AP平台SOA系统软件架构层建模时需要对Service Interface进行设计描述,其中非常重要的一步就是在定义好Service Interface及其中的参数后,还需要定义Service Interface中参数的数据类型,即需要定义IDT(Implement Data Type)并将其分配给Service Interface中对应的参数,而在定义IDT时,有一个经常被忽略的点。这里我杜撰一个超级简单的服务来引出要讨论的这个问题,如下图所示:

  1. 服务:VehicleState,服务提供方会广播车辆状态信息或在收到服务消费方的请求后向其告知车辆状态
  2. 服务参数:VehSpd,简单起见,我们假设该服务指提供车速信息VehSpd,类型为长度为一个2字节的无符号整形
  3. 服务提供方:VehicleState_SP
  4. 服务消费方:VehicleState_SC

在为这个服务进行建模时,常规的建模过程是在完成Service Interface(VehicleState)及其内部参数(VehSpd)定义后,定义内部参数的IDT,IDT的全称为Implement Data Type,下图中VehSpd_ref即为VehSpd对应的IDT,IDT可以简单理解为其关联的参数的数据类型。

此处VehSpd_ref的类型是IDT Reference,即其本身又指向一个IDT-uint16_t用以说明VehSpd的数据类型是uint16_t。

在定义VehSpd_ref以及uint16_t时,我们遇到了本文的主角Type Emitter。

二、Type Emitter是什么?

实际开发中可以使用Davinci Developer Adaptive基于PREEvision中创建的ARXML生成应用程序代码,AUTOSAR AP绑定使用的C++语言,即Davinci Developer Adaptive会基于ARXML生成C++代码。PREEvision中定义的服务参数、参数IDT以及IDT的Type Emitter都会存储在ARXML中,服务参数会转化为代码的中的变量接口,而参数的的IDT则决定了其转换成代码变量后的数据类型。

上文中我们谈的服务VehicleState的参数VehSpd转换为C++代码后,其类型即为VehSpd_ref,即转化为的代码为

VehSpd_ref VehSpd;

很明显VehSpd_ref并不是C++中定义的标准数据类型,在使用VehSpd_ref定义 VehSpd类型之前,Davinci Developer Adaptive会使用AUTOSAR中定义的“ARA generator”程序对VehSpd_ref进行定义。

此处VehSpd_ref的IDT是uint16_t,则其转换后的类型定义代码为:

typedef uint16_t VehSpd_ref;

即定义VehSpd_ref为uint16_t的别名。

P.s. 文中代码仅为说明转换原理示意,并不是实际代码。

似乎又说了一段废话。说到了这里似乎还是没有看出我们想要讨论的Type Emitter具体是个什么东东?但请相信这些确实是一些需要铺垫的必要信息。那现在我们来回答本节我们最开始提的问题,Type Emitter是什么?

AUTOSAR中对Type Emitter的定义如下:

我们借此来解释一下Type Emitter是什么?

  • Type Emitter是CppImplementationDataType的一个属性,IDT可以理解为CppImplementationDataType的一个实例,故而Type Emitter是IDT的一个属性
  • Type Emitter是用来控制IDT如何与对应语言进行绑定的,即Type Emitter决定了如何将其对应IDT转化为C++代码的。

三、总结

  • Type Emitter是在PREEvision AP SOA建模中,为Service Interface的参数分配的IDT的属性
  • PREEvision中配置的Type Emitter会被导入并存储在ARXML中
  • Davinci Developer Adaptive中的“ARA generator”会基于IDT的Type Emitter决定如何对该IDT进行C++代码转化。

下一篇文章我们将介绍一下Type Emitter该如何进行配置,如发现文章有任何错误,欢迎指正,感谢指教!

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Preevision是一种用于实施面向服务架构(SOA)的工具。SOA是一种软件开发方法,旨在通过将应用程序划分为独立的服务来提高系统的灵活性和可复用性。 Preevision通过提供可视化的和设计工具来支持SOA的实现。它允许开发人员在一个统一的环境中创和管理各种服务,包括业务逻辑、数据访问和通信。使用Preevision,开发人员可以简化服务的定义和部署过程,并实现服务的可靠和高效运行。 Preevision还提供了强大的测试和验证功能,以确保SOA系统的稳定性和可靠性。它支持自动化的测试过程,并能够与其他测试工具进行集成。通过Preevision,开发人员可以进行各种类型的测试,如功能测试、性能测试和安全性测试,以确保系统在不同条件下的正确运行。 此外,Preevision还提供了全面的文档和报告功能,以帮助开发人员和管理人员了解系统的架构和设计。它可以生成各种类型的文档,包括系统设计文档、用户手册和技术规范。这些文档和报告可以帮助团队成员更好地了解和理解系统的各个方面,从而更好地进行开发和协作。 总之,Preevision是一种实现SOA的强大工具,它通过提供、设计、测试和文档功能,帮助开发人员实现可靠、灵活和可复用的服务体系结构。它使开发过程更加高效和可控,从而提高了系统的质量和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汽车电子大白话

感谢,你的鼓励是我创作最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值