add NULLRDC_CONF_802154_AUTOACK_HW for radios that only pass-up NOACK
status but not the actual ack packet.
This commit is contained in:
parent
a8f9119ace
commit
e826ccd3b9
|
@ -42,6 +42,7 @@
|
||||||
#include "net/mac/nullrdc.h"
|
#include "net/mac/nullrdc.h"
|
||||||
#include "net/packetbuf.h"
|
#include "net/packetbuf.h"
|
||||||
#include "net/netstack.h"
|
#include "net/netstack.h"
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#define DEBUG 0
|
#define DEBUG 0
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
@ -59,6 +60,14 @@
|
||||||
#endif /* NULLRDC_CONF_802154_AUTOACK */
|
#endif /* NULLRDC_CONF_802154_AUTOACK */
|
||||||
#endif /* NULLRDC_802154_AUTOACK */
|
#endif /* NULLRDC_802154_AUTOACK */
|
||||||
|
|
||||||
|
#ifndef NULLRDC_802154_AUTOACK_HW
|
||||||
|
#ifdef NULLRDC_CONF_802154_AUTOACK_HW
|
||||||
|
#define NULLRDC_802154_AUTOACK_HW NULLRDC_CONF_802154_AUTOACK_HW
|
||||||
|
#else
|
||||||
|
#define NULLRDC_802154_AUTOACK_HW 0
|
||||||
|
#endif /* NULLRDC_CONF_802154_AUTOACK_HW */
|
||||||
|
#endif /* NULLRDC_802154_AUTOACK_HW */
|
||||||
|
|
||||||
#if NULLRDC_802154_AUTOACK
|
#if NULLRDC_802154_AUTOACK
|
||||||
#include "sys/rtimer.h"
|
#include "sys/rtimer.h"
|
||||||
#include "dev/watchdog.h"
|
#include "dev/watchdog.h"
|
||||||
|
@ -66,7 +75,9 @@
|
||||||
#define ACK_WAIT_TIME RTIMER_SECOND / 2500
|
#define ACK_WAIT_TIME RTIMER_SECOND / 2500
|
||||||
#define AFTER_ACK_DETECTED_WAIT_TIME RTIMER_SECOND / 1500
|
#define AFTER_ACK_DETECTED_WAIT_TIME RTIMER_SECOND / 1500
|
||||||
#define ACK_LEN 3
|
#define ACK_LEN 3
|
||||||
|
#endif /* NULLRDC_802154_AUTOACK */
|
||||||
|
|
||||||
|
#if NULLRDC_802154_AUTOACK || NULLRDC_802154_AUTOACK_HW
|
||||||
struct seqno {
|
struct seqno {
|
||||||
rimeaddr_t sender;
|
rimeaddr_t sender;
|
||||||
uint8_t seqno;
|
uint8_t seqno;
|
||||||
|
@ -79,7 +90,7 @@ struct seqno {
|
||||||
#endif /* NETSTACK_CONF_MAC_SEQNO_HISTORY */
|
#endif /* NETSTACK_CONF_MAC_SEQNO_HISTORY */
|
||||||
|
|
||||||
static struct seqno received_seqnos[MAX_SEQNOS];
|
static struct seqno received_seqnos[MAX_SEQNOS];
|
||||||
#endif /* NULLRDC_802154_AUTOACK */
|
#endif /* NULLRDC_802154_AUTOACK || NULLRDC_802154_AUTOACK_HW */
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
|
@ -87,9 +98,9 @@ send_packet(mac_callback_t sent, void *ptr)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
packetbuf_set_addr(PACKETBUF_ADDR_SENDER, &rimeaddr_node_addr);
|
packetbuf_set_addr(PACKETBUF_ADDR_SENDER, &rimeaddr_node_addr);
|
||||||
#if NULLRDC_802154_AUTOACK
|
#if NULLRDC_802154_AUTOACK || NULLRDC_802154_AUTOACK_HW
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_MAC_ACK, 1);
|
packetbuf_set_attr(PACKETBUF_ATTR_MAC_ACK, 1);
|
||||||
#endif /* NULLRDC_802154_AUTOACK */
|
#endif /* NULLRDC_802154_AUTOACK || NULLRDC_802154_AUTOACK_HW */
|
||||||
|
|
||||||
if(NETSTACK_FRAMER.create() == 0) {
|
if(NETSTACK_FRAMER.create() == 0) {
|
||||||
/* Failed to allocate space for headers */
|
/* Failed to allocate space for headers */
|
||||||
|
@ -196,7 +207,7 @@ packet_input(void)
|
||||||
if(NETSTACK_FRAMER.parse() == 0) {
|
if(NETSTACK_FRAMER.parse() == 0) {
|
||||||
PRINTF("nullrdc: failed to parse %u\n", packetbuf_datalen());
|
PRINTF("nullrdc: failed to parse %u\n", packetbuf_datalen());
|
||||||
} else {
|
} else {
|
||||||
#if NULLRDC_802154_AUTOACK
|
#if NULLRDC_802154_AUTOACK || NULLRDC_802154_AUTOACK_HW
|
||||||
/* Check for duplicate packet by comparing the sequence number
|
/* Check for duplicate packet by comparing the sequence number
|
||||||
of the incoming packet with the last few ones we saw. */
|
of the incoming packet with the last few ones we saw. */
|
||||||
int i;
|
int i;
|
||||||
|
|
|
@ -84,7 +84,8 @@
|
||||||
#define CONTIKI_MACA_RAW_MODE 0
|
#define CONTIKI_MACA_RAW_MODE 0
|
||||||
#define USE_32KHZ_XTAL 0
|
#define USE_32KHZ_XTAL 0
|
||||||
|
|
||||||
#define BLOCKING_TX 0
|
#define BLOCKING_TX 1
|
||||||
|
#define NULLRDC_CONF_802154_AUTOACK_HW 1
|
||||||
|
|
||||||
/* end of mc1322x specific config. */
|
/* end of mc1322x specific config. */
|
||||||
|
|
||||||
|
|
|
@ -422,6 +422,29 @@ main(void)
|
||||||
RF_CHANNEL);
|
RF_CHANNEL);
|
||||||
#endif /* WITH_UIP6 */
|
#endif /* WITH_UIP6 */
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
*MACA_MACPANID = 0xcdab; /* this is the hardcoded contiki pan, register is PACKET order */
|
||||||
|
*MACA_MAC16ADDR = 0xffff; /* short addressing isn't used, set this to 0xffff for now */
|
||||||
|
|
||||||
|
*MACA_MAC64HI =
|
||||||
|
addr.u8[0] << 24 |
|
||||||
|
addr.u8[1] << 16 |
|
||||||
|
addr.u8[2] << 8 |
|
||||||
|
addr.u8[3];
|
||||||
|
*MACA_MAC64LO =
|
||||||
|
addr.u8[4] << 24 |
|
||||||
|
addr.u8[5] << 16 |
|
||||||
|
addr.u8[6] << 8 |
|
||||||
|
addr.u8[7];
|
||||||
|
PRINTF("setting panid 0x%04x\n\r", *MACA_MACPANID);
|
||||||
|
PRINTF("setting short mac 0x%04x\n\r", *MACA_MAC16ADDR);
|
||||||
|
PRINTF("setting long mac 0x%08x_%08x\n\r", *MACA_MAC64HI, *MACA_MAC64LO);
|
||||||
|
|
||||||
|
#if NULLRDC_CONF_802154_AUTOACK_HW
|
||||||
|
set_prm_mode(AUTOACK);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if PROFILE_CONF_ON
|
#if PROFILE_CONF_ON
|
||||||
profile_init();
|
profile_init();
|
||||||
#endif /* PROFILE_CONF_ON */
|
#endif /* PROFILE_CONF_ON */
|
||||||
|
|
Loading…
Reference in a new issue