public OutputReport Create(CoolitBridgeCommandCode code) { var report = device.CreateOutputReport(outputReportId); switch (code) { case CoolitBridgeCommandCode.MODEL: commandWriter.OpCode = CoolitCommandOpCode.ReadByte; commandWriter.Channel = Channel; report.Data.Accept(commandWriter); var dataWriter = new CoolitRegisterDataWriterVisitor(CoolitRegisterDataUtils.CreateRegisterData(CoolitRegisterData.ModernRegisterAddress.DeviceID)); report.Data.Accept(dataWriter); break; case CoolitBridgeCommandCode.DEVICE_ADDRESS: var regDataDeviceAddress = CoolitRegisterDataUtils.CreateRegisterData(CoolitRegisterData.BridgeRegisterAddress.DeviceAddress); commandWriter.OpCode = CoolitCommandOpCode.ReadBridge; commandWriter.Channel = (byte)(regDataDeviceAddress.AddressByteRepresentation >> 4); report.Data.Accept(commandWriter); break; case CoolitBridgeCommandCode.UDID: var regDataUDID = CoolitRegisterDataUtils.CreateRegisterData(CoolitRegisterData.BridgeRegisterAddress.UDID); commandWriter.OpCode = CoolitCommandOpCode.ReadBridge; commandWriter.Channel = (byte)(regDataUDID.AddressByteRepresentation >> 4); report.Data.Accept(commandWriter); break; default: break; } return(report); }
private IResponseParser GetParser(CoolitBridgeCommandCode commandCode) { IResponseParser result = null; if (commandCode == CoolitBridgeCommandCode.MODEL) { result = new ModelParser(); } // TODO: [tm] add more parsers here if (result == null) { result = new NullParser(); } return(result); }