Free (GPLv2) TCP/IP stack developed by TASS Belgium

Fork of PicoTCP by Daniele Lacamera

Committer:
tass
Date:
Fri May 17 12:09:59 2013 +0000
Revision:
1:cfe8984a32b4
Parent:
libraries/picotcp/include/pico_constants.h@0:d7f2341ab245
Update for smaller SOCKETQ

Who changed what in which revision?

UserRevisionLine numberNew contents of line
daniele 0:d7f2341ab245 1 /*********************************************************************
daniele 0:d7f2341ab245 2 PicoTCP. Copyright (c) 2012 TASS Belgium NV. Some rights reserved.
daniele 0:d7f2341ab245 3 See LICENSE and COPYING for usage.
daniele 0:d7f2341ab245 4
daniele 0:d7f2341ab245 5 *********************************************************************/
daniele 0:d7f2341ab245 6 #ifndef _INCLUDE_PICO_CONST
daniele 0:d7f2341ab245 7 #define _INCLUDE_PICO_CONST
daniele 0:d7f2341ab245 8 /* Included from pico_config.h */
daniele 0:d7f2341ab245 9 /** Endian-dependant constants **/
daniele 0:d7f2341ab245 10
daniele 0:d7f2341ab245 11 extern volatile unsigned long pico_tick;
daniele 0:d7f2341ab245 12
daniele 0:d7f2341ab245 13 #ifdef PICO_BIGENDIAN
daniele 0:d7f2341ab245 14
daniele 0:d7f2341ab245 15 # define PICO_IDETH_IPV4 0x0800
daniele 0:d7f2341ab245 16 # define PICO_IDETH_ARP 0x0806
daniele 0:d7f2341ab245 17 # define PICO_IDETH_IPV6 0x86DD
daniele 0:d7f2341ab245 18
daniele 0:d7f2341ab245 19 # define PICO_ARP_REQUEST 0x0001
daniele 0:d7f2341ab245 20 # define PICO_ARP_REPLY 0x0002
daniele 0:d7f2341ab245 21 # define PICO_ARP_HTYPE_ETH 0x0001
daniele 0:d7f2341ab245 22
daniele 0:d7f2341ab245 23 #define short_be(x) (x)
daniele 0:d7f2341ab245 24 #define long_be(x) (x)
daniele 0:d7f2341ab245 25
daniele 0:d7f2341ab245 26 #else
daniele 0:d7f2341ab245 27
daniele 0:d7f2341ab245 28 # define PICO_IDETH_IPV4 0x0008
daniele 0:d7f2341ab245 29 # define PICO_IDETH_ARP 0x0608
daniele 0:d7f2341ab245 30 # define PICO_IDETH_IPV6 0xDD86
daniele 0:d7f2341ab245 31
daniele 0:d7f2341ab245 32 # define PICO_ARP_REQUEST 0x0100
daniele 0:d7f2341ab245 33 # define PICO_ARP_REPLY 0x0200
daniele 0:d7f2341ab245 34 # define PICO_ARP_HTYPE_ETH 0x0100
daniele 0:d7f2341ab245 35
daniele 0:d7f2341ab245 36 static inline uint16_t short_be(uint16_t le)
daniele 0:d7f2341ab245 37 {
daniele 0:d7f2341ab245 38 return ((le & 0xFF) << 8) | ((le >> 8) & 0xFF);
daniele 0:d7f2341ab245 39 }
daniele 0:d7f2341ab245 40
daniele 0:d7f2341ab245 41 static inline uint32_t long_be(uint32_t le)
daniele 0:d7f2341ab245 42 {
daniele 0:d7f2341ab245 43 uint8_t *b = (uint8_t *)&le;
daniele 0:d7f2341ab245 44 uint32_t be = 0;
daniele 0:d7f2341ab245 45 uint32_t b0, b1, b2;
daniele 0:d7f2341ab245 46 b0 = b[0];
daniele 0:d7f2341ab245 47 b1 = b[1];
daniele 0:d7f2341ab245 48 b2 = b[2];
daniele 0:d7f2341ab245 49 be = b[3] + (b2 << 8) + (b1 << 16) + (b0 << 24);
daniele 0:d7f2341ab245 50 return be;
daniele 0:d7f2341ab245 51 }
daniele 0:d7f2341ab245 52 #endif
daniele 0:d7f2341ab245 53
daniele 0:d7f2341ab245 54
daniele 0:d7f2341ab245 55 /* Add well-known host numbers here. (bigendian constants only beyond this point) */
daniele 0:d7f2341ab245 56 #define PICO_IP4_ANY (0x00000000U)
daniele 0:d7f2341ab245 57 #define PICO_IP4_BCAST (0xffffffffU)
daniele 0:d7f2341ab245 58
daniele 0:d7f2341ab245 59 /* defined in modules/pico_ipv6.c */
daniele 0:d7f2341ab245 60 #ifdef PICO_SUPPORT_IPV6
daniele 0:d7f2341ab245 61 extern const uint8_t PICO_IPV6_ANY[PICO_SIZE_IP6];
daniele 0:d7f2341ab245 62 #endif
daniele 0:d7f2341ab245 63
daniele 0:d7f2341ab245 64 static inline uint32_t pico_hash(char *name)
daniele 0:d7f2341ab245 65 {
daniele 0:d7f2341ab245 66 unsigned long hash = 5381;
daniele 0:d7f2341ab245 67 int c;
daniele 0:d7f2341ab245 68 while ((c = *name++))
daniele 0:d7f2341ab245 69 hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
daniele 0:d7f2341ab245 70 return hash;
daniele 0:d7f2341ab245 71 }
daniele 0:d7f2341ab245 72
daniele 0:d7f2341ab245 73 /* Debug */
daniele 0:d7f2341ab245 74 //#define PICO_SUPPORT_DEBUG_MEMORY
daniele 0:d7f2341ab245 75 //#define PICO_SUPPORT_DEBUG_TOOLS
daniele 0:d7f2341ab245 76 #endif