Пример #1
0
        private IResponseParser GetParser(CoolitModernCommandCode commandCode)
        {
            IResponseParser result = null;

            if (commandCode == CoolitModernCommandCode.FAN_CURRENT_RPM ||
                commandCode == CoolitModernCommandCode.TEMPERATURE_CURRENT_TEMPERATURE)
            {
                result = new WordParser();
            }

            if (commandCode == CoolitModernCommandCode.NUMBER_OF_FANS ||
                commandCode == CoolitModernCommandCode.NUMBER_OF_TEMPERATURES ||
                commandCode == CoolitModernCommandCode.NUMBER_OF_LEDS)
            {
                result = new ByteParser();
            }

            if (commandCode == CoolitModernCommandCode.FAN_MODE_GET)
            {
                result = new ByteParser();
            }

            if (commandCode == CoolitModernCommandCode.FW_VERSION)
            {
                result = new BCDFWVersionParser();
            }

            // TODO: [tm] add more parsers here

            if (result == null)
            {
                result = new NullParser();
            }

            return(result);
        }
Пример #2
0
        public OutputReport Create(CoolitModernCommandCode code)
        {
            var report = device.CreateOutputReport(outputReportId);

            switch (code)
            {
            case CoolitModernCommandCode.DEVICE_ID:
                FillReport(report, CoolitCommandOpCode.ReadWord, CoolitRegisterData.ModernRegisterAddress.DeviceID);
                break;

            case CoolitModernCommandCode.FW_VERSION:
                FillReport(report, CoolitCommandOpCode.ReadWord, CoolitRegisterData.ModernRegisterAddress.FirmwareVersion);
                break;

            case CoolitModernCommandCode.FAN_CURRENT_RPM:
                FillReport(report, CoolitCommandOpCode.ReadWord, CoolitRegisterData.ModernRegisterAddress.FanCurrentRPM);
                break;

            case CoolitModernCommandCode.LED_CURRENT_COLOR:
                FillReport(report, CoolitCommandOpCode.ReadBlock, CoolitRegisterData.ModernRegisterAddress.LEDCurrentColor);
                break;

            case CoolitModernCommandCode.TEMPERATURE_CURRENT_TEMPERATURE:
                FillReport(report, CoolitCommandOpCode.ReadWord, CoolitRegisterData.ModernRegisterAddress.TSCurrentTemperature);
                break;

            case CoolitModernCommandCode.FAN_MODE_GET:
                FillReport(report, CoolitCommandOpCode.ReadByte, CoolitRegisterData.ModernRegisterAddress.FanMode);
                break;

            case CoolitModernCommandCode.FAN_MODE_SET:
                FillReport(report, CoolitCommandOpCode.WriteByte, CoolitRegisterData.ModernRegisterAddress.FanMode, new byte[] { FanMode });
                break;

            case CoolitModernCommandCode.FAN_PWM:
                FillReport(report, CoolitCommandOpCode.WriteByte, CoolitRegisterData.ModernRegisterAddress.FanTargetPWM, new byte[] { FanPWM });
                break;

            case CoolitModernCommandCode.FAN_RPM:
                FillReport(report, CoolitCommandOpCode.WriteWord, CoolitRegisterData.ModernRegisterAddress.FanTargetRPM, BitConverter.GetBytes(FanRPM));
                break;

            case CoolitModernCommandCode.CURRENT_FAN:
                FillReport(report, CoolitCommandOpCode.WriteByte, CoolitRegisterData.ModernRegisterAddress.CurrentFan, new byte[] { CurrentSensor });
                break;

            case CoolitModernCommandCode.CURRENT_TEMPERATURE:
                FillReport(report, CoolitCommandOpCode.WriteByte, CoolitRegisterData.ModernRegisterAddress.CurrentTemperatureSensor, new byte[] { CurrentSensor });
                break;

            case CoolitModernCommandCode.CURRENT_LED:
                FillReport(report, CoolitCommandOpCode.WriteByte, CoolitRegisterData.ModernRegisterAddress.CurrentLED, new byte[] { CurrentSensor });
                break;

            case CoolitModernCommandCode.NUMBER_OF_TEMPERATURES:
                FillReport(report, CoolitCommandOpCode.ReadByte, CoolitRegisterData.ModernRegisterAddress.NumberOfTemperatureSensors);
                break;

            case CoolitModernCommandCode.NUMBER_OF_FANS:
                FillReport(report, CoolitCommandOpCode.ReadByte, CoolitRegisterData.ModernRegisterAddress.NumberOfFans);
                break;

            case CoolitModernCommandCode.NUMBER_OF_LEDS:
                FillReport(report, CoolitCommandOpCode.ReadByte, CoolitRegisterData.ModernRegisterAddress.NumberOfLEDChannels);
                break;

            case CoolitModernCommandCode.LED_MODE_GET:
                FillReport(report, CoolitCommandOpCode.ReadByte, CoolitRegisterData.ModernRegisterAddress.LEDMode);
                break;

            case CoolitModernCommandCode.LED_MODE_SET:
                FillReport(report, CoolitCommandOpCode.WriteByte, CoolitRegisterData.ModernRegisterAddress.LEDMode, new byte[] { LedMode });
                break;

            case CoolitModernCommandCode.FAN_RPM_TABLE:
                FillReport(report, CoolitCommandOpCode.WriteBlock, CoolitRegisterData.ModernRegisterAddress.FanRPMTable, Payload);
                break;

            case CoolitModernCommandCode.FAN_TEMPERATURE_TABLE:
                FillReport(report, CoolitCommandOpCode.WriteBlock, CoolitRegisterData.ModernRegisterAddress.FanTemperatureTable, Payload);
                break;

            case CoolitModernCommandCode.FAN_MANUAL_TEMPERATURE:
                FillReport(report, CoolitCommandOpCode.WriteWord, CoolitRegisterData.ModernRegisterAddress.FanManualTemperature, BitConverter.GetBytes(FanManualTemperature));
                break;

            case CoolitModernCommandCode.LED_MANUAL_TEMPERATURE:
                FillReport(report, CoolitCommandOpCode.WriteWord, CoolitRegisterData.ModernRegisterAddress.LEDManualTemperature, BitConverter.GetBytes(LedManualTemperature));
                break;

            case CoolitModernCommandCode.LED_CYCLE_COLORS:
                FillReport(report, CoolitCommandOpCode.WriteBlock, CoolitRegisterData.ModernRegisterAddress.LEDCycleColors, Payload);
                break;

            case CoolitModernCommandCode.LED_TEMPERATURE_MODE_COLORS:
                FillReport(report, CoolitCommandOpCode.WriteBlock, CoolitRegisterData.ModernRegisterAddress.LEDTMColors, Payload);
                break;

            case CoolitModernCommandCode.LED_TEMPERATURE_MODE_TEMPERATURES:
                FillReport(report, CoolitCommandOpCode.WriteBlock, CoolitRegisterData.ModernRegisterAddress.LEDTMTemperatures, Payload);
                break;

            default:
                break;
            }

            return(report);
        }