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; } }