1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/tests/driver_xbee/main.c
2015-03-28 13:47:03 +01:00

119 lines
2.5 KiB
C

/*
* 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 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_getpid();
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;
}