Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests: added manual test for xbee driver
- Loading branch information
1 parent
d0861a6
commit 0fb82b2
Showing
3 changed files
with
175 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,33 @@ | ||
APPLICATION = driver_xbee | ||
include ../Makefile.tests_common | ||
|
||
FEATURES_REQUIRED = periph_uart periph_gpio | ||
|
||
BOARD_INSUFFICIENT_RAM := stm32f0discovery | ||
|
||
# Define default pin mappings for some boards: | ||
ifneq (,$(filter stm32f0discovery,$(BOARD))) | ||
export XBEE_UART ?= UART_1 | ||
endif | ||
ifneq (,$(filter stm32f4discovery,$(BOARD))) | ||
export XBEE_UART ?= UART_1 | ||
endif | ||
ifneq (,$(filter nucleo-f091,$(BOARD))) | ||
export XBEE_UART ?= UART_1 | ||
endif | ||
|
||
USEMODULE += xbee | ||
USEMODULE += ng_netbase | ||
USEMODULE += ng_nomac | ||
USEMODULE += ng_pktdump | ||
USEMODULE += shell | ||
USEMODULE += shell_commands | ||
|
||
ifneq (,$(XBEE_UART)) | ||
CFLAGS += -DXBEE_UART=$(XBEE_UART) | ||
else | ||
# set default | ||
CFLAGS += -DXBEE_UART=UART_0 | ||
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,18 @@ | ||
# About | ||
This is a manual test application for testing the Xbee S1 network device driver. | ||
|
||
For running this test, you need to connect the following pins of a Xbee S1 | ||
module to your board: | ||
- UART RX | ||
- UART TX | ||
- VCC (3V3) | ||
- GND | ||
|
||
NOTE: when you use an Arduino Xbee shield, the Xbee module is connected to the | ||
same UART as RIOTs standard out. In this case you must redefine the STDIO to | ||
another UART interface in the board.h and connect a UART-to-USB adapter to that | ||
UART. | ||
|
||
# Usage | ||
For testing the Xbee driver you can use the netif 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,124 @@ | ||
/* | ||
* 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 Xbee S1 network device driver | ||
* | ||
* @author Hauke Petersen <hauke.petersen@fu-berlin.de> | ||
* | ||
* @} | ||
*/ | ||
|
||
#include <stdio.h> | ||
|
||
#include "board.h" | ||
#include "kernel.h" | ||
#include "shell.h" | ||
#include "shell_commands.h" | ||
#include "xbee.h" | ||
#include "net/ng_netbase.h" | ||
#include "net/ng_nomac.h" | ||
#include "net/ng_pktdump.h" | ||
|
||
/* make sure an UART to device is defined in the Makefile */ | ||
#ifndef XBEE_UART | ||
#error "XBEE_UART not defined" | ||
#endif | ||
|
||
/** | ||
* @brief This is the default baudrate the Xbee modules are programmed to | ||
* when you buy them | ||
*/ | ||
#define XBEE_BAUDRATE (9600U) | ||
|
||
/** | ||
* @brief Buffer size used by the shell | ||
*/ | ||
#define SHELL_BUFSIZE (64U) | ||
|
||
/** | ||
* @brief The Xbee device descriptor | ||
*/ | ||
static xbee_t dev; | ||
|
||
/** | ||
* @brief Stack for the nomac thread | ||
*/ | ||
static char nomac_stack[KERNEL_CONF_STACKSIZE_DEFAULT]; | ||
|
||
/** | ||
* @brief Stack for the pktdump thread | ||
*/ | ||
static char dump_stack[KERNEL_CONF_STACKSIZE_MAIN]; | ||
|
||
/** | ||
* @brief Read chars from STDIO | ||
*/ | ||
int shell_read(void) | ||
{ | ||
return (int)getchar(); | ||
} | ||
|
||
/** | ||
* @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("Xbee S1 device driver test"); | ||
printf("Initializing the Xbee S1 device UART_%i... \n", XBEE_UART); | ||
|
||
/* initialize network module(s) */ | ||
ng_netif_init(); | ||
|
||
/* initialize and register pktdump */ | ||
dump.pid = ng_pktdump_init(dump_stack, sizeof(dump_stack), PRIORITY_MAIN - 2, | ||
"dump"); | ||
if (dump.pid <= KERNEL_PID_UNDEF) { | ||
puts("Error starting pktdump thread"); | ||
return -1; | ||
} | ||
dump.demux_ctx = NG_NETREG_DEMUX_CTX_ALL; | ||
ng_netreg_register(NG_NETTYPE_UNDEF, &dump); | ||
|
||
/* setup Xbee device */ | ||
res = xbee_init(&dev, XBEE_UART, XBEE_BAUDRATE, GPIO_NUMOF, GPIO_NUMOF); | ||
if (res < 0) { | ||
puts("Error initializing xbee device driver"); | ||
return -1; | ||
} | ||
/* start MAC layer */ | ||
iface = ng_nomac_init(nomac_stack, sizeof(nomac_stack), PRIORITY_MAIN - 3, | ||
"xbee_l2", (ng_netdev_t *)&dev); | ||
if (iface <= KERNEL_PID_UNDEF) { | ||
puts("Error initializing MAC layer"); | ||
return -1; | ||
} | ||
|
||
/* start the shell */ | ||
shell_init(&shell, NULL, SHELL_BUFSIZE, shell_read, shell_put); | ||
shell_run(&shell); | ||
|
||
return 0; | ||
} |