public async Task <SpiDevice> CreateSpiDeviceAsync(WD.Spi.SpiConnectionSettings connectionSettings) { if (this.IsTypeSupported(SocketType.Y) && !this.IsTypeSupported(SocketType.S)) { return(await this.CreateSpiDeviceAsync(connectionSettings, SocketPinNumber.Six, SocketPinNumber.Seven, SocketPinNumber.Eight, SocketPinNumber.Nine)); } this.EnsureTypeIsSupported(SocketType.S); if (this.SpiDeviceCreator != null) { return(await this.SpiDeviceCreator(this)); } return(new NativeInterfaces.SpiDevice(await NativeInterfaces.SpiDevice.CreateInterfaceAsync(this.NativeSpiDeviceId, connectionSettings))); }
public async Task <SpiDevice> CreateSpiDeviceAsync(WD.Spi.SpiConnectionSettings connectionSettings, SocketPinNumber chipSelectPinNumber, SocketPinNumber masterOutPinNumber, SocketPinNumber masterInPinNumber, SocketPinNumber clockPinNumber) { if (chipSelectPinNumber == SocketPinNumber.Six && masterOutPinNumber == SocketPinNumber.Seven && masterInPinNumber == SocketPinNumber.Eight && clockPinNumber == SocketPinNumber.Nine && this.IsTypeSupported(SocketType.S)) { return(await this.CreateSpiDeviceAsync(connectionSettings)); } var chipSelect = await this.CreateDigitalIOAsync(chipSelectPinNumber); var masterOut = await this.CreateDigitalIOAsync(masterOutPinNumber); var masterIn = await this.CreateDigitalIOAsync(masterInPinNumber); var clock = await this.CreateDigitalIOAsync(clockPinNumber); return(new SoftwareInterfaces.SpiDevice(chipSelect, masterOut, masterIn, clock, connectionSettings)); }
public static async Task <WD.Spi.SpiDevice> CreateInterfaceAsync(string deviceId, WD.Spi.SpiConnectionSettings connectionSettings) { var infos = await WD.Enumeration.DeviceInformation.FindAllAsync(WD.Spi.SpiDevice.GetDeviceSelector(deviceId)); return(await WD.Spi.SpiDevice.FromIdAsync(infos[0].Id, connectionSettings)); }
internal SpiDevice(DigitalIO chipSelect, DigitalIO masterOut, DigitalIO masterIn, DigitalIO clock, Windows.Devices.Spi.SpiConnectionSettings settings) { if (settings.DataBitLength != 8) { throw new NotSupportedException("Only 8 data bits are supported."); } this.chipSelect = chipSelect; this.masterOut = masterOut; this.masterIn = masterIn; this.clock = clock; this.clockActiveState = (((int)settings.Mode) & 0x02) == 0; this.captureOnRisingEdge = ((((int)settings.Mode) & 0x01) == 0); this.clock.Write(!this.clockActiveState); this.masterIn.Read(); this.masterOut.Write(true); this.chipSelect.Write(true); }
internal SpiDevice(DigitalIO chipSelect, DigitalIO masterOut, DigitalIO masterIn, DigitalIO clock, Windows.Devices.Spi.SpiConnectionSettings settings) { if (settings.DataBitLength != 8) { throw new NotSupportedException("Only 8 data bits are supported."); } this.chipSelect = chipSelect; this.masterOut = masterOut; this.masterIn = masterIn; this.clock = clock; this.clockEdge = (((int)settings.Mode) & 0x01) > 0; this.clockPolarity = (((int)settings.Mode) & 0x02) == 0; }