* `Sendmail` upgraded to ESP-Mail-Client v3.4.9 from v1.2.0, using BearSSL instead of MbedTLS * Fix compilation on ESP8266 * Fix compilation * fix compilation
146 lines
2.6 KiB
C++
146 lines
2.6 KiB
C++
/** Memory usage info for debugging purpose
|
|
|
|
#include "HeapStat.h"
|
|
|
|
HeapStat heapInfo;
|
|
|
|
void setup()
|
|
{
|
|
Serial.begin(115200);
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
// Other codes here
|
|
|
|
// Collect memory info
|
|
heapInfo.collect();
|
|
|
|
// Print memory info
|
|
heapInfo.print();
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
#ifndef HEAP_STAT_H
|
|
#define HEAP_STAT_H
|
|
|
|
#if defined(ESP8266) || defined(ESP32)
|
|
#ifndef MB_ARDUINO_ESP
|
|
#define MB_ARDUINO_ESP
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(ARDUINO_ARCH_RP2040)
|
|
|
|
#if defined(ARDUINO_NANO_RP2040_CONNECT)
|
|
#ifndef MB_ARDUINO_NANO_RP2040_CONNECT
|
|
#define MB_ARDUINO_NANO_RP2040_CONNECT
|
|
#endif
|
|
#else
|
|
#ifndef MB_ARDUINO_PICO
|
|
#define MB_ARDUINO_PICO
|
|
#endif
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#include "ESP_Mail_Client.h"
|
|
|
|
class HeapStat
|
|
{
|
|
private:
|
|
int current_heap = 0;
|
|
int first_round_heap = 0;
|
|
int min_heap = 0;
|
|
int max_heap = 0;
|
|
int diff_heap_from_first_round = 0;
|
|
int diff_heap_from_current_round = 0;
|
|
int _count = 0;
|
|
|
|
int getFreeHeap()
|
|
{
|
|
#if defined(MB_ARDUINO_ESP)
|
|
return ESP.getFreeHeap();
|
|
#elif defined(MB_ARDUINO_PICO)
|
|
return rp2040.getFreeHeap();
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
|
|
public:
|
|
HeapStat() {}
|
|
~HeapStat() {}
|
|
|
|
void reset()
|
|
{
|
|
current_heap = 0;
|
|
first_round_heap = 0;
|
|
min_heap = 0;
|
|
max_heap = 0;
|
|
diff_heap_from_first_round = 0;
|
|
diff_heap_from_current_round = 0;
|
|
_count = 0;
|
|
}
|
|
|
|
void collect()
|
|
{
|
|
_count++;
|
|
|
|
if (max_heap < getFreeHeap())
|
|
max_heap = getFreeHeap();
|
|
|
|
if (min_heap == 0 || min_heap > getFreeHeap())
|
|
min_heap = getFreeHeap();
|
|
|
|
if (first_round_heap == 0)
|
|
first_round_heap = getFreeHeap();
|
|
|
|
if (current_heap > 0)
|
|
{
|
|
diff_heap_from_first_round = getFreeHeap() - first_round_heap;
|
|
diff_heap_from_current_round = getFreeHeap() - current_heap;
|
|
}
|
|
|
|
current_heap = getFreeHeap();
|
|
}
|
|
|
|
int current()
|
|
{
|
|
return current_heap;
|
|
}
|
|
|
|
int min()
|
|
{
|
|
return min_heap;
|
|
}
|
|
|
|
int max()
|
|
{
|
|
return max_heap;
|
|
}
|
|
|
|
int diff1()
|
|
{
|
|
return diff_heap_from_first_round;
|
|
}
|
|
|
|
int diffN()
|
|
{
|
|
return diff_heap_from_current_round;
|
|
}
|
|
|
|
int count()
|
|
{
|
|
return _count;
|
|
}
|
|
|
|
void print()
|
|
{
|
|
MailClient.printf("#### Heap Info\n#### Current: %d, Min: %d, Max: %d, Diff_1: %d, Diff_%d: %d\n", current(), min(), max(), diff1(), count(), diffN());
|
|
}
|
|
};
|
|
|
|
#endif |