/// <summary>
        /// Encode an update interval value packet into the buffer
        /// </summary>
        /// <param name="buffer"></param>
        /// <param name="index"></param>
        /// <param name="interval"></param>
        public static void EncodeUpdateIntervalValue(byte[] buffer, ref int index, SensorUpdateInterval interval)
        {
            // Encode header
            PacketHeader header = new PacketHeader(PacketTypeCode.UpdateIntervalValue);

            SerializePacket(buffer, ref index, header);

            // Encode payload
            UpdateIntervalPacket packet = EncodeUpdateInterval(interval);

            SerializePacket(buffer, ref index, packet);

            // Encode footer
            SerializePacket(buffer, ref index, _footer);
        }
        /// <summary>
        /// Read the <see cref="SensorUpdateInterval"/> from a <see cref="UpdateIntervalPacket"/>
        /// </summary>
        /// <param name="buffer"></param>
        /// <param name="index"></param>
        /// <returns></returns>
        protected static SensorUpdateInterval DecodeUpdateInterval(byte[] buffer, ref int index)
        {
            UpdateIntervalPacket packet = DeserializePacket <UpdateIntervalPacket>(buffer, ref index);

            return((SensorUpdateInterval)packet.value);
        }