ASN.1 to C/C++
The ASN1C ASN.1 compiler can generate C and/or C++ source code for encoding and decoding ASN.1 messages. The following ASN.1 encoding rules are supported:
- BER/DER/CER
- PER - aligned (APER) and unaligned (UPER)
- OER (including canonical COER)
- XER and OSys XML
- JSON-ER
Generated C/C++ encoders and decoders make use of a custom-built, fast memory management algorithm that provides for optimal speed. In addition, compact code generation is supported through a number of code generation options and configuration file options that make it possible to include or exclude items within a specification. This can be done down to the element level making it possible to exclude optional and extension elements that are known to be not used for particular use cases.
Features
- Intuitive mapping between ASN.1 type and C/C++ structures and classes.
- In-memory and stream-based encoding and decoding.
- Supports generation of utility functions to print, compare, and copy data in generated structures.
- Supports generation of random test data at both compile and run-time and reader and writer programs
- Supports generation of makefiles and Visual Studio project files to build generated code.
- Comprehensive ASN.1 feature coverage including support for table constraints, content constraints, extension element groups, all ASN.1 types, and ASN.1 value notation.
- Cross-platform - generated code will compile on any platform type with an ANSI-standard C or C++ compiler.
- SAX-like event handler interface allows for user-defined callbacks
- NAS extensions make it possible to generate C/C++ code to support 3GPP layer 3 messages using a specially constructed ASN.1 specification.