Standard L3 Formatted messages

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})
}