Skip to content

Commit

Permalink
tests: added manual test for xbee driver
Browse files Browse the repository at this point in the history
  • Loading branch information
haukepetersen authored and OlegHahm committed Mar 31, 2015
1 parent d0861a6 commit 0fb82b2
Show file tree
Hide file tree
Showing 3 changed files with 175 additions and 0 deletions.
33 changes: 33 additions & 0 deletions tests/driver_xbee/Makefile
@@ -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
18 changes: 18 additions & 0 deletions tests/driver_xbee/README.md
@@ -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.
124 changes: 124 additions & 0 deletions tests/driver_xbee/main.c
@@ -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;
}

0 comments on commit 0fb82b2

Please sign in to comment.