Added trace level

pull/4/head
Sven Steudte 2018-03-22 02:00:15 +01:00
rodzic 1335238e55
commit 5c4ee5324d
4 zmienionych plików z 21 dodań i 25 usunięć

Wyświetl plik

@ -12,7 +12,7 @@
static uint8_t usb_buffer[16*1024] __attribute__((aligned(32))); // USB image buffer
const ShellCommand commands[] = {
{"debug", usb_cmd_debugOnUSB},
{"set_trace_level", usb_cmd_set_trace_level},
{"picture", usb_cmd_printPicture},
{"print_log", usb_cmd_printLog},
{"config", usb_cmd_printConfig},
@ -21,16 +21,21 @@ const ShellCommand commands[] = {
};
void usb_cmd_debugOnUSB(BaseSequentialStream *chp, int argc, char *argv[])
void usb_cmd_set_trace_level(BaseSequentialStream *chp, int argc, char *argv[])
{
if(argc < 1)
{
chprintf(chp, "Argument missing!\r\n");
chprintf(chp, "Argument 1: 1 for switch on, 0 for switch off\r\n");
chprintf(chp, "Argument 1: Level\r\n");
chprintf(chp, "Level 0: None\r\n");
chprintf(chp, "Level 1: Errors\r\n");
chprintf(chp, "Level 2: Errors + Warnings\r\n");
chprintf(chp, "Level 3: Errors + Warnings + Info\r\n");
chprintf(chp, "Level 4: Errors + Warnings + Info + Debug\r\n");
return;
}
debug_on_usb = atoi(argv[0]);
usb_trace_level = atoi(argv[0]);
}
void usb_cmd_printPicture(BaseSequentialStream *chp, int argc, char *argv[])
@ -50,7 +55,7 @@ void usb_cmd_printPicture(BaseSequentialStream *chp, int argc, char *argv[])
// Look for APP0 instead of SOI because SOI is lost sometimes, but we can add SOI easily later on
if(!start_detected && usb_buffer[i] == 0xFF && usb_buffer[i+1] == 0xE0) {
start_detected = true;
TRACE_USB("DATA > image/jpeg,%d", size_sampled-i+2); // Flag the data on serial output
TRACE_INFO("DATA > image/jpeg,%d", size_sampled-i+2); // Flag the data on serial output
streamPut(chp, 0xFF);
streamPut(chp, 0xD8);
}
@ -59,14 +64,14 @@ void usb_cmd_printPicture(BaseSequentialStream *chp, int argc, char *argv[])
}
if(!start_detected)
{
TRACE_USB("DATA > image/jpeg,0");
TRACE_USB("DATA > text/trace,no SOI flag found");
TRACE_INFO("DATA > image/jpeg,0");
TRACE_INFO("DATA > text/trace,no SOI flag found");
}
} else { // Camera error
TRACE_USB("DATA > image,jpeg,0");
TRACE_USB("DATA > error,no camera found");
TRACE_INFO("DATA > image,jpeg,0");
TRACE_INFO("DATA > error,no camera found");
}
}

Wyświetl plik

@ -4,7 +4,7 @@
#include "ch.h"
#include "hal.h"
void usb_cmd_debugOnUSB(BaseSequentialStream *chp, int argc, char *argv[]);
void usb_cmd_set_trace_level(BaseSequentialStream *chp, int argc, char *argv[]);
void usb_cmd_printConfig(BaseSequentialStream *chp, int argc, char *argv[]);
void usb_cmd_printPicture(BaseSequentialStream *chp, int argc, char *argv[]);
void usb_cmd_printLog(BaseSequentialStream *chp, int argc, char *argv[]);

Wyświetl plik

@ -3,5 +3,5 @@
mutex_t trace_mtx; // Used internal to synchronize multiple chprintf in debug.h
bool debug_on_usb = true;
uint8_t usb_trace_level = 2; // Level: Errors + Warnings

Wyświetl plik

@ -14,7 +14,7 @@
extern mutex_t trace_mtx;
extern const SerialConfig uart_config;
extern bool debug_on_usb;
extern uint8_t usb_trace_level;
// Initializer for serial debug and LEDs
#define DEBUG_INIT() { \
@ -22,14 +22,6 @@ extern bool debug_on_usb;
}
#define TRACE_BASE(format, type, args...) { \
chMtxLock(&trace_mtx); \
if(debug_on_usb) { \
TRACE_BASE_USB(format, type, ##args); \
} \
chMtxUnlock(&trace_mtx); \
}
#define TRACE_BASE_USB(format, type, args...) { \
if(isUSBInitialized()) { \
if(TRACE_TIME) { \
chprintf((BaseSequentialStream*)&SDU1, "[%8d.%03d]", chVTGetSystemTime()/CH_CFG_ST_FREQUENCY, (chVTGetSystemTime()*1000/CH_CFG_ST_FREQUENCY)%1000); \
@ -45,11 +37,10 @@ extern bool debug_on_usb;
} \
}
#define TRACE_DEBUG(format, args...) TRACE_BASE(format, "DEBUG", ##args)
#define TRACE_INFO(format, args...) TRACE_BASE(format, " ", ##args)
#define TRACE_WARN(format, args...) TRACE_BASE(format, "WARN ", ##args)
#define TRACE_ERROR(format, args...) TRACE_BASE(format, "ERROR", ##args)
#define TRACE_USB(format, args...) TRACE_BASE_USB(format, "USB ", ##args) /* only traced on USB */
#define TRACE_DEBUG(format, args...) if(usb_trace_level > 3) { TRACE_BASE(format, "DEBUG", ##args) }
#define TRACE_INFO(format, args...) if(usb_trace_level > 2) { TRACE_BASE(format, " ", ##args) }
#define TRACE_WARN(format, args...) if(usb_trace_level > 1) { TRACE_BASE(format, "WARN ", ##args) }
#define TRACE_ERROR(format, args...) if(usb_trace_level > 0) { TRACE_BASE(format, "ERROR", ##args) }
#if TRACE_TIME && TRACE_FILE
#define TRACE_TAB " "