diff --git a/cpu/avr/radio/rf230bb/rf230bb.c b/cpu/avr/radio/rf230bb/rf230bb.c index 76eb184cc..905a36d44 100644 --- a/cpu/avr/radio/rf230bb/rf230bb.c +++ b/cpu/avr/radio/rf230bb/rf230bb.c @@ -28,7 +28,7 @@ * * This file is part of the Contiki operating system. * - * @(#)$Id: rf230bb.c,v 1.19 2010/12/15 14:11:06 dak664 Exp $ + * @(#)$Id: rf230bb.c,v 1.20 2010/12/15 16:50:44 dak664 Exp $ */ /* * This code is almost device independent and should be easy to port. @@ -412,20 +412,11 @@ radio_set_trx_state(uint8_t new_state) void rf230_set_promiscuous_mode(bool isPromiscuous) { - if(isPromiscuous) { - is_promiscuous = true; + is_promiscuous = isPromiscuous; #if RF230_CONF_AUTOACK -/* For now only do promiscuous in Macintosh build */ -#if USB_CONF_MACINTOSH - radio_set_trx_state(RX_ON); +/* TODO: Figure out when to pass promisc state to 802.15.4 */ +// radio_set_trx_state(is_promiscuous?RX_ON:RX_AACK_ON); #endif -#endif - } else { - is_promiscuous = false; -#if RF230_CONF_AUTOACK - radio_set_trx_state(RX_AACK_ON); -#endif - } } bool @@ -466,12 +457,8 @@ on(void) rf230_waitidle(); #if RF230_CONF_AUTOACK -/* For now only do promiscuous on Mac build */ -#if USB_CONF_MACINTOSH - radio_set_trx_state(is_promiscuous?RX_ON:RX_AACK_ON); -#else + // radio_set_trx_state(is_promiscuous?RX_ON:RX_AACK_ON); radio_set_trx_state(RX_AACK_ON); -#endif #else radio_set_trx_state(RX_ON); #endif @@ -888,6 +875,15 @@ rf230_set_channel(uint8_t c) } /*---------------------------------------------------------------------------*/ void +rf230_listen_channel(uint8_t c) +{ + /* Same as set channel but forces RX_ON state for sniffer or energy scan */ +// PRINTF("rf230: Listen Channel %u\n",c); + rf230_set_channel(c); + radio_set_trx_state(RX_ON); +} +/*---------------------------------------------------------------------------*/ +void rf230_set_pan_addr(unsigned pan, unsigned addr, const uint8_t ieee_addr[8]) diff --git a/cpu/avr/radio/rf230bb/rf230bb.h b/cpu/avr/radio/rf230bb/rf230bb.h index 69413095e..ac0c623d0 100644 --- a/cpu/avr/radio/rf230bb/rf230bb.h +++ b/cpu/avr/radio/rf230bb/rf230bb.h @@ -45,7 +45,7 @@ * \file * \brief This file contains radio driver code. * - * $Id: rf230bb.h,v 1.5 2010/12/14 22:34:18 dak664 Exp $ + * $Id: rf230bb.h,v 1.6 2010/12/15 16:50:44 dak664 Exp $ */ #ifndef RADIO_H @@ -199,6 +199,7 @@ int rf230_init(void); //int rf230_on(void); //int rf230_off(void); void rf230_set_channel(uint8_t channel); +void rf230_listen_channel(uint8_t channel); uint8_t rf230_get_channel(void); void rf230_set_pan_addr(unsigned pan,unsigned addr,const uint8_t ieee_addr[8]); void rf230_set_txpower(uint8_t power); diff --git a/platform/avr-ravenusb/cdc_task.c b/platform/avr-ravenusb/cdc_task.c index 83fb8956b..de2981e96 100644 --- a/platform/avr-ravenusb/cdc_task.c +++ b/platform/avr-ravenusb/cdc_task.c @@ -389,12 +389,22 @@ void menu_process(char c) PRINTF_P(PSTR("Jackdaw now in sniffer mode\n\r")); usbstick_mode.sendToRf = 0; usbstick_mode.translate = 0; +#if RF230BB + rf230_listen_channel(rf230_get_channel()); +#else + radio_set_trx_state(RX_ON); +#endif break; case 'n': PRINTF_P(PSTR("Jackdaw now in network mode\n\r")); usbstick_mode.sendToRf = 1; usbstick_mode.translate = 1; +#if RF230BB + rf230_set_channel(rf230_get_channel()); +#else + radio_set_trx_state(RX_AACK_ON); //TODO: Use startup state which may be RX_ON +#endif break; case '6': @@ -594,7 +604,7 @@ extern uip_ds6_netif_t uip_ds6_if; for(j=0;j<(1<<12);j++) { for(i=11;i<=26;i++) { #if RF230BB - rf230_set_channel(i); + rf230_listen_channel(i); #else // RF230BB radio_set_operating_channel(i); #endif