Exemple #1
0
        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);
        }
Exemple #2
0
        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)
 {
 }
Exemple #4
0
        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);
        }
Exemple #5
0
        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));
        }