diff --git a/cpu/mc1322x/lib/include/maca.h b/cpu/mc1322x/lib/include/maca.h index a86ab5481..3cfd1ea7d 100644 --- a/cpu/mc1322x/lib/include/maca.h +++ b/cpu/mc1322x/lib/include/maca.h @@ -30,7 +30,7 @@ * This file is part of libmc1322x: see http://mc1322x.devl.org * for details. * - * $Id: maca.h,v 1.1 2010/06/10 14:55:39 maralvira Exp $ + * $Id: maca.h,v 1.2 2010/11/07 14:06:57 maralvira Exp $ */ #ifndef _MACA_H_ @@ -52,6 +52,8 @@ void check_maca(void); void set_power(uint8_t power); void set_channel(uint8_t chan); +extern uint8_t (*get_lqi)(void); + #define DEMOD_DCD 1 /* -96dBm, 22.2mA */ #define DEMOD_NCD 0 /* -100dBm, 24.2mA */ void set_demodulator_type(uint8_t demod); diff --git a/cpu/mc1322x/lib/include/packet.h b/cpu/mc1322x/lib/include/packet.h index 85fdf6a96..b5da583bb 100644 --- a/cpu/mc1322x/lib/include/packet.h +++ b/cpu/mc1322x/lib/include/packet.h @@ -30,7 +30,7 @@ * This file is part of libmc1322x: see http://mc1322x.devl.org * for details. * - * $Id: packet.h,v 1.1 2010/06/10 14:55:39 maralvira Exp $ + * $Id: packet.h,v 1.2 2010/11/07 14:06:57 maralvira Exp $ */ #ifndef PACKET_H @@ -51,6 +51,7 @@ struct packet { /* On TX this should be 0 */ /* On RX this should be 1 since the maca puts the length as the first byte*/ uint8_t offset; + uint8_t lqi; #if PACKET_STATS uint8_t seen; uint8_t post_tx; diff --git a/cpu/mc1322x/lib/maca.c b/cpu/mc1322x/lib/maca.c index 576804090..57e1ff834 100644 --- a/cpu/mc1322x/lib/maca.c +++ b/cpu/mc1322x/lib/maca.c @@ -30,7 +30,7 @@ * This file is part of libmc1322x: see http://mc1322x.devl.org * for details. * - * $Id: maca.c,v 1.5 2010/07/28 18:49:34 maralvira Exp $ + * $Id: maca.c,v 1.6 2010/11/07 14:06:58 maralvira Exp $ */ #include @@ -609,6 +609,7 @@ void maca_isr(void) { if (data_indication_irq()) { *MACA_CLRIRQ = (1 << maca_irq_di); dma_rx->length = *MACA_GETRXLVL - 2; /* packet length does not include FCS */ + dma_rx->lqi = get_lqi(); // PRINTF("maca data ind %x %d\n\r", dma_rx, dma_rx->length); if(maca_rx_callback != 0) { maca_rx_callback(dma_rx); } add_to_rx(dma_rx); @@ -1078,6 +1079,8 @@ void set_channel(uint8_t chan) { if(bit_is_set(*NIPEND, INT_NUM_MACA)) { *INTFRC = (1 << INT_NUM_MACA); } } +uint8_t (*get_lqi)(void) = (void *) 0x0000e04d; + #define ROM_END 0x0013ffff #define ENTRY_EOF 0x00000e0f /* processes up to 4 words of initialization entries */ diff --git a/cpu/mc1322x/tests/tests.c b/cpu/mc1322x/tests/tests.c index cb9e36976..7353877a6 100644 --- a/cpu/mc1322x/tests/tests.c +++ b/cpu/mc1322x/tests/tests.c @@ -30,7 +30,7 @@ * This file is part of libmc1322x: see http://mc1322x.devl.org * for details. * - * $Id: tests.c,v 1.1 2010/06/10 14:55:39 maralvira Exp $ + * $Id: tests.c,v 1.2 2010/11/07 14:06:58 maralvira Exp $ */ #include @@ -48,7 +48,7 @@ void print_packet(volatile packet_t *p) { volatile uint8_t i,j,k; #define PER_ROW 16 if(p) { - printf("len 0x%02x",p->length); + printf("len 0x%02x lqi 0x%02x", p->length, p->lqi); for(j=0, k=0; j <= ((p->length)%PER_ROW); j++) { printf("\n\r"); for(i=0; i < PER_ROW; i++, k++) {