This abstract DataType is the base DataType for all DataTypes representing a bit mask which is larger than 64 bits or where the validity of the bits within the set are to be identified. All OptionSet DataTypes representing bit masks shall inherit from this DataType. Its elements are described in Table 31.
Table 31 – OptionSet Definition
|value||ByteString||Array of bytes representing the bits in the option set. The length of the ByteString depends on the number of bits. The number of bytes may be larger than needed for the valid bits in the case of a spare allocation.|
|validBits||ByteString||Array of bytes shall be the same size as value representing the valid bits in the value parameter. A Server shall return the StateCode BadOutOfRange if it receives a different array size. When the Server returns the value to the Client, the validBits provides information of which bits in the bit mask have a meaning. If a bit is 1 then the corresponding bit in the value is used by the Server. If it is set to a 0 it should be ignored as it has no meaning. When the Client passes the OptionSet value to the Server, it sets the bits of validBits to 1 for each bit the Client expects the Server to apply to the value. The Server shall use the following logic when applying the requested change “new value = (value & validBits)||(current value & ~validBits)”.A Server shall return the StateCode BadOutOfRange if it receives validBits with a bit set to 1 which it does not consider a valid bit and shall not apply any bit changes.|
The DataType Nodes representing concrete subtypes of the OptionSet shall have an OptionSetValues Property defined in Table 16.