nicer logging

master
Ondřej Hruška 8 years ago
parent a55c25ddca
commit 2a4b72fbb5
  1. 2
      Makefile
  2. 3
      libesphttpd/Makefile
  3. 50
      libesphttpd/include/logging.h
  4. 2
      libesphttpd/include/platform.h
  5. 4
      libesphttpd/util/cgiflash.c
  6. 7
      user/sampling.c
  7. 22
      user/sbmp_config.h
  8. 21
      user/uptime.c
  9. 2
      user/uptime.h
  10. 4
      user/user_main.c

@ -56,7 +56,7 @@ TARGET = httpd
# which modules (subdirectories) of the project to include in compiling # which modules (subdirectories) of the project to include in compiling
MODULES = user sbmp/library MODULES = user sbmp/library
EXTRA_INCDIR = include libesphttpd/include sbmp/library EXTRA_INCDIR = include libesphttpd/include sbmp/library user/
# libraries used in this project, mainly provided by the SDK # libraries used in this project, mainly provided by the SDK
LIBS = c gcc hal phy pp net80211 wpa main lwip crypto LIBS = c gcc hal phy pp net80211 wpa main lwip crypto

@ -48,7 +48,8 @@ LIB = libesphttpd.a
MODULES = espfs core util MODULES = espfs core util
EXTRA_INCDIR = ./include \ EXTRA_INCDIR = ./include \
. \ . \
lib/heatshrink/ lib/heatshrink/ \
../user
# compiler flags using during compilation of source files # compiler flags using during compilation of source files

