ASNSDK TCE-C++
Version 6.0 enhancements
This chapter presents the improvements added to the TCE-C++ v6.0 release with regards to the TCE-C++ v5.2 release.
ASN.1:2008 compliance
The TCE-C++ Compiler and runtime are now compliant with the 2008 release of the ASN.1 standards.It supports the following new features:
- New types: TIME, DATE, DATE-TIME, TIME-OF-DAY, DURATION, OID-IRI and RELATIVE-OID-IRI,
- A predefined module DefinedTimeTypes for time-related types.
- A predefined module ASN1-Object-Identifier-Module for object identifier value defined in the ASN.1 standards.
Using code-generation with tabledriven
The default encoding and decoding technology is tabledriven which offers a good ratio between runtime performance and memory usage. Further performance improvements can be achieved with code-generation technology (ASN.1 Compiler option -tech codegen). The ASN.1 Compiler then generates additional source code for specific encoding, decoding and constraint checking functions. This increases code size.In order to decrease code size but benefit from the code-generation technology, TCE-C++ v6.0 introduces a new ASN.1 Compiler option and ASN.1 Runtime flag in order to use code-generation technology for encoding and decoding and tabledriven for constraint checking:
- When the ASN.1 Compiler options -tech codegen -chkcst are used the ASN.1 Runtime will use code-generation technology for encoding, decoding and constraint checking.
- When the ASN.1 Compiler options -tech codegen -chkcst tabledriven are used the ASN.1 Runtime will use code-generation technology for encoding and decoding and tabledriven technology for constraint checking.
The ASN.1 Runtime flag asnCodChkTABLE must be enabled.
This configuration will be faster than using only tabledriven technology and smaller than using only code-generation technology.
Force prefixing of identifiers
The ASN.1 Compiler always generates the shortest possible unique identifiers for constants, e.g. ENUMERATED, named integers, and class names. Name conflicts are resolved by prefixing identifiers with enclosing type names. For some ASN.1 syntaxes, this can lead to identifiers belonging to the same type but having different prefixes. In order to apply the same prefix to all identifiers belonging to the same type, the ASN.1 Compiler now supports the option -idlevel which forces prefixing by enclosing types even if there is no conflict for identifiers.Support for changing ASN.1 syntaxes
When updating an ASN.1 syntax with a newer version, the TCE-C++ API must be regenerated. When already existing ASN.1 identifiers are reused in some other ASN.1 definitions, this may lead to changed identifier names. In order to track these changes a new optional file asnids.h is generated. This file contains all identifiers with their fully qualified name starting from the module name. Two applications are possible:- By comparing the generated asnids.h for different versions of the same ASN.1 syntax, differences can easily be identified.
- In order to reduce application changes when updating an ASN.1 syntax the fully qualified identifiers of asnids.h can directly be used in the application.