diff --git a/examples/README.md b/examples/README.md
index e48d953228..6dc2b7e0e8 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -94,7 +94,7 @@ make gdb
## Interesting Examples
-We have a lot of examples, 191 to be
+We have a lot of examples, 190 to be
exact, but here are some of our favorite examples for our supported development
boards:
diff --git a/examples/nucleo_f411re/radio/lbuild.xml b/examples/nucleo_f411re/radio/lbuild.xml
new file mode 100644
index 0000000000..c411b50221
--- /dev/null
+++ b/examples/nucleo_f411re/radio/lbuild.xml
@@ -0,0 +1,10 @@
+
+ modm:nucleo-f411re
+
+ modm:driver:nrf24
+ modm:platform:spi:2
+ modm:platform:spi:3
+ modm:platform:timer:2
+ modm:processing:timer
+
+
diff --git a/examples/nucleo_f411re/radio/nrf24-basic-comm/main.cpp b/examples/nucleo_f411re/radio/nrf24-basic-comm/main.cpp
new file mode 100644
index 0000000000..9dbf009f73
--- /dev/null
+++ b/examples/nucleo_f411re/radio/nrf24-basic-comm/main.cpp
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2014, Daniel Krebs
+ * Copyright (c) 2014, 2017, Sascha Schade
+ * Copyright (c) 2014-2019, Niklas Hauser
+ *
+ * This file is part of the modm project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+// ----------------------------------------------------------------------------
+
+#include "../radio.hpp"
+
+/*
+ * Basic communication with least config possible
+ *
+ * In this example one module is configured as primary tx, so it will just send
+ * packets and never receive anything. The second module is configured as
+ * primary rx, so it will only receive packets.
+ */
+
+using Register = Nrf1Phy::NrfRegister;
+using Status = Nrf1Phy::Status;
+using Pipe = Nrf1Phy::Pipe;
+using Config = Nrf1Phy::Config;
+using FifoStatus = Nrf1Phy::FifoStatus;
+
+int main()
+{
+ Board::initialize();
+ MODM_LOG_INFO << "Hello from nrf24-basic-comm example" << modm::endl;
+
+ /* Configuration values for nRF24 */
+ /* Use channel 2400 + 60 MHz = 2460 MHz */
+ constexpr const uint8_t rf_channel = 60;
+
+ /* 4 byte payload length */
+ constexpr const uint8_t payload_length = 4;
+
+ /* Address for ptx module. Not used here because ptx won't receive packets */
+ // constexpr const uint64_t ptx_address = 0xB3B4B5B605;
+ constexpr const uint64_t prx_address = 0xB3B4B5B607;
+
+ /* Dummy payload */
+ uint8_t payload[payload_length] = {
+ 0xaa,
+ 0xbb,
+ 0xcc,
+ 0xdd
+ };
+
+ initializeSpi();
+
+ Nrf1Ce::set();
+ Nrf2Ce::set();
+
+ // Initialize nRF24-HAL
+ Nrf1Phy::initialize(payload_length);
+ Nrf2Phy::initialize(payload_length);
+
+ /* set RF channel */
+ Nrf1Phy::writeRegister(Register::RF_CH, rf_channel);
+ Nrf2Phy::writeRegister(Register::RF_CH, rf_channel);
+
+ /* Set payload length for pipe 1 on receiver */
+ Nrf2Phy::writeRegister(Register::RX_PW_P1, payload_length);
+
+ /* Set tx address of ptx device to prx's address and also set
+ * receive pipe 0 to the same address to receive ACK packets
+ * from prx.
+ */
+ Nrf1Phy::setTxAddress(prx_address);
+ Nrf1Phy::setRxAddress(Pipe::PIPE_0, prx_address);
+
+ /* Set receive pipe 1 of prx device to receive packets from ptx */
+ Nrf2Phy::setRxAddress(Pipe::PIPE_1, prx_address);
+
+ /* Configure ptx as primary sender and power up */
+ Nrf1Phy::clearBits(Register::CONFIG, Config::PRIM_RX);
+ Nrf1Phy::setBits(Register::CONFIG, Config::PWR_UP);
+
+ /* Configure prx as primary receiver and power up*/
+ Nrf2Phy::setBits(Register::CONFIG, Config::PRIM_RX);
+ Nrf2Phy::setBits(Register::CONFIG, Config::PWR_UP);
+
+
+ /* Timer to send packets every 1000ms */
+ modm::ShortPeriodicTimer sendPacket(1000);
+
+ /* Buffer for received payload */
+ uint8_t received_data[payload_length];
+
+ while (true)
+ {
+ // ------------------------- Primary sender ---------------------------
+
+ /* Send packet every 1000ms */
+ if(sendPacket.execute())
+ {
+ /* Copy packet into ptx device. Because CE is always high here, the
+ * packet will be transmitted immediately
+ */
+ Nrf1Phy::writeTxPayload(payload, payload_length);
+ payload[0]++;
+
+ Board::LedD13::toggle();
+ }
+
+ /* Check if packet was sent successfully */
+ if(Nrf1Phy::readStatus() & ((uint8_t)Status::TX_DS | (uint8_t)Status::MAX_RT))
+ {
+ if(Nrf1Phy::readStatus() & (uint8_t)Status::MAX_RT)
+ {
+ MODM_LOG_INFO.printf("Packet lost, MAX_RT reached\n");
+ MODM_LOG_INFO.printf(" Status: %x\n", Nrf1Phy::readStatus());
+ Nrf1Phy::setBits(Register::STATUS, Status::MAX_RT);
+ MODM_LOG_INFO.printf(" Status: %x\n", Nrf1Phy::readStatus());
+ } else
+ {
+ MODM_LOG_INFO.printf("Packet successfully sent\n");
+ Nrf1Phy::setBits(Register::STATUS, Status::TX_DS);
+ }
+
+ Board::LedD13::toggle();
+ }
+
+
+ // ----------------------- Primary receiver ---------------------------
+
+ /* Check for received bytes */
+ if( (!(Nrf2Phy::readRegister(Register::FIFO_STATUS) & (uint8_t)FifoStatus::RX_EMPTY)) || (Nrf2Phy::readStatus() & ((uint8_t)Status::RX_DR)))
+ {
+ uint8_t pl = 0;
+
+ /* Read payload of received packet */
+ pl = Nrf2Phy::readRxPayload(received_data);
+
+ /* Clear RX_DR flag after payload is read */
+ Nrf2Phy::setBits(Register::STATUS, Status::RX_DR);
+
+ MODM_LOG_INFO.printf("Received packet, pl=%d, data: %x %x %x %x\n", pl, received_data[3], received_data[2], received_data[1], received_data[0]);
+
+ Board::LedD13::toggle();
+ }
+ }
+
+ return 0;
+}
diff --git a/examples/nucleo_f411re/radio/nrf24-basic-comm/project.xml b/examples/nucleo_f411re/radio/nrf24-basic-comm/project.xml
new file mode 100644
index 0000000000..8cce1d3add
--- /dev/null
+++ b/examples/nucleo_f411re/radio/nrf24-basic-comm/project.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+ modm:build:scons
+
+
diff --git a/examples/nucleo_f411re/radio/nrf24-data/main.cpp b/examples/nucleo_f411re/radio/nrf24-data/main.cpp
new file mode 100644
index 0000000000..07856b4fda
--- /dev/null
+++ b/examples/nucleo_f411re/radio/nrf24-data/main.cpp
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2015, Daniel Krebs
+ * Copyright (c) 2015, 2017, Sascha Schade
+ * Copyright (c) 2015-2019, Niklas Hauser
+ *
+ * This file is part of the modm project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+// ----------------------------------------------------------------------------
+
+#include "../radio.hpp"
+
+// This example showcases a simple usage of the data layer implementation for
+// the nRF24L01+ radio modules.
+
+int main()
+{
+ Board::initialize();
+ MODM_LOG_INFO << "Hello from nrf24-data example" << modm::endl;
+
+ initializeNrf();
+
+ while (true)
+ {
+ Nrf1Data::update();
+ Nrf2Data::update();
+
+ static modm::PeriodicTimer sendTimer{1000};
+ if (Nrf1Data::Packet packet; sendTimer.execute())
+ {
+ static uint8_t counter{0};
+ packet.setDestination(0x20);
+ packet.payload[0] = counter++;
+ Nrf1Data::sendPacket(packet);
+ MODM_LOG_INFO << "Sending packet " << counter << " to " << packet.getDestination() << modm::endl;
+ }
+
+ if (Nrf2Data::Packet packet; Nrf2Data::getPacket(packet))
+ {
+ MODM_LOG_INFO << "Receiving packet " << packet.payload[0] << " from " << packet.getSource() << modm::endl;
+ }
+ }
+
+ return 0;
+}
diff --git a/examples/nucleo_f411re/radio/nrf24-data/project.xml b/examples/nucleo_f411re/radio/nrf24-data/project.xml
new file mode 100644
index 0000000000..2aa29628d4
--- /dev/null
+++ b/examples/nucleo_f411re/radio/nrf24-data/project.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+ modm:build:scons
+
+
diff --git a/examples/nucleo_f411re/radio/nrf24-phy-test/main.cpp b/examples/nucleo_f411re/radio/nrf24-phy-test/main.cpp
new file mode 100644
index 0000000000..7d52f27204
--- /dev/null
+++ b/examples/nucleo_f411re/radio/nrf24-phy-test/main.cpp
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2014, Daniel Krebs
+ * Copyright (c) 2014, 2017, Sascha Schade
+ * Copyright (c) 2014-2017, 2019, Niklas Hauser
+ *
+ * This file is part of the modm project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+// ----------------------------------------------------------------------------
+
+#include "../radio.hpp"
+
+template< class Phy >
+void
+test()
+{
+ Phy::setRxAddress(Phy::Pipe::PIPE_0, 0xdeadb33f05);
+ uint64_t addr = Phy::getRxAddress(Phy::Pipe::PIPE_0);
+ MODM_LOG_INFO.printf("Setting RX_P0 address to: 0xdeadb33f05\n");
+ MODM_LOG_INFO.printf("Reading RX_P0 address: 0x%" PRIx32 "%" PRIx32 "\n",
+ uint32_t((addr >> 32) & 0xffffffff),
+ uint32_t(addr & 0xffffffff));
+
+ Phy::setTxAddress(0xabcdef55ff);
+ addr = Phy::getTxAddress();
+ MODM_LOG_INFO.printf("Setting TX address to: 0xabcdef55ff\n");
+ MODM_LOG_INFO.printf("Reading TX address: 0x%" PRIx32 "%" PRIx32 "\n",
+ uint32_t((addr >> 32) & 0xffffffff),
+ uint32_t(addr & 0xffffffff));
+
+ uint8_t rf_ch = Phy::readRegister(Phy::NrfRegister::RF_CH);
+ MODM_LOG_INFO.printf("Expected output for RF_CH: 0x2\n");
+ MODM_LOG_INFO.printf("Reading RF_CH: 0x%" PRIx8 "\n\n", rf_ch);
+}
+
+// Test SPI communication by writing and reading out registers on the
+// nRF24L01+ module.
+int main()
+{
+ Board::initialize();
+ MODM_LOG_INFO << "Hello from nRF24-phy-test example" << modm::endl;
+
+ initializeSpi();
+
+ while (true)
+ {
+ MODM_LOG_INFO << "Testing PHY1" << modm::endl;
+ test();
+
+ MODM_LOG_INFO << "Testing PHY2" << modm::endl;
+ test();
+
+ modm::delayMilliseconds(1000);
+ }
+
+ return 0;
+}
diff --git a/examples/nucleo_f411re/radio/nrf24-phy-test/project.xml b/examples/nucleo_f411re/radio/nrf24-phy-test/project.xml
new file mode 100644
index 0000000000..ef5818a8b1
--- /dev/null
+++ b/examples/nucleo_f411re/radio/nrf24-phy-test/project.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+ modm:build:scons
+
+
diff --git a/examples/stm32f4_discovery/radio/nrf24-scanner/main.cpp b/examples/nucleo_f411re/radio/nrf24-scanner/main.cpp
similarity index 52%
rename from examples/stm32f4_discovery/radio/nrf24-scanner/main.cpp
rename to examples/nucleo_f411re/radio/nrf24-scanner/main.cpp
index 963eec70ac..1a7c452b2d 100644
--- a/examples/stm32f4_discovery/radio/nrf24-scanner/main.cpp
+++ b/examples/nucleo_f411re/radio/nrf24-scanner/main.cpp
@@ -1,7 +1,7 @@
/*
* Copyright (c) 2014, Daniel Krebs
* Copyright (c) 2014, 2017, Sascha Schade
- * Copyright (c) 2014-2018, Niklas Hauser
+ * Copyright (c) 2014-2019, Niklas Hauser
*
* This file is part of the modm project.
*
@@ -11,75 +11,20 @@
*/
// ----------------------------------------------------------------------------
-#include
-#include
-#include
-#include
-#include
-using namespace modm::literals;
+#include "../radio.hpp"
-/*
- * A simple 2.4GHz "spectrum analyzer". Please use a terminal
- * application for UART monitoring such as picocom or screen
- *
- * Connect as follows
- *
- * STM32 NRF24
- * ------------
- * PB13 - SCK
- * PB14 - MISO
- * PB15 - MOSI
- * PE12 - CSN
- *
- * STM32 USB2UART
- * ---------------
- * PA2 - TXD
- */
-
-#undef MODM_LOG_LEVEL
-#define MODM_LOG_LEVEL modm::log::INFO
-
-
-// Create an IODeviceWrapper around the Uart Peripheral we want to use
-modm::IODeviceWrapper< Usart2, modm::IOBuffer::BlockIfFull > loggerDevice;
-
-// Set all four logger streams to use the UART
-modm::log::Logger modm::log::debug(loggerDevice);
-modm::log::Logger modm::log::info(loggerDevice);
-modm::log::Logger modm::log::warning(loggerDevice);
-modm::log::Logger modm::log::error(loggerDevice);
-
-typedef GpioOutputE11 Ce;
-typedef GpioOutputE12 Csn;
+// A simple 2.4GHz "spectrum analyzer". Please use a terminal
+// application for UART monitoring such as picocom or screen
-
-
-typedef modm::Nrf24Phy nrf24phy;
-
-
-int
-main()
+int main()
{
Board::initialize();
-
- Csn::setOutput(modm::Gpio::High);
- Ce::setOutput(modm::Gpio::Low);
-
- Board::LedOrange::setOutput(modm::Gpio::Low);
-
- // Enable SPI 2
- SpiMaster2::connect();
- SpiMaster2::initialize();
-
- // Enable UART 2
- Usart2::connect();
- Usart2::initialize();
+// MODM_LOG_INFO << "Hello from nRF24 scanner example" << modm::endl;
+ initializeSpi(1);
// Initialize nRF24-HAL
- nrf24phy::initialize();
-
-// MODM_LOG_INFO << "Hello from nRF24-HAL example" << modm::endl;
+ Nrf1Phy::initialize();
/*
@@ -89,11 +34,11 @@ main()
* puts("\033[5A"); // move cursor up 5 lines
*/
- nrf24phy::setBits(nrf24phy::NrfRegister::CONFIG, nrf24phy::Config::PWR_UP);
- nrf24phy::setBits(nrf24phy::NrfRegister::CONFIG, nrf24phy::Config::PRIM_RX);
+ Nrf1Phy::setBits(Nrf1Phy::NrfRegister::CONFIG, Nrf1Phy::Config::PWR_UP);
+ Nrf1Phy::setBits(Nrf1Phy::NrfRegister::CONFIG, Nrf1Phy::Config::PRIM_RX);
- nrf24phy::writeRegister(nrf24phy::NrfRegister::EN_AA, 0x00);
- nrf24phy::writeRegister(nrf24phy::NrfRegister::RF_SETUP, 0x0f);
+ Nrf1Phy::writeRegister(Nrf1Phy::NrfRegister::EN_AA, 0x00);
+ Nrf1Phy::writeRegister(Nrf1Phy::NrfRegister::RF_SETUP, 0x0f);
constexpr const uint8_t channel_start = 25;
@@ -131,19 +76,19 @@ main()
max = 0;
for(i = 0; i < max_channel; i++)
{
- nrf24phy::writeRegister(nrf24phy::NrfRegister::RF_CH, i + channel_start);
+ Nrf1Phy::writeRegister(Nrf1Phy::NrfRegister::RF_CH, i + channel_start);
- Ce::set();
+ Nrf1Ce::set();
modm::delayMicroseconds(rx_settle);
- Ce::reset();
+ Nrf1Ce::reset();
modm::delayMicroseconds(2);
- channel_info[i] += 5*nrf24phy::readRegister(nrf24phy::NrfRegister::RPD);
+ channel_info[i] += 5*Nrf1Phy::readRegister(Nrf1Phy::NrfRegister::RPD);
if(channel_info[i] > max)
max = channel_info[i];
if(channel_info[i])
- Board::LedOrange::toggle();
+ Board::LedD13::toggle();
if(divide_now)
channel_info[i] /= divider;
diff --git a/examples/nucleo_f411re/radio/nrf24-scanner/project.xml b/examples/nucleo_f411re/radio/nrf24-scanner/project.xml
new file mode 100644
index 0000000000..671be131c7
--- /dev/null
+++ b/examples/nucleo_f411re/radio/nrf24-scanner/project.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+ modm:build:scons
+
+
diff --git a/examples/nucleo_f411re/radio/radio.hpp b/examples/nucleo_f411re/radio/radio.hpp
new file mode 100644
index 0000000000..9a6ba02ce0
--- /dev/null
+++ b/examples/nucleo_f411re/radio/radio.hpp
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2019, Niklas Hauser
+ *
+ * This file is part of the modm project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+// ----------------------------------------------------------------------------
+
+#pragma once
+
+#include
+#include
+#include
+using namespace modm::literals;
+
+
+class ClockUs
+{
+public:
+ typedef uint32_t Type;
+ using ClockUsTimer = modm::platform::Timer2;
+
+public:
+ template< class SystemClock >
+ static void
+ enable()
+ {
+ ClockUsTimer::enable();
+ ClockUsTimer::setMode(ClockUsTimer::Mode::UpCounter);
+ ClockUsTimer::setPrescaler(SystemClock::Timer2 / 1_MHz);
+ ClockUsTimer::setOverflow((uint32_t)-1);
+ ClockUsTimer::applyAndReset();
+
+ setTime(0);
+ ClockUsTimer::start();
+ }
+
+ template< typename TimestampType = modm::Timestamp >
+ static TimestampType
+ now()
+ { return TimestampType(ClockUsTimer::getValue()); }
+
+ static void
+ setTime(const Type time)
+ { ClockUsTimer::setValue(time); }
+};
+
+
+using Nrf1Spi = SpiMaster3;
+using Nrf1Sck = Board::D3;
+using Nrf1Mosi = Board::D4;
+using Nrf1Miso = Board::D5;
+using Nrf1Csn = Board::D6;
+using Nrf1Ce = Board::D7;
+using Nrf1Irq = Board::D8;
+
+using Nrf1Phy = modm::Nrf24Phy;
+using Nrf1Config = modm::Nrf24Config;
+using Nrf1Data = modm::Nrf24Data;
+
+
+// This must normally be declared in a .cpp file, NOT a header file
+MODM_ISR(EXTI9_5) // From PA9
+{
+ Nrf1Irq::acknowledgeExternalInterruptFlag();
+ Board::LedD13::toggle();
+ Nrf1Data::interruptHandler();
+}
+
+using Nrf2Spi = SpiMaster2;
+using Nrf2Sck = GpioB13;
+using Nrf2Mosi = GpioB15;
+using Nrf2Miso = GpioB14;
+using Nrf2Csn = GpioB1;
+using Nrf2Ce = GpioB2;
+using Nrf2Irq = GpioB12;
+
+using Nrf2Phy = modm::Nrf24Phy;
+using Nrf2Config = modm::Nrf24Config;
+using Nrf2Data = modm::Nrf24Data;
+
+MODM_ISR(EXTI15_10) // From PB12
+{
+ Nrf2Irq::acknowledgeExternalInterruptFlag();
+ Board::LedD13::toggle();
+ Nrf2Data::interruptHandler();
+}
+
+void inline
+initializeSpi(uint8_t instances=0b11)
+{
+ Board::LedD13::setOutput(modm::Gpio::Low);
+ ClockUs::enable();
+
+ if (instances & 0b01)
+ {
+ MODM_LOG_INFO << "Initializing SPI #1..." << modm::endl;
+
+ Nrf1Csn::setOutput(modm::Gpio::High);
+ Nrf1Ce::setOutput(modm::Gpio::Low);
+
+ Nrf1Spi::connect();
+ Nrf1Spi::initialize();
+ }
+
+ if (instances & 0b10)
+ {
+ MODM_LOG_INFO << "Initializing SPI #2..." << modm::endl;
+
+ Nrf2Csn::setOutput(modm::Gpio::High);
+ Nrf2Ce::setOutput(modm::Gpio::Low);
+
+ Nrf2Spi::connect();
+ Nrf2Spi::initialize();
+ }
+}
+
+static constexpr uint8_t nrf_address1{0x10};
+static constexpr uint8_t nrf_address2{0x20};
+
+void inline
+initializeNrf(uint8_t instances=0b11, uint8_t address1=nrf_address1, uint8_t address2=nrf_address2, uint8_t channel=20)
+{
+ initializeSpi(instances);
+
+ if (instances & 0b01)
+ {
+ MODM_LOG_INFO.printf("Initializing NRF24 #1 with address %d on channel %d...\n", address1, channel);
+
+ Nrf1Data::initialize(0xdeadbeef00, address1, 0xFF);
+
+ Nrf1Config::setChannel(channel);
+ Nrf1Config::setAutoRetransmitCount(Nrf1Config::AutoRetransmitCount::Retransmit3);
+ Nrf1Config::setAutoRetransmitDelay(Nrf1Config::AutoRetransmitDelay::us500);
+ Nrf1Config::setSpeed(Nrf1Config::Speed::MBps1);
+ Nrf1Config::setCrc(Nrf1Config::Crc::Crc2Byte);
+
+ Nrf1Irq::setInput(Nrf1Irq::InputType::PullUp);
+ Nrf1Irq::setInputTrigger(Nrf1Irq::InputTrigger::FallingEdge);
+ Nrf1Irq::enableExternalInterrupt();
+ Nrf1Irq::enableExternalInterruptVector(4);
+ }
+ if (instances & 0b10)
+ {
+ MODM_LOG_INFO.printf("Initializing NRF24 #2 with address %d on channel %d...\n", address2, channel);
+
+ Nrf2Data::initialize(0xdeadbeef00, address2, 0xFF);
+
+ Nrf2Config::setChannel(channel);
+ Nrf2Config::setAutoRetransmitCount(Nrf2Config::AutoRetransmitCount::Retransmit3);
+ Nrf2Config::setAutoRetransmitDelay(Nrf2Config::AutoRetransmitDelay::us500);
+ Nrf2Config::setSpeed(Nrf2Config::Speed::MBps1);
+ Nrf2Config::setCrc(Nrf2Config::Crc::Crc2Byte);
+
+ Nrf2Irq::setInput(Nrf2Irq::InputType::PullUp);
+ Nrf2Irq::setInputTrigger(Nrf2Irq::InputTrigger::FallingEdge);
+ Nrf2Irq::enableExternalInterrupt();
+ Nrf2Irq::enableExternalInterruptVector(5);
+ }
+}
diff --git a/examples/stm32f4_discovery/radio/nrf24-basic-comm/main.cpp b/examples/stm32f4_discovery/radio/nrf24-basic-comm/main.cpp
deleted file mode 100644
index 0edc1f0ebc..0000000000
--- a/examples/stm32f4_discovery/radio/nrf24-basic-comm/main.cpp
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (c) 2014, Daniel Krebs
- * Copyright (c) 2014, 2017, Sascha Schade
- * Copyright (c) 2014-2018, Niklas Hauser
- *
- * This file is part of the modm project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-// ----------------------------------------------------------------------------
-
-#include
-#include
-#include
-#include
-
-#include
-using namespace modm::literals;
-
-using modm::Nrf24Register;
-using modm::Nrf24Phy;
-
-/*
- * Basic communication with least config possible
- *
- * In this example one module is configured as primary tx, so it will just send
- * packets and never receive anything. The second module is configured as
- * primary rx, so it will only receive packets.
- *
- *
- * Connect as follows
- *
- * STM32 NRF24 module 1
- * ------------
- * PB3 - SCK
- * PB4 - MISO
- * PB5 - MOSI
- * PB6 - CSN
- * PB7 - CE
- *
- * STM32 NRF24 module 2
- * ------------
- * PB13 - SCK
- * PB14 - MISO
- * PB15 - MOSI
- * PE12 - CSN
- *
- * STM32 USB2UART
- * ---------------
- * PA2 - TXD
- */
-
-#undef MODM_LOG_LEVEL
-#define MODM_LOG_LEVEL modm::log::INFO
-
-// Create an IODeviceWrapper around the Uart Peripheral we want to use
-modm::IODeviceWrapper< Usart2, modm::IOBuffer::BlockIfFull > loggerDevice;
-
-// Set all four logger streams to use the UART
-modm::log::Logger modm::log::debug(loggerDevice);
-modm::log::Logger modm::log::info(loggerDevice);
-modm::log::Logger modm::log::warning(loggerDevice);
-modm::log::Logger modm::log::error(loggerDevice);
-
-
-typedef GpioOutputB7 Ce1;
-typedef GpioOutputB6 Csn1;
-
-typedef GpioOutputE11 Ce2;
-typedef GpioOutputE12 Csn2;
-
-
-typedef Nrf24Phy nrf24ptx;
-typedef Nrf24Phy nrf24prx;
-
-typedef nrf24ptx::NrfRegister Register;
-typedef nrf24ptx::NrfRegister_t Register_t;
-
-typedef nrf24ptx::Config Config;
-typedef nrf24ptx::Status Status;
-typedef nrf24ptx::Pipe Pipe;
-typedef nrf24ptx::FifoStatus FifoStatus;
-
-void
-configureBoth(Register_t reg, uint8_t value)
-{
- nrf24ptx::writeRegister(reg, value);
- nrf24prx::writeRegister(reg, value);
-}
-
-int
-main()
-{
- Board::initialize();
-
- Csn1::setOutput(modm::Gpio::High);
- Csn2::setOutput(modm::Gpio::High);
- Ce1::setOutput(modm::Gpio::Low);
- Ce2::setOutput(modm::Gpio::Low);
-
- // Enable SPI 1
- SpiMaster1::connect();
- SpiMaster1::initialize();
-
- // Enable SPI 2
- SpiMaster2::connect();
- SpiMaster2::initialize();
-
- // Enable UART 2
- Usart2::connect();
- Usart2::initialize();
-
- /* Configuration values for nRF24 */
-
- /* Use channel 2400 + 60 MHz = 2460 MHz */
- constexpr const uint8_t rf_channel = 60;
-
- /* 4 byte payload length */
- constexpr const uint8_t payload_length = 4;
-
- /* Address for ptx module. Not used here because ptx won't receive packets */
- // constexpr const uint64_t ptx_address = 0xB3B4B5B605;
- constexpr const uint64_t prx_address = 0xB3B4B5B607;
-
- /* Dummy payload */
- uint8_t payload[payload_length] = {
- 0xaa,
- 0xbb,
- 0xcc,
- 0xdd
- };
-
- // Initialize nRF24-HAL
- nrf24ptx::initialize(payload_length);
- nrf24prx::initialize(payload_length);
-
-
- MODM_LOG_INFO << "Hello from nrf24-basic-comm example" << modm::endl;
-
- /* set RF channel */
- nrf24ptx::writeRegister(nrf24ptx::NrfRegister::RF_CH, rf_channel);
- nrf24prx::writeRegister(nrf24prx::NrfRegister::RF_CH, rf_channel);
-
- /* Set payload length for pipe 1 on receiver */
- nrf24prx::writeRegister(Register::RX_PW_P1, payload_length);
-
- /* Set tx address of ptx device to prx's address and also set
- * receive pipe 0 to the same address to receive ACK packets
- * from prx.
- */
- nrf24ptx::setTxAddress(prx_address);
- nrf24ptx::setRxAddress(Pipe::PIPE_0, prx_address);
-
- /* Set receive pipe 1 of prx device to receive packets from ptx */
- nrf24prx::setRxAddress(Pipe::PIPE_1, prx_address);
-
- /* Configure ptx as primary sender and power up */
- nrf24ptx::clearBits(Register::CONFIG, Config::PRIM_RX);
- nrf24ptx::setBits(Register::CONFIG, Config::PWR_UP);
-
- /* Configure prx as primary receiver and power up*/
- nrf24prx::setBits(Register::CONFIG, Config::PRIM_RX);
- nrf24prx::setBits(Register::CONFIG, Config::PWR_UP);
-
- /* CE always high on both, so the module don't go to standby */
- Ce1::set();
- Ce2::set();
-
-
- /* Timer to send packets every 1000ms */
- modm::ShortPeriodicTimer sendPacket(1000);
-
- /* Buffer for received payload */
- uint8_t received_data[payload_length];
-
- while (true)
- {
- // ------------------------- Primary sender ---------------------------
-
- /* Send packet every 1000ms */
- if(sendPacket.execute())
- {
- /* Copy packet into ptx device. Because CE is always high here, the
- * packet will be transmitted immediately
- */
- nrf24ptx::writeTxPayload(payload, payload_length);
-
- payload[0]++;
-
- Board::LedOrange::toggle();
- }
-
- /* Check if packet was sent successfully */
- if(nrf24ptx::readStatus() & ((uint8_t)Status::TX_DS | (uint8_t)Status::MAX_RT))
- {
- if(nrf24ptx::readStatus() & (uint8_t)Status::MAX_RT)
- {
- MODM_LOG_INFO.printf("Packet lost, MAX_RT reached\n");
- MODM_LOG_INFO.printf(" Status: %x\n", nrf24ptx::readStatus());
- nrf24ptx::setBits(Register::STATUS, Status::MAX_RT);
- MODM_LOG_INFO.printf(" Status: %x\n", nrf24ptx::readStatus());
- } else
- {
- MODM_LOG_INFO.printf("Packet successfully sent\n");
- nrf24ptx::setBits(Register::STATUS, Status::TX_DS);
- }
-
- Board::LedBlue::toggle();
- }
-
-
- // ----------------------- Primary receiver ---------------------------
-
- /* Check for received bytes */
- if( (!(nrf24prx::readRegister(Register::FIFO_STATUS) & (uint8_t)FifoStatus::RX_EMPTY)) || (nrf24prx::readStatus() & ((uint8_t)Status::RX_DR)))
- {
- uint8_t pl = 0;
-
- /* Read payload of received packet */
- pl = nrf24prx::readRxPayload(received_data);
-
- /* Clear RX_DR flag after payload is read */
- nrf24prx::setBits(Register::STATUS, Status::RX_DR);
-
- MODM_LOG_INFO.printf("Received packet, pl=%d, data: %x %x %x %x\n", pl, received_data[3], received_data[2], received_data[1], received_data[0]);
-
- Board::LedGreen::toggle();
- }
- }
-
- return 0;
-}
diff --git a/examples/stm32f4_discovery/radio/nrf24-basic-comm/project.xml b/examples/stm32f4_discovery/radio/nrf24-basic-comm/project.xml
deleted file mode 100644
index ee99bd0a68..0000000000
--- a/examples/stm32f4_discovery/radio/nrf24-basic-comm/project.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
- modm:disco-f407vg
-
-
-
-
- modm:debug
- modm:driver:nrf24
- modm:platform:gpio
- modm:platform:spi:1
- modm:platform:spi:2
- modm:platform:uart:2
- modm:processing:timer
- modm:build:scons
-
-
diff --git a/examples/stm32f4_discovery/radio/nrf24-data/README.md b/examples/stm32f4_discovery/radio/nrf24-data/README.md
deleted file mode 100644
index b283370317..0000000000
--- a/examples/stm32f4_discovery/radio/nrf24-data/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# nrf24 data layer example
-
- This example showcases a simple usage of the data layer implementation for
-the nRF24L01+ radio modules.
-
-You need 2 STM32F4 Discovery boards wired up like it's described at the top of
-each main.cpp inside 'rx' and 'tx' folder.
-
-
-## Expected output of tx:
-
-[...]
-Send packet
-Send packet
-Send packet
-[...]
-
-
-## Expected output of rx:
-
-[...]
-Received packet from 0x11
-Data: 00 00 02 34
-Received packet from 0x11
-Data: 00 00 02 35
-Rx is still alive
-Received packet from 0x11
-Data: 00 00 02 36
-[...]
\ No newline at end of file
diff --git a/examples/stm32f4_discovery/radio/nrf24-data/rx/main.cpp b/examples/stm32f4_discovery/radio/nrf24-data/rx/main.cpp
deleted file mode 100644
index 2558c2efae..0000000000
--- a/examples/stm32f4_discovery/radio/nrf24-data/rx/main.cpp
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 2015, Daniel Krebs
- * Copyright (c) 2015, 2017, Sascha Schade
- * Copyright (c) 2015-2018, Niklas Hauser
- *
- * This file is part of the modm project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-// ----------------------------------------------------------------------------
-
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-using namespace modm::literals;
-
-/*
- * This example showcases a simple usage of the data layer implementation for
- * the nRF24L01+ radio modules.
- *
- * Check output on UART.
- *
- * Connect as follows
- *
- * STM32 NRF24
- * ------------
- * PB13 - SCK
- * PB14 - MISO
- * PB15 - MOSI
- * PE11 - CE
- * PE12 - CSN
- *
- * STM32 USB2UART
- * ---------------
- * PA2 - TXD
- */
-
-#undef MODM_LOG_LEVEL
-#define MODM_LOG_LEVEL modm::log::INFO
-
-
-// Create an IODeviceWrapper around the Uart Peripheral we want to use
-modm::IODeviceWrapper< Usart2, modm::IOBuffer::BlockIfFull > loggerDevice;
-
-// Set all four logger streams to use the UART
-modm::log::Logger modm::log::debug(loggerDevice);
-modm::log::Logger modm::log::info(loggerDevice);
-modm::log::Logger modm::log::warning(loggerDevice);
-modm::log::Logger modm::log::error(loggerDevice);
-
-/* nrf24 interface */
-typedef SpiMaster2 Spi;
-typedef GpioOutputE12 Csn;
-typedef GpioOutputE11 Ce;
-
-/* Setup and connect layers */
-typedef modm::Nrf24Phy nrf24phy;
-typedef modm::Nrf24Config nrf24config;
-typedef modm::Nrf24Data nrf24data;
-
-int
-main()
-{
- Board::initialize();
-
- // Setup GPIOs
- Csn::setOutput(modm::Gpio::High);
- Ce::setOutput(modm::Gpio::Low);
-
- // Enable SPI 2
- Spi::connect();
- Spi::initialize();
-
- // Enable UART 2
- Usart2::connect();
- Usart2::initialize();
-
- MODM_LOG_INFO << "Hello from nrf24-data-rx example" << modm::endl;
-
- // Send alive message every 5 seconds
- modm::PeriodicTimer aliveTimer(5000);
-
- // Initialize physical layer with payload size of 6 bytes, this gives us
- // a payload size of 4 bytes in the data layer, as the header takes 2 bytes.
- nrf24phy::initialize(6);
-
- // This is the base address of our network, imagine this as an IP subnet
- // like 192.168.1.0/24. Coincidentally, our the network also has 256
- // addresses. The lower byte should be zero because addresses will be placed
- // there.
- nrf24data::BaseAddress base_address = 0xdeadbeef00;
-
- // We need to define a broadcast address, this can be any address.
- nrf24data::Address broadcast_address = 0xff;
-
- // Now we define the addresses of our 2 endpoints in this example.
- // nrf24data::Address address_tx_side = 0x11;
- nrf24data::Address address_rx_side = 0x33;
-
- // Initialize data layer, this also rudimentary configures the physical
- // layer (e.g. speed, crc) so we just need to set a channel and are good to
- // go.
- nrf24data::initialize(base_address, address_rx_side, broadcast_address);
- nrf24config::setChannel(10);
-
- // Using the data layer, we send and receive packets, so we need to allocate
- // one. It's automatically allocated with the max. payload length configured.
- nrf24data::Packet packet;
-
- while (true)
- {
- if (nrf24data::getPacket(packet))
- {
- MODM_LOG_INFO.printf("Received packet from 0x%02x\n", packet.src);
- MODM_LOG_INFO.printf("Data: %02x %02x %02x %02x\n",
- packet.payload.data[3],
- packet.payload.data[2],
- packet.payload.data[1],
- packet.payload.data[0]);
- }
-
- if(aliveTimer.execute())
- {
- MODM_LOG_INFO << "Rx is still alive" << modm::endl;
- }
-
- nrf24data::update();
- }
-
- return 0;
-}
diff --git a/examples/stm32f4_discovery/radio/nrf24-data/rx/project.xml b/examples/stm32f4_discovery/radio/nrf24-data/rx/project.xml
deleted file mode 100644
index a9b42ce730..0000000000
--- a/examples/stm32f4_discovery/radio/nrf24-data/rx/project.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
- modm:disco-f407vg
-
-
-
-
- modm:debug
- modm:driver:nrf24
- modm:platform:gpio
- modm:platform:spi:2
- modm:platform:uart:2
- modm:processing:timer
- modm:build:scons
-
-
diff --git a/examples/stm32f4_discovery/radio/nrf24-data/tx/main.cpp b/examples/stm32f4_discovery/radio/nrf24-data/tx/main.cpp
deleted file mode 100644
index 19d9951c69..0000000000
--- a/examples/stm32f4_discovery/radio/nrf24-data/tx/main.cpp
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 2015, Daniel Krebs
- * Copyright (c) 2015, Sascha Schade
- * Copyright (c) 2015-2018, Niklas Hauser
- *
- * This file is part of the modm project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-// ----------------------------------------------------------------------------
-
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-using namespace modm::literals;
-
-/*
- * This example showcases a simple usage of the data layer implementation for
- * the nRF24L01+ radio modules.
- *
- * Check output on UART.
- *
- * Connect as follows
- *
- * STM32 NRF24
- * ------------
- * PB13 - SCK
- * PB14 - MISO
- * PB15 - MOSI
- * PE11 - CE
- * PE12 - CSN
- *
- * STM32 USB2UART
- * ---------------
- * PA2 - TXD
- */
-
-#undef MODM_LOG_LEVEL
-#define MODM_LOG_LEVEL modm::log::INFO
-
-
-// Create an IODeviceWrapper around the Uart Peripheral we want to use
-modm::IODeviceWrapper< Usart2, modm::IOBuffer::BlockIfFull > loggerDevice;
-
-// Set all four logger streams to use the UART
-modm::log::Logger modm::log::debug(loggerDevice);
-modm::log::Logger modm::log::info(loggerDevice);
-modm::log::Logger modm::log::warning(loggerDevice);
-modm::log::Logger modm::log::error(loggerDevice);
-
-/* nrf24 interface */
-typedef SpiMaster2 Spi;
-typedef GpioOutputE12 Csn;
-typedef GpioOutputE11 Ce;
-
-/* Setup and connect layers */
-typedef modm::Nrf24Phy nrf24phy;
-typedef modm::Nrf24Config nrf24config;
-typedef modm::Nrf24Data nrf24data;
-
-int
-main()
-{
- Board::initialize();
-
- // Setup GPIOs
- Csn::setOutput(modm::Gpio::High);
- Ce::setOutput(modm::Gpio::Low);
-
- // Enable SPI 2
- Spi::connect();
- Spi::initialize();
-
- // Enable UART 2
- Usart2::connect();
- Usart2::initialize();
-
- MODM_LOG_INFO << "Hello from nrf24-data-tx example" << modm::endl;
-
- // Send a packet every 500ms
- modm::PeriodicTimer sendTimer(500);
-
- // Initialize physical layer with payload size of 6 bytes, this gives us
- // a payload size of 4 bytes in the data layer, as the header takes 2 bytes.
- nrf24phy::initialize(6);
-
- // This is the base address of our network, imagine this as an IP subnet
- // like 192.168.1.0/24. Coincidentally, our the network also has 256
- // addresses. The lower byte should be zero because addresses will be placed
- // there.
- nrf24data::BaseAddress base_address = 0xdeadbeef00;
-
- // We need to define a broadcast address, this can be any address.
- nrf24data::Address broadcast_address = 0xff;
-
- // Now we define the addresses of our 2 endpoints in this example.
- nrf24data::Address address_tx_side = 0x11;
- nrf24data::Address address_rx_side = 0x33;
-
- // Initialize data layer, this also rudimentary configures the physical
- // layer (e.g. speed, crc) so we just need to set a channel and are good to
- // go.
- nrf24data::initialize(base_address, address_tx_side, broadcast_address);
- nrf24config::setChannel(10);
-
- // Using the data layer, we send and receive packets, so we need to allocate
- // one. It's automatically allocated with the max. payload length configured.
- nrf24data::Packet packet;
-
- // Send this packet to the other endpoint of this example
- packet.dest = address_rx_side;
-
- // We have 4 bytes payload, so interpret them as an uint32_t and increment
- // over time
- uint32_t* data = reinterpret_cast(packet.payload.data);
-
- while (true)
- {
- if(sendTimer.execute())
- {
- MODM_LOG_INFO << "Send packet" << modm::endl;
- nrf24data::sendPacket(packet);
-
- *data += 1;
- }
-
- nrf24data::update();
- }
-
- return 0;
-}
diff --git a/examples/stm32f4_discovery/radio/nrf24-data/tx/project.xml b/examples/stm32f4_discovery/radio/nrf24-data/tx/project.xml
deleted file mode 100644
index 5c1cf214da..0000000000
--- a/examples/stm32f4_discovery/radio/nrf24-data/tx/project.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
- modm:disco-f407vg
-
-
-
-
- modm:debug
- modm:driver:nrf24
- modm:platform:gpio
- modm:platform:spi:2
- modm:platform:uart:2
- modm:processing:timer
- modm:build:scons
-
-
diff --git a/examples/stm32f4_discovery/radio/nrf24-phy-test/main.cpp b/examples/stm32f4_discovery/radio/nrf24-phy-test/main.cpp
deleted file mode 100644
index 86b700a5b1..0000000000
--- a/examples/stm32f4_discovery/radio/nrf24-phy-test/main.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2014, Daniel Krebs
- * Copyright (c) 2014-2017, Niklas Hauser
- * Copyright (c) 2014, 2017, Sascha Schade
- *
- * This file is part of the modm project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-// ----------------------------------------------------------------------------
-
-#include
-#include
-#include
-#include
-using namespace modm::literals;
-
-/*
- * Test SPI communication by writing and reading out registers on the
- * nRF24L01+ module. Check output on UART
- *
- * Connect as follows
- *
- * STM32 NRF24
- * ------------
- * PB13 - SCK
- * PB14 - MISO
- * PB15 - MOSI
- * PE12 - CSN
- *
- * STM32 USB2UART
- * ---------------
- * PA2 - TXD
- */
-
-#undef MODM_LOG_LEVEL
-#define MODM_LOG_LEVEL modm::log::INFO
-
-
-// Create an IODeviceWrapper around the Uart Peripheral we want to use
-modm::IODeviceWrapper< Usart2, modm::IOBuffer::BlockIfFull > loggerDevice;
-
-// Set all four logger streams to use the UART
-modm::log::Logger modm::log::debug(loggerDevice);
-modm::log::Logger modm::log::info(loggerDevice);
-modm::log::Logger modm::log::warning(loggerDevice);
-modm::log::Logger modm::log::error(loggerDevice);
-
-typedef GpioOutputE12 Csn;
-
-// just needed to make Nrf24Phy happy
-typedef GpioOutputA1 Ce;
-
-
-typedef modm::Nrf24Phy nrf24phy;
-
-int
-main()
-{
- Board::initialize();
-
- Csn::setOutput(modm::Gpio::High);
-
- // Enable SPI 2
- SpiMaster2::connect();
- SpiMaster2::initialize();
-
- // Enable UART 2
- Usart2::connect();
- Usart2::initialize();
-
-
- // Initialize nRF24-Phy
- nrf24phy::initialize();
-
- MODM_LOG_INFO << "Hello from nRF24-phy-test example" << modm::endl;
-
-
- uint8_t rf_ch;
- uint64_t addr;
-
-
- while (true)
- {
-
- nrf24phy::setRxAddress(nrf24phy::Pipe::PIPE_0, 0xdeadb33f05);
- addr = nrf24phy::getRxAddress(nrf24phy::Pipe::PIPE_0);
- MODM_LOG_INFO.printf("Setting RX_P0 address to: 0xDEADB33F05\n");
- MODM_LOG_INFO.printf("Reading RX_P0 address: 0x%" PRIx32 "%" PRIx32 "\n", static_cast((addr >> 32) & 0xffffffff), static_cast(addr & 0xffffffff));
-
- nrf24phy::setTxAddress(0xabcdef55ff);
- addr = nrf24phy::getTxAddress();
- MODM_LOG_INFO.printf("Setting TX address to: 0xABCDEF55FF\n");
- MODM_LOG_INFO.printf("Reading TX address: 0x%" PRIx32 "%" PRIx32 "\n", static_cast((addr >> 32) & 0xffffffff), static_cast(addr & 0xffffffff));
-
- rf_ch = nrf24phy::readRegister(nrf24phy::NrfRegister::RF_CH);
- MODM_LOG_INFO.printf("Expected output for RF_CH: 0x2\n");
- MODM_LOG_INFO.printf("Reading RF_CH: 0x%" PRIx8 "\n\n", rf_ch);
-
- modm::delayMilliseconds(1000);
- }
-
- return 0;
-}
diff --git a/examples/stm32f4_discovery/radio/nrf24-phy-test/project.xml b/examples/stm32f4_discovery/radio/nrf24-phy-test/project.xml
deleted file mode 100644
index 0ffbe9029b..0000000000
--- a/examples/stm32f4_discovery/radio/nrf24-phy-test/project.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
- modm:disco-f407vg
-
-
-
-
- modm:debug
- modm:driver:nrf24
- modm:platform:gpio
- modm:platform:spi:2
- modm:platform:uart:2
- modm:build:scons
-
-
diff --git a/examples/stm32f4_discovery/radio/nrf24-scanner/project.xml b/examples/stm32f4_discovery/radio/nrf24-scanner/project.xml
deleted file mode 100644
index 12f88aa8ea..0000000000
--- a/examples/stm32f4_discovery/radio/nrf24-scanner/project.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
- modm:disco-f407vg
-
-
-
-
- modm:debug
- modm:driver:nrf24
- modm:platform:gpio
- modm:platform:spi:2
- modm:platform:uart:2
- modm:processing:timer
- modm:build:scons
-
-