Beispiel #1
0
        private void ProcessCommand(SDCard sdCard, SDCardCommand command)
        {
            if (internalBuffer.Any())
            {
                this.Log(LogLevel.Debug, "Clearing a non-empty buffer while processing command: {0}", command);
                internalBuffer.Clear();
            }
            switch (command)
            {
            case SDCardCommand.CheckSwitchableFunction:
                internalBuffer.EnqueueRange(sdCard.ReadSwitchFunctionStatusRegister());
                irqManager.SetInterrupt(Interrupts.BufferReadReady, irqManager.IsEnabled(Interrupts.BufferReadReady));
                break;

            case SDCardCommand.SendInterfaceConditionCommand:
                internalBuffer.EnqueueRange(sdCard.ReadExtendedCardSpecificDataRegister());
                irqManager.SetInterrupt(Interrupts.BufferReadReady, irqManager.IsEnabled(Interrupts.BufferReadReady));
                break;

            case SDCardCommand.ReadSingleBlock:
                ProcessData(sdCard, blockSizeField.Value);
                break;

            case SDCardCommand.ReadMultipleBlocks:
                ProcessData(sdCard, blockCountField.Value * blockSizeField.Value);
                break;
            }
            irqManager.SetInterrupt(Interrupts.CommandComplete, irqManager.IsEnabled(Interrupts.CommandComplete));
        }
        private void ProcessCommand(SDCard sdCard, SDCardCommand command)
        {
            switch (command)
            {
            case SDCardCommand.CheckSwitchableFunction:
                internalBuffer.EnqueueRange(sdCard.ReadSwitchFunctionStatusRegister());
                break;

            case SDCardCommand.SendInterfaceConditionCommand:
                internalBuffer.EnqueueRange(sdCard.ReadExtendedCardSpecificDataRegister());
                break;

            case SDCardCommand.ReadSingleBlock:
                ReadCard(sdCard, blockSizeField.Value);
                break;

            case SDCardCommand.ReadMultipleBlocks:
                ReadCard(sdCard, blockCountField.Value * blockSizeField.Value);
                break;

            case SDCardCommand.WriteSingleBlock:
                WriteCard(sdCard, blockSizeField.Value);
                break;

            case SDCardCommand.WriteMultipleBlocks:
                WriteCard(sdCard, blockCountField.Value * blockSizeField.Value);
                break;
            }
        }