diff --git a/src/api.cpp b/src/api.cpp index 8b0e2f8..40f97c6 100644 --- a/src/api.cpp +++ b/src/api.cpp @@ -5,6 +5,7 @@ #include #include "debug.h" #include "scale.h" +#include "nfc.h" #include volatile spoolmanApiStateType spoolmanApiState = API_IDLE; @@ -151,7 +152,7 @@ void sendToApi(void *parameter) { else httpCode = http.PUT(updatePayload); if (httpCode == HTTP_CODE_OK) { - Serial.println("Spoolman erfolgreich aktualisiert"); + Serial.println("Spoolman Abfrage erfolgreich"); // Restgewicht der Spule auslesen String payload = http.getString(); @@ -676,7 +677,7 @@ uint16_t createVendor(String vendor) { uint16_t checkVendor(String vendor) { // Check if vendor exists using task system - foundVendorId = NULL; // Reset previous value + foundVendorId = 65535; // Reset to invalid value to detect when API response is received String vendorName = vendor; vendorName.trim(); @@ -711,8 +712,8 @@ uint16_t checkVendor(String vendor) { NULL // Task-Handle (nicht benötigt) ); - // Additional delay to ensure foundVendorId is properly set after API state becomes IDLE - while (foundVendorId == NULL) + // Wait until foundVendorId is updated by the API response (not 65535 anymore) + while (foundVendorId == 65535) { vTaskDelay(50 / portTICK_PERIOD_MS); } @@ -824,7 +825,7 @@ uint16_t createFilament(uint16_t vendorId, const JsonDocument& payload) { uint16_t checkFilament(uint16_t vendorId, const JsonDocument& payload) { // Check if filament exists using task system - foundFilamentId = NULL; // Reset previous value + foundFilamentId = 65535; // Reset to invalid value to detect when API response is received String spoolsUrl = spoolmanUrl + apiUrl + "/filament?vendor.id=" + String(vendorId) + "&external_id=" + String(payload["artnr"].as()); Serial.print("Check filament with URL: "); @@ -850,8 +851,8 @@ uint16_t checkFilament(uint16_t vendorId, const JsonDocument& payload) { NULL // Task-Handle (nicht benötigt) ); - // Additional delay to ensure foundFilamentId is properly set after API state becomes IDLE - while (foundFilamentId == NULL) { + // Wait until foundFilamentId is updated by the API response (not 65535 anymore) + while (foundFilamentId == 65535) { vTaskDelay(50 / portTICK_PERIOD_MS); } @@ -878,7 +879,7 @@ uint16_t createSpool(uint16_t vendorId, uint16_t filamentId, JsonDocument& paylo // Create new spool in Spoolman database using task system // Note: Due to async nature, the ID will be stored in createdSpoolId global variable // Note: This function assumes that the caller has already ensured API is IDLE - createdSpoolId = NULL; // Reset previous value + createdSpoolId = 65535; // Reset to invalid value to detect when API response is received String spoolsUrl = spoolmanUrl + apiUrl + "/spool"; Serial.print("Create spool with URL: "); @@ -932,7 +933,7 @@ uint16_t createSpool(uint16_t vendorId, uint16_t filamentId, JsonDocument& paylo // Wait for task completion and return the created spool ID // Note: createdSpoolId will be set by sendToApi when response is received - while(createdSpoolId == NULL) { + while(createdSpoolId == 65535) { vTaskDelay(50 / portTICK_PERIOD_MS); }