send only packets in the request set. reset the request set immediately
after sending the packets.
This commit is contained in:
parent
f5f52ffd1f
commit
ddbc5a9555
1 changed files with 10 additions and 8 deletions
|
@ -28,7 +28,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: deluge.c,v 1.5 2009/03/12 21:58:20 adamdunkels Exp $
|
* $Id: deluge.c,v 1.6 2009/04/07 14:07:39 nvt-se Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -60,7 +60,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#define DEBUG 1
|
#define DEBUG 0
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#define PRINTF(...) \
|
#define PRINTF(...) \
|
||||||
|
@ -373,13 +373,15 @@ send_page(struct deluge_object *obj, unsigned pagenum)
|
||||||
|
|
||||||
/* Divide the page into packets and send them one at a time. */
|
/* Divide the page into packets and send them one at a time. */
|
||||||
for(cp = buf; cp + S_PKT <= (unsigned char *)&buf[S_PAGE]; cp += S_PKT) {
|
for(cp = buf; cp + S_PKT <= (unsigned char *)&buf[S_PAGE]; cp += S_PKT) {
|
||||||
|
if(obj->tx_set & (1 << pkt.packetnum)) {
|
||||||
pkt.crc = checksum(cp, S_PKT);
|
pkt.crc = checksum(cp, S_PKT);
|
||||||
memcpy(pkt.payload, cp, S_PKT);
|
memcpy(pkt.payload, cp, S_PKT);
|
||||||
packetbuf_copyfrom((uint8_t *)&pkt, sizeof (pkt));
|
packetbuf_copyfrom((uint8_t *)&pkt, sizeof (pkt));
|
||||||
broadcast_send(&deluge_broadcast);
|
broadcast_send(&deluge_broadcast);
|
||||||
|
|
||||||
obj->tx_set &= ~(1 << pkt.packetnum++);
|
|
||||||
}
|
}
|
||||||
|
pkt.packetnum++;
|
||||||
|
}
|
||||||
|
obj->tx_set = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in a new issue