diff --git a/core/net/mac/contikimac.c b/core/net/mac/contikimac.c index 06998c42c..fa6f14e96 100644 --- a/core/net/mac/contikimac.c +++ b/core/net/mac/contikimac.c @@ -377,16 +377,17 @@ powercycle(struct rtimer *t, void *ptr) static uint8_t count; #if SYNC_CYCLE_STARTS - /* Compute cycle start when RTIMER_ARCH_SECOND is not a multiple of CHANNEL_CHECK_RATE */ - if (sync_cycle_phase++ == NETSTACK_RDC_CHANNEL_CHECK_RATE) { - sync_cycle_phase = 0; - sync_cycle_start += RTIMER_ARCH_SECOND; - cycle_start = sync_cycle_start; + /* Compute cycle start when RTIMER_ARCH_SECOND is not a multiple + of CHANNEL_CHECK_RATE */ + if(sync_cycle_phase++ == NETSTACK_RDC_CHANNEL_CHECK_RATE) { + sync_cycle_phase = 0; + sync_cycle_start += RTIMER_ARCH_SECOND; + cycle_start = sync_cycle_start; } else { #if (RTIMER_ARCH_SECOND * NETSTACK_RDC_CHANNEL_CHECK_RATE) > 65535 - cycle_start = sync_cycle_start + ((unsigned long)(sync_cycle_phase*RTIMER_ARCH_SECOND))/NETSTACK_RDC_CHANNEL_CHECK_RATE; + cycle_start = sync_cycle_start + ((unsigned long)(sync_cycle_phase*RTIMER_ARCH_SECOND))/NETSTACK_RDC_CHANNEL_CHECK_RATE; #else - cycle_start = sync_cycle_start + (sync_cycle_phase*RTIMER_ARCH_SECOND)/NETSTACK_RDC_CHANNEL_CHECK_RATE; + cycle_start = sync_cycle_start + (sync_cycle_phase*RTIMER_ARCH_SECOND)/NETSTACK_RDC_CHANNEL_CHECK_RATE; #endif } #else @@ -475,12 +476,13 @@ powercycle(struct rtimer *t, void *ptr) } if(RTIMER_CLOCK_LT(RTIMER_NOW() - cycle_start, CYCLE_TIME - CHECK_TIME * 4)) { - /* Schedule the next powercycle interrupt, or sleep the mcu until then. - Sleeping will not exit from this interrupt, so ensure an occasional wake cycle - or foreground processing will be blocked until a packet is detected */ + /* Schedule the next powercycle interrupt, or sleep the mcu + until then. Sleeping will not exit from this interrupt, so + ensure an occasional wake cycle or foreground processing will + be blocked until a packet is detected */ #if RDC_CONF_MCU_SLEEP static uint8_t sleepcycle; - if ((sleepcycle++<16) && !we_are_sending && !radio_is_on) { + if((sleepcycle++ < 16) && !we_are_sending && !radio_is_on) { rtimer_arch_sleep(CYCLE_TIME - (RTIMER_NOW() - cycle_start)); } else { sleepcycle = 0; @@ -519,7 +521,9 @@ broadcast_rate_drop(void) } /*---------------------------------------------------------------------------*/ static int -send_packet(mac_callback_t mac_callback, void *mac_callback_ptr, struct rdc_buf_list *buf_list) +send_packet(mac_callback_t mac_callback, void *mac_callback_ptr, + struct rdc_buf_list *buf_list, + int is_receiver_awake) { rtimer_clock_t t0; rtimer_clock_t encounter_time = 0; @@ -538,8 +542,8 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr, struct rdc_buf_ struct hdr *chdr; #endif /* WITH_CONTIKIMAC_HEADER */ - /* Exit if RDC and radio were explicitly turned off */ - if (!contikimac_is_on && !contikimac_keep_radio_on) { + /* Exit if RDC and radio were explicitly turned off */ + if(!contikimac_is_on && !contikimac_keep_radio_on) { PRINTF("contikimac: radio is turned off\n"); return MAC_TX_ERR_FATAL; } @@ -609,7 +613,6 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr, struct rdc_buf_ } #endif - /* Make sure that the packet is longer or equal to the shortest packet length. */ transmit_len = packetbuf_totlen(); @@ -691,7 +694,7 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr, struct rdc_buf_ /* Check if there are any transmissions by others. */ /* TODO: why does this give collisions before sending with the mc1322x? */ if(is_receiver_awake == 0) { - int i; + int i; for(i = 0; i < CCA_COUNT_MAX_TX; ++i) { t0 = RTIMER_NOW(); on(); @@ -720,8 +723,9 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr, struct rdc_buf_ #if !RDC_CONF_HARDWARE_ACK if(!is_broadcast) { - /* Turn radio on to receive expected unicast ack. - Not necessary with hardware ack detection, and may trigger an unnecessary cca or rx cycle */ + /* Turn radio on to receive expected unicast ack. Not necessary + with hardware ack detection, and may trigger an unnecessary cca + or rx cycle */ on(); } #endif @@ -735,14 +739,14 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr, struct rdc_buf_ watchdog_periodic(); - if((is_receiver_awake || is_known_receiver) && !RTIMER_CLOCK_LT(RTIMER_NOW(), t0 + MAX_PHASE_STROBE_TIME)) { + if(!is_broadcast && (is_receiver_awake || is_known_receiver) && + !RTIMER_CLOCK_LT(RTIMER_NOW(), t0 + MAX_PHASE_STROBE_TIME)) { PRINTF("miss to %d\n", packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[0]); break; } len = 0; - { rtimer_clock_t wt; rtimer_clock_t txtime; @@ -752,7 +756,8 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr, struct rdc_buf_ ret = NETSTACK_RADIO.transmit(transmit_len); #if RDC_CONF_HARDWARE_ACK - /* For radios that block in the transmit routine and detect the ACK in hardware */ + /* For radios that block in the transmit routine and detect the + ACK in hardware */ if(ret == RADIO_TX_OK) { if(!is_broadcast) { got_strobe_ack = 1; @@ -764,9 +769,9 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr, struct rdc_buf_ PRINTF("contikimac: collisions while sending\n"); collisions++; } - wt = RTIMER_NOW(); + wt = RTIMER_NOW(); while(RTIMER_CLOCK_LT(RTIMER_NOW(), wt + INTER_PACKET_INTERVAL)) { } -#else +#else /* RDC_CONF_HARDWARE_ACK */ /* Wait for the ACK packet */ wt = RTIMER_NOW(); while(RTIMER_CLOCK_LT(RTIMER_NOW(), wt + INTER_PACKET_INTERVAL)) { } @@ -779,7 +784,7 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr, struct rdc_buf_ while(RTIMER_CLOCK_LT(RTIMER_NOW(), wt + AFTER_ACK_DETECTECT_WAIT_TIME)) { } len = NETSTACK_RADIO.read(ackbuf, ACK_LEN); - if(len == ACK_LEN && seqno == ackbuf[ACK_LEN-1]) { + if(len == ACK_LEN && seqno == ackbuf[ACK_LEN - 1]) { got_strobe_ack = 1; encounter_time = txtime; break; @@ -829,16 +834,16 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr, struct rdc_buf_ } #if WITH_PHASE_OPTIMIZATION - if(is_known_receiver && got_strobe_ack) { - PRINTF("no miss %d wake-ups %d\n", packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[0], + PRINTF("no miss %d wake-ups %d\n", + packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[0], strobes); } if(!is_broadcast) { if(collisions == 0 && is_receiver_awake == 0) { - phase_update(&phase_list, packetbuf_addr(PACKETBUF_ADDR_RECEIVER), encounter_time, - ret); + phase_update(&phase_list, packetbuf_addr(PACKETBUF_ADDR_RECEIVER), + encounter_time, ret); } } #endif /* WITH_PHASE_OPTIMIZATION */ @@ -903,8 +908,9 @@ qsend_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list) is_receiver_awake = 0; } /*---------------------------------------------------------------------------*/ -/* Timer callback triggered when receiving a burst, after having waited for a next - packet for a too long time. Turns the radio off and leaves burst reception mode */ +/* Timer callback triggered when receiving a burst, after having + waited for a next packet for a too long time. Turns the radio off + and leaves burst reception mode */ static void recv_burst_off(void *ptr) { @@ -952,7 +958,8 @@ input_packet(void) we_are_receiving_burst = packetbuf_attr(PACKETBUF_ATTR_PENDING); if(we_are_receiving_burst) { on(); - /* Set a timer to turn the radio off in case we do not receive a next packet */ + /* Set a timer to turn the radio off in case we do not receive + a next packet */ ctimer_set(&ct, INTER_PACKET_DEADLINE, recv_burst_off, NULL); } else { off(); diff --git a/core/net/mac/csma.c b/core/net/mac/csma.c index 157032ace..cb0430341 100644 --- a/core/net/mac/csma.c +++ b/core/net/mac/csma.c @@ -110,8 +110,9 @@ static void packet_sent(void *ptr, int status, int num_transmissions); static void transmit_packet_list(void *ptr); /*---------------------------------------------------------------------------*/ -static struct -neighbor_queue *neighbor_queue_from_addr(const rimeaddr_t *addr) { +static struct neighbor_queue * +neighbor_queue_from_addr(const rimeaddr_t *addr) +{ struct neighbor_queue *n = list_head(neighbor_list); while(n != NULL) { if(rimeaddr_cmp(&n->addr, addr)) {