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 void FillReport(OutputReport report, CoolitCommandOpCode opCode, IConvertible regAddress, byte[] payLoad = null) { commandWriter.Channel = Channel; commandWriter.OpCode = opCode; report.Data.Accept(commandWriter); var datawriter = new CoolitRegisterDataWriterVisitor(regAddress.ToRegisterData(), payLoad); report.Data.Accept(datawriter); }