ASN1C is code generation tool targeted at developers who produce products based on Abstract Syntax Notation One (ASN.1) and XML standards. It is capable of generating code in four different programming languages: C, C++, Java, and C#. The version 6.6 release adds new capabilities to generate code that is easier to work with and to increase performance in applications that use this code. The following is a summary of new features:
Capability to Encode/Decode Data in JSON Format
The capability to encode/decode binary 3GPP layer 3 messages has been added. These include messages specified in the Non-Access Stratum (NAS) layer for 3G and LTE. These messages are not specified in ASN.1 but rather in tabular format and using Concrete Syntax Notation 1 (CSN.1). However, it was determined that a fairly close approximation of the messages could be created in ASN.1 along with a special encoding rules capability (3G Layer 3) and additional configuration directives to refine the encoding format. A document on the approach used to work with these message types is available at http://www.obj-sys.com/docs/UsingASNtoDescribe3GPPMessages.pdf.
Open Source Version of C BER/DER Run-time
An open source version of the C BER/DER run-time (ooberrt) has been added. This is a limited version of our BER/DER run-time that does not contain all features and is not fully optimized as is our commercial version. Nonetheless, it may be sufficient for some applications.
Capability to Embed Configuration Directives in ASN.1 Comments
An external XML file was the only method available up until this release to apply configuration directives to specific ASN.1 types or elements. It is now possible to embed directives as special ASN.1 comments immediately preceding the item to be configured.
Addition of ASN.1 Comments and Type Definitions in C/C+ Header Files
ASN.1 comments as well as the ASN.1 definition itself are now embedded as comments in generated C/C+ header files for each generated C/C+ type or class. This makes it easy to see the ASN.1 definition a generated C structure represents.
More Efficient Table Constraint Index Handling
Modified C/C+ code generation of SEQUENCE-based index values in table constraints to be more efficient (replaced if-else with switch at each level).
Option to Use Enumerated Types in C/C+ Code
A new command-line option, -use-enum-types, has been added which replaces the integer types that were used to represent enumerated types with generated enum types. Integers were always used in the past because the size was known (different C compilers generated different sized items for enum types) and to account for the possibility of unknown extensible enumerated items. This option allows the user to override this behavior and use the enum type instead. Added support for ASN.1 2008 IRI Type
Support was added for the ASN.1 2008 IRI Type for all languages. ASN1C now supports all items in the ASN.1 2008 standard with the exception of some Extended-XER encoding instructions.
For more information on the new release see: http://www.obj-sys.com/release-notes-asn1c-v66.html
A free evaluation version of the software can be downloaded from: http://www.obj-sys.com/evaluate-asn1c.php
This release is available as a free upgrade to users with active support.