#include "_Plugin_Helper.h" #include "ESPEasy_common.h" #include "ESPEasy_fdwdecl.h" #include "src/DataStructs/ESPEasyLimits.h" #include "src/DataStructs/SettingsStruct.h" #include "src/Globals/Plugins.h" #include "src/Globals/Settings.h" #include "src/Globals/SecuritySettings.h" PluginTaskData_base *Plugin_task_data[TASKS_MAX] = { nullptr, }; String PCONFIG_LABEL(int n) { if (n < PLUGIN_CONFIGVAR_MAX) { String result = F("pconf_"); result += n; return result; } return F("error"); } void resetPluginTaskData() { for (taskIndex_t i = 0; i < TASKS_MAX; ++i) { Plugin_task_data[i] = nullptr; } } void clearPluginTaskData(taskIndex_t taskIndex) { if (validTaskIndex(taskIndex)) { if (Plugin_task_data[taskIndex] != nullptr) { delete Plugin_task_data[taskIndex]; Plugin_task_data[taskIndex] = nullptr; } } } void initPluginTaskData(taskIndex_t taskIndex, PluginTaskData_base *data) { if (!validTaskIndex(taskIndex)) { if (data != nullptr) { delete data; } return; } clearPluginTaskData(taskIndex); if (data == nullptr) { return; } if (Settings.TaskDeviceEnabled[taskIndex]) { Plugin_task_data[taskIndex] = data; Plugin_task_data[taskIndex]->_taskdata_pluginID = Settings.TaskDeviceNumber[taskIndex]; } } PluginTaskData_base* getPluginTaskData(taskIndex_t taskIndex) { if (pluginTaskData_initialized(taskIndex)) { return Plugin_task_data[taskIndex]; } return nullptr; } bool pluginTaskData_initialized(taskIndex_t taskIndex) { if (!validTaskIndex(taskIndex)) { return false; } return Plugin_task_data[taskIndex] != nullptr && (Plugin_task_data[taskIndex]->_taskdata_pluginID == Settings.TaskDeviceNumber[taskIndex]); } String getPluginCustomArgName(int varNr) { String argName = F("pc_arg"); argName += varNr + 1; return argName; } // Helper function to create formatted custom values for display in the devices overview page. // When called from PLUGIN_WEBFORM_SHOW_VALUES, the last item should add a traling div_br class // if the regular values should also be displayed. // The call to PLUGIN_WEBFORM_SHOW_VALUES should only return success = true when no regular values should be displayed // Note that the varNr of the custom values should not conflict with the existing variable numbers (e.g. start at VARS_PER_TASK) String pluginWebformShowValue(taskIndex_t taskIndex, byte varNr, const String& label, const String& value, bool addTrailingBreak) { String result; size_t length = 96 + label.length() + value.length(); String breakStr = F("
"); if (addTrailingBreak) { length += breakStr.length(); } result.reserve(length); if (varNr > 0) { result += breakStr; } result += F("