diff --git a/ports/c16x/include/arch/cc.h b/ports/c16x/include/arch/cc.h index 480a6b3..e330958 100644 --- a/ports/c16x/include/arch/cc.h +++ b/ports/c16x/include/arch/cc.h @@ -20,6 +20,14 @@ typedef signed long s32_t; typedef u32_t mem_ptr_t; +/* Define (sn)printf formatters for these lwIP types */ +#define U16_F "hu" +#define S16_F "hd" +#define X16_F "hx" +#define U32_F "lu" +#define S32_F "ld" +#define X32_F "lx" + /* LW: Supported in at least >=v7.5 r2, but lwIP worked without the "_packed" attribute already */ #define PACK_STRUCT_BEGIN _packed #define PACK_STRUCT_STRUCT diff --git a/ports/c16x/include/netif/cs8900if.h b/ports/c16x/include/netif/cs8900if.h index 41e3417..1c74027 100644 --- a/ports/c16x/include/netif/cs8900if.h +++ b/ports/c16x/include/netif/cs8900if.h @@ -75,6 +75,6 @@ void cs8900if_service(struct netif *); void cs8900if_input(struct netif *netif); err_t cs8900if_output(struct netif *netif, struct pbuf *p, struct ip_addr *ipaddr); -void cs8900_send_debug(unsigned char *p, unsigned int len); +void cs8900_send_debug(u8_t *p, u16_t len); #endif /* __NETIF_CS8900IF_H__ */ diff --git a/ports/c16x/netif/cs8900if.c b/ports/c16x/netif/cs8900if.c index 7197275..c12b7bd 100644 --- a/ports/c16x/netif/cs8900if.c +++ b/ports/c16x/netif/cs8900if.c @@ -142,7 +142,7 @@ static const struct eth_addr ethbroadcast = {{0xffU,0xffU,0xffU,0xffU,0xffU,0xff static err_t cs8900_output(struct netif *netif, struct pbuf *p); static struct pbuf *cs8900_input(struct netif *netif); static void cs8900_service(struct netif *netif); -static u32_t cs8900_chksum(void *dataptr, int len); +static u32_t cs8900_chksum(void *dataptr, s16_t len); static void cs8900_reset(struct netif *netif); // Define these to match your hardware setup @@ -320,7 +320,7 @@ static err_t cs8900_init(struct netif *netif) */ static err_t cs8900_output(struct netif *netif, struct pbuf *p) { - int tries = 0; + s16_t tries = 0; err_t result; // exit if link has failed @@ -352,7 +352,7 @@ static err_t cs8900_output(struct netif *netif, struct pbuf *p) // ready to transmit? if ((PPDATA & 0x0100U/*Rdy4TxNOW*/) != 0) { - unsigned long sent_bytes = 0; + u32_t sent_bytes = 0; /* q traverses through linked list of pbuf's * This list MUST consist of a single packet ONLY */ struct pbuf *q; @@ -440,7 +440,7 @@ static struct pbuf *cs8900_input(struct netif *netif) event_type = 0; // read RxLength len = RXTXREG; - LWIP_DEBUGF(NETIF_DEBUG, ("cs8900_input: packet len %u\n", len)); + LWIP_DEBUGF(NETIF_DEBUG, ("cs8900_input: packet len %"U16_F"\n", len)); snmp_add_ifinoctets(len); // positive length? if (len > 0) @@ -456,7 +456,7 @@ static struct pbuf *cs8900_input(struct netif *netif) for (q = p; q != 0; q = q->next) { - LWIP_DEBUGF(NETIF_DEBUG, ("cs8900_input: pbuf @%p tot_len %u len %u\n", q, q->tot_len, q->len)); + LWIP_DEBUGF(NETIF_DEBUG, ("cs8900_input: pbuf @%p tot_len %"U16_F" len %"U16_F"\n", q, q->tot_len, q->len)); ptr = q->payload; // TODO: CHECK: what if q->len is odd? we don't use the last byte? for (i = 0; i < (q->len + 1) / 2; i++) @@ -509,9 +509,9 @@ static struct pbuf *cs8900_input(struct netif *netif) static void cs8900_service(struct netif *netif) { /* amount of ISQ's to handle (> 0) in one cs8900_service() call */ - unsigned char events2service = 1; + u8_t events2service = 1; #if (CS8900_STATS > 0) - unsigned int miss_count = 0, coll_count = 0; + u16_t miss_count = 0, coll_count = 0; #endif // NOTES: // static, so only initialized to zero at program start. @@ -595,10 +595,10 @@ static void cs8900_service(struct netif *netif) #if (CS8900_STATS > 0) /* copy statistics counters into netif state fields */ ((struct cs8900if *)netif->state)->missed += miss_count; - if (miss_count > 0) LWIP_DEBUGF(NETIF_DEBUG | 1, ("cs8900_input: %u missed packets due to rx buffer overrun\n", miss_count)); + if (miss_count > 0) LWIP_DEBUGF(NETIF_DEBUG | 1, ("cs8900_input: %"U16_F" missed packets due to rx buffer overrun\n", miss_count)); ((struct cs8900if *)netif->state)->collisions += coll_count; - if (coll_count > 0) LWIP_DEBUGF(NETIF_DEBUG | 1, ("cs8900_input: %u packet collisions\n", coll_count)); + if (coll_count > 0) LWIP_DEBUGF(NETIF_DEBUG | 1, ("cs8900_input: %"U16_F" packet collisions\n", coll_count)); #endif } @@ -776,9 +776,9 @@ err_t cs8900if_init(struct netif *netif) * @param p pointer to an array of bytes, at least with length 'len' * @param len number of bytes available at the address pointed to by 'p' */ -void cs8900_send_debug(unsigned char *p, unsigned int len) +void cs8900_send_debug(u8_t *p, u16_t len) { - int tries = 0, i; + s16_t tries = 0, i; // network interface state extern struct netif *ethif; @@ -887,7 +887,7 @@ void cs8900_send_debug(unsigned char *p, unsigned int len) } } -static u32_t cs8900_chksum(void *dataptr, int len) +static u32_t cs8900_chksum(void *dataptr, s16_t len) { u32_t acc = 0; u16_t *ptr = (u16_t *)dataptr; diff --git a/ports/unix/include/arch/cc.h b/ports/unix/include/arch/cc.h index fcf5961..5de2ec8 100644 --- a/ports/unix/include/arch/cc.h +++ b/ports/unix/include/arch/cc.h @@ -50,6 +50,14 @@ typedef signed long s32_t; typedef u32_t mem_ptr_t; +/* Define (sn)printf formatters for these lwIP types */ +#define U16_F "hu" +#define S16_F "hd" +#define X16_F "hx" +#define U32_F "lu" +#define S32_F "ld" +#define X32_F "lx" + /* Compiler hints for packing structures */ #define PACK_STRUCT_FIELD(x) x __attribute__((packed)) #define PACK_STRUCT_STRUCT __attribute__((packed)) diff --git a/ports/unix/proj/unixsim/Makefile b/ports/unix/proj/unixsim/Makefile index f3db66f..ddf5aff 100644 --- a/ports/unix/proj/unixsim/Makefile +++ b/ports/unix/proj/unixsim/Makefile @@ -54,7 +54,7 @@ CFLAGS:=$(CFLAGS) \ COREFILES=$(LWIPDIR)/core/mem.c $(LWIPDIR)/core/memp.c $(LWIPDIR)/core/netif.c \ $(LWIPDIR)/core/pbuf.c $(LWIPDIR)/core/raw.c $(LWIPDIR)/core/stats.c \ $(LWIPDIR)/core/sys.c $(LWIPDIR)/core/tcp.c $(LWIPDIR)/core/tcp_in.c \ - $(LWIPDIR)/core/tcp_out.c $(LWIPDIR)/core/udp.c + $(LWIPDIR)/core/tcp_out.c $(LWIPDIR)/core/udp.c $(LWIPDIR)/core/dhcp.c CORE4FILES=$(wildcard $(LWIPDIR)/core/ipv4/*.c) $(LWIPDIR)/core/inet.c diff --git a/ports/unix/proj/unixsim/lwipopts.h b/ports/unix/proj/unixsim/lwipopts.h index 9dc341d..315adce 100644 --- a/ports/unix/proj/unixsim/lwipopts.h +++ b/ports/unix/proj/unixsim/lwipopts.h @@ -188,8 +188,7 @@ a lot of data that needs to be copied, this should be set high. */ /* ---------- DHCP options ---------- */ /* Define LWIP_DHCP to 1 if you want DHCP configuration of - interfaces. DHCP is not implemented in lwIP 0.5.1, however, so - turning this on does currently not work. */ + interfaces. */ #define LWIP_DHCP 0 /* 1 if you want to do an ARP check on the offered address diff --git a/ports/unix/proj/unixsim/simhost.c b/ports/unix/proj/unixsim/simhost.c index 8471c46..9278d9d 100644 --- a/ports/unix/proj/unixsim/simhost.c +++ b/ports/unix/proj/unixsim/simhost.c @@ -320,7 +320,6 @@ main_thread(void *arg) netif_add(&netif, &ipaddr, &netmask, &gw, NULL, tapif_init, tcpip_input); netif_set_default(&netif); - dhcp_init(); dhcp_start(&netif); } #else