Free (GPLv2) TCP/IP stack developed by TASS Belgium
Dependents: lpc1768-picotcp-demo ZeroMQ_PicoTCP_Publisher_demo TCPSocket_HelloWorld_PicoTCP Pico_TCP_UDP_Test ... more
PicoTCP. Copyright (c) 2013 TASS Belgium NV.
Released under the GNU General Public License, version 2.
Different licensing models may exist, at the sole discretion of the Copyright holders.
Official homepage: http://www.picotcp.com
Bug tracker: https://github.com/tass-belgium/picotcp/issues
Development steps:
initial integration with mbed RTOSgeneric mbed Ethernet driverhigh performance NXP LPC1768 specific Ethernet driverMulti-threading support for mbed RTOSBerkeley sockets and integration with the New Socket APIFork of the apps running on top of the New Socket APIScheduling optimizations- Debugging/benchmarking/testing
Demo application (measuring TCP sender performance):
Import programlpc1768-picotcp-demo
A PicoTCP demo app testing the ethernet throughput on the lpc1768 mbed board.
Revision 150:551effcf6a39, committed 2014-04-09
- Comitter:
- tass picotcp@tass.be
- Date:
- Wed Apr 09 15:43:37 2014 +0200
- Parent:
- 149:5f4cb161cec3
- Child:
- 151:dbbb7e41f583
- Commit message:
- Fixed some warnings
Changed in this revision
--- a/modules/pico_mm.h Wed Apr 09 14:31:41 2014 +0200 +++ b/modules/pico_mm.h Wed Apr 09 15:43:37 2014 +0200 @@ -23,7 +23,7 @@ * Memory deinit function, this will free all memory occupied by the current * memory manager instance. */ -void pico_mem_deinit(); +void pico_mem_deinit(void); /* * Zero-initialized malloc function, will reserve a memory segment of length uint32_t len * This memory will be quickly allocated in a slab of fixed size if possible @@ -71,7 +71,7 @@ * This function prints the general structure of the memory manager * Printf in this function can be rerouted to send this data over a serial port, or to write it away to memory */ -void pico_mem_profile_scan_data(); +void pico_mem_profile_scan_data(void); /* * This function returns the total size that the manager has received from the system @@ -80,14 +80,14 @@ * Together with pico_mem_profile_collect_data, this can give a good estimation of the total * resource commitment */ -uint32_t pico_mem_profile_used_size(); +uint32_t pico_mem_profile_used_size(void); /* * This function returns a pointer to page 0, the main memory manager housekeeping (struct pico_mem_manager). * This can be used to collect data about the memory in user defined functions. * Use with care! */ -void*pico_mem_profile_manager(); +void*pico_mem_profile_manager(void); /* * paramter manager is a pointer to a struct pico_mem_manager
--- a/modules/pico_socket_tcp.c Wed Apr 09 14:31:41 2014 +0200 +++ b/modules/pico_socket_tcp.c Wed Apr 09 15:43:37 2014 +0200 @@ -199,8 +199,9 @@ return (int)(pico_tcp_read(s, buf, (uint32_t)len)); } +#else + return 0; #endif - return 0; } void transport_flags_update(struct pico_frame *f, struct pico_socket *s)
--- a/stack/pico_socket.c Wed Apr 09 14:31:41 2014 +0200 +++ b/stack/pico_socket.c Wed Apr 09 15:43:37 2014 +0200 @@ -91,10 +91,10 @@ int ret = 0; (void)a; (void)b; +#ifdef PICO_SUPPORT_IPV6 if (!is_sock_ipv6(a) || !is_sock_ipv6(b)) return 0; -#ifdef PICO_SUPPORT_IPV6 if ((memcmp(a->local_addr.ip6.addr, PICO_IP6_ANY, PICO_SIZE_IP6) == 0) || (memcmp(b->local_addr.ip6.addr, PICO_IP6_ANY, PICO_SIZE_IP6) == 0)) ret = 0; else
--- a/stack/pico_stack.c Wed Apr 09 14:31:41 2014 +0200 +++ b/stack/pico_stack.c Wed Apr 09 15:43:37 2014 +0200 @@ -260,20 +260,17 @@ { struct pico_eth_hdr *hdr = (struct pico_eth_hdr *) f->datalink_hdr; f->net_hdr = f->datalink_hdr + sizeof(struct pico_eth_hdr); - if (0) { } #if (defined PICO_SUPPORT_IPV4) && (defined PICO_SUPPORT_ETH) - else if (hdr->proto == PICO_IDETH_ARP) + if (hdr->proto == PICO_IDETH_ARP) return pico_arp_receive(f); #endif #if defined (PICO_SUPPORT_IPV4) || defined (PICO_SUPPORT_IPV6) - else if ((hdr->proto == PICO_IDETH_IPV4) || (hdr->proto == PICO_IDETH_IPV6)) + if ((hdr->proto == PICO_IDETH_IPV4) || (hdr->proto == PICO_IDETH_IPV6)) return pico_network_receive(f); #endif - else { - pico_frame_discard(f); - return -1; - } + pico_frame_discard(f); + return -1; } static void pico_ll_check_bcast(struct pico_frame *f)