mirror of https://github.com/ARMmbed/mbed-os.git
Redirecting LWIP debug trace to mbed-trace
This piece of code redirects LWIP debug trace to mbed-trace if configured. This enables us to have universal traces.pull/4119/head
parent
3b44f4758d
commit
f602c936ff
|
@ -339,6 +339,11 @@ void mbed_vtracef(uint8_t dlevel, const char* grp, const char *fmt, va_list ap)
|
|||
if (plain == true || dlevel == TRACE_LEVEL_CMD) {
|
||||
//add trace data
|
||||
retval = vsnprintf(ptr, bLeft, fmt, ap);
|
||||
//convenience - trim off one trailing \n. Useful if trying to directly
|
||||
//connect debug layers that do expect callers to pass \n to mbed_trace.
|
||||
if (retval > 0 && retval < bLeft && ptr[retval - 1] == '\n') {
|
||||
ptr[--retval] = '\0';
|
||||
}
|
||||
if (dlevel == TRACE_LEVEL_CMD && m_trace.cmd_printf) {
|
||||
m_trace.cmd_printf(m_trace.line);
|
||||
m_trace.cmd_printf("\n");
|
||||
|
@ -441,6 +446,12 @@ void mbed_vtracef(uint8_t dlevel, const char* grp, const char *fmt, va_list ap)
|
|||
if (retval > 0) {
|
||||
ptr += retval;
|
||||
bLeft -= retval;
|
||||
//convenience - trim off one trailing \n. Useful if trying to directly
|
||||
//connect debug layers that do expect callers to pass \n to mbed_trace.
|
||||
if (ptr[-1] == '\n') {
|
||||
*--ptr = '\0';
|
||||
++bLeft;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -93,16 +93,28 @@
|
|||
|
||||
#ifdef LWIP_DEBUG
|
||||
|
||||
#include "stdio.h"
|
||||
#if MBED_CONF_LWIP_USE_MBED_TRACE
|
||||
void lwip_mbed_tracef_debug(const char *fmt, ...);
|
||||
void lwip_mbed_tracef_error(const char *fmt, ...);
|
||||
void lwip_mbed_tracef_warn(const char *fmt, ...);
|
||||
void lwip_mbed_assert_fail(const char *msg, const char *func, const char *file, unsigned int line);
|
||||
|
||||
#define LWIP_PLATFORM_DIAG(vars) lwip_mbed_tracef_debug vars
|
||||
#define LWIP_PLATFORM_DIAG_SEVERE(vars) lwip_mbed_tracef_error vars
|
||||
#define LWIP_PLATFORM_DIAG_SERIOUS(vars) lwip_mbed_tracef_error vars
|
||||
#define LWIP_PLATFORM_DIAG_WARNING(vars) lwip_mbed_tracef_warn vars
|
||||
|
||||
#define LWIP_PLATFORM_ASSERT(message) lwip_mbed_assert_fail(message, __func__, __FILE__, __LINE__)
|
||||
|
||||
#else // MBED_CONF_LWIP_USE_MBED_TRACE
|
||||
#include <stdio.h>
|
||||
|
||||
void assert_printf(char *msg, int line, char *file);
|
||||
|
||||
/* Plaform specific diagnostic output */
|
||||
#define LWIP_PLATFORM_DIAG(vars) printf vars
|
||||
#define LWIP_PLATFORM_ASSERT(flag) { assert_printf((flag), __LINE__, __FILE__); }
|
||||
#else
|
||||
#define LWIP_PLATFORM_DIAG(msg) { ; }
|
||||
#define LWIP_PLATFORM_ASSERT(flag) { ; }
|
||||
#endif // MBED_CONF_LWIP_USE_MBED_TRACE
|
||||
#endif
|
||||
|
||||
#include "cmsis.h"
|
||||
|
|
|
@ -489,6 +489,42 @@ sys_thread_t sys_thread_new(const char *pcName,
|
|||
|
||||
#ifdef LWIP_DEBUG
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#if MBED_CONF_LWIP_USE_MBED_TRACE
|
||||
#include "mbed-trace/mbed_trace.h"
|
||||
|
||||
void lwip_mbed_tracef_debug(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
mbed_vtracef(TRACE_LEVEL_DEBUG, "lwIP", fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
void lwip_mbed_tracef_warn(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
mbed_vtracef(TRACE_LEVEL_WARN, "lwIP", fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
void lwip_mbed_tracef_error(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
mbed_vtracef(TRACE_LEVEL_ERROR, "lwIP", fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
void lwip_mbed_assert_fail(const char *msg, const char *func, const char *file, unsigned int line)
|
||||
{
|
||||
mbed_tracef(TRACE_LEVEL_ERROR, "lwIP", "Assertion failed: %s, function %s, file %s, line %u.", msg, func, file, line);
|
||||
exit(EXIT_FAILURE); // XXX how about abort? mbed_assert uses exit, so follow suit
|
||||
}
|
||||
#else // MBED_CONF_LWIP_USE_MBED_TRACE
|
||||
|
||||
/** \brief Displays an error message on assertion
|
||||
|
||||
This function will display an error message on an assertion
|
||||
|
@ -504,5 +540,6 @@ void assert_printf(char *msg, int line, char *file) {
|
|||
else
|
||||
error("LWIP ASSERT\n");
|
||||
}
|
||||
#endif // MBED_CONF_LWIP_USE_MBED_TRACE
|
||||
|
||||
#endif /* LWIP_DEBUG */
|
||||
|
|
|
@ -148,6 +148,24 @@
|
|||
#ifndef LWIP_PLATFORM_DIAG
|
||||
#error "If you want to use LWIP_DEBUG, LWIP_PLATFORM_DIAG(message) needs to be defined in your arch/cc.h"
|
||||
#endif
|
||||
#ifdef LWIP_PLATFORM_DIAG_SERIOUS
|
||||
#define LWIP_DEBUGF(debug, message) do { \
|
||||
if ( \
|
||||
((debug) & LWIP_DBG_ON) && \
|
||||
((debug) & LWIP_DBG_TYPES_ON) && \
|
||||
((s16_t)((debug) & LWIP_DBG_MASK_LEVEL) >= LWIP_DBG_MIN_LEVEL)) { \
|
||||
switch ((debug) & LWIP_DBG_MASK_LEVEL) { \
|
||||
case LWIP_DBG_LEVEL_SERIOUS: LWIP_PLATFORM_DIAG_SERIOUS(message); break; \
|
||||
case LWIP_DBG_LEVEL_SEVERE: LWIP_PLATFORM_DIAG_SEVERE(message); break; \
|
||||
case LWIP_DBG_LEVEL_WARNING: LWIP_PLATFORM_DIAG_WARNING(message); break; \
|
||||
default: LWIP_PLATFORM_DIAG(message); break; \
|
||||
} \
|
||||
if ((debug) & LWIP_DBG_HALT) { \
|
||||
while(1); \
|
||||
} \
|
||||
} \
|
||||
} while(0)
|
||||
#else
|
||||
#define LWIP_DEBUGF(debug, message) do { \
|
||||
if ( \
|
||||
((debug) & LWIP_DBG_ON) && \
|
||||
|
@ -159,7 +177,7 @@
|
|||
} \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#endif
|
||||
#else /* LWIP_DEBUG */
|
||||
#define LWIP_DEBUGF(debug, message)
|
||||
#endif /* LWIP_DEBUG */
|
||||
|
|
|
@ -65,7 +65,11 @@
|
|||
#error "Either IPv4 or IPv6 must be preferred."
|
||||
#endif
|
||||
|
||||
//#define LWIP_DEBUG
|
||||
#if defined(MBED_CONF_LWIP_DEBUG_ENABLED)
|
||||
#define LWIP_DEBUG MBED_CONF_LWIP_DEBUG_ENABLED
|
||||
#else
|
||||
#define LWIP_DEBUG 0
|
||||
#endif
|
||||
|
||||
#if NO_SYS == 0
|
||||
#include "cmsis_os.h"
|
||||
|
@ -85,7 +89,7 @@
|
|||
#define MBED_CONF_LWIP_TCPIP_THREAD_STACKSIZE 1200
|
||||
#endif
|
||||
|
||||
#ifdef LWIP_DEBUG
|
||||
#if LWIP_DEBUG
|
||||
#define TCPIP_THREAD_STACKSIZE MBED_CONF_LWIP_TCPIP_THREAD_STACKSIZE*2
|
||||
#else
|
||||
#define TCPIP_THREAD_STACKSIZE MBED_CONF_LWIP_TCPIP_THREAD_STACKSIZE
|
||||
|
@ -98,7 +102,7 @@
|
|||
#define MBED_CONF_LWIP_DEFAULT_THREAD_STACKSIZE 512
|
||||
#endif
|
||||
|
||||
#ifdef LWIP_DEBUG
|
||||
#if LWIP_DEBUG
|
||||
#define DEFAULT_THREAD_STACKSIZE MBED_CONF_LWIP_DEFAULT_THREAD_STACKSIZE*2
|
||||
#else
|
||||
#define DEFAULT_THREAD_STACKSIZE MBED_CONF_LWIP_DEFAULT_THREAD_STACKSIZE
|
||||
|
@ -227,22 +231,24 @@
|
|||
#define AUTOIP_DEBUG LWIP_DBG_OFF
|
||||
#define DNS_DEBUG LWIP_DBG_OFF
|
||||
#define IP6_DEBUG LWIP_DBG_OFF
|
||||
|
||||
#if MBED_CONF_LWIP_ENABLE_PPP_TRACE
|
||||
#define PPP_DEBUG LWIP_DBG_ON
|
||||
#else
|
||||
#define PPP_DEBUG LWIP_DBG_OFF
|
||||
#endif //MBED_CONF_LWIP_ENABLE_PPP_TRACE
|
||||
#define ETHARP_DEBUG LWIP_DBG_OFF
|
||||
#define UDP_LPC_EMAC LWIP_DBG_OFF
|
||||
|
||||
#ifdef LWIP_DEBUG
|
||||
#if LWIP_DEBUG
|
||||
#define MEMP_OVERFLOW_CHECK 1
|
||||
#define MEMP_SANITY_CHECK 1
|
||||
#define LWIP_DBG_TYPES_ON LWIP_DBG_ON
|
||||
#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL
|
||||
#else
|
||||
#define LWIP_NOASSERT 1
|
||||
#define LWIP_STATS 0
|
||||
#endif
|
||||
|
||||
#define LWIP_DBG_TYPES_ON LWIP_DBG_ON
|
||||
#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL
|
||||
|
||||
#define LWIP_PLATFORM_BYTESWAP 1
|
||||
|
||||
#define LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS 1
|
||||
|
@ -263,6 +269,7 @@
|
|||
// Save RAM
|
||||
#define PAP_SUPPORT 0
|
||||
#define VJ_SUPPORT 0
|
||||
#define PRINTPKT_SUPPORT 0
|
||||
#define PPP_LOGIT_BUFSIZE 512
|
||||
|
||||
//Hate the config hassle.
|
||||
|
|
|
@ -21,10 +21,22 @@
|
|||
"help": "Enable support for Ethernet interfaces",
|
||||
"value": true
|
||||
},
|
||||
"debug-enabled": {
|
||||
"help": "Enable debug trace support",
|
||||
"value": false
|
||||
},
|
||||
"ppp-enabled": {
|
||||
"help": "Enable support for PPP interfaces",
|
||||
"value": false
|
||||
},
|
||||
"use-mbed-trace": {
|
||||
"help": "Use mbed trace for debug, rather than printf",
|
||||
"value": false
|
||||
},
|
||||
"enable-ppp-trace": {
|
||||
"help": "Enable trace support for PPP interfaces",
|
||||
"value": false
|
||||
},
|
||||
"socket-max": {
|
||||
"help": "Maximum number of open TCPServer, TCPSocket and UDPSocket instances allowed, including one used internally for DNS. Each requires 236 bytes of pre-allocated RAM",
|
||||
"value": 4
|
||||
|
|
|
@ -71,7 +71,11 @@ static EventQueue *prepare_event_queue()
|
|||
|
||||
// Only need to queue 1 event. new blows on failure.
|
||||
event_queue = new EventQueue(2 * EVENTS_EVENT_SIZE, NULL);
|
||||
event_thread = new Thread(osPriorityNormal, 900);
|
||||
#if LWIP_DEBUG
|
||||
event_thread = new Thread(osPriorityNormal, 900*2);
|
||||
#else
|
||||
event_thread = new Thread(osPriorityNormal, 900*1);
|
||||
#endif
|
||||
|
||||
if (event_thread->start(callback(event_queue, &EventQueue::dispatch_forever)) != osOK) {
|
||||
delete event_thread;
|
||||
|
|
Loading…
Reference in New Issue