17
17
#include "kernel_types.h"
18
18
#include "netdev/802154.h"
19
19
#include "netdev/base.h"
20
+ #include "thread.h"
20
21
#include "transceiver.h"
21
22
22
23
#define ENABLE_DEBUG (0)
35
36
/* default source address length for sending in number of byte */
36
37
static size_t _default_src_addr_len = 2 ;
37
38
38
- /* TODO: allow for multiple devices */
39
- static kernel_pid_t cc2420_netdev_event_handler = KERNEL_PID_UNDEF ;
40
-
41
39
/* implementation of driver's functions */
42
40
43
41
int cc2420_initialize (netdev_t * dev )
44
42
{
43
+ if (dev == NULL || dev -> driver != ((netdev_driver_t * )(& cc2420_driver ))) {
44
+ return - ENODEV ;
45
+ }
46
+
47
+ dev -> type = NETDEV_TYPE_802154 ;
48
+ dev -> more = NULL ;
49
+ dev -> event_handler = thread_getpid ();
50
+
45
51
cc2420_spi_init ();
46
52
hwtimer_wait (CC2420_WAIT_TIME );
47
53
cc2420_reset ();
@@ -97,7 +103,7 @@ int cc2420_initialize(netdev_t *dev)
97
103
void cc2420_init (kernel_pid_t tpid )
98
104
{
99
105
transceiver_pid = tpid ;
100
- cc2420_initialize (NULL ); /* TODO: actually use netdev */
106
+ cc2420_initialize (& cc2420_netdev );
101
107
}
102
108
#endif
103
109
@@ -162,7 +168,7 @@ void cc2420_rx_irq(void)
162
168
msg_t msg ;
163
169
msg .type = NETDEV_MSG_EVENT_TYPE ;
164
170
msg .content .value = CC2420_NETDEV_EVENT_RX ;
165
- msg_send_int (& msg , cc2420_netdev_event_handler );
171
+ msg_send_int (& msg , cc2420_netdev . event_handler );
166
172
#endif
167
173
}
168
174
@@ -182,12 +188,6 @@ void cc2420_event(netdev_t *dev, uint32_t event_type)
182
188
}
183
189
}
184
190
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 ;
189
- }
190
-
191
191
void cc2420_set_monitor (int mode )
192
192
{
193
193
uint16_t reg = cc2420_read_reg (CC2420_REG_MDMCTRL0 );
@@ -776,7 +776,6 @@ const netdev_802154_driver_t cc2420_driver = {
776
776
cc2420_get_state ,
777
777
cc2420_set_state ,
778
778
cc2420_event ,
779
- cc2420_set_event_handler ,
780
779
cc2420_load_tx_buf ,
781
780
cc2420_transmit_tx_buf ,
782
781
netdev_802154_send ,
@@ -785,4 +784,4 @@ const netdev_802154_driver_t cc2420_driver = {
785
784
cc2420_channel_clear ,
786
785
};
787
786
788
- netdev_t cc2420_netdev = { NETDEV_TYPE_802154 , (netdev_driver_t * ) & cc2420_driver , NULL };
787
+ netdev_t cc2420_netdev = { NETDEV_TYPE_802154 , (netdev_driver_t * ) & cc2420_driver , KERNEL_PID_UNDEF , NULL };
0 commit comments