Skip to content

Commit

Permalink
fixup! fixup! emb6: add netdev2 wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
miri64 committed Feb 6, 2016
1 parent d62c498 commit f5ec779
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 27 deletions.
58 changes: 32 additions & 26 deletions pkg/emb6/contrib/netdev2/emb6_netdev2.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,25 @@
#include "net/netdev2.h"
#include "thread.h"

#include "evproc.h"
#include "emb6.h"
#include "linkaddr.h"
#include "packetbuf.h"

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

#define _EMB6_STACKSIZE (THREAD_STACKSIZE_DEFAULT)
#define _EMB6_PRIO (THREAD_PRIORITY_MAIN - 4)
#define _EMB6_MSG_QUEUE_SIZE (8)
#define _EMB6_NETDEV2_MSG_TYPE (0x1236)
#define _TAIL_LEN (4)
#define _LQI_TAIL_POS (2)
#define _RSSI_TAIL_POS (3)
#define _EMB6_NETDEV2_STACKSIZE (THREAD_STACKSIZE_DEFAULT)
#define _EMB6_NETDEV2_PRIO (THREAD_PRIORITY_MAIN - 4)
#define _EMB6_NETDEV2_MSG_QUEUE_SIZE (8)
#define _EMB6_NETDEV2_MSG_TYPE (0x1236)

extern uip_lladdr_t uip_lladdr;

static char _stack[_EMB6_STACKSIZE];
static char _stack[_EMB6_NETDEV2_STACKSIZE];
static netdev2_t *_dev = NULL;
static s_nsLowMac_t *_lowmac = NULL;
static kernel_pid_t _pid = KERNEL_PID_UNDEF;
Expand Down Expand Up @@ -73,13 +77,15 @@ static void _get_recv_pkt(void)
{
int8_t len;
unsigned state;
char *dataptr;

packetbuf_clear();

state = disableIRQ();

len = _dev->driver->recv(_dev, packetbuf_dataptr(), PACKETBUF_SIZE);

dataptr = packetbuf_dataptr();
len = _dev->driver->recv(_dev, dataptr, PACKETBUF_SIZE);
len -= _TAIL_LEN;
_last_rssi = dataptr[len + _RSSI_TAIL_POS];
/* Restore interrupts. */
restoreIRQ(state);

Expand Down Expand Up @@ -116,15 +122,10 @@ static void _event_cb(netdev2_t *dev, netdev2_event_t event, void *arg)

static void *_thread(void *args)
{
s_ns_t *stack = args;
msg_t msg_queue[_EMB6_MSG_QUEUE_SIZE];
(void)args;
msg_t msg_queue[_EMB6_NETDEV2_MSG_QUEUE_SIZE];

msg_init_queue(msg_queue, _EMB6_MSG_QUEUE_SIZE);

if (!emb6_init(stack)) {
DEBUG("Unable to initialize emb6\n");
return NULL;
}
msg_init_queue(msg_queue, _EMB6_NETDEV2_MSG_QUEUE_SIZE);

while (1) {
msg_t msg;
Expand All @@ -136,23 +137,28 @@ static void *_thread(void *args)
return NULL;
}

int emb6_netdev2_setup(netdev2_t *dev, s_ns_t *stack)
int emb6_netdev2_setup(netdev2_t *dev)
{
if (_dev == NULL) {
_dev = dev;
_pid = thread_create(_stack, sizeof(_stack), _EMB6_PRIO,
THREAD_CREATE_STACKTEST, _thread, stack, "emb6");
_pid = thread_create(_stack, sizeof(_stack),
_EMB6_NETDEV2_PRIO, THREAD_CREATE_STACKTEST, _thread,
NULL, "emb6_netdev2");
return 0;
}
return -1;
}

static int8_t _netdev2_init(s_ns_t *p_ns)
{
if ((_dev != NULL) || (p_ns != NULL) || (p_ns->lmac != NULL)) {
if ((_dev != NULL) && (p_ns != NULL) && (p_ns->lmac != NULL)) {
_dev->event_callback = _event_cb;
_dev->driver->get(_dev, NETOPT_ADDRESS_LONG, &uip_lladdr,
sizeof(uip_lladdr));
_dev->driver->get(_dev, NETOPT_ADDRESS_LONG, &mac_phy_config.mac_address,
sizeof(mac_phy_config.mac_address));
memcpy(&uip_lladdr, mac_phy_config.mac_address,
sizeof(mac_phy_config.mac_address));
_dev->driver->get(_dev, NETOPT_NID, &mac_phy_config.pan_id,
sizeof(mac_phy_config.pan_id));
linkaddr_set_node_addr((linkaddr_t *)&uip_lladdr);
_lowmac = p_ns->lmac;
return 1;
Expand All @@ -162,17 +168,17 @@ static int8_t _netdev2_init(s_ns_t *p_ns)

static int8_t _netdev2_send(const void *pr_payload, uint8_t c_len)
{
if (_dev == NULL) {
if (_dev != NULL) {
const struct iovec vector = {
.iov_base = (void *)pr_payload,
.iov_len = c_len
};
if (_dev->driver->send(_dev, &vector, 1) < 0) {
return 0;
return RADIO_TX_ERR;
}
return 1;
return RADIO_TX_OK;
}
return 0;
return RADIO_TX_ERR;
}

static int8_t _netdev2_on(void)
Expand Down
2 changes: 1 addition & 1 deletion pkg/emb6/include/emb6/netdev2.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ extern "C" {

extern const s_nsIf_t emb6_netdev2_driver;

int emb6_netdev2_setup(netdev2_t *dev, s_ns_t *stack);
int emb6_netdev2_setup(netdev2_t *dev);

#ifdef __cplusplus
}
Expand Down

0 comments on commit f5ec779

Please sign in to comment.