@ -1,19 +1,51 @@
#ifndef HTTPD_LOGGING_H #ifndef HTTPD_LOGGING_H
#define HTTPD_LOGGING_H #define HTTPD_LOGGING_H
#include <esp8266.h>
#ifndef httpd_printf #include "uptime.h"
#define httpd_printf(fmt, ...) os_printf(fmt, ##__VA_ARGS__)
#endif
// logging functions // logging functions
#define LOG_EOL "\n" #define LOG_EOL "\n"
#define dbg(fmt, ...) httpd_printf(fmt LOG_EOL, ##__VA_ARGS__);
#define banner(fmt, ...) httpd_printf("\x1b[32;1m"fmt"\x1b[0m"LOG_EOL, ##__VA_ARGS__);
#define info(fmt, ...) httpd_printf("\x1b[32m"fmt"\x1b[0m"LOG_EOL, ##__VA_ARGS__); #define dbg(fmt, ...) \
#define error(fmt, ...) httpd_printf("\x1b[31;1m"fmt"\x1b[0m"LOG_EOL, ##__VA_ARGS__); do { \
#define warn(fmt, ...) httpd_printf("\x1b[33;1m"fmt"\x1b[0m"LOG_EOL, ##__VA_ARGS__); uptime_print(); \
printf(" [ ] "fmt LOG_EOL, ##__VA_ARGS__); \
} while(0)
#define banner(fmt, ...) \
do { \
printf("\x1b[32;1m"); \
uptime_print(); \
printf(" [i] "fmt"\x1b[0m"LOG_EOL, ##__VA_ARGS__); \
} while(0)
#define info(fmt, ...) \
do { \
printf("\x1b[32m"); \
uptime_print(); \
printf(" [i] "fmt"\x1b[0m"LOG_EOL, ##__VA_ARGS__); \
} while(0)
#define error(fmt, ...) \
do { \
printf("\x1b[31;1m"); \
uptime_print(); \
printf(" [E] "fmt"\x1b[0m"LOG_EOL, ##__VA_ARGS__); \
} while(0)
#define warn(fmt, ...) \
do { \
printf("\x1b[33;1m"); \
uptime_print(); \
printf(" [W] "fmt"\x1b[0m"LOG_EOL, ##__VA_ARGS__); \
} while(0)
#endif // HTTPD_LOGGING_H #endif // HTTPD_LOGGING_H

@ -25,7 +25,7 @@ typedef RtosConnType* ConnTypePtr;
#define strlen(a) os_strlen(a) #define strlen(a) os_strlen(a)
#define memcmp(a, b, c) os_memcmp(a, b, c) #define memcmp(a, b, c) os_memcmp(a, b, c)
typedef struct espconn* ConnTypePtr; typedef struct espconn* ConnTypePtr;
#define httpd_printf(format, ...) os_printf(format, ##__VA_ARGS__) //#define httpd_printf(format, ...) os_printf(format, ##__VA_ARGS__)
#endif #endif

@ -55,7 +55,7 @@ int ICACHE_FLASH_ATTR cgiGetFirmwareNext(HttpdConnData *connData) {
httpdEndHeaders(connData); httpdEndHeaders(connData);
char *next = id == 1 ? "user1.bin" : "user2.bin"; char *next = id == 1 ? "user1.bin" : "user2.bin";
httpdSend(connData, next, -1); httpdSend(connData, next, -1);
httpd_printf("Next firmware: %s (got %d)\n", next, id); dbg("Next firmware: %s (got %d)", next, id);
return HTTPD_CGI_DONE; return HTTPD_CGI_DONE;
} }
@ -70,7 +70,7 @@ int ICACHE_FLASH_ATTR cgiReadFlash(HttpdConnData *connData) {
} }
if (*pos==0) { if (*pos==0) {
httpd_printf("Start flash download.\n"); info("Start flash download.");
httpdStartResponse(connData, 200); httpdStartResponse(connData, 200);
httpdHeader(connData, "Content-Type", "application/bin"); httpdHeader(connData, "Content-Type", "application/bin");
httpdEndHeaders(connData); httpdEndHeaders(connData);

@ -70,6 +70,7 @@ static void FLASH_FN request_data_sesn_listener(SBMP_Endpoint *ep, SBMP_Datagram
switch (dg->type) { switch (dg->type) {
case DG_BULK_OFFER:// Data ready notification case DG_BULK_OFFER:// Data ready notification
info("--- Data offered for bulk transfer ---"); info("--- Data offered for bulk transfer ---");
setReadoutTmeoTimer(1000);
// data is ready to be read // data is ready to be read
pp = pp_start(dg->payload, dg->length); pp = pp_start(dg->payload, dg->length);
@ -79,13 +80,14 @@ static void FLASH_FN request_data_sesn_listener(SBMP_Endpoint *ep, SBMP_Datagram
dbg("Total bytes: %d", readState->total); dbg("Total bytes: %d", readState->total);
retry_TO(100, sbmp_bulk_request(ep, readState->pos, CHUNK_LEN, dg->session)); // we choose to request the data immediately
setReadoutTmeoTimer(500); retry_TO(100, sbmp_bulk_request(ep, readState->pos, CHUNK_LEN, dg->session));
break; break;
case DG_BULK_DATA: // data received case DG_BULK_DATA: // data received
info("--- Received a chunk, length %d ---", dg->length); info("--- Received a chunk, length %d ---", dg->length);
setReadoutTmeoTimer(1000);
// Process the received data // Process the received data
pp = pp_start(dg->payload, dg->length); pp = pp_start(dg->payload, dg->length);
@ -110,7 +112,6 @@ static void FLASH_FN request_data_sesn_listener(SBMP_Endpoint *ep, SBMP_Datagram
} else { } else {
// read next part // read next part
retry_TO(100, sbmp_bulk_request(ep, readState->pos, CHUNK_LEN, dg->session)); retry_TO(100, sbmp_bulk_request(ep, readState->pos, CHUNK_LEN, dg->session));
setReadoutTmeoTimer(500);
} }
break; break;

@ -55,13 +55,25 @@
/** /**
* @brief Enable detailed logging (only for debugging, disable for better performance). * @brief Enable detailed logging (only for debugging, disable for better performance).
*/ */
#define SBMP_DEBUG 0 #define SBMP_DEBUG 1
// here are the actual logging functions // here are the actual logging functions
#define sbmp_error(fmt, ...) (SBMP_DEBUG||SBMP_LOGGING ? os_printf("\x1b[31;1m[SBMP][E] "fmt"\x1b[0m\n", ##__VA_ARGS__) : 0)
#define sbmp_warn(fmt, ...) (SBMP_DEBUG||SBMP_LOGGING ? os_printf("\x1b[33;1m[SBMP][E] "fmt"\x1b[0m\n", ##__VA_ARGS__) : 0) #if SBMP_DEBUG||SBMP_LOGGING
#define sbmp_info(fmt, ...) (SBMP_DEBUG||SBMP_LOGGING ? os_printf("\x1b[32m[SBMP][i] "fmt"\x1b[0m\n", ##__VA_ARGS__) : 0) # define sbmp_error(fmt, ...) error("[SBMP] "fmt, ##__VA_ARGS__)
#define sbmp_dbg(fmt, ...) (SBMP_DEBUG ? os_printf("[SBMP][ ] "fmt"\n", ##__VA_ARGS__) : 0) # define sbmp_warn(fmt, ...) warn("[SBMP] "fmt, ##__VA_ARGS__)
# define sbmp_info(fmt, ...) info("[SBMP] "fmt, ##__VA_ARGS__)
#else
# define sbmp_error(fmt, ...)
# define sbmp_warn(fmt, ...)
# define sbmp_info(fmt, ...)
#endif
#if SBMP_DEBUG
# define sbmp_dbg(fmt, ...) dbg("[SBMP] "fmt, ##__VA_ARGS__)
#else
# define sbmp_dbg(fmt, ...)
#endif
/* ---------- Fix formatting -------------- */ /* ---------- Fix formatting -------------- */

@ -36,3 +36,24 @@ void uptime_str(char *buf)
sprintf(buf, "%02u:%02u:%02u", hours, mins, secs); sprintf(buf, "%02u:%02u:%02u", hours, mins, secs);
} }
} }
void uptime_print(void)
{
u32 a = uptime;
u32 days = a / 86400;
a -= days * 86400;
u32 hours = a / 3600;
a -= hours * 3600;
u32 mins = a / 60;
a -= mins * 60;
u32 secs = a;
if (days > 0) {
printf("%ud %02u:%02u:%02u", days, hours, mins, secs);
} else {
printf("%02u:%02u:%02u", hours, mins, secs);
}
}

@ -10,4 +10,6 @@ void uptime_timer_init(void);
/** Print uptime to a buffer. Should be at least 20 long. */ /** Print uptime to a buffer. Should be at least 20 long. */
void uptime_str(char *buf); void uptime_str(char *buf);
void uptime_print(void);
#endif // UPTIME_H #endif // UPTIME_H

@ -43,9 +43,7 @@ static void ICACHE_FLASH_ATTR prHeapTimerCb(void *arg)
if (++cnt == 3) { if (++cnt == 3) {
cnt = 0; cnt = 0;
u32 heap = system_get_free_heap_size(); u32 heap = system_get_free_heap_size();
char upt[20]; dbg("Heap: %u (~ %d)\n", heap, (heap-last));
uptime_str(upt);
os_printf("%s, heap: %u (~ %d)\n", upt, heap, (heap-last));
last = heap; last = heap;
} }

Loading…
Cancel
Save