/// <summary>
        /// Check if the request is valid with respect to device type, id, and request length
        /// </summary>
        /// <param name="deviceType"></param>
        /// <param name="deviceId"></param>
        /// <param name="request"></param>
        /// <returns></returns>
        static private bool IsValidRequest(byte deviceType, byte deviceId, ref byte[] request)
        {
            if (DeviceTypeChecker.IsValidDeviceType(deviceType) == false)
            {
                Tracer.WriteError("Invalid device type: {0}", deviceType);
                return(false);
            }
            if (DeviceIdChecker.IsValidLogicalDeviceId(deviceType, deviceId) == false)
            {
                Tracer.WriteError("Invalid device ID: {0}", deviceId);
                return(false);
            }
            if (request == null)
            {
                Tracer.WriteError("Null request packet");
                return(false);
            }

            // For server commands, simply pass through.
            // Thus, no need to check the request packet length as long as it is not null
            if (deviceType != (byte)DeviceType.Server)
            {
                if (RequestPacketUtil.IsValidRequestLength(ref request) == false)
                {
                    return(false);
                }
            }
            return(true);
        }
        /// <summary>
        /// Get a physical ID from a logical ID
        /// </summary>
        /// <param name="deviceType"></param>
        /// <param name="physicalDeviceId"></param>
        /// <returns></returns>
        static internal byte GetPhysicalIdFromLogicalId(byte deviceType, byte logicalDeviceId)
        {
            byte physicalDeviceId = logicalDeviceId;

            // For non-server device types, physical and logical IDs are same
            if (DeviceTypeChecker.IsServerOrPowerDeviceType(deviceType) == true)
            {
                int index = Array.IndexOf(logicalServerIdTable, logicalDeviceId);
                physicalDeviceId = physicalServerIdTable[index];
            }
            return(physicalDeviceId);
        }