34 lines
846 B
C++
34 lines
846 B
C++
|
#include "wled.h"
|
||
|
#include "fcn_declare.h"
|
||
|
#include "const.h"
|
||
|
|
||
|
//threading/network callback details: https://github.com/Aircoookie/WLED/pull/2336#discussion_r762276994
|
||
|
bool requestJSONBufferLock(uint8_t module)
|
||
|
{
|
||
|
unsigned long now = millis();
|
||
|
|
||
|
while (jsonBufferLock && millis()-now < 1000) delay(1); // wait for a second for buffer lock
|
||
|
|
||
|
if (millis()-now >= 1000) {
|
||
|
DEBUG_PRINT(F("ERROR: Locking JSON buffer failed! ("));
|
||
|
DEBUG_PRINT(jsonBufferLock);
|
||
|
DEBUG_PRINTLN(")");
|
||
|
return false; // waiting time-outed
|
||
|
}
|
||
|
|
||
|
jsonBufferLock = module ? module : 255;
|
||
|
fileDoc = &doc; // used for applying presets (presets.cpp)
|
||
|
doc.clear();
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
|
||
|
void releaseJSONBufferLock()
|
||
|
{
|
||
|
DEBUG_PRINT(F("JSON buffer released. ("));
|
||
|
DEBUG_PRINT(jsonBufferLock);
|
||
|
DEBUG_PRINTLN(")");
|
||
|
fileDoc = nullptr;
|
||
|
jsonBufferLock = 0;
|
||
|
}
|