| /////////////////////////////////////////////////////////////////////////////// |
| // // |
| // Copyright Test Competence Center (TCC) ETH 2008 // |
| // // |
| // The copyright to the computer program(s) herein is the property of TCC. // |
| // The program(s) may be used and/or copied only with the written permission // |
| // of TCC or in accordance with the terms and conditions stipulated in the // |
| // agreement/contract under which the program(s) has been supplied. // |
| // // |
| /////////////////////////////////////////////////////////////////////////////// |
| // |
| // File: LLC_Types.ttcn |
| // Description: This module contains the Logical Link Control protocol (LLC) |
| // 44.064 v7.1.0 with attributes for RAW encoding/decoding. |
| // Rev: R1A0 |
| // Prodnr: CNL 113 577 |
| // Updated: 2008-01-22 |
| // Contact: http://ttcn.ericsson.se |
| // Reference: 3GPP TS 44.064 7.1.0 |
| |
| module LLC_Types |
| { |
| |
| import from General_Types all; |
| |
| external function enc_PDU_LLC(in PDU_LLC pdu) return octetstring; |
| external function dec_PDU_LLC(in octetstring stream) return PDU_LLC; |
| |
| type record Version |
| { |
| integer version_value (0..15), |
| BIT4 spare |
| |
| } with { |
| variant (version_value) "FIELDLENGTH(4)"; |
| } |
| |
| type octetstring IOV_UI length(4) |
| |
| |
| type octetstring IOV_I length(4) |
| |
| |
| type record T200 |
| { |
| BIT4 spare, |
| integer t200Value |
| } with { |
| variant (t200Value) "FIELDLENGTH(12)"; |
| variant (t200Value) "BYTEORDER(last)"; |
| variant "FIELDORDER(msb)"; |
| }; |
| |
| |
| type record N200 |
| { |
| integer retransmissions (0..15), |
| BIT4 spare |
| } with { |
| variant (retransmissions) "FIELDLENGTH(4)"; |
| } |
| |
| |
| type record N201_U |
| { |
| BIT5 spare, |
| integer n201UValue |
| } with { |
| variant (n201UValue) "FIELDLENGTH(11)"; |
| variant (n201UValue) "BYTEORDER(last)"; |
| variant "FIELDORDER(msb)"; |
| }; |
| |
| |
| type record N201_I |
| { |
| BIT5 spare, |
| integer n201IValue |
| } |
| with { |
| variant (n201IValue) "FIELDLENGTH(11)"; |
| variant (n201IValue) "BYTEORDER(last)"; |
| variant "FIELDORDER(msb)"; |
| }; |
| |
| type record MD |
| { |
| BIT1 spare, |
| integer mDValue |
| } with { |
| variant (mDValue) "FIELDLENGTH(15)"; |
| variant (mDValue) "BYTEORDER(last)"; |
| variant "FIELDORDER(msb)"; |
| }; |
| |
| |
| type record MU |
| { |
| BIT1 spare, |
| integer mUValue |
| } with { |
| variant (mUValue) "FIELDLENGTH(15)"; |
| variant (mUValue) "BYTEORDER(last)"; |
| variant "FIELDORDER(msb)"; |
| }; |
| |
| type integer KD with {variant "FIELDLENGTH(8)";}; |
| |
| type integer KU with {variant "FIELDLENGTH(8)";}; |
| |
| type octetstring L3param; |
| |
| type octetstring Reset_LLC length(0); |
| |
| type union XID_Data |
| { |
| Version version, |
| IOV_UI iOV_UI, |
| IOV_I iOV_I, |
| T200 t200, |
| N200 n200, |
| N201_U n201_U, |
| N201_I n201_I, |
| MD mD, |
| MU mU, |
| KD kD, |
| KU kU, |
| L3param l3param, |
| Reset_LLC reset |
| } |
| |
| |
| type union XID_length |
| { |
| integer short_len, |
| integer long_len |
| }with { |
| variant (short_len) "FIELDLENGTH(2)"; |
| variant (long_len) "FIELDLENGTH(8)"; |
| variant (long_len) "BYTEORDER(last)"; |
| variant (short_len) "FIELDORDER(msb)"; |
| variant (long_len) "FIELDORDER(msb)"; |
| |
| } |
| |
| |
| type record XID |
| { |
| BIT1 xl, |
| BIT5 typefield, |
| XID_length xID_length, |
| //Header_XID header_XID, |
| XID_Data xID_Data |
| } with { |
| variant (xID_Data) "CROSSTAG( version, typefield = '00000'B; |
| iOV_UI, typefield = '00001'B; |
| iOV_I, typefield = '00010'B; |
| t200, typefield = '00011'B; |
| n200, typefield = '00100'B; |
| n201_U, typefield = '00101'B; |
| n201_I, typefield = '00110'B; |
| mD, typefield = '00111'B; |
| mU, typefield = '01000'B; |
| kD, typefield = '01001'B; |
| kU, typefield = '01010'B; |
| l3param, typefield = '01011'B; |
| reset, typefield = '01100'B; |
| |
| )"; |
| variant "FIELDORDER(msb)"; |
| variant (xID_length) "CROSSTAG( short_len, xl = '0'B; |
| long_len, xl = '1'B;)"; |
| variant (xID_length) "LENGTHTO (xID_Data)" |
| |
| variant (xID_length) "PADDING(yes)" |
| }; |
| |
| |
| type record RejectedFrameControlField_UI |
| { |
| Control_field_UI control_field, |
| OCT4 spare |
| } |
| |
| |
| type record RejectedFrameControlField_U |
| { |
| Control_field_U control_field, |
| OCT5 spare |
| } |
| |
| |
| type union RejectedFrameControlField |
| { |
| RejectedFrameControlField_UI rejectedFrameControlField_UI, |
| RejectedFrameControlField_U rejectedFrameControlField_U |
| } with { |
| variant "TAG(rejectedFrameControlField_UI, control_field.format = '110'B; |
| rejectedFrameControlField_U, control_field.format = '111'B; |
| )"; |
| }; |
| |
| |
| type record of XID UA_Information; |
| |
| type record of XID SABM_Information; |
| |
| type record of XID XID_Information; |
| |
| |
| type octetstring DM_Information length(0); |
| |
| |
| type record FRMR_Information |
| { |
| RejectedFrameControlField rejectedFrameControlField, |
| BIT4 spare1, |
| BIT9 vS, |
| BIT1 spare2, |
| BIT9 vR, |
| BIT1 cR, |
| BIT4 spare3, |
| BIT1 w4, |
| BIT1 w3, |
| BIT1 w2, |
| BIT1 w1 |
| } with { |
| variant (vS) "BYTEORDER(last)"; |
| variant (vR) "BYTEORDER(last)"; |
| variant "FIELDORDER(msb)"; |
| }; |
| |
| |
| type record Address_field |
| { |
| BIT4 sAPI, |
| BIT2 spare, // '00'B |
| BIT1 cR, |
| BIT1 pD //'0' for LLC |
| } |
| |
| type record Control_field_U |
| { |
| BIT4 mBits, |
| BIT1 pF, |
| BIT3 format // '111'B |
| } |
| |
| |
| |
| type record Control_field_UI |
| |
| { |
| BIT3 format, // '110'B |
| BIT2 spare, |
| integer nU, //BIT9 |
| BIT1 e, |
| BIT1 pM |
| } with { |
| |
| variant (nU) "FIELDLENGTH(9)"; |
| variant (nU) "BYTEORDER(last)"; |
| variant "FIELDORDER(msb)"; |
| } |
| |
| |
| type union Information_field_U |
| { |
| UA_Information uA, |
| SABM_Information sABM, |
| FRMR_Information fRMR, |
| DM_Information dM, |
| XID_Information xID |
| }; |
| |
| |
| type record PDU_LLC_UI |
| { |
| Address_field address_field, |
| Control_field_UI control_field, |
| octetstring information_field_UI, |
| OCT3 fCS optional |
| // fCS ENCODING: |
| //'000000'O in send template -> generate CRC, |
| // omit in send template -> generate CRC, |
| // otherwise send out fCS in send template |
| // |
| // DECODING: |
| // decoder generates '000000'O if CRC OK |
| } |
| |
| |
| |
| type record PDU_LLC_U |
| { |
| Address_field address_field, |
| Control_field_U control_field, |
| Information_field_U information_field_U, |
| OCT3 fCS optional |
| // ENCODING: |
| //'000000'O in send template -> generate CRC, |
| // omit in send template -> generate CRC, |
| // otherwise send out fCS in send template |
| // |
| // DECODING: |
| // decoder generates '000000'O if CRC OK |
| } with { |
| variant (information_field_U) "CROSSTAG( uA, control_field.mBits = '0110'B; |
| sABM, control_field.mBits = '0111'B; |
| fRMR, control_field.mBits = '1000'B; |
| dM, control_field.mBits = '0001'B; |
| xID, control_field.mBits = '1011'B; |
| )"; |
| }; |
| |
| |
| type union PDU_LLC |
| { |
| PDU_LLC_UI pDU_LLC_UI, |
| PDU_LLC_U pDU_LLC_U |
| } with { variant "TAG ( |
| pDU_LLC_UI, control_field.format ='110'B; |
| pDU_LLC_U, control_field.format ='111'B; |
| )" |
| }; |
| |
| |
| |
| }with{ encode "RAW"}// end of module |