Skip to content

Commit e3990ac

Browse files
committed
[SQUASH ME] cc2420: adapt for netdev event handler
1 parent 26b3730 commit e3990ac

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

drivers/cc2420/cc2420.c

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include "cc2420_settings.h"
1515
#include "cc2420_arch.h"
1616
#include "hwtimer.h"
17+
#include "kernel_types.h"
1718
#include "netdev/802154.h"
1819
#include "netdev/base.h"
1920
#include "transceiver.h"
@@ -28,9 +29,15 @@
2829
/* startup timeout (2 ms) in 16MHz-clock cycles */
2930
#define CC2420_STARTUP_TIMEOUT 32000U
3031

32+
/* event type to signalize receive event */
33+
#define CC2420_NETDEV_EVENT_RX (3452342219)
34+
3135
/* default source address length for sending in number of byte */
3236
static size_t _default_src_addr_len = 2;
3337

38+
/* TODO: allow for multiple devices */
39+
static kernel_pid_t cc2420_netdev_event_handler = KERNEL_PID_UNDEF;
40+
3441
/* implementation of driver's functions */
3542

3643
int cc2420_initialize(netdev_t *dev)
@@ -149,13 +156,36 @@ void cc2420_rxoverflow_irq(void)
149156

150157
void cc2420_rx_irq(void)
151158
{
159+
#ifdef MODULE_TRANSCEIVER
152160
cc2420_rx_handler();
161+
#else
162+
msg_t msg;
163+
msg.type = NETDEV_MSG_EVENT_TYPE;
164+
msg.content.value = CC2420_NETDEV_EVENT_RX;
165+
msg_send_int(&msg, cc2420_netdev_event_handler);
166+
#endif
153167
}
154168

155169
void cc2420_event(netdev_t *dev, uint32_t event_type)
156170
{
157171
(void)dev;
158-
(void)event_type;
172+
173+
switch (event_type) {
174+
case CC2420_NETDEV_EVENT_RX:
175+
cc2420_rx_handler();
176+
177+
break;
178+
179+
default:
180+
181+
break;
182+
}
183+
}
184+
185+
void cc2420_set_event_handler(netdev_t *dev, kernel_pid_t event_handler)
186+
{
187+
(void)dev;
188+
cc2420_netdev_event_handler = event_handler;
159189
}
160190

161191
void cc2420_set_monitor(int mode)
@@ -746,6 +776,7 @@ const netdev_802154_driver_t cc2420_driver = {
746776
cc2420_get_state,
747777
cc2420_set_state,
748778
cc2420_event,
779+
cc2420_set_event_handler,
749780
cc2420_load_tx_buf,
750781
cc2420_transmit_tx_buf,
751782
netdev_802154_send,

0 commit comments

Comments
 (0)