/* UTILS MODULE Copyright (C) 2017-2019 by Xose PĂ©rez */ #pragma once #include "espurna.h" struct heap_stats_t { uint32_t available; uint16_t usable; uint8_t frag_pct; }; PROGMEM const char pstr_unknown[] = "UNKNOWN"; #define INLINE inline __attribute__((always_inline)) extern "C" uint32_t _SPIFFS_start; extern "C" uint32_t _SPIFFS_end; void setDefaultHostname(); void setBoardName(); const String& getDevice(); const String& getManufacturer(); const String& getCoreVersion(); const String& getCoreRevision(); int getHeartbeatMode(); unsigned long getHeartbeatInterval(); void heartbeat(); String getAdminPass(); String getBoardName(); String buildTime(); unsigned long getUptime(); bool haveRelaysOrSensors(); void getHeapStats(heap_stats_t& stats); heap_stats_t getHeapStats(); void wtfHeap(bool value); unsigned int getFreeHeap(); void setInitialFreeHeap(); unsigned int getInitialFreeHeap(); void infoHeapStats(const char* name, const heap_stats_t& stats); void infoHeapStats(bool show_frag_stats = true); void infoMemory(const char * name, unsigned int total_memory, unsigned int free_memory); void infoUptime(); void info(bool first = false); bool sslCheckFingerPrint(const char * fingerprint); bool sslFingerPrintArray(const char * fingerprint, unsigned char * bytearray); bool sslFingerPrintChar(const char * fingerprint, char * destination); bool eraseSDKConfig(); char * ltrim(char * s); char * strnstr(const char * buffer, const char * token, size_t n); bool isNumber(const char * s); void nice_delay(unsigned long ms); double roundTo(double num, unsigned char positions); size_t hexEncode(const uint8_t* in, size_t in_size, char* out, size_t out_size); size_t hexDecode(const char* in, size_t in_size, uint8_t* out, size_t out_size);