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); }
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); }