#pragma once #include "model_value.hpp" #include #include #include struct DaliLongAddress { int h = 0; int m = 0; int l = 0; static DaliLongAddress fromJson(const DaliValue::Object* json); DaliValue::Object toJson() const; }; struct DaliDeviceCapabilities { std::optional supportsDt1; std::optional supportsDt8; static DaliDeviceCapabilities fromJson(const DaliValue::Object* json); DaliValue::Object toJson() const; void merge(const DaliDeviceCapabilities& other); }; struct DaliStatusFlags { std::optional controlGearPresent; std::optional lampFailure; std::optional lampPowerOn; std::optional limitError; std::optional fadingCompleted; std::optional resetState; std::optional missingShortAddress; std::optional psFault; static DaliStatusFlags fromJson(const DaliValue::Object* json); DaliValue::Object toJson() const; bool hasData() const; void merge(const DaliStatusFlags& other); }; struct DaliDt8State { std::optional colorType; std::optional activeMode; std::optional xyX; std::optional xyY; std::optional xyMinX; std::optional xyMaxX; std::optional xyMinY; std::optional xyMaxY; std::optional mirek; std::optional mirekMin; std::optional mirekMax; std::optional> rgbwaf; std::optional> primaryN; static DaliDt8State fromJson(const DaliValue::Object* json); DaliValue::Object toJson() const; }; struct DaliDt1State { std::optional emergencyLevel; std::optional emergencyMinLevel; std::optional emergencyMaxLevel; std::optional prolongTimeMinutes; std::optional ratedDurationMinutes; std::optional testDelayTime; std::optional failureStatus; std::optional emergencyStatus; std::optional emergencyMode; std::optional feature; std::optional version; static DaliDt1State fromJson(const DaliValue::Object* json); DaliValue::Object toJson() const; }; struct DaliDevice { std::string id; std::string name; std::optional shortAddress; std::optional longAddress; bool isolated = false; std::optional brightness; std::optional groupBits; std::optional> scenes; std::optional fadeTime; std::optional fadeRate; std::optional powerOnLevel; std::optional systemFailureLevel; std::optional minLevel; std::optional maxLevel; std::optional operatingMode; std::optional physicalMinLevel; std::optional deviceType; std::vector extType; std::optional version; DaliDeviceCapabilities capabilities; std::optional dt8; std::optional dt1; DaliStatusFlags statusFlags; std::optional lastSyncedUtc; DaliValue::Object metadata; static DaliDevice fromJson(const DaliValue::Object& json); DaliValue::Object toJson() const; std::string displayName() const; void merge(const DaliDevice& other); };