internal byte Read(mcp23s17Register port) { ISpiTransferBuffer transferBuffer = spiConnection.CreateTransferBuffer(3, SpiTransferMode.ReadWrite); transferBuffer.Tx[0] = CMD_READ; transferBuffer.Tx[1] = (byte)port; transferBuffer.Tx[2] = 0; var result = spiConnection.Transfer(transferBuffer); return(transferBuffer.Rx[2]); }
private int Write(Mcp23S17Register port, byte data) { ISpiTransferBuffer transferBuffer = this.spiConnection.CreateTransferBuffer(3, SpiTransferMode.Write); transferBuffer.Tx[0] = CmdWrite; transferBuffer.Tx[1] = (byte)port; transferBuffer.Tx[2] = data; var result = this.spiConnection.Transfer(transferBuffer); return(result); }
private int Write(mcp23s17Register port, byte data) { ISpiTransferBuffer transferBuffer = spiConnection.CreateTransferBuffer(3, SpiTransferMode.Write); transferBuffer.Tx[0] = CMD_WRITE; transferBuffer.Tx[1] = (byte)port; transferBuffer.Tx[2] = data; var result = spiConnection.Transfer(transferBuffer); return(result); }
internal byte Read(Mcp23S17Register port) { ISpiTransferBuffer transferBuffer = this.spiConnection.CreateTransferBuffer(3, SpiTransferMode.ReadWrite); transferBuffer.Tx[0] = CmdRead; transferBuffer.Tx[1] = (byte)port; transferBuffer.Tx[2] = 0; var result = this.spiConnection.Transfer(transferBuffer); return(transferBuffer.Rx[2]); }
/// <summary> /// Starts the SPI data transfer. /// </summary> /// <param name="buffer">The transfer buffer that contains data to be send and/or the received data.</param> /// <returns>An <see cref="int"/> that contains the result of the transfer operation.</returns> public int Transfer(ISpiTransferBuffer buffer) { if (buffer == null) { throw new ArgumentNullException("buffer"); } var request = Interop.Interop.GetSpiMessageRequest(1); var structure = buffer.ControlStructure; var result = deviceFile.Control(request, ref structure); result.ThrowOnPInvokeError <SendSpiMessageException>("Can't send SPI message. Error {1}: {2}"); return(result); }
/// <summary> /// Creates a new instance of the <see cref="Tlc59711Connection"/> class and initializes it. /// </summary> /// <param name="connection">A open SPI connection</param> /// <param name="initializeWithDefault">If <c>true</c> the SPI connection will be initialized with common data transfers settings.</param> /// <param name="numberOfDevices">Number of <see cref="ITlc59711Device"/>s connected together.</param> public Tlc59711Connection(INativeSpiConnection connection, bool initializeWithDefault, int numberOfDevices) { if (ReferenceEquals(connection, null)) throw new ArgumentNullException("connection"); if (numberOfDevices <= 0) throw new ArgumentOutOfRangeException("numberOfDevices", "You need at least one device."); this.connection = connection; if (initializeWithDefault) { connection.SetBitsPerWord(BITS_PER_WORD); connection.SetSpiMode(SPI_MODE_0); connection.SetMaxSpeed(SPEED); connection.SetDelay(DELAY); } var requiredMemorySize = numberOfDevices * Tlc59711Device.COMMAND_SIZE; transferBuffer = connection.CreateTransferBuffer(requiredMemorySize, SpiTransferMode.Write); deviceCluster = new Tlc59711Cluster(transferBuffer.Tx, numberOfDevices); }
protected override void EstablishContext() { // SPI control structure we expect to see during the P/Invoke call controlStructure = new SpiTransferControlStructure { BitsPerWord = BITS_PER_WORD, Length = 5, Delay = DELAY, ChipSelectChange = 1, Speed = SPEED_IN_HZ }; controlDeviceMock = new Mock <ISpiControlDevice>(); controlDevice = controlDeviceMock.Object; controlDeviceMock.Setup(x => x.Control(It.IsAny <uint>(), ref It.Ref <SpiTransferControlStructure> .IsAny)).Returns(IOCTL_PINVOKE_RESULT_CODE); connection = new NativeSpiConnection(controlDevice); bufferMock = new Mock <ISpiTransferBuffer>(); buffer = bufferMock.Object; bufferMock.Setup(x => buffer.ControlStructure).Returns(controlStructure); }
protected override void EstablishContext() { // SPI control structure we expect to see during the P/Invoke call controlStructure = new SpiTransferControlStructure { BitsPerWord = BITS_PER_WORD, Length = 5, Delay = DELAY, ChipSelectChange = 1, Speed = SPEED_IN_HZ }; controlDevice = A.Fake <ISpiControlDevice>(); A.CallTo(() => controlDevice.Control(A <uint> .Ignored, ref controlStructure)) .WithAnyArguments() .Returns(IOCTL_PINVOKE_RESULT_CODE); connection = new NativeSpiConnection(controlDevice); buffer = A.Fake <ISpiTransferBuffer>(); A.CallTo(() => buffer.ControlStructure) .Returns(controlStructure); }
/// <summary> /// Sets up the transfer buffer for reading input pins; /// </summary> private void CreateReusableBufferForInputPolling() { inputPollBuffer = spiConnection.CreateTransferBuffer(3, SpiTransferMode.ReadWrite); inputPollBuffer.Tx[0] = CMD_READ; inputPollBuffer.Tx[1] = (byte)mcp23s17Register.GPIOB; inputPollBuffer.Tx[2] = 0; }
protected override void BecauseOf() { buffer = connection.CreateTransferBuffer(REQUESTED_SIZE, SpiTransferMode.ReadWrite); }
protected override void BecauseOf() { buffer = new SpiTransferBuffer(REQUESTED_SIZE, SpiTransferMode.Read); }
protected override void Cleanup() { if (!ReferenceEquals(buffer, null)) { buffer.Dispose(); buffer = null; } }
/// <summary> /// Starts the SPI data transfer. /// </summary> /// <param name="buffer">The transfer buffer that contains data to be send and/or the received data.</param> /// <returns>An <see cref="int"/> that contains the result of the transfer operation.</returns> public int Transfer(ISpiTransferBuffer buffer) { if (buffer == null) { throw new ArgumentNullException("buffer"); } var request = Interop.GetSpiMessageRequest(1); var structure = buffer.ControlStructure; var result = deviceFile.Control(request, ref structure); result.ThrowOnPInvokeError<SendSpiMessageException>("Can't send SPI message. Error {1}: {2}"); return result; }
protected override void EstablishContext() { // SPI control structure we expect to see during the P/Invoke call controlStructure = new SpiTransferControlStructure { BitsPerWord = BITS_PER_WORD, Length = 5, Delay = DELAY, ChipSelectChange = 1, Speed = SPEED_IN_HZ }; controlDevice = A.Fake<ISpiControlDevice>(); controlDevice .CallsTo(device => device.Control(A<uint>.Ignored, ref controlStructure)) .WithAnyArguments() .Returns(IOCTL_PINVOKE_RESULT_CODE); connection = new NativeSpiConnection(controlDevice); buffer = A.Fake<ISpiTransferBuffer>(); buffer .CallsTo(b => b.ControlStructure) .Returns(controlStructure); }
protected override void EstablishContext() { controlDevice = A.Fake<ISpiControlDevice>(); controlDevice .CallsTo(device => device.Control(A<uint>.Ignored, A<SpiTransferControlStructure[]>.Ignored)) .Returns(IOCTL_PINVOKE_RESULT_CODE); connection = new NativeSpiConnection(controlDevice); // SPI control structure we expect to see during the P/Invoke call controlStructure = new SpiTransferControlStructure { BitsPerWord = BITS_PER_WORD, Length = 5, Delay = DELAY, ChipSelectChange = 1, Speed = SPEED_IN_HZ }; buffer = A.Fake<ISpiTransferBuffer>(); buffer .CallsTo(b => b.ControlStructure) .Returns(controlStructure); // setup fake collection to return our "prepared" fake buffer collection = A.Fake<ISpiTransferBufferCollection>(); collection .CallsTo(c => c.Length) .Returns(1); collection .CallsTo(c => c.GetEnumerator()) .ReturnsLazily(call => new List<ISpiTransferBuffer>{buffer}.GetEnumerator()); }