1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-17 05:12:57 +01:00

tests: added manual test for xbee driver

This commit is contained in:
Hauke Petersen 2015-03-13 19:38:20 +01:00
parent 985a6525cc
commit 391c7229c9
3 changed files with 175 additions and 0 deletions

View File

@ -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

View File

@ -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
tests/driver_xbee/main.c Normal file
View File

@ -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;
}