public SpiConnection(ProcessorPin clock, ProcessorPin ss, ProcessorPin?miso, ProcessorPin?mosi, Endianness endianness)
        {
            this.clock      = clock;
            this.ss         = ss;
            this.miso       = miso;
            this.mosi       = mosi;
            this.endianness = endianness;

            driver = new MemoryGpioConnectionDriver();

            driver.Allocate(clock, PinDirection.Output);
            driver.Write(clock, false);

            driver.Allocate(ss, PinDirection.Output);
            driver.Write(ss, true);

            if (mosi.HasValue)
            {
                driver.Allocate(mosi.Value, PinDirection.Output);
                driver.Write(mosi.Value, false);
            }

            if (miso.HasValue)
            {
                driver.Allocate(miso.Value, PinDirection.Input);
            }
        }
 public SpiSlaveSelection SelectSlave()
 {
     driver.Write(ss, false);
     return(new SpiSlaveSelection(this));
 }