Extend the length of announcement packets if they are too short

This commit is contained in:
adamdunkels 2010-03-19 13:24:58 +00:00
parent aeec1769dc
commit 49009e9cbd
1 changed files with 8 additions and 3 deletions

View File

@ -28,7 +28,7 @@
* *
* This file is part of the Contiki operating system. * This file is part of the Contiki operating system.
* *
* $Id: contikimac.c,v 1.15 2010/03/17 18:24:06 adamdunkels Exp $ * $Id: contikimac.c,v 1.16 2010/03/19 13:24:58 adamdunkels Exp $
*/ */
/** /**
@ -60,7 +60,7 @@
#include <string.h> #include <string.h>
#ifndef WITH_ACK_OPTIMIZATION #ifndef WITH_ACK_OPTIMIZATION
#define WITH_ACK_OPTIMIZATION 1 #define WITH_ACK_OPTIMIZATION 0
#endif #endif
#ifndef WITH_PHASE_OPTIMIZATION #ifndef WITH_PHASE_OPTIMIZATION
#define WITH_PHASE_OPTIMIZATION 1 #define WITH_PHASE_OPTIMIZATION 1
@ -116,7 +116,7 @@ struct announcement_msg {
#define SHORTEST_PACKET_SIZE 18 #define SHORTEST_PACKET_SIZE 18
/* The cycle time for announcements. */ /* The cycle time for announcements. */
#define ANNOUNCEMENT_PERIOD 2 * CLOCK_SECOND #define ANNOUNCEMENT_PERIOD 4 * CLOCK_SECOND
/* The time before sending an announcement within one announcement /* The time before sending an announcement within one announcement
cycle. */ cycle. */
@ -636,6 +636,8 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr)
got_strobe_ack == 0 && collisions == 0 && got_strobe_ack == 0 && collisions == 0 &&
RTIMER_CLOCK_LT(RTIMER_NOW(), t0 + STROBE_TIME); strobes++) { RTIMER_CLOCK_LT(RTIMER_NOW(), t0 + STROBE_TIME); strobes++) {
#endif #endif
watchdog_periodic();
/* if(is_known_receiver && strobes > MAX_PHASE_STROBES) { /* if(is_known_receiver && strobes > MAX_PHASE_STROBES) {
break; break;
@ -830,6 +832,9 @@ send_announcement(void *ptr)
announcement_len = format_announcement(packetbuf_dataptr()); announcement_len = format_announcement(packetbuf_dataptr());
if(announcement_len > 0) { if(announcement_len > 0) {
if(announcement_len < SHORTEST_PACKET_SIZE) {
announcement_len = SHORTEST_PACKET_SIZE;
}
packetbuf_set_datalen(announcement_len); packetbuf_set_datalen(announcement_len);
packetbuf_set_addr(PACKETBUF_ADDR_SENDER, &rimeaddr_node_addr); packetbuf_set_addr(PACKETBUF_ADDR_SENDER, &rimeaddr_node_addr);