For messages using the standard L3 format, you must choose the PDU type based on the channel and/or direction. There are three PDU types,
all basically the same except that they have different sets of messages allowed.
In each case, the fields protoDiscr
and msgType
determine the type of the value in data
.
For downlink messages on the main DCCH:
DL-DCCH-PDU ::= SEQUENCE { l3HdrOpts L3HdrOptions, -- L3 header, octet 1, bits 5 thru 8 protoDiscr NAS-PROTOCOL-CLASS.&protoDiscr ({DL-DCCH-Messages}), msgType NAS-PROTOCOL-CLASS.&msgType ({DL-DCCH-Messages}), data NAS-PROTOCOL-CLASS.&Value ({DL-DCCH-Messages}{@protoDiscr,@msgType}) }
For uplink messages on the main DCCH:
UL-DCCH-PDU ::= SEQUENCE { l3HdrOpts L3HdrOptions, -- L3 header, octet 1, bits 5 thru 8 protoDiscr NAS-PROTOCOL-CLASS.&protoDiscr ({UL-DCCH-Messages}), msgType NAS-PROTOCOL-CLASS.&msgType ({UL-DCCH-Messages}), data NAS-PROTOCOL-CLASS.&Value ({UL-DCCH-Messages}{@protoDiscr,@msgType}) }
For uplink messages on the SACCH:
UL-SACCH-PDU ::= SEQUENCE { l3HdrOpts L3HdrOptions, -- L3 header, octet 1, bits 5 thru 8 protoDiscr NAS-PROTOCOL-CLASS.&protoDiscr ({UL-SACCH-Messages}), msgType NAS-PROTOCOL-CLASS.&msgType ({UL-SACCH-Messages}), data NAS-PROTOCOL-CLASS.&Value ({UL-SACCH-Messages}{@protoDiscr,@msgType}) }