diff options
author | Cristian Maglie <c.maglie@bug.st> | 2013-03-20 11:35:55 +0100 |
---|---|---|
committer | Cristian Maglie <c.maglie@bug.st> | 2013-03-20 11:35:55 +0100 |
commit | c2de020c3d19abe01a8e903926eede69106fa9d5 (patch) | |
tree | 26b2d5748bf095bbb2da0f6acbacf163b728ae61 /firmwares/wifishield/wifiHD/src/ard_utils.c | |
parent | 84d842a16f05dc2de368d5205bd63fab2d5987e9 (diff) | |
parent | f0ba738a71ec8dafe4705ddd02c07a2eb880655c (diff) |
Merge remote-tracking branch 'mlafauci/wifishield-bugfix' into HEAD
Diffstat (limited to 'firmwares/wifishield/wifiHD/src/ard_utils.c')
-rw-r--r-- | firmwares/wifishield/wifiHD/src/ard_utils.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/firmwares/wifishield/wifiHD/src/ard_utils.c b/firmwares/wifishield/wifiHD/src/ard_utils.c index 39c19dd..c2937d8 100644 --- a/firmwares/wifishield/wifiHD/src/ard_utils.c +++ b/firmwares/wifishield/wifiHD/src/ard_utils.c @@ -78,6 +78,8 @@ uint16_t calcMergeLen(uint8_t sock) if (pBufStore[index][sock].data != NULL) { len += pBufStore[index][sock].len; + len -= pBufStore[index][sock].idx; + INFO_UTIL_VER(" [%d]: len:%d idx:%d tot:%d\n", sock, pBufStore[index][sock].len, pBufStore[index][sock].idx, len); } ++index; if (index == MAX_PBUF_STORED) @@ -179,7 +181,8 @@ void dumpPbuf(uint8_t sock) do { if (pBufStore[index][sock].data != NULL) { - printk("Buf: %p Len:%d\n", pBufStore[index][sock].data, pBufStore[index][sock].len); + printk("%d] pcb:%p Buf: %p Len:%d\n", pBufStore[index][sock].idx, pBufStore[index][sock].pcb, + pBufStore[index][sock].data, pBufStore[index][sock].len); } ++index; if (index == MAX_PBUF_STORED) @@ -245,7 +248,7 @@ void ack_recved(void* pcb, int len); void ackAndFreeData(void* pcb, int len, uint8_t sock, uint8_t* data) { - INFO_UTIL("Ack pcb:%p len:%d sock:%d data:%p\n", pcb, len, sock, data); + INFO_TCP("Ack pcb:%p len:%d sock:%d data:%p\n", pcb, len, sock, data); if (!IS_UDP_SOCK(sock)) ack_recved(pcb, len); if (data != NULL) @@ -276,7 +279,7 @@ bool isAvailTcpDataByte(uint8_t sock) uint16_t getAvailTcpDataByte(uint8_t sock) { uint16_t len = calcMergeLen(sock); - INFO_UTIL("Availabled data: %d\n", len); + INFO_UTIL_VER("Availabled data: %d\n", len); return len; } @@ -296,6 +299,8 @@ bool getTcpDataByte(uint8_t sock, uint8_t* payload, uint8_t peek) else *payload = buf[p->idx++]; INFO_UTIL_VER("get:%d %p %d\n",p->idx, p->data, *payload); + if (p->idx == p->len) + ackAndFreeData(p->pcb, p->len, sock, p->data); return true; }else{ ackAndFreeData(p->pcb, p->len, sock, p->data); |