public final class Signal extends AbstractLazyEncodedByteArray implements FastSerializable
The API offered by this class is as if the type were specified in ASN.1 as follows.
Signal ::= SEQUENCE { signalValue SignalValue }The class takes care of encoding the field value into a byte-array and decoding the field value from a byte-array, the encoded representation being as tabulated below.
Data Encoding - based on ITU-T Q.931 (05/98) §4.5.28 p99 | ||||||||
---|---|---|---|---|---|---|---|---|
8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | |
Octet 1 | 0 | Signal information element identifier | ||||||
Octet 2 | 0 | Length of signal contents | ||||||
Octet 3 | Signal value |
Based on Q.931 1998-05 p99, the value of Signal information element identifier
is always 0110100,
and the value of Length of signal contents
is always 0000001.
Based on ETSI TS 101 046 v7.1.0 p38,
the Signal information element identifier
and Length of signal contents
are both ignored; their values are always 0000000.
Modifier and Type | Class and Description |
---|---|
static class |
Signal.SignalValue
Subset of signal value constants, alerting-related signals only.
|
isDecoded
encoded
FIELD_ABSENT, FIELD_UNINITIALISED
Constructor and Description |
---|
Signal()
Constructs a new Signal object with no fields set.
|
Signal(byte[] data)
Constructs a new Signal object from network-encoded data.
|
Signal(byte[] data,
int start,
int len)
Constructs a new Signal object from part of network-encoded data.
|
Signal(DataInput in)
Constructs a new Signal object from data deserialized from a stream that was written by
toStream(DataOutput) . |
Signal(Signal.SignalValue signalValue)
Constructs a new Signal object from given values for all fields.
|
Modifier and Type | Method and Description |
---|---|
void |
checkFieldsSet()
Checks that all mandatory fields are present.
|
Signal |
clone()
Constructs a copy of this object and everything reachable from it.
|
static Signal |
copyOf(Signal from)
Creates a new object of this type, cloning the values of common fields from the given object of any subclass of the same base type.
|
protected void |
decode()
Computes the decoded form from the encoded form.
|
protected void |
encode()
Computes the encoded form from the decoded form.
|
protected boolean |
encodedIsInvalid()
Determines whether the encoded form is invalid.
|
byte[] |
getCapEncodedForm()
Gets the ETSI TS 101 046 v7.1.0 encoded form of this signal.
|
static int |
getContainedLength(byte[] data,
int start,
int len)
Determines the length of the encoded value that commences at offset
start in the given data . |
byte[] |
getEncodedForm()
Gets the encoded form.
|
static FieldAccessor[] |
getFieldAccessors()
Gets a new array of the accessors for fields of this type.
|
Map<String,Object> |
getFieldsMap(boolean withAbsents)
Gets a Map from field-name to field-value for the fields of a sequence.
|
byte[] |
getInapEncodedForm()
Gets the ITU Recommendation Q.931 encoded form of this signal.
|
Signal.SignalValue |
getSignalValue()
Gets the value of the signal value.
|
boolean |
hasSignalValue()
Tests whether the field SignalValue has a value.
|
Signal |
setSignalValue(Signal.SignalValue value)
Sets the value of the signal value.
|
void |
toStream(DataOutput out)
Serializes this object to a stream in a form suitable for reading by
Signal(DataInput) . |
checkDecode, checkModifyAndDecode
equals, hashCode, toString
checkModify, isReadOnly, setReadOnly
public Signal()
public Signal(byte[] data)
data
- network-encoded dataNullPointerException
- if data is nullpublic Signal(byte[] data, int start, int len)
start
and is len
bytes long.
The data is not decoded and might not be decodable.data
- network-encoded datastart
- starting offset of network-encoded data in byte arraylen
- default length if not predictableNullPointerException
- if data is nullIllegalArgumentException
- if len is negativepublic Signal(Signal.SignalValue signalValue)
signalValue
- the signal valuepublic Signal(DataInput in) throws IOException
toStream(DataOutput)
.in
- the stream to read fromEOFException
- if reading is pre-empted by end-of-fileIOException
- if the data cannot be readpublic void toStream(DataOutput out) throws IOException
Signal(DataInput)
.toStream
in interface FastSerializable
out
- the stream to write toIOException
- if an I/O error occurspublic boolean hasSignalValue() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic void checkFieldsSet() throws EncodeException
checkFieldsSet
in class AbstractLazyEncodedDataObject<byte[]>
EncodeException
- if any mandatory field is not presentpublic Signal.SignalValue getSignalValue() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic Signal setSignalValue(Signal.SignalValue value) throws IllegalStateException
value
- SignalValue representation of the signal valueIllegalStateException
public static Signal copyOf(Signal from)
from
- the object from which to copypublic Signal clone()
clone
in interface DataObject
clone
in class AbstractDataObject
public static FieldAccessor[] getFieldAccessors()
public Map<String,Object> getFieldsMap(boolean withAbsents)
getFieldsMap
in class AbstractFieldsObject
withAbsents
- whether to put absent optional fields into Mapprotected boolean encodedIsInvalid()
public byte[] getEncodedForm() throws EncodeException
EncodeException
- if encoding failspublic static int getContainedLength(byte[] data, int start, int len)
start
in the given data
.
The value is not fully decoded and might not be decodable.
Values of this type are of a fixed length, so that length
is returned if the data is long enough, otherwise 0 is returned.data
- network-encoded datastart
- index into data where value commenceslen
- length in data to be consideredpublic byte[] getInapEncodedForm()
public byte[] getCapEncodedForm()
protected void encode() throws EncodeException
encode
in class AbstractLazyEncodedDataObject<byte[]>
EncodeException
- if SignalValue is not in range [0,255]protected void decode() throws DecodeException
decode
in class AbstractLazyEncodedDataObject<byte[]>
DecodeException
- if not 3 octets to be decoded