void ShowStats(Serial *serial, unsigned int argc, char **argv){ serial->put_s("== Memory Info ==\r\n"); unsigned long heap = (unsigned long)_heap_address; unsigned long lastPointer = getLastPointer(); serial->put_s("Heap address :"); put_uint(serial, heap); put_crlf(serial); serial->put_s("Last pointer address :"); put_uint(serial, lastPointer); put_crlf(serial); serial->put_s("Heap size :"); put_uint(serial, (unsigned int)&_CONFIG_HEAP_SIZE); put_crlf(serial); serial->put_s("Estimated Usage :"); put_uint(serial, lastPointer - heap); put_crlf(serial); serial->put_s("== Lua Info ==\r\n"); lua_State *L = getLua(); lua_gc(L,LUA_GCCOLLECT,0); serial->put_s("Lua Top :"); put_int(serial, lua_gettop(L)); put_crlf(serial); serial->put_s("Lua GC Count :"); put_int(serial, lua_gc(L,LUA_GCCOUNT,0)); put_crlf(serial); serial->put_s("== Misc ==\r\n"); serial->put_s("sizeof LoggerConfig :"); put_int(serial, sizeof(LoggerConfig)); put_crlf(serial); serial->put_s("sizeof SampleRecord :"); put_int(serial, sizeof(SampleRecord)); put_crlf(serial); }
void api_sendSampleRecord(Serial *serial, SampleRecord *sr, unsigned int tick, int sendMeta){ json_messageStart(serial); json_blockStart(serial, "s"); json_uint(serial,"t",tick,1); if (sendMeta) writeSampleMeta(serial, sr, getConnectivitySampleRateLimit(), 1); size_t channelCount = 0; unsigned int channelsBitmask = 0; json_arrayStart(serial, "d"); for (int i = 0; i < SAMPLE_RECORD_CHANNELS; i++){ ChannelSample *sample = &(sr->Samples[i]); ChannelConfig * channelConfig = sample->channelConfig; if (SAMPLE_DISABLED != channelConfig->sampleRate){ if (NIL_SAMPLE != sample->intValue){ channelsBitmask = channelsBitmask | (1 << channelCount); int precision = sample->precision; if (precision > 0){ put_float(serial, sample->floatValue, precision); } else{ put_int(serial, sample->intValue); } serial->put_c(','); } channelCount++; } } put_uint(serial, channelsBitmask); json_arrayEnd(serial, 0); json_blockEnd(serial, 0); json_blockEnd(serial, 0); }
void ShowStats(Serial *serial, unsigned int argc, char **argv) { // Memory Info putHeader(serial, "Memory Info"); putDataRowHeader(serial, "Total Memory"); put_uint(serial, (unsigned int) &_CONFIG_HEAP_SIZE); put_crlf(serial); putDataRowHeader(serial, "Free Memory"); put_uint(serial, portGetFreeHeapSize()); put_crlf(serial); // LUA Info putHeader(serial, "Lua Info"); //TODO: this was done for unit testing. fix when Lua runtime is part of unit testing framework lua_State *L = (lua_State *) getLua(); lua_gc(L, LUA_GCCOLLECT, 0); putDataRowHeader(serial, "Lua Top"); put_int(serial, lua_gettop(L)); put_crlf(serial); putDataRowHeader(serial, "Lua Memory Usage (KB)"); put_int(serial, lua_gc(L, LUA_GCCOUNT, 0)); put_crlf(serial); // Misc Info putHeader(serial, "Misc"); putDataRowHeader(serial, "Size of LoggerConfig"); put_int(serial, sizeof(LoggerConfig)); put_crlf(serial); putDataRowHeader(serial, "Size of ChannelSample"); put_int(serial, sizeof(ChannelSample)); put_crlf(serial); }
static void put_src(zf_log_message *const msg, const src_location *const src) { #if ZF_LOG_OPTIMIZE_SIZE int n; n = snprintf(msg->p, nprintf_size(msg), "%s@%s:%u ", src->func, filename(src->file), src->line); put_nprintf(msg, n); #else msg->p = put_string(src->func, msg->p, msg->e); if (msg->p < msg->e) *msg->p++ = '@'; msg->p = put_string(filename(src->file), msg->p, msg->e); if (msg->p < msg->e) *msg->p++ = ':'; msg->p = put_uint(src->line, 0, '\0', msg->p, msg->e); if (msg->p < msg->e) *msg->p++ = ' '; #endif }
void json_uint(Serial *serial, const char *name, unsigned int value, int more) { putKeyAndColon(serial, name); put_uint(serial, value); putCommaIfNecessary(serial, more); }