byte[] IPiGPIO.BSpiXfer(int gpioCS, byte[] txBuffer) { byte[] rxBuffer = new byte[txBuffer.Length]; GCHandle tx = GCHandle.Alloc(tx, GCHandleType.Pinned); try { GCHandle rx = GCHandle.Alloc(rxBuffer, GCHandleType.Pinned); try { short ret = PiGpioNativeMethods.bspiXfer((ushort)gpioCS, tx.AddrOfPinnedObject(), rx.AddrOfPinnedObject(), (ushort)txBuffer.Length); if (ret < 0) { throw new PiGPIOException(ret); } } finally { rx.Free(); } } finally { tx.Free(); } return(rxBuffer); }