3GPP Non-Access Stratum (NAS) Application Programming Interfaces (API's) are pre-compiled and optimized C function libraries or Java jar files for encoding and decoding protocol messages defined within 3GPP standards documents
The NAS protocol is not implemented using any of the ASN.1 encoding rules as are most other 3GPP protocols. Instead, they use "Layer 3 messages" which consist of a set of messages specified in tabular form and "Information Elements" (IE's) contained within these tables. The IE's are also described in tabular format.
The following 3GPP specifications describe the messages and IE's that have been implemented:
In order to implement the Layer 3 messages and IE's, we produced ASN.1 specifications that are an approximation of what the tabular definitions might look like in ASN.1 format. We then modified our ASN.1 compiler to generate code that supports most layer 3 features. This was then combined with custom code snippets to provide a complete solution. More details on this can be found in our white paper on the subject at the following URL:
We offer two products that support NAS encoding and decoding:
These are described more fully below.
NAS Standalone API
The NAS Standalone API is a pre-compiled library containing encode/decode functions generated with our compiler. We have done the building and packaging of the API. It is available in the following forms:
The package contains sample programs showing how to use the API.
NAS ASN1C SDK Add-on
The ASN1C NAS C or Java Development Add-on Component is an add-on that when installed within an existing ASN1C SDK installation, allows C or Java code generation of 3GPP layer 3 components. It allows for the development of new NAS messages or IE's or allows existing components to be modified. The add-on contains the following items: