bugfix: transfer did not terminate correctly when last packet was full
This commit is contained in:
parent
f916f2fe24
commit
f8e0da428a
2 changed files with 12 additions and 1 deletions
|
@ -71,11 +71,20 @@ static void
|
||||||
acked(struct runicast_conn *ruc, const rimeaddr_t *to, uint8_t retransmissions)
|
acked(struct runicast_conn *ruc, const rimeaddr_t *to, uint8_t retransmissions)
|
||||||
{
|
{
|
||||||
struct rucb_conn *c = (struct rucb_conn *)ruc;
|
struct rucb_conn *c = (struct rucb_conn *)ruc;
|
||||||
|
int len;
|
||||||
PRINTF("%d.%d: rucb acked\n",
|
PRINTF("%d.%d: rucb acked\n",
|
||||||
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1]);
|
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1]);
|
||||||
c->chunk++;
|
c->chunk++;
|
||||||
if(read_data(c) > 0) {
|
len = read_data(c);
|
||||||
|
if(len == 0 && c->last_size == 0) {
|
||||||
|
/* Nothing more to do */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(len >= 0) {
|
||||||
runicast_send(&c->c, &c->receiver, MAX_TRANSMISSIONS);
|
runicast_send(&c->c, &c->receiver, MAX_TRANSMISSIONS);
|
||||||
|
c->last_size = len;
|
||||||
|
|
||||||
/* {
|
/* {
|
||||||
extern struct timetable cc2420_timetable;
|
extern struct timetable cc2420_timetable;
|
||||||
timetable_print(&cc2420_timetable);
|
timetable_print(&cc2420_timetable);
|
||||||
|
@ -146,6 +155,7 @@ rucb_open(struct rucb_conn *c, uint16_t channel,
|
||||||
runicast_open(&c->c, channel, &ruc);
|
runicast_open(&c->c, channel, &ruc);
|
||||||
c->u = u;
|
c->u = u;
|
||||||
c->last_seqno = -1;
|
c->last_seqno = -1;
|
||||||
|
c->last_size = -1;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
|
|
|
@ -67,6 +67,7 @@ struct rucb_conn {
|
||||||
rimeaddr_t receiver, sender;
|
rimeaddr_t receiver, sender;
|
||||||
uint16_t chunk;
|
uint16_t chunk;
|
||||||
uint8_t last_seqno;
|
uint8_t last_seqno;
|
||||||
|
int last_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
void rucb_open(struct rucb_conn *c, uint16_t channel,
|
void rucb_open(struct rucb_conn *c, uint16_t channel,
|
||||||
|
|
Loading…
Add table
Reference in a new issue