Esempio n. 1
0
        public Program()
        {
            _trigger = new InputPort(Pins.GPIO_PIN_D4, true, ResistorModes.PullUp);

            _nrf = new Nrf8001(Pins.GPIO_PIN_D8, Pins.GPIO_PIN_D9, Pins.GPIO_PIN_D7, SPI_Devices.SPI1);
            _nrf.AciEventReceived += OnAciEventReceived;
            _nrf.DataReceived     += OnDataReceived;

            _nrf.Setup(SetupData);
        }
Esempio n. 2
0
        private bool DoSetup()
        {
            while (_nrf.State != Nrf8001State.Setup)
            {
                _nrf.HandleEvent();
            }

            int setupIndex = 0;

            _nrf.Setup(SetupData[setupIndex++]);

            while (true)
            {
                var nrfEvent = _nrf.HandleEvent();

                if (nrfEvent == null)
                {
                    continue;
                }

                if (nrfEvent.EventType == Nrf8001EventType.CommandResponse && nrfEvent.Data[1] == (byte)AciOpCode.Setup)
                {
                    if (nrfEvent.Data[2] == (byte)AciStatusCode.TransactionContinue)
                    {
                        _nrf.Setup(SetupData[setupIndex++]);
                    }
                    else if (nrfEvent.Data[2] != (byte)AciStatusCode.TransactionComplete)
                    {
                        return(false);
                    }
                }
                else if (nrfEvent.EventType == Nrf8001EventType.DeviceStarted)
                {
                    return(true);
                }
            }
        }