protected Transceiver(SpiDevice spiDevice, TransceiverSettings settings, TransceiverPinSettings pinSettings) { Settings = settings; _spiCommController = new SpiCommController(spiDevice); SpiComm = _spiCommController.Create(pinSettings.ChipSelectPinNumber); Pins = CreatePins(pinSettings); Pins.Dio0.ValueChanged += Dio0Pin_ValueChanged; RegisterManager = new RegisterManager(SpiComm); }
private static IPins CreatePins(TransceiverPinSettings pinSettings) { GpioController gpioController = GpioController.GetDefault(); GpioPin resetPin = gpioController.OpenPin(pinSettings.ResetPinNumber); resetPin.SetDriveMode(GpioPinDriveMode.Output); GpioPin dio0Pin = gpioController.OpenPin(pinSettings.Dio0PinNumber); dio0Pin.SetDriveMode(GpioPinDriveMode.Input); return(new Pins( resetPin, dio0Pin, OpenOptionalPin(gpioController, pinSettings.Dio1PinNumber), OpenOptionalPin(gpioController, pinSettings.Dio2PinNumber), OpenOptionalPin(gpioController, pinSettings.Dio3PinNumber), OpenOptionalPin(gpioController, pinSettings.Dio4PinNumber), OpenOptionalPin(gpioController, pinSettings.Dio5PinNumber))); }
public LoraTransceiver(SpiDevice spiDevice, TransceiverSettings settings, TransceiverPinSettings pinSettings) : base(spiDevice, settings, pinSettings) { }
public static async Task <ITransceiver> Create(SpiDevice spiDevice, TransceiverSettings settings, TransceiverPinSettings pinSettings) { Transceiver transceiver; switch (settings.RadioModem) { case RadioModemKind.Fsk: throw new NotImplementedException(); case RadioModemKind.Lora: LoraTransceiver.ValidateSettings(settings); transceiver = new LoraTransceiver(spiDevice, settings, pinSettings); break; default: throw new ArgumentOutOfRangeException(); } await transceiver.Init().ConfigureAwait(false); return(transceiver); }
public static async Task <ITransceiver> Create(TransceiverSettings transceiverSettings, TransceiverPinSettings pinSettings) { SpiDevice spiDevice = await CreateSpiDevice().ConfigureAwait(false); return(await Transceiver.Create(spiDevice, transceiverSettings, pinSettings).ConfigureAwait(false)); }