Rewrite from scratch a TCP/IP stack for mbed. So far the following parts are usable: Drivers: - EMAC driver (from CMSIS 2.0) Protocols: - Ethernet protocol - ARP over ethernet for IPv4 - IPv4 over Ethernet - ICMPv4 over IPv4 - UDPv4 over IPv4 APIs: - Sockets for UDPv4 The structure of this stack is designed to be very modular. Each protocol can register one or more protocol to handle its payload, and in each protocol, an API can be hooked (like Sockets for example). This is an early release.

Committer:
Benoit
Date:
Sun Jun 26 09:56:31 2011 +0000
Revision:
7:8e12f7357b9f
Parent:
1:f4040665bc61
Added IPv4 global broadcast address to processed frames inside IPv4 layer.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Benoit 0:19f5f51584de 1 /*
Benoit 0:19f5f51584de 2 * $Id: Debug.h 24 2011-06-07 15:51:50Z benoit $
Benoit 0:19f5f51584de 3 * $Author: benoit $
Benoit 0:19f5f51584de 4 * $Date: 2011-06-07 17:51:50 +0200 (mar., 07 juin 2011) $
Benoit 0:19f5f51584de 5 * $Rev: 24 $
Benoit 0:19f5f51584de 6 *
Benoit 0:19f5f51584de 7 *
Benoit 0:19f5f51584de 8 *
Benoit 0:19f5f51584de 9 *
Benoit 0:19f5f51584de 10 *
Benoit 0:19f5f51584de 11 */
Benoit 0:19f5f51584de 12
Benoit 0:19f5f51584de 13 #ifndef __DEBUG_H__
Benoit 0:19f5f51584de 14 #define __DEBUG_H__
Benoit 0:19f5f51584de 15
Benoit 0:19f5f51584de 16 #include "mbedNet.h"
Benoit 0:19f5f51584de 17 #include <stdio.h>
Benoit 0:19f5f51584de 18 #include <stdint.h>
Benoit 0:19f5f51584de 19
Benoit 0:19f5f51584de 20 #define DEBUG_BUFFER_DUMP_LINE_LEN 16
Benoit 0:19f5f51584de 21
Benoit 0:19f5f51584de 22
Benoit 0:19f5f51584de 23 #define DEBUG_LEVEL_INFO 0x00000001ul
Benoit 0:19f5f51584de 24 #define DEBUG_LEVEL_WARNING 0x00000002ul
Benoit 0:19f5f51584de 25 #define DEBUG_LEVEL_ERROR 0x00000004ul
Benoit 0:19f5f51584de 26 #define DEBUG_LEVEL_PANIC 0x00000008ul
Benoit 0:19f5f51584de 27 #define DEBUG_LEVEL_VERBOSE0 0x00000010ul
Benoit 0:19f5f51584de 28 #define DEBUG_LEVEL_VERBOSE1 0x00000020ul
Benoit 0:19f5f51584de 29 #define DEBUG_LEVEL_VERBOSE2 0x00000040ul
Benoit 0:19f5f51584de 30 #define DEBUG_LEVEL_ALL 0xFFFFFFFFul
Benoit 0:19f5f51584de 31
Benoit 0:19f5f51584de 32 typedef uint32_t Debug_LevelMask_t;
Benoit 0:19f5f51584de 33
Benoit 0:19f5f51584de 34
Benoit 0:19f5f51584de 35 #define DEBUG_MODULE_MBEDNETIF 0x00000001ul
Benoit 0:19f5f51584de 36 #define DEBUG_MODULE_NETIF 0x00000002ul
Benoit 0:19f5f51584de 37 #define DEBUG_MODULE_ARP 0x00000004ul
Benoit 0:19f5f51584de 38 #define DEBUG_MODULE_ETHERNET 0x00000008ul
Benoit 0:19f5f51584de 39 #define DEBUG_MODULE_IPV4 0x00000010ul
Benoit 0:19f5f51584de 40 #define DEBUG_MODULE_ICMPV4 0x00000020ul
Benoit 0:19f5f51584de 41 #define DEBUG_MODULE_UDPV4 0x00000040ul
Benoit 0:19f5f51584de 42 #define DEBUG_MODULE_TCPV4 0x00000080ul
Benoit 0:19f5f51584de 43 #define DEBUG_MODULE_SOCKETS 0x00000100ul
Benoit 0:19f5f51584de 44 #define DEBUG_MODULE_QUEUE 0x00000200ul
Benoit 0:19f5f51584de 45 #define DEBUG_MODULE_ALL 0xFFFFFFFFul
Benoit 0:19f5f51584de 46
Benoit 0:19f5f51584de 47
Benoit 0:19f5f51584de 48 #ifndef DEBUG_ON
Benoit 0:19f5f51584de 49
Benoit 0:19f5f51584de 50 #define DEBUG_SOURCE(level, x)
Benoit 0:19f5f51584de 51 #define DEBUG_MODULE(level, x)
Benoit 0:19f5f51584de 52 #define DEBUG(level, x)
Benoit 0:19f5f51584de 53 #define DEBUG_NOCRLF(level, x)
Benoit 0:19f5f51584de 54 #define DEBUG_CLEAR()
Benoit 0:19f5f51584de 55 #define DEBUG_RAW(x)
Benoit 0:19f5f51584de 56 #define DEBUG_RAW_NOCRLF(x)
Benoit 0:19f5f51584de 57 #define DEBUG_BLOCK(x)
Benoit 0:19f5f51584de 58
Benoit 0:19f5f51584de 59 #else /* DEBUG_ON */
Benoit 0:19f5f51584de 60
Benoit 0:19f5f51584de 61 #define DEBUG_CONDITION(level) (((DEBUG_CURRENT_MODULE_ID & debug_ModuleMask) != 0) && ((level & debug_LevelMask)) != 0)
Benoit 0:19f5f51584de 62
Benoit 0:19f5f51584de 63 #define DEBUG_SOURCE(level, x) if DEBUG_CONDITION(level) \
Benoit 0:19f5f51584de 64 { \
Benoit 0:19f5f51584de 65 printf("%10s: [%10s] %s:%d %s():", \
Benoit 0:19f5f51584de 66 DEBUG_CURRENT_MODULE_NAME, \
Benoit 0:19f5f51584de 67 Debug_GetText(level), \
Benoit 0:19f5f51584de 68 __FILE__, __LINE__, __FUNCTION__); \
Benoit 0:19f5f51584de 69 printf x; printf("\r\n"); \
Benoit 0:19f5f51584de 70 }
Benoit 0:19f5f51584de 71
Benoit 0:19f5f51584de 72 #define DEBUG_MODULE(level, x) if DEBUG_CONDITION(level) { printf("[%-10s] %10s: ", Debug_GetText(level), DEBUG_CURRENT_MODULE_NAME); printf x; printf("\r\n"); }
Benoit 0:19f5f51584de 73 #define DEBUG(level, x) if DEBUG_CONDITION(level) { printf x; printf("\r\n") }
Benoit 0:19f5f51584de 74 #define DEBUG_NOCRLF(level, x) if DEBUG_CONDITION(level) { printf x; }
Benoit 0:19f5f51584de 75 #define DEBUG_CLEAR() printf("%c", 12)
Benoit 0:19f5f51584de 76 #define DEBUG_RAW(x) printf x; printf("\r\n")
Benoit 0:19f5f51584de 77 #define DEBUG_RAW_NOCRLF(x) printf x
Benoit 0:19f5f51584de 78
Benoit 0:19f5f51584de 79
Benoit 0:19f5f51584de 80 #define DEBUG_BLOCK(level) if DEBUG_CONDITION(level)
Benoit 0:19f5f51584de 81
Benoit 0:19f5f51584de 82
Benoit 0:19f5f51584de 83 #endif /* DEBUG_ON */
Benoit 0:19f5f51584de 84
Benoit 0:19f5f51584de 85
Benoit 0:19f5f51584de 86 typedef uint32_t Debug_ModuleMask_t;
Benoit 0:19f5f51584de 87
Benoit 0:19f5f51584de 88
Benoit 0:19f5f51584de 89 extern Debug_LevelMask_t debug_LevelMask;
Benoit 0:19f5f51584de 90 extern Debug_ModuleMask_t debug_ModuleMask;
Benoit 0:19f5f51584de 91
Benoit 0:19f5f51584de 92
Benoit 0:19f5f51584de 93
Benoit 1:f4040665bc61 94 const char *Debug_GetText(uint32_t level);
Benoit 1:f4040665bc61 95 void Debug_DumpBufferHex(uint8_t *buffer, int32_t length);
Benoit 1:f4040665bc61 96 void Debug_SetMasks(Debug_ModuleMask_t moduleMask, Debug_LevelMask_t levelMask);
Benoit 0:19f5f51584de 97
Benoit 0:19f5f51584de 98 #endif /* __DEBUG_H__ */