kopia lustrzana https://github.com/Aircoookie/WLED
34 wiersze
846 B
C++
34 wiersze
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;
|
|
}
|