Variable xmac_is_on was used both in interrupt and non-interrupt contexts and needs to be volatile
This commit is contained in:
parent
df784546ee
commit
2f105e933a
|
@ -28,7 +28,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: xmac.c,v 1.46 2009/12/06 17:10:54 adamdunkels Exp $
|
* $Id: xmac.c,v 1.47 2009/12/06 23:29:38 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -60,15 +60,9 @@
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#ifndef WITH_TIMESYNCH
|
|
||||||
#define WITH_TIMESYNCH 0
|
|
||||||
#endif
|
|
||||||
#ifndef WITH_ACK_OPTIMIZATION
|
#ifndef WITH_ACK_OPTIMIZATION
|
||||||
#define WITH_ACK_OPTIMIZATION 1
|
#define WITH_ACK_OPTIMIZATION 1
|
||||||
#endif
|
#endif
|
||||||
#ifndef WITH_RANDOM_WAIT_BEFORE_SEND
|
|
||||||
#define WITH_RANDOM_WAIT_BEFORE_SEND 0
|
|
||||||
#endif
|
|
||||||
#ifndef WITH_ENCOUNTER_OPTIMIZATION
|
#ifndef WITH_ENCOUNTER_OPTIMIZATION
|
||||||
#define WITH_ENCOUNTER_OPTIMIZATION 1
|
#define WITH_ENCOUNTER_OPTIMIZATION 1
|
||||||
#endif
|
#endif
|
||||||
|
@ -156,7 +150,7 @@ struct xmac_config xmac_config = {
|
||||||
static struct rtimer rt;
|
static struct rtimer rt;
|
||||||
static struct pt pt;
|
static struct pt pt;
|
||||||
|
|
||||||
static int xmac_is_on = 0;
|
static volatile uint8_t xmac_is_on = 0;
|
||||||
|
|
||||||
static volatile unsigned char waiting_for_packet = 0;
|
static volatile unsigned char waiting_for_packet = 0;
|
||||||
static volatile unsigned char someone_is_sending = 0;
|
static volatile unsigned char someone_is_sending = 0;
|
||||||
|
@ -295,10 +289,6 @@ powercycle_turn_radio_on(void)
|
||||||
static char
|
static char
|
||||||
powercycle(struct rtimer *t, void *ptr)
|
powercycle(struct rtimer *t, void *ptr)
|
||||||
{
|
{
|
||||||
#if WITH_TIMESYNCH
|
|
||||||
rtimer_clock_t should_be, adjust;
|
|
||||||
#endif /* WITH_TIMESYNCH */
|
|
||||||
|
|
||||||
if(is_streaming) {
|
if(is_streaming) {
|
||||||
if(!RTIMER_CLOCK_LT(RTIMER_NOW(), stream_until)) {
|
if(!RTIMER_CLOCK_LT(RTIMER_NOW(), stream_until)) {
|
||||||
is_streaming = 0;
|
is_streaming = 0;
|
||||||
|
@ -307,7 +297,6 @@ powercycle(struct rtimer *t, void *ptr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PT_BEGIN(&pt);
|
PT_BEGIN(&pt);
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
|
@ -458,14 +447,6 @@ send_packet(void)
|
||||||
int is_already_streaming = 0;
|
int is_already_streaming = 0;
|
||||||
uint8_t collisions;
|
uint8_t collisions;
|
||||||
|
|
||||||
#if WITH_RANDOM_WAIT_BEFORE_SEND
|
|
||||||
{
|
|
||||||
rtimer_clock_t t = RTIMER_NOW() + (random_rand() % (xmac_config.on_time * 4));
|
|
||||||
while(RTIMER_CLOCK_LT(RTIMER_NOW(), t));
|
|
||||||
}
|
|
||||||
#endif /* WITH_RANDOM_WAIT_BEFORE_SEND */
|
|
||||||
|
|
||||||
|
|
||||||
/* Create the X-MAC header for the data packet. */
|
/* Create the X-MAC header for the data packet. */
|
||||||
packetbuf_set_addr(PACKETBUF_ADDR_SENDER, &rimeaddr_node_addr);
|
packetbuf_set_addr(PACKETBUF_ADDR_SENDER, &rimeaddr_node_addr);
|
||||||
if(rimeaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER), &rimeaddr_null)) {
|
if(rimeaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER), &rimeaddr_null)) {
|
||||||
|
@ -617,8 +598,6 @@ send_packet(void)
|
||||||
} else /*if(hdr->dispatch == DISPATCH && hdr->type == TYPE_STROBE)*/ {
|
} else /*if(hdr->dispatch == DISPATCH && hdr->type == TYPE_STROBE)*/ {
|
||||||
PRINTDEBUG("xmac: strobe from someone else\n");
|
PRINTDEBUG("xmac: strobe from someone else\n");
|
||||||
collisions++;
|
collisions++;
|
||||||
/* } else {
|
|
||||||
PRINTDEBUG("xmac: ignored len %u\n", len);*/
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
PRINTF("xmac: send failed to parse %u\n", len);
|
PRINTF("xmac: send failed to parse %u\n", len);
|
||||||
|
@ -731,7 +710,6 @@ qsend_packet(void)
|
||||||
PRINTF("xmac: send immediately.\n");
|
PRINTF("xmac: send immediately.\n");
|
||||||
return send_packet();
|
return send_packet();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in a new issue