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

目录

 

一、Type Emitter在AUTOSAR中定义的语义用法?

二、StdCppImplementationDataType有哪些类型?

三、如何配置Type Emitter

四、总结


 

一、Type Emitter在AUTOSAR中定义的语义用法?

a01b6954df4c40ff8bfe2e9d3eb4dd67.png

前文中我们已经了解到Type Emitter是CppImplementationDataType的一个属性,这里CppImplementationDataType本身是一个抽象的类,实际在应用中使用的是其实例化之后的类,包括StdCppImplementationDataType和CustomCppImplementationDataType,CustomCppImplementationDataType是不需要定义typeEmitter的,原因是如果定义了typeEmitter,也仅仅将该参数设置为数据类型定义的头文件的标准名,这个其实已经在headerFile中进行了定义;StdCppImplementationDataType对typeEmitter的定义则要基于其具体使用的IDT类型。基于此,下文中讨论的typeEmitter配置是针对StdCppImplementationDataType的配置,既然StdCppImplementationDataType的typeEmitter配置是基于其具体的IDT类型而定义的,我们自然要先了解它有哪几种类型。

二、StdCppImplementationDataType有哪些类型?

StdCppImplementationDataType的类型如下:


  • Primitive(原始数据类型)
    1. Type Reference
    2. bool、float、double
    3. uint8_t/uint16_t/uint32_t/uint64_t
    4. int8_t/int16_t/int32_t/int64_t
  • String
  • Array
  • Vector
  • Struct
  • Enumeration
  • Map
  • Variant
  • Bitfield

此处先不对具体类型进行细节描述,我们简单做个分类:

  • 原始数据类型:

包括TypeReference以及下表中的类型

IDT类型

Boolean

Signed Integer

Unsigned Integer

Floating Point

命名

bool

int8_t

uint8_t

float

 

int16_t

uint16_t

double

 

int32_t

uint32_t

 

 

int64_t

uint64_t

 

  • 复杂数据类型:包括String、Array、Vector、Struct、Enumeration、Map、Variant、Bitfield

三、如何配置Type Emitter

Type Emitter的标准值应该为TYPE_EMITTER_ARA,如果我们将IDT的Type Emitter配置为该值,则ARA generator会为该IDT进行类型定义(参考PREEvision AP SOA建模如何配置Type Emitter (一)_pree vision建摸soa-CSDN博客https://blog.csdn.net/weixin_39974126/article/details/138522612?spm=1001.2014.3001.5501),反之如果 Type Emitter的值不是TYPE_EMITTER_ARA,则ARA generator不会为该IDT进行类型定义。AUTOSAR中对此进行了定义:

  • 原始数据类型中的uint8_t/uint16_t/uint32_t/uint64_t以及int8_t/int16_t/int32_t/int64_t的Type Emitter需要配置为cstdint,例如下图为对int8_t的定义。

eff93fa5aadd4821b10955321ea5ee59.png

  • 原始数据中的基础数据类型float、double、bool则不需要定义typeEmitter

49925e88a64c40e5b3f5d2d5ffe61d87.png

  • 原始数据类型中的TypeReference以及复杂数据类型的typeEmitter则需要使用标准值,即TYPE_EMITTER_ARA。

四、总结

  1. PREEvision建模中使用的CppImplementationDataType,其实例化包括CustomCppImplementationDataType和StdCppImplementationDataType,其中需要配置typeEmitter属性的是StdCppImplementationDataType
  2. StdCppImplementationDataType的IDT类型整体可以分为原始数据类型及复杂数据类型
  3. 原始数据类型的Type Emitter按如下要求进行配置:
    • boolean、float和double不需要设置Type Emitter;
    • uint/int8/16/32/64_t的Type Emitter设置的是”cstdint”;
    • TypeReference的Type Emitter设置的是“TYPE_EMITTER_ARA”
  4. 复杂数据类型的Type Emitter设置的是“TYPE_EMITTER_ARA”

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汽车电子大白话

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

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

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

打赏作者

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

抵扣说明:

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

余额充值