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:
parent
985a6525cc
commit
391c7229c9
33
tests/driver_xbee/Makefile
Normal file
33
tests/driver_xbee/Makefile
Normal 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
|
18
tests/driver_xbee/README.md
Normal file
18
tests/driver_xbee/README.md
Normal 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
124
tests/driver_xbee/main.c
Normal 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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user