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