Removed reliance on a large uIP buffer configuration. Now internally uses 2048 bytes buffers regardless of uIP buffer size
This commit is contained in:
parent
4a3f6b5e97
commit
8935ccb74f
2 changed files with 24 additions and 17 deletions
|
@ -30,7 +30,7 @@
|
||||||
*
|
*
|
||||||
* Author: Adam Dunkels <adam@sics.se>
|
* Author: Adam Dunkels <adam@sics.se>
|
||||||
*
|
*
|
||||||
* $Id: ether.c,v 1.6 2007/03/22 18:59:34 adamdunkels Exp $
|
* $Id: ether.c,v 1.7 2007/03/29 22:25:25 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
* \file
|
* \file
|
||||||
|
@ -74,12 +74,13 @@
|
||||||
MEMB(packets, struct ether_packet, 20000);
|
MEMB(packets, struct ether_packet, 20000);
|
||||||
LIST(active_packets);
|
LIST(active_packets);
|
||||||
|
|
||||||
static u8_t rxbuffer[2000];
|
static u8_t rxbuffer[2048];
|
||||||
static clock_time_t timer;
|
static clock_time_t timer;
|
||||||
|
|
||||||
#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
|
#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
|
||||||
|
|
||||||
#define PRINTF(x) printf x
|
#define PRINTF(...)
|
||||||
|
/*#define PRINTF(x) printf x*/
|
||||||
|
|
||||||
static int s, sc;
|
static int s, sc;
|
||||||
|
|
||||||
|
@ -257,13 +258,18 @@ ether_client_read(u8_t *buf, int bufsize)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if(FD_ISSET(sc, &fdset)) {
|
if(FD_ISSET(sc, &fdset)) {
|
||||||
ret = recv(sc, &rxbuffer[0], bufsize, 0);
|
ret = recv(sc, &rxbuffer[0], sizeof(rxbuffer), 0);
|
||||||
if(ret == -1) {
|
if(ret == -1) {
|
||||||
perror("ether_client_poll: read");
|
perror("ether_client_poll: read");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
len = ret;
|
len = ret;
|
||||||
|
|
||||||
|
if(len > bufsize) {
|
||||||
|
PRINTF("ether_client_read: packet truncated from %d to %d\n",
|
||||||
|
len, bufsize);
|
||||||
|
len = bufsize;
|
||||||
|
}
|
||||||
memcpy(buf, &rxbuffer[sizeof(struct ether_hdr)], len);
|
memcpy(buf, &rxbuffer[sizeof(struct ether_hdr)], len);
|
||||||
radio_sensor_signal = hdr->signal;
|
radio_sensor_signal = hdr->signal;
|
||||||
|
|
||||||
|
@ -309,14 +315,15 @@ ether_server_poll(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(FD_ISSET(s, &fdset)) {
|
if(FD_ISSET(s, &fdset)) {
|
||||||
ret = recv(s, &rxbuffer[0], UIP_BUFSIZE, 0);
|
ret = recv(s, &rxbuffer[0], sizeof(rxbuffer), 0);
|
||||||
if(ret == -1) {
|
if(ret == -1) {
|
||||||
perror("ether_poll: read");
|
perror("ether_poll: read");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch(hdr->type) {
|
switch(hdr->type) {
|
||||||
case PTYPE_DATA:
|
case PTYPE_DATA:
|
||||||
/* printf("ether_poll: read %d bytes from (%d, %d)\n", ret, hdr->srcx, hdr->srcy);*/
|
PRINTF("ether_poll: read %d bytes from (%d, %d)\n",
|
||||||
|
ret, hdr->srcx, hdr->srcy);
|
||||||
ether_put(rxbuffer, ret, hdr->srcx, hdr->srcy);
|
ether_put(rxbuffer, ret, hdr->srcx, hdr->srcy);
|
||||||
break;
|
break;
|
||||||
case PTYPE_LEDS:
|
case PTYPE_LEDS:
|
||||||
|
@ -493,7 +500,7 @@ node_send_packet(char *data, int len)
|
||||||
u8_t
|
u8_t
|
||||||
ether_send(char *data, int len)
|
ether_send(char *data, int len)
|
||||||
{
|
{
|
||||||
char tmpbuf[UIP_BUFSIZE + UIP_LLH_LEN + sizeof(struct ether_hdr)];
|
char tmpbuf[2048];
|
||||||
struct ether_hdr *hdr = (struct ether_hdr *)tmpbuf;
|
struct ether_hdr *hdr = (struct ether_hdr *)tmpbuf;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
*
|
*
|
||||||
* Author: Adam Dunkels <adam@sics.se>
|
* Author: Adam Dunkels <adam@sics.se>
|
||||||
*
|
*
|
||||||
* $Id: ethernode.c,v 1.6 2007/03/22 18:59:34 adamdunkels Exp $
|
* $Id: ethernode.c,v 1.7 2007/03/29 22:25:52 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
* \file
|
* \file
|
||||||
|
@ -53,8 +53,8 @@
|
||||||
|
|
||||||
#define BUF ((uip_tcpip_hdr *)&uip_buf[HDR_LEN])
|
#define BUF ((uip_tcpip_hdr *)&uip_buf[HDR_LEN])
|
||||||
|
|
||||||
/*#define PRINTF(x)*/
|
#define PRINTF(...)
|
||||||
#define PRINTF(x) printf x; fflush(NULL)
|
/*#define PRINTF(x) printf x; fflush(NULL)*/
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u8_t id;
|
u8_t id;
|
||||||
|
@ -90,7 +90,7 @@ do_send(u8_t type, u8_t dest, struct hdr *hdr, int len)
|
||||||
|
|
||||||
++state.seqno;
|
++state.seqno;
|
||||||
|
|
||||||
/* printf("ether_send len %d\n", len);*/
|
PRINTF("ether_send len %d\n", len);
|
||||||
return ether_send((char *)hdr, len);
|
return ether_send((char *)hdr, len);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -125,10 +125,10 @@ int
|
||||||
ethernode_read(u8_t *buf, int bufsize)
|
ethernode_read(u8_t *buf, int bufsize)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
u8_t tmpbuf[UIP_BUFSIZE];
|
u8_t tmpbuf[2048];
|
||||||
struct hdr *hdr = (struct hdr *)tmpbuf;
|
struct hdr *hdr = (struct hdr *)tmpbuf;
|
||||||
|
|
||||||
len = ether_client_read(tmpbuf, UIP_BUFSIZE);
|
len = ether_client_read(tmpbuf, sizeof(tmpbuf));
|
||||||
if(len == 0) {
|
if(len == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -170,11 +170,11 @@ u8_t
|
||||||
ethernode_send(void)
|
ethernode_send(void)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
static char tmpbuf[UIP_BUFSIZE + HDR_LEN];
|
static char tmpbuf[2048];
|
||||||
struct hdr *hdr = (struct hdr *)tmpbuf;
|
struct hdr *hdr = (struct hdr *)tmpbuf;
|
||||||
u8_t dest;
|
u8_t dest;
|
||||||
|
|
||||||
if(uip_len > UIP_BUFSIZE) {
|
if(uip_len > sizeof(tmpbuf)) {
|
||||||
PRINTF(("Ethernode_send: too large uip_len %d\n", uip_len));
|
PRINTF(("Ethernode_send: too large uip_len %d\n", uip_len));
|
||||||
return UIP_FW_TOOLARGE;
|
return UIP_FW_TOOLARGE;
|
||||||
}
|
}
|
||||||
|
@ -194,7 +194,7 @@ ethernode_send(void)
|
||||||
void
|
void
|
||||||
ethernode_send_buf(u8_t *buf, int len)
|
ethernode_send_buf(u8_t *buf, int len)
|
||||||
{
|
{
|
||||||
char tmpbuf[UIP_BUFSIZE + HDR_LEN];
|
char tmpbuf[2048];
|
||||||
struct hdr *hdr = (struct hdr *)tmpbuf;
|
struct hdr *hdr = (struct hdr *)tmpbuf;
|
||||||
u8_t dest;
|
u8_t dest;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue