Skip to content

Commit

Permalink
drivers: xbee: adapt to new auto_init_ng_netif scheme
Browse files Browse the repository at this point in the history
  • Loading branch information
kaspar030 committed May 8, 2015
1 parent 95a86eb commit 17602c1
Show file tree
Hide file tree
Showing 7 changed files with 132 additions and 78 deletions.
12 changes: 12 additions & 0 deletions drivers/include/xbee.h
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,18 @@ extern const ng_netdev_driver_t xbee_driver;
int xbee_init(xbee_t *dev, uart_t uart, uint32_t baudrate,
gpio_t sleep_pin, gpio_t status_pin);

/**
* @brief auto_init struct holding Xbee device initalization params
*/
typedef struct xbee_params {
uart_t uart; /**< UART interfaced the device is connected to */
uint32_t baudrate; /**< baudrate to use */
gpio_t sleep_pin; /**< GPIO pin that is connected to the SLEEP pin
set to GPIO_NUMOF if not used */
gpio_t status_pin; /**< GPIO pin that is connected to the STATUS pin
set to GPIO_NUMOF if not used */
} xbee_params_t;

#ifdef __cplusplus
}
#endif
Expand Down
5 changes: 5 additions & 0 deletions sys/auto_init/auto_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -313,4 +313,9 @@ void auto_init(void)
extern void auto_init_ng_at86rf2xx(void);
auto_init_ng_at86rf2xx();
#endif

#ifdef MODULE_XBEE
extern void auto_init_xbee(void);
auto_init_xbee();
#endif
}
71 changes: 71 additions & 0 deletions sys/auto_init/netif/auto_init_xbee.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*
* Copyright (C) 2015 Kaspar Schleiser <kaspar@schleiser.de>
*
* 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 auto_init_ng_netif
* @{
*
* @file
* @brief Auto initialization for XBee network interfaces
*
* @author Kaspar Schleiser <kaspar@schleiser.de>
*/

#ifdef MODULE_XBEE

#include "board.h"
#include "net/ng_nomac.h"
#include "net/ng_netbase.h"

#include "xbee.h"
#include "xbee_params.h"

#define ENABLE_DEBUG (0)
#include "debug.h"

#define XBEE_NUM (sizeof(xbee_params)/sizeof(xbee_params_t))

static xbee_t xbee_devs[XBEE_NUM];

/**
* @brief Define stack parameters for the MAC layer thread
* @{
*/
#define XBEE_MAC_STACKSIZE (KERNEL_CONF_STACKSIZE_DEFAULT)
#define XBEE_MAC_PRIO (PRIORITY_MAIN - 3)

/**
* @brief Stacks for the MAC layer threads
*/
static char _nomac_stacks[XBEE_MAC_STACKSIZE][XBEE_NUM];

void auto_init_xbee(void)
{
for (int i = 0; i < XBEE_NUM; i++) {
DEBUG("Initializing XBee radio at UART_%i\n", i);
const xbee_params_t *p = &xbee_params[i];
int res = xbee_init(&xbee_devs[i],
p->uart,
p->baudrate,
p->sleep_pin,
p->status_pin);

if (res < 0) {
DEBUG("Error initializing XBee radio device!");
}
else {
ng_nomac_init(_nomac_stacks[i],
XBEE_MAC_STACKSIZE, XBEE_MAC_PRIO, "xbee",
(ng_netdev_t *)&xbee_devs[i]);
}
}
}

#endif /* MODULE_XBEE */
/** @} */
6 changes: 6 additions & 0 deletions tests/driver_xbee/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ endif

USEMODULE += xbee
USEMODULE += ng_netif
USEMODULE += auto_init_ng_netif
USEMODULE += ng_nomac
USEMODULE += ng_pktdump
USEMODULE += shell
Expand All @@ -30,4 +31,9 @@ else
CFLAGS += -DXBEE_UART=UART_0
endif

# add current directory to the include path. Putting it in CFLAGS will make
# it go to the beginning, before the standard includes.
# That way xbee_params.h get's included and auto configuration can pick it up.
CFLAGS += -I$(CURDIR)

include $(RIOTBASE)/Makefile.include
1 change: 0 additions & 1 deletion tests/driver_xbee/auto_init_ng_netif/Makefile

This file was deleted.

77 changes: 0 additions & 77 deletions tests/driver_xbee/auto_init_ng_netif/netif_app.c

This file was deleted.

38 changes: 38 additions & 0 deletions tests/driver_xbee/xbee_params.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* Copyright (C) 2015 Kaspar Schleiser <kaspar@schleiser.de>
*
* 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 xbee driver parameters example, used by auto_init_ng_netif
*
* @author Kaspar Schleiser <kaspar@schleiser.de>
*/

#ifndef XBEE_PARAMS_H
#define XBEE_PARAMS_H

#ifdef __cplusplus
extern "C" {
#endif

static xbee_params_t xbee_params[] = {
{ .uart = XBEE_UART,
.baudrate = 9600U,
.sleep_pin = GPIO_NUMOF,
.status_pin = GPIO_NUMOF
},
};

#ifdef __cplusplus
}
#endif
#endif /* XBEE_PARAMS_H */
/** @} */

0 comments on commit 17602c1

Please sign in to comment.