12#define FASTLOG_BUFSIZ (0x80000)
17 int NBFastLog(
void *logger, uint16_t fileId, uint16_t lineNum,
const char *format, ...);
18 void NBFastLogDump(
void *l,
bool clearAfter,
int type);
21int loggerputchars(
void *data,
const char *c,
int n);
41 if (pLogger->useFromIsr)
47 pLogger->crit.Enter();
54 if (pLogger->useFromIsr)
60 pLogger->crit.Leave();
75 }__attribute__((packed));
79 }__attribute__((packed));
81 uint32_t getSize()
const;
82 } __attribute__((packed));
89 fileEntry(
const char *fileName);
90 inline uint16_t getId()
const {
return id; }
91 inline const char *getFilename()
const {
return fileName; }
92 inline const fileEntry *getNext()
const {
return pNext; }
93 inline static const fileEntry *getFirst()
97 static fileEntry * fileIds;
98 static uint16_t count;
116 eFullAction_t fullAction;
118 uint8_t logBuf[FASTLOG_BUFSIZ];
120 bool getNextByte(uint32_t *idx, uint8_t *b);
121 bool DoFull(uint32_t entrySize);
122 bool allocateEntry(uint32_t newEnd, uint32_t entrySize);
123 void createEntry(entry_t &e);
124 const char *getFileName(uint16_t
id);
126 void dumpBin(uint32_t idx, uint16_t len);
127 void dumpstr(uint32_t idx, uint16_t len);
128 bool getEntry(uint32_t *idx, entry_t *e);
129 void dumpEntry(tick_t prevTick, entry_t &e, uint32_t *dataStart);
131 int log_vsprintf(uint16_t fileId, uint16_t lineNum,
const char *format, va_list &vl);
133 logger(
int logFd = 1, eFullAction_t fullAction = eFull_Roll,
bool useFromIsr =
false);
135 void log(uint16_t fileId, uint16_t lineNum, uint16_t len, uint8_t *pdata, eEntryType_t t);
137 inline void log_line(uint16_t fileId, uint16_t lineNum)
138 { log(fileId, lineNum, 0, NULL, eEntryType_Empty); }
139 inline void log_ulong(uint16_t fileId, uint16_t lineNum, uint32_t val)
140 { log(fileId, lineNum,
sizeof(val), (uint8_t*)&(val), eEntryType_ULong); }
142 inline void log_bin(uint16_t fileId, uint16_t lineNum, uint16_t len, uint8_t *pdata)
143 { log(fileId, lineNum, len, pdata, eEntryType_BinPtr); }
145 inline void log_str(uint16_t fileId, uint16_t lineNum,
const char *s)
146 { log(fileId, lineNum, strlen(s), (uint8_t*)s, eEntryType_String); }
148 int log_sprintf(uint16_t fileId, uint16_t lineNum,
const char *format, ...);
150 void dumpLog(
bool clearAfter =
true,
int type = -1);
152 void setLogFd(
int fd) { logFd = fd; }
154 friend int ::loggerputchars(
void *data,
const char *c,
int n);
155 friend int ::NBFastLog(
void *logger, uint16_t fileId, uint16_t lineNum,
const char *format, ...);
160extern fastlog::logger FastStdLogger;
163#define FASTLOG_INIT_FILE() \
164static fastlog::logger::fileEntry _fastlog_ThisFile(__FILE__)
166#define FASTLOG_LINE(_logger) (_logger).log_line(_fastlog_ThisFile.getId(), __LINE__)
167#define FASTLOG_ULONG(_logger, val) (_logger).log_ulong(_fastlog_ThisFile.getId(), __LINE__, (val))
168#define FASTLOG_BINARY(_logger, len, data) (_logger).log_bin(_fastlog_ThisFile.getId(), __LINE__, (len), (data))
169#define FASTLOG_STRING(_logger, s) (_logger).log_str(_fastlog_ThisFile.getId(), __LINE__, (s))
170#define FASTLOG_SPRINTF(_logger, ...) (_logger).log_sprintf(_fastlog_ThisFile.getId(), __LINE__, __VA_ARGS__)
172#define FASTLOG_SHOWLOG(_logger) (_logger).dumpLog()
174#define FASTLOG_INIT_FILE()
176#define FASTLOG_LINE(_logger)
177#define FASTLOG_ULONG(_logger, val)
178#define FASTLOG_BINARY(_logger, len, data)
179#define FASTLOG_STRING(_logger, s)
180#define FASTLOG_SPRINTF(_logger, ...)
182#define FASTLOG_SHOWLOG(_logger)
NetBurner Real-Time Operating System (NBRTOS) API.
An OS_CRIT object is used to establish critical sections of code that can only be run by one task at ...
Definition nbrtos.h:1084