From a61deb78f44309b995efca72c189112a905842c7 Mon Sep 17 00:00:00 2001 From: Mariano Alvira Date: Thu, 11 Mar 2010 15:18:29 -0500 Subject: [PATCH] add a way to disable FCS checking. --- lib/include/maca.h | 8 ++++++++ lib/maca.c | 3 +++ 2 files changed, 11 insertions(+) diff --git a/lib/include/maca.h b/lib/include/maca.h index 4abbdd788..1dcb72ef2 100644 --- a/lib/include/maca.h +++ b/lib/include/maca.h @@ -17,6 +17,10 @@ #define RTSO 15 /* reset slot counter */ #define ROLE 13 /* set if PAN coordinator */ #define NOFC 12 /* set to disable FCS */ +enum { + USE_FCS = 0, + NO_FCS = 1, +}; #define PRM 11 /* set for promiscuous mode */ #define REL 10 /* 1 for relative, 0 for absolute */ #define ASAP 9 /* 1 start now, 0 timer start */ @@ -124,6 +128,10 @@ volatile packet_t* get_free_packet(void); void free_packet(volatile packet_t *p); void free_all_packets(void); +/* set_fcs_mode(NO_FCS) to disable checksum filtering */ +extern volatile uint8_t fcs_mode; +#define set_fcs_mode(x) fcs_mode = (x) + extern void maca_rx_callback(volatile packet_t *p) __attribute__((weak)); /******************************************************************************/ diff --git a/lib/maca.c b/lib/maca.c index 0305ef828..094724e9b 100644 --- a/lib/maca.c +++ b/lib/maca.c @@ -46,6 +46,8 @@ static volatile uint8_t last_post = NO_POST; #define safe_irq_disable(x) volatile uint32_t saved_irq; saved_irq = *INTENABLE; disable_irq(x) #define irq_restore() *INTENABLE = saved_irq +volatile uint8_t fcs_mode = USE_FCS; + void maca_init(void) { reset_maca(); radio_init(); @@ -157,6 +159,7 @@ void post_receive(void) { enable_irq(MACA); *MACA_CONTROL = ( (1 << maca_ctrl_asap) | ( 4 << PRECOUNT) | + ( fcs_mode << NOFC ) | (1 << maca_ctrl_auto) | (1 << maca_ctrl_prm) | (maca_ctrl_seq_rx));