Class MSBearerCapability.GSM.Content.NonSpeech.Layer1Capability

  • All Implemented Interfaces:
    DataObject, Serializable
    Enclosing class:
    MSBearerCapability.GSM.Content.NonSpeech

    public static final class MSBearerCapability.GSM.Content.NonSpeech.Layer1Capability
    extends AbstractLazyEncodedByteArray
    Class Layer1Capability represents the layer 1 capability within a MSBearerCapability. It represents part of a larger octet string; it is not transmitted on a network by itself.

    The API offered by this class is as if the type were specified in ASN.1 as follows.

     Layer1Capability ::= SEQUENCE {
         asynchronous   BOOLEAN,
         layer1Protocol Layer1Protocol,
         o6a            O6a OPTIONAL
     }
    The class takes care of encoding the field values into a byte-array and decoding field values from a byte-array, the encoded representation being as tabulated below.

    Data Encoding - based on 3GPP TS 24.008 v4.17.0 (2007-09) §10.5.4.5 pp343-361
    87654321
    Octet 6*ext. 0/1Layer 1 id. (01)User information layer 1 protocolAsync?
    Octet 6a*ext. 0/1Number of stop bitsNegotiationNumber of data bitsUser rate
    Octet 6b*ext. 0/1Intermediate rateNIC on TxNIC on RxParity
    Octet 6c*ext. 0/1Connection elementModem type
    Octet 6d*ext. 0/1Other modem typeFixed network user rate
    Octet 6e*ext. 0/1Acceptable channel codingsMaximum number of traffic channels
    Octet 6f*ext. 0/1UIMIWanted air interface user rate
    Octet 6g*ext. 1Acceptable channel codings extendedAsymmetry indicationSpare (00)

    The octet numbering in the above table is that used in the cited standard for the octets encoded here. Field names ending in ? are booleans: 1 for true, 0 for false.

    There is a static condition in standard 24.008 that says if octet 6 is present then octet 6a shall also be present, in the GSM encoding. Contradicting that, the standard allows the ext bit in octet 6 to be 1, which would indicate that there is no following octet 6a. As a compromise, this API offers field O6a as an OPTIONAL field, but with this recommendation: you should always provide a value for field O6a.

    See Also:
    Serialized Form
    • Constructor Detail

      • Layer1Capability

        public Layer1Capability()
        Constructs a new Layer1Capability object with no fields set.
      • Layer1Capability

        public Layer1Capability​(byte[] data)
        Constructs a new Layer1Capability object from network-encoded data. The data is not decoded and might not be decodable.
        Parameters:
        data - network-encoded data
        Throws:
        NullPointerException - if data is null
      • Layer1Capability

        public Layer1Capability​(byte[] data,
                                int start,
                                int len)
        Constructs a new Layer1Capability object from part of network-encoded data. The part starts at index start and is len bytes long. The data is not decoded and might not be decodable.
        Parameters:
        data - network-encoded data
        start - starting offset of network-encoded data in byte array
        len - default length if not predictable
        Throws:
        NullPointerException - if data is null
        IllegalArgumentException - if len is negative
      • Layer1Capability

        public Layer1Capability​(DataInput in)
                         throws IOException
        Constructs a new Layer1Capability object from data deserialized from a stream that was written by toStream(DataOutput).
        Parameters:
        in - the stream to read from
        Throws:
        EOFException - if reading is pre-empted by end-of-file
        IOException - if the data cannot be read