Enabled dropping of packets with bad CRC. Added statistics gathering. Bugfix when packets where shorter than 2 bytes
This commit is contained in:
parent
0e4c30ccb4
commit
b8d586b210
|
@ -28,7 +28,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* @(#)$Id: simple-cc2420.c,v 1.6 2007/05/15 07:53:09 adamdunkels Exp $
|
* @(#)$Id: simple-cc2420.c,v 1.7 2007/05/22 20:51:30 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This code is almost device independent and should be easy to port.
|
* This code is almost device independent and should be easy to port.
|
||||||
|
@ -49,6 +49,8 @@
|
||||||
#include "dev/simple-cc2420.h"
|
#include "dev/simple-cc2420.h"
|
||||||
#include "dev/cc2420_const.h"
|
#include "dev/cc2420_const.h"
|
||||||
|
|
||||||
|
#include "net/rime/rimestats.h"
|
||||||
|
|
||||||
#define FOOTER1_CRC_OK 0x80
|
#define FOOTER1_CRC_OK 0x80
|
||||||
#define FOOTER1_CORRELATION 0x7f
|
#define FOOTER1_CORRELATION 0x7f
|
||||||
|
|
||||||
|
@ -231,8 +233,12 @@ simple_cc2420_send(const u8_t *payload, u16_t payload_len)
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* PRINTF("simple_cc2420_send: %d bytes\n", payload_len);*/
|
||||||
|
|
||||||
GET_LOCK();
|
GET_LOCK();
|
||||||
|
|
||||||
|
RIMESTATS_ADD(lltx);
|
||||||
|
|
||||||
/* Wait for previous transmission to finish and RSSI. */
|
/* Wait for previous transmission to finish and RSSI. */
|
||||||
do {
|
do {
|
||||||
spiStatusByte = status();
|
spiStatusByte = status();
|
||||||
|
@ -247,18 +253,18 @@ simple_cc2420_send(const u8_t *payload, u16_t payload_len)
|
||||||
ENERGEST_ON(ENERGEST_TYPE_TRANSMIT);
|
ENERGEST_ON(ENERGEST_TYPE_TRANSMIT);
|
||||||
|
|
||||||
{
|
{
|
||||||
u8_t total_len = 2 + payload_len + 2; /* 2 bytes time stamp,
|
u8_t total_len = /*2 +*/ payload_len + 2; /* 2 bytes time stamp,
|
||||||
2 bytes footer. */
|
2 bytes footer. */
|
||||||
FASTSPI_WRITE_FIFO(&total_len, 1);
|
FASTSPI_WRITE_FIFO(&total_len, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
FASTSPI_WRITE_FIFO(payload, payload_len);
|
FASTSPI_WRITE_FIFO(payload, payload_len);
|
||||||
|
|
||||||
{
|
/* {
|
||||||
rtimer_clock_t t;
|
rtimer_clock_t t;
|
||||||
t = rtimer_arch_now();
|
t = rtimer_arch_now();
|
||||||
FASTSPI_WRITE_FIFO(&t, 2);
|
FASTSPI_WRITE_FIFO(&t, 2);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
if(FIFOP_IS_1 && !FIFO_IS_1) {
|
if(FIFOP_IS_1 && !FIFO_IS_1) {
|
||||||
/* RXFIFO overflow, send on retransmit. */
|
/* RXFIFO overflow, send on retransmit. */
|
||||||
|
@ -427,6 +433,7 @@ simple_cc2420_read(u8_t *buf, u16_t bufsize)
|
||||||
FASTSPI_STROBE(CC2420_SFLUSHRX);
|
FASTSPI_STROBE(CC2420_SFLUSHRX);
|
||||||
FASTSPI_STROBE(CC2420_SFLUSHRX);
|
FASTSPI_STROBE(CC2420_SFLUSHRX);
|
||||||
packet_seen = 0;
|
packet_seen = 0;
|
||||||
|
RIMESTATS_ADD(badsynch);
|
||||||
RELEASE_LOCK();
|
RELEASE_LOCK();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -436,6 +443,7 @@ simple_cc2420_read(u8_t *buf, u16_t bufsize)
|
||||||
PRINTF("simple_cc2420_read: len %d\n", len);
|
PRINTF("simple_cc2420_read: len %d\n", len);
|
||||||
if(len < 2) {
|
if(len < 2) {
|
||||||
FASTSPI_READ_FIFO_GARBAGE(len);
|
FASTSPI_READ_FIFO_GARBAGE(len);
|
||||||
|
RIMESTATS_ADD(tooshort);
|
||||||
} else if(len - 2 > bufsize) {
|
} else if(len - 2 > bufsize) {
|
||||||
PRINTF("simple_cc2420_read too big len=%d bufsize %d\n", len, bufsize);
|
PRINTF("simple_cc2420_read too big len=%d bufsize %d\n", len, bufsize);
|
||||||
// FASTSPI_READ_FIFO_GARBAGE(2);
|
// FASTSPI_READ_FIFO_GARBAGE(2);
|
||||||
|
@ -443,7 +451,8 @@ simple_cc2420_read(u8_t *buf, u16_t bufsize)
|
||||||
FASTSPI_READ_FIFO_GARBAGE(len - bufsize - 2);
|
FASTSPI_READ_FIFO_GARBAGE(len - bufsize - 2);
|
||||||
FASTSPI_READ_FIFO_NO_WAIT(footer, 2);
|
FASTSPI_READ_FIFO_NO_WAIT(footer, 2);
|
||||||
// len = bufsize - 2; /* We eventually return len - 2 */
|
// len = bufsize - 2; /* We eventually return len - 2 */
|
||||||
len = 4;
|
len = 2;
|
||||||
|
RIMESTATS_ADD(toolong);
|
||||||
} else {
|
} else {
|
||||||
rtimer_clock_t t;
|
rtimer_clock_t t;
|
||||||
// FASTSPI_READ_FIFO_NO_WAIT(&t, 2); /* Time stamp */
|
// FASTSPI_READ_FIFO_NO_WAIT(&t, 2); /* Time stamp */
|
||||||
|
@ -457,8 +466,13 @@ simple_cc2420_read(u8_t *buf, u16_t bufsize)
|
||||||
/* if((h.fc0 & FC0_TYPE_MASK) == FC0_TYPE_DATA) {
|
/* if((h.fc0 & FC0_TYPE_MASK) == FC0_TYPE_DATA) {
|
||||||
uip_len = len - 2;
|
uip_len = len - 2;
|
||||||
}*/
|
}*/
|
||||||
|
RIMESTATS_ADD(llrx);
|
||||||
|
} else {
|
||||||
|
RIMESTATS_ADD(badcrc);
|
||||||
|
len = 2;
|
||||||
}
|
}
|
||||||
// PRINTF("Time 0x%02x\n", t);
|
// PRINTF("Time 0x%02x\n", t);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue