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);
        }
Beispiel #2
0
        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);
        }