added counter for avg sstrength

This commit is contained in:
nifi 2006-10-10 23:16:10 +00:00
parent 6c59ef668f
commit be942b531b
1 changed files with 14 additions and 10 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: tr1001-gcr.c,v 1.4 2006/10/09 21:05:37 nifi Exp $ * @(#)$Id: tr1001-gcr.c,v 1.5 2006/10/10 23:16:10 nifi Exp $
*/ */
/** /**
* \addtogroup esb * \addtogroup esb
@ -130,6 +130,7 @@ static struct pt rxhandler_pt;
static struct timer rxtimer; static struct timer rxtimer;
static unsigned short tmp_sstrength, sstrength; static unsigned short tmp_sstrength, sstrength;
static unsigned short tmp_count;
#define DEBUG 0 #define DEBUG 0
@ -144,11 +145,11 @@ static unsigned short tmp_sstrength, sstrength;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
#if TR1001_STATISTICS #if TR1001_STATISTICS
#define PACKET_DROPPED(bytes) do { \ #define PACKET_DROPPED() do { \
if(packets_err < ~0) {\ if(packets_err < ~0) {\
packets_err++;\ packets_err++;\
}\ }\
sstrength_dropped = ((bytes) == 0 ? 0 : ((tmp_sstrength / (bytes)) << 1));\ sstrength_dropped = (tmp_count ? ((tmp_sstrength / tmp_count) << 2) : 0);\
} while(0) } while(0)
#define PACKET_ACCEPTED() do {\ #define PACKET_ACCEPTED() do {\
if(packets_ok < ~0) {\ if(packets_ok < ~0) {\
@ -156,7 +157,7 @@ static unsigned short tmp_sstrength, sstrength;
}\ }\
} while(0); } while(0);
#else #else
#define PACKET_DROPPED(bytes) #define PACKET_DROPPED()
#define PACKET_ACCEPTED() #define PACKET_ACCEPTED()
#endif /* TR1001_STATISTICS */ #endif /* TR1001_STATISTICS */
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
@ -407,6 +408,7 @@ PT_THREAD(tr1001_default_rxhandler_pt(unsigned char incoming_byte))
if(tr1001_rxstate == RXSTATE_RECEVING) { if(tr1001_rxstate == RXSTATE_RECEVING) {
unsigned short signal = radio_sensor_signal; unsigned short signal = radio_sensor_signal;
tmp_sstrength += (signal >> 2); tmp_sstrength += (signal >> 2);
tmp_count++;
if(signal < tmp_sstrength_min) { if(signal < tmp_sstrength_min) {
tmp_sstrength_min = signal; tmp_sstrength_min = signal;
} }
@ -438,6 +440,7 @@ PT_THREAD(tr1001_default_rxhandler_pt(unsigned char incoming_byte))
/* Start signal strength measurement */ /* Start signal strength measurement */
tmp_sstrength = 0; tmp_sstrength = 0;
tmp_count = 0;
tmp_sstrength_max = 0; tmp_sstrength_max = 0;
tmp_sstrength_min = 0xFFFF; tmp_sstrength_min = 0xFFFF;
@ -461,7 +464,7 @@ PT_THREAD(tr1001_default_rxhandler_pt(unsigned char incoming_byte))
if(!gcr_valid()) { if(!gcr_valid()) {
beep_beep(1000); beep_beep(1000);
LOG("Incorrect GCR in header at byte %d/1 %x\n", tmppos, incoming_byte); LOG("Incorrect GCR in header at byte %d/1 %x\n", tmppos, incoming_byte);
PACKET_DROPPED(tmppos); PACKET_DROPPED();
PT_RESTART(&rxhandler_pt); PT_RESTART(&rxhandler_pt);
} }
} while(!gcr_get_decoded(&rxtmp)); } while(!gcr_get_decoded(&rxtmp));
@ -479,7 +482,7 @@ PT_THREAD(tr1001_default_rxhandler_pt(unsigned char incoming_byte))
/* If the length is longer than we can handle, we'll start from /* If the length is longer than we can handle, we'll start from
the beginning. */ the beginning. */
if(tmppos + tr1001_rxlen > sizeof(tr1001_rxbuf)) { if(tmppos + tr1001_rxlen > sizeof(tr1001_rxbuf)) {
PACKET_DROPPED(tmppos); PACKET_DROPPED();
PT_RESTART(&rxhandler_pt); PT_RESTART(&rxhandler_pt);
} }
@ -498,7 +501,7 @@ PT_THREAD(tr1001_default_rxhandler_pt(unsigned char incoming_byte))
beep_beep(1000); beep_beep(1000);
LOG("Incorrect GCR 0x%02x at byte %d/1\n", incoming_byte, LOG("Incorrect GCR 0x%02x at byte %d/1\n", incoming_byte,
tmppos - TR1001_HDRLEN); tmppos - TR1001_HDRLEN);
PACKET_DROPPED(tmppos); PACKET_DROPPED();
PT_RESTART(&rxhandler_pt); PT_RESTART(&rxhandler_pt);
} }
} while(!gcr_get_decoded(&rxtmp)); } while(!gcr_get_decoded(&rxtmp));
@ -519,7 +522,7 @@ PT_THREAD(tr1001_default_rxhandler_pt(unsigned char incoming_byte))
gcr_decode(incoming_byte); gcr_decode(incoming_byte);
if(!gcr_valid()) { if(!gcr_valid()) {
beep_beep(1000); beep_beep(1000);
PACKET_DROPPED(tr1001_rxlen + TR1001_HDRLEN); PACKET_DROPPED();
PT_RESTART(&rxhandler_pt); PT_RESTART(&rxhandler_pt);
} }
} while(!gcr_get_decoded(&rxtmp)); } while(!gcr_get_decoded(&rxtmp));
@ -545,7 +548,7 @@ PT_THREAD(tr1001_default_rxhandler_pt(unsigned char incoming_byte))
} else { } else {
LOG("Incorrect CRC"); LOG("Incorrect CRC");
beep_beep(1000); beep_beep(1000);
PACKET_DROPPED(tr1001_rxlen + TR1001_HDRLEN); PACKET_DROPPED();
} }
} }
PT_END(&rxhandler_pt); PT_END(&rxhandler_pt);
@ -681,7 +684,8 @@ tr1001_poll(u8_t *buf, u16_t bufsize)
memcpy(buf, &tr1001_rxbuf[TR1001_HDRLEN], tmplen); memcpy(buf, &tr1001_rxbuf[TR1001_HDRLEN], tmplen);
/* header + content + CRC */ /* header + content + CRC */
sstrength = (tmp_sstrength / (TR1001_HDRLEN + tr1001_rxlen + 2)) << 1; /* sstrength = (tmp_sstrength / (TR1001_HDRLEN + tr1001_rxlen + 2)) << 1; */
sstrength = (tmp_count ? ((tmp_sstrength / tmp_count) << 2) : 0);
sstrength_max = tmp_sstrength_max; sstrength_max = tmp_sstrength_max;
sstrength_min = tmp_sstrength_min; sstrength_min = tmp_sstrength_min;