Methodology

This API has been developed in the C programming language, using Objective Systems' ASN1C compiler to generate the structures and encode/decode functions. The code was generated from a mixture of ASN.1 and CSN.1 specifications. In cases where the relevant technical specifications did not use either ASN.1 or CSN.1, we approximated the given message or information element using one of these notations. Since this was an approximation, it was also necessary to use a combination of configuration directives and custom code to achieve the desired results. The configuration directives are made effective by using the '-3gl3' command-line option with ASN1C. Our white paper, "Using ASN.1 to Describe 3GPP Messages", describes how messages were approximated using ASN.1. (Note that this paper does not reflect our more recent capability to directly compile CSN.1 notation.)

The end result is an API that consisted of C types and structures similar to what a user would get by compiling a standard ASN.1 specification. The other benefit of this approach is that in addition to encode/decode functions, supporting functions such as print, copy, compare, etc. can be generated from the definitions.

Note that one or more ASN.1 modules are associated with each of the above 3GPP specifications. In some of these modules, PDU (“Protocol Definition Unit”) types are defined. These PDU types are used to represent an entire group of (or possibly all) messages from that module. Common fields are also factored out into the PDU type.

The prefixes for each of the types in the API are given in the following table:

Table 1. Module Prefixes

TS24008IE

prefix for the information elements defined in 24.008

TS24008Msg

prefix for the messages defined in 24.008

TS24011IE

prefix for the information elements defined in 24.011

TS24011Msg

prefix for the messages defined in 24.011

TS24301IE

prefix for the information elements defined in 24.301

TS24301Msg

prefix for the messages defined in 24.301

TS24501Msg

prefix for the messages defined in 24.501

TS44018IE

prefix for the information elements defined in 44.018

TS44018Msg

prefix for the messages defined in 44.018

TS44060IE

prefix for the information elements defined in 44.060

The PDU types we have defined are given in the following table:

Table 2. PDUs

TS24008Msg_PDU

PDU for the messages defined in 24.008

TS24011Msg_CP_PDU

PDU for the CP messages defined in 24.011

TS24011Msg_RP_PDU

PDU for the RP messages defined in 24.011

TS24301Msg_PDU

PDU for the messages defined in 24.301

TS24501Msg_PDU

PDU for the messages defined in 24.501

TS44018Msg_L2_PSEUDO_LEN_PDU

PDU for 44.018 RRC messages using an L2 Pseudo Length

TS44018Msg_RR_Short_PD_PDU

PDU for 44.018 RRC messages using a short protocol discriminator

TS44018Msg_DL_DCCH_PDU

PDU for 44.018 RRC standard L3 messages transmitted on the main DCCH from network to MS (downlink)

TS44018Msg_UL_DCCH_PDU

PDU for 44.018 RRC standard L3 messages transmitted on the main DCCH from MS to network (uplink)

TS44018Msg_UL_SACCH_PDU

PDU for 44.018 RRC standard L3 messages transmitted on the SACCH from MS to network (uplink)

Note that for 44.018 RRC messages, you must choose the PDU type according to the message format and (in some cases) the channel and message direction.