-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests: added test app for the at86rf2xx driver
- Loading branch information
1 parent
3f88f1d
commit 9390c86
Showing
3 changed files
with
229 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
APPLICATION = driver_at86rf2xx | ||
include ../Makefile.tests_common | ||
|
||
FEATURES_REQUIRED = periph_spi periph_gpio | ||
|
||
BOARD_INSUFFICIENT_RAM := stm32f0discovery | ||
BOARD_BLACKLIST := nucleo-f334 | ||
# nucleo-f334: not enough GPIO pins defined | ||
|
||
ifneq (,$(filter saml21-xpro,$(BOARD))) | ||
DRIVER ?= ng_at86rf212b | ||
export ATRF_SPI ?= SPI_0 | ||
export ATRF_CS ?= EXT1_SPI_SS | ||
export ATRF_INT ?= EXT1_P09 | ||
export ATRF_RESET ?= EXT1_P07 | ||
export ATRF_SLEEP ?= EXT1_P10 | ||
export ATRF_SPI_SPEED ?= SPI_SPEED_1MHZ | ||
endif | ||
ifneq (,$(filter iot-lab_M3,$(BOARD))) | ||
DRIVER ?= ng_at86rf231 | ||
export ATRF_SPI ?= SPI_0 | ||
export ATRF_CS ?= GPIO_11 | ||
export ATRF_INT ?= GPIO_12 | ||
export ATRF_RESET ?= GPIO_13 | ||
export ATRF_SLEEP ?= GPIO_14 | ||
endif | ||
ifneq (,$(filter samr21-xpro,$(BOARD))) | ||
DRIVER ?= ng_at86rf233 | ||
export ATRF_SPI ?= SPI_0 | ||
export ATRF_CS ?= GPIO_4 | ||
export ATRF_INT ?= GPIO_5 | ||
export ATRF_RESET ?= GPIO_6 | ||
export ATRF_SLEEP ?= GPIO_7 | ||
export ATRF_SPI_SPEED ?= SPI_SPEED_1MHZ | ||
endif | ||
|
||
ifneq (,$(DRIVER)) | ||
USEMODULE += $(DRIVER) | ||
else | ||
USEMODULE += ng_at86rf231 # default to ng_at86rf231 | ||
endif | ||
USEMODULE += ng_netbase | ||
USEMODULE += ng_nomac | ||
USEMODULE += ng_pktdump | ||
USEMODULE += uart0 | ||
USEMODULE += shell | ||
USEMODULE += shell_commands | ||
USEMODULE += ps | ||
|
||
CFLAGS += -DDEVELHELP | ||
|
||
ifneq (,$(ATRF_SPI)) | ||
CFLAGS += -DATRF_SPI=$(ATRF_SPI) | ||
else | ||
CFLAGS += -DATRF_SPI=SPI_0 # set default | ||
endif | ||
ifneq (,$(ATRF_CS)) | ||
CFLAGS += -DATRF_CS=$(ATRF_CS) | ||
else | ||
CFLAGS += -DATRF_CS=GPIO_0 # set default | ||
endif | ||
ifneq (,$(ATRF_INT)) | ||
CFLAGS += -DATRF_INT=$(ATRF_INT) | ||
else | ||
CFLAGS += -DATRF_INT=GPIO_1 # set default | ||
endif | ||
ifneq (,$(ATRF_SLEEP)) | ||
CFLAGS += -DATRF_SLEEP=$(ATRF_SLEEP) | ||
else | ||
CFLAGS += -DATRF_SLEEP=GPIO_2 # set default | ||
endif | ||
ifneq (,$(ATRF_RESET)) | ||
CFLAGS += -DATRF_RESET=$(ATRF_RESET) | ||
else | ||
CFLAGS += -DATRF_RESET=GPIO_3 # set default | ||
endif | ||
ifneq (,$(ATRF_SPI_SPEED)) | ||
CFLAGS += -DATRF_SPI_SPEED=$(ATRF_SPI_SPEED) | ||
endif | ||
|
||
include $(RIOTBASE)/Makefile.include |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# About | ||
This is a manual test application for the AT86RF2xx radio driver | ||
|
||
For running this test, you need to connect/configure the following pins of your | ||
radio device: | ||
- SPI MISO | ||
- SPI MOSI | ||
- SPI CLK | ||
- CS (ship select) | ||
- RESET | ||
- SLEEP | ||
- INT (external interrupt) | ||
|
||
# Usage | ||
For testing the radio driver you can use the netif and txtsnd shell commands | ||
that are included in this application. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
/* | ||
* Copyright (C) 2015 Freie Universität Berlin | ||
* | ||
* This file is subject to the terms and conditions of the GNU Lesser | ||
* General Public License v2.1. See the file LICENSE in the top level | ||
* directory for more details. | ||
*/ | ||
|
||
/** | ||
* @ingroup tests | ||
* @{ | ||
* | ||
* @file | ||
* @brief Test application for AT86RF2xx network device driver | ||
* | ||
* @author Hauke Petersen <[email protected]> | ||
* | ||
* @} | ||
*/ | ||
|
||
#include <stdio.h> | ||
|
||
#include "board.h" | ||
#include "kernel.h" | ||
#include "shell.h" | ||
#include "shell_commands.h" | ||
#include "posix_io.h" | ||
#include "board_uart0.h" | ||
#include "ng_at86rf2xx.h" | ||
#include "net/ng_netbase.h" | ||
#include "net/ng_nomac.h" | ||
#include "net/ng_pktdump.h" | ||
|
||
/* make sure the SPI port and the needed GPIO pins are defined */ | ||
#ifndef ATRF_SPI | ||
#error "SPI not defined" | ||
#endif | ||
#ifndef ATRF_CS | ||
#error "Chip select pin not defined" | ||
#endif | ||
#ifndef ATRF_INT | ||
#error "Interrupt pin not defined" | ||
#endif | ||
#ifndef ATRF_SLEEP | ||
#error "Sleep pin not defined" | ||
#endif | ||
#ifndef ATRF_RESET | ||
#error "Reset pin not defined" | ||
#endif | ||
#ifndef ATRF_SPI_SPEED | ||
#define ATRF_SPI_SPEED (SPI_SPEED_5MHZ) | ||
#endif | ||
|
||
/** | ||
* @brief Buffer size used by the shell | ||
*/ | ||
#define SHELL_BUFSIZE (64U) | ||
|
||
/** | ||
* @brief Allocate the AT86RF2xx device descriptor | ||
*/ | ||
static ng_at86rf2xx_t dev; | ||
|
||
/** | ||
* @brief Stack for the nomac thread | ||
*/ | ||
static char nomac_stack[KERNEL_CONF_STACKSIZE_MAIN]; | ||
|
||
/** | ||
* @brief Read chars from STDIO | ||
*/ | ||
int shell_read(void) | ||
{ | ||
char c = 0; | ||
(void) posix_read(uart0_handler_pid, &c, 1); | ||
return c; | ||
} | ||
|
||
/** | ||
* @brief Write chars to STDIO | ||
*/ | ||
void shell_put(int c) | ||
{ | ||
putchar((char)c); | ||
} | ||
|
||
/** | ||
* @brief Maybe you are a golfer?! | ||
*/ | ||
int main(void) | ||
{ | ||
kernel_pid_t iface; | ||
int res; | ||
shell_t shell; | ||
ng_netreg_entry_t dump; | ||
|
||
puts("AT86RF2xx device driver test"); | ||
printf("Initializing the radio at SPI_%i... \n", ATRF_SPI); | ||
|
||
/* register the pktdump thread */ | ||
puts("Register the packet dump thread for NG_NETTYPE_UNDEF packets"); | ||
dump.pid = ng_pktdump_getpid(); | ||
dump.demux_ctx = NG_NETREG_DEMUX_CTX_ALL; | ||
ng_netreg_register(NG_NETTYPE_UNDEF, &dump); | ||
|
||
/* initialize the AT86RF2xx device */ | ||
puts("Initialize the AT86RF2xx radio device"); | ||
res = ng_at86rf2xx_init(&dev, ATRF_SPI, ATRF_SPI_SPEED, | ||
ATRF_CS, ATRF_INT, | ||
ATRF_SLEEP, ATRF_RESET); | ||
if (res < 0) { | ||
puts("Error initializing AT86RF2xx radio device"); | ||
return -1; | ||
} | ||
|
||
/* start MAC layer */ | ||
puts("Starting the NOMAC layer on top of the driver"); | ||
iface = ng_nomac_init(nomac_stack, sizeof(nomac_stack), PRIORITY_MAIN - 3, | ||
"at86rf2xx", (ng_netdev_t *)&dev); | ||
if (iface <= KERNEL_PID_UNDEF) { | ||
puts("Error initializing MAC layer"); | ||
return -1; | ||
} | ||
|
||
/* start the shell */ | ||
puts("Initialization successful - starting the shell now"); | ||
(void) posix_open(uart0_handler_pid, 0); | ||
shell_init(&shell, NULL, SHELL_BUFSIZE, shell_read, shell_put); | ||
shell_run(&shell); | ||
|
||
return 0; | ||
} |