Enumeration Code Generation with Embedded Coder (autosar.tlc)

50 views (last 30 days)
Hello,
does anyone have a clue what causes the following error message and how I can overcome this problem? I have a Simulink model that uses the enumeration defined in "State_Car.m"
classdef State_Car < Simulink.IntEnumType
enumeration
PARKEN_BN_NIO(1)
PARKEN_BN_IO(2)
STANDFKT_KUNDE_NICHT_IM_FZG(3)
WOHNEN(5)
PRUEFEN_ANALYSE_DIAGNOSE(7)
FAHRBEREITSCHAFT_HERSTELLEN(8)
FAHREN(10)
FAHRBEREITSCHAFT_BEENDEN(12)
SIGNAl_UNBEFUELLT(15)
end
end
The error message I get during build process is:
### Build procedure for model: 'swc_heat_2017b' aborted due to an error.
The header file of the enumerated type State_Car, should be set to Rte_Type.h. To fix this error, update the getHeaderFile method of the enumeration type to return Rte_Type.h

Accepted Answer

Lucas Lebert
Lucas Lebert on 5 Jul 2018
Edited: Lucas Lebert on 20 Aug 2020
Hi Yu Zhao!
As per the AUTOSAR standard, all data types must have a definition generated in Rte_type.h. This is the reason for the error and it is not possible to use a different header when doing AUTOSAR code generation.
For data types used solely inside of a SWC (not in the definition of a port) you only need to specify the header file as Rte_type.h only if you want the data type to be exported as an IncludedDataTypeSet.
Here's a small example for the implementation of the getHeaderFile method:
classdef State_Car < Simulink.IntEnumType
enumeration
On(1)
Off(2)
end
methods (Static = true)
function retVal = getHeaderFile()
retVal = 'Rte_Type.h';
end
end
end
Have a great day!
~Lucas
  7 Comments
Hailin Ren
Hailin Ren on 9 Dec 2020
I will take this feedback to my colleagues to be considered as an enhancement.
Arian
Arian on 11 Sep 2022
I have added this method to my enumeration type but the Simulink could not compile the model for simulation ( after Ctrl + D).

Sign in to comment.

More Answers (2)

Manuel Stumpf
Manuel Stumpf on 16 Jul 2018
It looks like I have a similar problem: Is it possible to use a RTE data type inside a referenced subsystem (e.g. in state flow)? I want to use the same data types inside of referenced subsystems and the external interface of my SWC. Right now I keep getting error messages like above.
Regards, Manuel
  2 Comments
Lucas Lebert
Lucas Lebert on 16 Jul 2018
Hi, Manuel!
I would need to have a closer look at this. Could you please submit a help request to support@mathworks.de so I or one of my colleagues can have a look at this?
Thanks! ~Lucas
Manuel Stumpf
Manuel Stumpf on 16 Jul 2018
Thanks Lucas,
your answer to Yu's question gave me the hint that I needed. Code generation for Autosar is successful now! Thanks again, Manuel

Sign in to comment.


Zhenwei Sun
Zhenwei Sun on 11 Sep 2018
hi, i'm with same issues. i don't need the data def in "Rte_Types.h" due to this class is only for my SWC used. anyone have fix this problem?
  1 Comment
Tarun Jhamnani
Tarun Jhamnani on 31 Aug 2020
classdef (Enumeration) EnColor < uint8
enumeration
Red (0)
Green (1)
Blue (2)
end
methods (Static = true)
function retValue = getDefaultValue()
retValue = EnColor.Red;
end
end
end
Define enum as above, you can change the base data type as you like. Secondly, What Lucas recommended setting.
Generated code will be something like below :
typedef uint8_T EnColor;
#define Red ((EnColor)0)
#define Green ((EnColor)1)
#define Blue ((EnColor)2)

Sign in to comment.

Products


Release

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!