more segment data for PSRAM boards
This commit is contained in:
@@ -86,7 +86,11 @@ extern BusManager busses; // same as wled.h
|
||||
#if defined(ARDUINO_ARCH_ESP32S2)
|
||||
#define MAX_SEGMENT_DATA 24576
|
||||
#else
|
||||
#define MAX_SEGMENT_DATA 32767
|
||||
#if defined(BOARD_HAS_PSRAM)
|
||||
#define MAX_SEGMENT_DATA 65534 // 64KB on PSRAM boards
|
||||
#else
|
||||
#define MAX_SEGMENT_DATA 32767 // 32KB on non-PSRAM boards
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -232,7 +232,11 @@ bool Segment::allocateData(size_t len, bool allowOverdraft) { // WLEDMM allowOv
|
||||
if (len == 0) return false; // nothing to do
|
||||
if (Segment::getUsedSegmentData() + len > MAX_SEGMENT_DATA) {
|
||||
if (!allowOverdraft || (Segment::getUsedSegmentData() + len > MAX_SEGMENT_OVERDATA)) { // WLEDMM 50% overdraft allowed temporarily
|
||||
//USER_PRINTF("Segment::allocateData: Segment data quota exceeded! used:%u request:%u max:%d\n", Segment::getUsedSegmentData(), len, MAX_SEGMENT_DATA);
|
||||
static unsigned lastMsgTime = 0;
|
||||
if (millis() - lastMsgTime > 5000) {
|
||||
USER_PRINTF("Segment::allocateData: Segment data quota exceeded! used:%u request:%u max:%d\n", Segment::getUsedSegmentData(), len, MAX_SEGMENT_DATA);
|
||||
lastMsgTime = millis();
|
||||
}
|
||||
if (len > 0) errorFlag = ERR_LOW_SEG_MEM; // WLEDMM raise errorflag
|
||||
return false; //not enough memory
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user