DALI Software Versionshinweise
Version 2.1
2024-07-04 (Latest)
New Feature:
Die optionale Variable "Current bus unit configuration" der Memory Bank 0 mit der Adresse 0x1B wurde hinzugefügt. Hierzu gehört auch ein neuer Vendor-Konfigurationsparameter zum Initialisieren.
Fix:
Fehlender device type 52 (Diagnostics & Maintenance) in Query (next) device type hinzugefügt.
Die Abfrage der extended version number der device Extensions (device types 49, 51 und 52) wurde korrigiert.
Mechanismus zur Bestimmung und Aktualisierung von "Number of last accessible memory bank" in Memory Bank 0 Adresse 0x02 wurde angepasst. Ein Hinzufügen und/oder Entfernen von manufacturer-specific Memory Banks wird jetzt berücksichtig.
Die Memory Bank 0 Variablen "102 version number of all integrated control gear" und "103 version number of all integrated control devices" werden jetzt entsprechend des konfigurierten Stack-Modes (control gear, control device) gesetzt und nicht mehr allgemein mit 2.0 initialisiert.
Mechanismus für das Senden von extended commands mit dem DALI-Stack konfiguriert als Control Device überarbeitet. Betroffen sind die Module DT6 (LED), DT7 (Switching), DT8 (Colour).
Korrektur am Speichermechanismus
Version 2.0
2023-10-16
New Feature:
Das Schreiben einer Zelle in einer manufacturer specific memory bank löst für Control Gears die Reaction DALILIB_REACT_INTERNAL_CTRL_GEAR_MEMORY_CELL_CHANGED aus
Das Schreiben einer Zelle in einer manufacturer specific memory bank löst für Control Devices die Reaction DALILIB_REACT_INTERNAL_CTRL_DEVICE_MEMORY_CELL_CHANGED aus
Control Gear: DT8 RGBWAF-only hinzugefügt
Service- und Debugfunktionen hinzugefügt
a) Dalireceiver stoppen und starten
b) Hardwarefehlererkennung beim Senden
(Sender- und/oder Emfängerpegelwandler defekt)c) Sende 8Bit-Testframe (ohne Api)
d) Funktion zur Rückgabe der Versions und Buildnummer.
e) Buildnummer neu eingeführt im LL-Driver
Fix:
Kummulativer Zeitfehler beim Senden (stört 102.6.4) korrigiert
Der Befehl TERMINATE löst einen Speichervorgang aus, falls sich während des initialized Modus eine persistente Variable geändert hat.
(Part 102 Sequenz 7.1)Racecondition im RecieveQueue-Handling entfernt.
Interrupt-enable/disable-Callbacks entfernt. Durch Auflösung der Racecondition nicht mehr notwendig.
Version 1.11
2023-03-24
New Feature:
Define DEBUG_LOG wurde eingeführt, um das Logging getrennt von der DEBUG-Version ein- und ausschalten zu können
Konfigurationsparameter deactivateAutomaticSavePersistent wurde eingeführt. Wenn dieser gesetzt wird, wird das Speichern der persistenten Variablen ausschließlich durch eine interne Aktion ausgelöst.
Wenn der Stack die persitenten Variablen auf Default-Werte zurückgesetzt hat, wird nun die Applikation durch eine Reaktion benachrichtigt.
Neue Reaktion hinzugefügt, die eine Unterscheidung beim Zurücksetzen der persistenten Variablen auf Default-Werte zwischen Init und Reset zu ermöglichen
OperatingMode 0x80 - 0xFF wird nun vom Stack zugelassen
Das Berechnen des Target-Levels wurde überarbeitet. Bei Wertänderung wird die Applikation über eine neu eingeführte Reaktion benachrichtigt
Neue Konfigurationsparameter wurden eingeführt:
- um das Offset zwischen Start des Stacks und current Time anzugeben
- um einen Zufallswert für die Berechnung des Random Seeds zu verwendenWiederholtes Dimmen verwendet jetzt als Start-Level das tatsächliche (high resolution) Lichtlevel anstatt das gerundete ActualLevel zu verwenden.
Die internen Aktionen "DALILIB_ACT_INTERNAL_CTRL_GEAR_EXEC_DAPC" und "DALILIB_ACT_INTERNAL_CTRL_GEAR_EXEC_DAPC_RAW_VALUE" lösen einen Vorgang aus, der dem eines extern eingehenden DAPC-Befehls entspricht und die vorhandenen Einstellungen (fading) beim Übergang mit verwendet.
Es können beliebige custom Membanks angelegt werden. Die Anzahl der Membanks ist weiterhin durch MAXMEMBANKS begrenzt
MAXMEMBANKS wurde von "defines.h" nach "libdali.h" verschoben und damit in den vom Benutzer konfigurierbaren Bereich
Für Custom-Membanks sind die Adressen 1 und 2 nun über `WRITE MEMORY LOCATION` beschreibbar.
In der Funktion gear_calc_actual_level() wurde die Berechnung des stepValues überarbeitet, um die Auflösung beim Dimmen zu erhöhen.
Neue Enumeration hinzugefügt, die der Applikation eine Unterscheidung beim Setzen und Abfragen des lamp failure Status zwischen total und partial lamp failure ermöglicht.
Memorybank 1 als Usermembank bei GEARS verfügbar machen, wenn DALI Part 251 DiiA-Extension deaktiviert ist
Proprietäre Frames zwischen 9 und 12 Bits werden jetzt auch an die Applikation gemeldet. Diese können auch bei Anworten von schlecht programmierten Gears entstehen, die eigentlich eine Kollision erzeugen sollten. So kann die Applikation sich helfen.
SET OPERATING MODE löst jetzt eine DALILIB_CTRL_GEAR_REACTION mit dem Reaction Code DALILIB_REACT_INTERNAL_CTRL_GEAR_SET_OPERATING_MODE aus
Funktion zum Löschen (Referenz) von Manufacturer specific memory banks implementiert
SET OPERATING MODE löst jetzt eine DALILIB_CTRL_DEVICE_REACTION mit dem Reaction Code DALILIB_REACT_INTERNAL_CTRL_DEVICE_SET_OPERATING_MODE aus
Fix:
Die Reaktion DALILIB_REACT_INTERNAL_CTRL_GEAR_DEFAULT_PERS_MEMORY enthält nun Daten im Struct gearReact
Das Kommando IDENTIFY DEFICE wird nach Spezifikation ausgeführt, DALI_CTRL_DEVICE_IDENTIFY_DEVICE_TIME_MAX wurde auf 10s angehoben. Der Stack informiert die Applikation über eine neu eingeführte Reaktion, wenn sich der Identify device status ändert.
Bei Kommandos (außer Queries) wird das Identify device zurückgesetzt
Send-Twice Kommandos mit vorhergehendem Kommando ENABLE DEVICE TYPE werden ausgeführt.
Das Kommando QUERY MANUFACTURER SPECIFIC MODE wird mit Ja beantwortet, wenn der Stack in einem herstellerspezifischen Modus läuft.
Bei Änderung der Dimming Kurve wird das entsprechende Bit in der Variable operatingMode gesetzt bzw. gelöscht.
Beim Dimmen mittels Dimmrate Über- bzw. Unterlauf vermieden.
Der Stack als Gear konfiguriert antwortet auf das Kommando QUERY GEAR PRESENT mit Ja wenn die Short Adresse MASK ist.
Beim Dimmen wird das targetLevel direkt auf 0 gesetzt.
Das Send Twice Timeout wurde auf 99 ms runtergesetzt.
In gear_calc_actual_level() trat bei der Berechnung von stepValue ein Unterlauf auf, jetzt wird die Berechnung als 64 Bit Integer durchgeführt.
Dimm-Vorgänge werden nach Ablauf der Dimm-Zeit abgeschlossen
Bei targetLevel gleich 0 wird das actualLevel zum Ende des Dimm-Vorgangs auf 0 gesetzt
Bei niedriger stepTime wird der Dimm-Vorgang erst nach Ausführen des Dimm-Schritts beendet
Nach einem system failure bleibt das actualLevel erhalten
Beim Ausführen des ersten UP-/DOWN-Kommandos wird der erste Schritt vor Beginn des Dimm-Vorgangs ausgeführt
Beim Berechnen des diffLevels in gear_calc_dimmrate() wird der Übertrag wird der Übertrag bei UP-/DOWN-Sequenzen angerechnet
Bei Erhalt von UP- und DOWN-Kommandos bricht der Stack den laufenden Dimm-Vorgang ab
Bei der Berechnung der stepTime eines Dimm-Vorgans konnte eine Division durch null auftreten, jetzt wird darauf getestet und die Division vermieden.
Beim Kommando DAPC(MASK) bleibt limitError erhalten
Beim Kommando UP setzt der Stack limitError, wenn acutalLevel bereits auf maxLevel bzw. minLevel steht oder wenn bei der Berechnung des targetLevels die Grenzen überschritten werden
Bei einem PowerOn setzt der Stack das targetLevel mit Überprüfung der Grenzen, sodass auch limitError gesetzt wird, wenn nötig
Bei DAPC-Sequenzen wurde der Dimm-Vorgang falsch berechnet, sodass es zu keinem Levelwechel beim Dimmen kam, jetzt wird der Dimm-Vorgang richtig berechnet.
Beim Ausführen des Kommandos GO TO SCENE (actualLevel gleich targetLevel) wird Fall kein Dimm-Vorgang ausgelöst
Der Stack ändert das actualLevel nur beim Ausführen des Kommandos RECALL MIN LEVEL und RECALL MAX LEVEL.
Während des Identify device Vorgangs hat der Stack abhängig vom initialisationState das tatsächliche Lichtlevel unterschiedlich hell eingestellt, jetzt wechselt der Stack immer zwischen aus und 100 %.
Beim Beenden des Identify device Vorgangs wird das tatsächliche Lichtlevel gesetzt, wenn der Vorgang beendet wird
Beim Ausführen der Kommandos DAPC, SET POWER ON LEVEL und DTR0 (und weiteren Instructions) beendet der Stack den Identify device Vorgang
Die Kommandos RECALL MIN LEVEL und RECALL MAX LEVEL setzten das tatsächliche Lichtlevel unabhängig vom initialisationState auf PHM bzw. 100 %, wenn initialisationState ungleich DISABLED ist
Während eines Dimm-Vorgangs, wird das neue actualLevel nur dann gesetzt, wenn das targetLevel noch nicht erreicht wurde
In gear_init_after_power_cycle() wird das targetLevel erst nach Ablauf der power-on time zusammen mit dem actualLevel gesetzt
Der Stack kann zwischen total lamp failure und partial lamp failure unterschieden und den jeweiligen Zustand diesem mitteilen - der Stack setzt die Variablen lampFailure und lampOn dann entsprechend
Die Dimm-Zeiten von fastFadeTime wurden aus Tabelle 1 in IEC 62386-207:2009 entnommen, jetzt kann der Stack die Dimm-Zeiten aus Tabelle 1 in IEC 62386-207:2018 verwenden, umschaltbar zur Compilezeit via neu eingeführtem define.
Wenn das startTimeOffset größer als die currentTime war, wurde der Startzeitpunkt für die power-on Prozedur bei gears und für die power cycle notification bei application controllers falsch berechnet; jetzt wird der Startzeitpunkt mit wrap-around richtig berechnet.
Wenn während der power-on time ein system failure auftritt, bricht der Stack die power-on Prozedur ab
IAR Compiler Warnungen wurden korrigiert
Wenn minLevel und targetLevel auf 1 standen, hat der Stack beim Ausführen des Kommandos STEP DOWN das targetLevel auf 0 gesetzt, jetzt bleibt das targetLevel in diesem Fall auf 1 stehen.
Beim Ausführen des Kommandos GO TO SCENE (MASK) setzt der Stack powerCycleSeen auf FALSE, wenn sceneLevel gleich MASK ist
Wenn während der power-on Prozedur das Kommando DAPC (MASK) verarbeitet wird, bricht der Stack diesen Vorgang ab.
Der erste Dimm-Schritt eines Dimm-Vorgangs wurde 10ms nach Beginn durchgeführt, auch wenn die stepTime deutlich kleiner war; jetzt wird zu Beginn des Dimm-Vorgangs vom Lowlevel-Treiber ein Statusframe in 2ms angefordert, sodass bei niedriger stepTime der erste Dimm-Schritt nach 2ms durchgeführt wird.
Beim high-resolution Dimming wurde bei jedem Aufruf des timingHelpers das neu berechnete Lichtlevel an die Appliation weitergegeben, jetzt gibt der Stack das neu berechnete Lichtlevel nur dann an die Applikation weiter, wenn sich das Lichtlevel geändert hat.
Interne Aktionen werden während Bus power down bzw. System failure ausgeführt.
Beim Initialisieren einer Stack-Instanz werden aktive Instanzen berücksichtigt und die entsprechenden Werte in deren Memory Bank 0 aktualisiert
Keil Compiler Warnungen wurden korrigiert
Bei aktivierter MEM_BANK1_EXTENSION wird für DT50 bei QUERY_EXTENDED_VERSION_NUMBER 0x08 (V2.0) gemeldet
Defaults für MEM_BANK1 korrigiert
Bei einer go to scene Nachricht wird die neue internal Reaction "DALILIB_REACT_INTERNAL_CTRL_GEAR_GO_TO_SCENE" ausgelöst.
Der Szenen-Index wird in reactValue geschrieben.
Get scene internal action liefert einen Prozent-Wert. Der Raw-Value ist immer noch über gearReact.reactRawValue erhältlich.
Alle Events enhalten jetzt immer die Event-Daten
Der Reaction-Code von Lichtsensoren wird nicht mehr auf Unknown gesetzt, wenn das erste Bit des Input-Wertes gesetzt ist.
Der Eventfilter für Lichtsensoren hat Auswirkungen auf die Report-Timer-Events und nicht nur auf Events, die durch Wertänderungen getriggert werden.
"QUERY LIGHT SOURCE TYPE" aus Part102 - 11.5.19 korrigiert. Zuvor wurde der device type, an Stelle des light source types ausgeben.
Der ProbitLab Test 102.6.4 (fade to zero) konnte durch die interne Zeitmessung für die API fehlschlagen. (fixed)
LL-Driver bekommt die Version 1.12
Version 1.10
2022-05-31
New Feature:
Define DEBUG_LOG wurde eingeführt, um das Logging getrennt von der DEBUG-Version ein- und ausschalten zu können
Konfigurationsparameter deactivateAutomaticSavePersistent wurde eingeführt. Wenn gesetzt, wird das Speichern der persistenten Variablen ausschließlich durch eine interne Aktion ausgelöst.
Wenn der Stack die persitenten Variablen auf Default-Werte zurückgesetzt hat, wird nun die Applikation durch eine Reaktion benachrichtigt.
Neue Reaktion hinzugefügt, die eine Unterscheidung beim Zurücksetzen der persistenten Variablen auf Default-Werte zwischen Init und Reset zu ermöglichen
OperatingMode 0x80 - 0xFF wird nun vom Stack zugelassen
Das Berechnen des Target Levels im Stack wurde überarbeitet. Bei Wertänderung wird die Applikation über eine neu eingeführte Reaktion benachrichtigt
Neuer Konfigurationsparameter, um das Offset zwischen Start des Stacks und current Time anzugeben.
Wiederholtes Dimmen verwendet jetzt als Start-Level das tatsächliche (high resolution) Lichtlevel anstatt das gerundete ActualLevel zu verwenden.
Konfigurationsparameter wurde eingeführt, um einen echten Zufallswert für die Berechnung des Random Seeds verwenden zu können.
In der Funktion gear_calc_actual_level() wurde die Berechnung des stepValues überarbeitet, um die Auflösung beim Dimmen zu erhöhen.
Enumeration hinzugefügt, die der Applikation eine Unterscheidung beim Setzen und Abfragen des lamp failure Status zwischen total und partial lamp failure ermöglicht.
Fix:
Die Reaktion DALILIB_REACT_INTERNAL_CTRL_GEAR_DEFAULT_PERS_MEMORY war fehlerhaft und enthält nun die erwarteten Daten im Struct gearReact
Das Kommando IDENTIFY DEFICE wird nun nach Spezifikation ausgeführt, DALI_CTRL_DEVICE_IDENTIFY_DEVICE_TIME_MAX wurde auf 10s angehoben. Der Stack informiert die Applikation über eine neu eingeführte Reaktion, wenn sich der Identify device status ändert.
Bei Kommandos (außer Queries) wird Identify device jetzt zurückgesetzt
Send-Twice Kommandos mit vorhergehendem Kommando ENABLE DEVICE TYPE wurden verworfen und werden nun ausgeführt.
Das Kommando QUERY MANUFACTURER SPECIFIC MODE wurde ignoriert und wird jetzt mit Ja beantwortet, wenn der Stack in einem herstellerspezifischen Modus läuft.
Das LED Kommando QUERY OPERATING MODE wurde falsch beantwortet - die aktive Dimming Kurve wurde nicht beachtet; jetzt wird bei Änderung der Dimming Kurve das entsprechende Bit in der Variable operatingMode gesetzt bzw. gelöscht.
Beim Dimmen mittels Dimmrate konnte ein arithmetischer Über- bzw. Unterlauf auftreten, jetzt wird darauf getestet und der Über- bzw. Unterlauf vermieden.
Der Stack als Gear konfiguriert antwortete nicht auf das Kommando QUERY GEAR PRESENT, wenn die Short Adresse MASK war. Jetzt wird die Anfrage immer mit ja beantwortet.
Beim Dimmen auf Level 0 wurde das targetLevel zuerst auf minLevel gesetzt und erst nach dem Dimmen auf 0. Jetzt wird das targetLevel direkt auf 0 gesetzt.
Das Send Twice Timeout wurde auf 99 ms runter gesetzt.
In gear_calc_actual_level() trat bei der Berechnung von stepValue ein Unterlauf auf, jetzt wird die Berechnung als 64 Bit Integer durchgeführt.
Dimm-Vorgänge endeten manchmal zu früh, jetzt wird der Dimm-Vorgang genau nach Ablauf der Dimm-Zeit abgeschlossen.
Bei targetLevel gleich 0 wurde das actualLevel bereits während das Dimm-Vorgangs auf 0 gesetzt, jetzt wird das actualLevel erst zum Ende das Dimm-Vorgangs auf 0 gesezt.
Bei niedriger stepTime konnte es vorkommen, dass der Dimm-Vorgang beendet wurde bevor der letzte Dimm-Schritt ausgeführt wurde, jetzt wird der Dimm-Vorgang erst nach Ausführen des Dimm-Schritts beendet.
Nach einem system failure wurde das actualLevel auf Null gesetzt, jetzt bleibt das actualLevel erhalten.
Beim Ausführen des ersten UP-/DOWN-Kommandos wurde der erste Schritt vor Beginn des Dimm-Vorgangs ignoriert, jetzt wird dieser Schritt ausgeführt.
Beim Berechnen des diffLevels in gear_calc_dimmrate() wurde der Übertrag ingoriert, so dass bei UP-/DOWN-Sequenzen zu wenig Dimm-Schritte durchgeführt wurden, jetzt wird der Übertrag bei UP-/DOWN-Sequenzen angerechnet.
Bei Erhalt von UP- und DOWN-Kommandos wurde der laufende Dimm-Vorgang nicht abgebrochen, jetzt bricht der Stack den laufenden Dimm-Vorgang ab.
Bei der Berechnung der stepTime eines Dimm-Vorgans konnte eine Division durch Null auftreten, jetzt wird darauf getestet und die Division vermieden.
Beim Kommando DAPC(MASK) wurde imitError auf FALSE gesetzt, jetzt bleibt limitError erhalten.
Beim Kommando UP wurde limitError nicht gesetzt, wenn beim Ausführen maxLevel überschritten würde. Analog wurde beim Kommando DOWN limitError nicht gesetzt, wenn beim Ausführen minLevel unterschritten würde. Jetzt setzt der Stack limitError, wenn acutalLevel bereits auf maxLevel bzw. minLevel steht oder wenn bei der Berechnung des targetLevels die Grenzen überschritten werden.
Bei einem PowerOn wurde das targetLevel direkt gesetzt ohne die Grenzen zu überprüfen, jetzt setzt der Stack das targetLevel mit Überprüfung der Grenzen, so dass auch limitError gesetzt wird, wenn nötig.
Bei DAPC-Sequenzen wurde der Dimm-Vorgang falsch berechnet, so dass es zu keinem Levelwechel beim Dimmen kam, jetzt wird der Dimm-Vorgang richig berechnet.
Beim Ausführen des Kommandos GO TO SCENE wurde ein Dimm-Vorgang ausgelöst, obwohl actualLevel gleich targetLevel war, jetzt wird in diesem Fall kein Dimm-Vorgang ausgelöst.
Während des Identify device Vorgangs wurde das actualLevel verändert, jetzt ändert der Stack das actualLevel nur bei Ausführen des Kommandos RECALL MIN LEVEL und RECALL MAX LEVEL.
Während des Identify device Vorgangs hat der Stack abhängig vom initialisationState das tatsächliche Lichtlevel unterschiedlich hell eingestellt, jetzt wechselt der Stack immer zwischen Aus und 100%.
Beim Beenden des Identify device Vorgangs wurde das tatsächliche Lichtlevel nur gesetzt, wenn der Timer abgelaufen war, jetzt wird es immer gesetzt, wenn der Vorgang beendet wird.
Bei Ausführen der Kommandos DAPC, SET POWER ON LEVEL und DTR0 (und weiteren Instructions) hat der Stack den Identify device Vorgang nicht beendet, jetzt beendet der Stack den Vorgang.
Die Kommandos RECALL MIN LEVEL und RECALL MAX LEVEL setzten das tatsächliche Lichtlevel unabhängig vom initialisationState immer gleich, jetzt setzen die beiden Kommandos das tatsächliche Lichtlevel auf PHM bzw. 100%, wenn initialisationState ungleich DISABLED.
Während eines Dimm-Vorgangs bei dem das targetLevel bereits erreicht war, wurde das neue actualLevel nicht neu berechnet, aber trotzdem gesetzt, jetzt wird das neue actualLevel nur dann gesetzt, wenn das targetLevel noch nicht erreicht wurde.
In gear_init_after_power_cycle() wurde das targetLevel bereits abhängig vom powerOnLevel gesetzt, jetzt wird das targetLevel erst nach Ablauf der power-on time zusammen mit dem actualLevel gesetzt.
Der Stack hat zwischen total lamp failure und partial lamp failure nicht unterschieden, jetzt kann die Applikation den jeweiligen Zustand dem Stack mitteilen und der Stack setzt die Variablen lampFailure und lampOn dementsprechend.
Die Dimm-Zeiten von fastFadeTime wurden aus Tabelle 1 in IEC 62386-207:2009 entnommen, jetzt kann der Stack die Dimm-Zeiten aus Tabelle 1 in IEC 62386-207:2018 verwenden, umschaltbar zur Compilezeit via neu eingeführtem define.
Wenn das startTimeOffset größer als die currentTime war, wurde der Startzeitpunkt für die power-on Prozedur bei gears und für die power cycle notification bei application controllers falsch berechnet; jetzt wird der Startzeitpunkt mit wrap-around richtig berechnet.
Wenn während der power-on time ein system failure auftrat, wurde die power-on Prozedur nicht abgebrochen, jetzt bricht der Stack die power-on Prozedur ab, wenn ein system failure erkannt wird.
IAR Compiler Warnungen wurden korrigiert
Wenn minLevel und targetLevel auf 1 standen, hat der Stack beim Ausführen des Kommandos STEP DOWN das targetLevel auf 0 gesetzt, jetzt bleibt das targetLevel in diesem Fall auf 1 stehen.
Beim Ausführen des Kommandos GO TO SCENE (MASK) wurde powerCycleSeen nicht zurückgesetzt, jetzt setzt der Stack powerCycleSeen auch dann auf FALSE, wenn sceneLevel gleich MASK ist.
Wenn während der power-on Prozedur das Kommando DAPC (MASK) verarbeitet wurde, dann lief die power-on Prozedur unverändert weiter, jetzt bricht der Stack die power-on Prozedur beim Verarbeiten des Kommandos DAPC (MASK) ab.
Der erste Dimm-Schritt eines Dimm-Vorgangs wurde 10ms nach Beginn durchgeführt, auch wenn die stepTime deutlich kleiner war; jetzt wird zu Beginn des Dimm-Vorgangs vom Lowlevel-Treiber ein Statusframe in 2ms angefordert, so dass bei niedriger stepTime der erste Dimm-Schritt nach 2ms durchgeführt wird.
Beim high-resolution Dimming wurde bei jedem Aufruf des timingHelpers das neu berechnete Lichtlevel an die Appliation weitergegeben, jetzt gibt der Stack das neu berechnete Lichtlevel nur dann an die Applikation weiter, wenn sich das Lichtlevel geändert hat.
Während Bus power down bzw. System failure wurden interne Aktionen verworfen, jetzt werden interne Aktionen auch während Bus power down bzw. System failure ausgeführt.
Wenn mehrere Instanzen des Stacks auf einer Buseinheit gestartet wurden, dann wurden diese beim Initialisieren nicht berücksichtigt; Jetzt werden beim Initialisieren einer Stack-Instanz bereits aktive Instanzen berücksichtigt und die entsprechenden Werte in deren Memory Bank 0 aktualisiert.
Keil Compiler Warnungen wurden korrigiert
Version 1.9
2021-10-21
New Feature:
Neue interne Aktionen wurden eingeführt, die das Auslesen bzw. Ändern der Betriebsvariablen des Stacks ermöglichen
Neuer Konfigurationsparameter wurde eingeführt, um die Verzögerung des Speicherns der persistenten Daten zwischen 0-29 Sekunden einstellen zu können
Die Callbackfunktionen fAppLoadModuleMem bzw. fAppSaveModuleMem übergeben jetzt auch den Pointer zur Stack-Instanz sowie die Version des Memoryblocks als Parameter
Fix:
Beim Verarbeiten des Kommandos RESET wird nun auch der Save-Persistent-Memory Mechanismus ausgelöst
Aktion DALILIB_REACT_INTERNAL_CTRL_DEVICE_DEFAULT_PERS_MEMORY ist nun auch für Memoryblöcke umgesetzt
Vor dem Speichern der Memoryblöcke wird nun überprüft, ob das Gerät entsprechend konfiguriert ist und diesen Block tatsächlich verwendet
Version 1.8
2021-08-06
New Feature:
Neuer Mechanismus zum Speichern der persistenten Daten wurde eingeführt. Persistente Daten werden jetzt in Modulen getrennt von einander gespeichert. Dafür stehen neue Callback-Funktionen fAppLoadModuleMem bzw. fAppSaveModuleMem zur Verfügung und die interne Datenstruktur wurde angepasst. Ein neuer Konfigurationsparameter savePersistentModules wurde eingeführt, um den neuen Mechanismus zum Speichern der persistenten Daten zu aktivieren. Der bisherige Mechanismus kann weiterhin verwendet werden
Fix:
Das Verhalten beim Senden von Testframes wurde korrigiert
Bei Erhalt einer Buscollision wird nun eine eventuell noch bestehende Kollision als beendet an die Applikation gemeldet, bevor die neue Kollision gemeldet wird
Die Wartezeit der Power Cycle Notification wird jetzt mit stetiger Gleichverteilung auf einen Wert zwischen 1300 und 4900 ms gesetzt
Version 1.7
2021-06-24
New Feature:
Das C++ Keyword "using" wurde in der Struktur dali_instance_t durch isUsed ersetzt
Fix:
Die Schnittstelle zum LowLevel-Treiber wurde um einen Zeitparameter erweitert, um die Timeouts von Send Twice Frames nach Standard bestimmen zu können
Zur Berechnung des Timeouts wird nun der neu eingeführte Zeitparameter des Frames verwendet
Das Timeout von Send Twice Frames wurde auf 102ms angehoben
Das Kommando SEND TESTFRAME wird nun verarbeitet und dem entsprechend werden Testframes versendet
In Speicherbank 201 kann auf beschreibbare Zellen nun auch geschrieben werden
Die Verarbeitung des Kommandos DIRECT WRITE MEMORY wurde korrigiert
Beim erarbeiten der Kommandos QUERY CONTENT DTR2 und DTR2:DTR1 wird nun der writeEnableState nicht mehr zurückgesetzt
Beim Verarbeiten des Kommandos VERIFY SHORT ADDRESS wird jetzt die ShortAddress-Mask angewendet und das Kommando ggf. verworfen
Beim Verarbeiten des Kommandos ENABLE INSTANCE wird nun überprüft, ob der Stack als Application Controller konfiguriert ist, um die weitere Verarbeitung ggf. auszulassen
Instanz-Kommandos werden jetzt nach Part 103 Amendment 1 vom Stack verworfen, wenn dieser als Application Controller konfiguriert ist
Im Standard reservierte Kommandos werden nun richtig erkannt und verworfen
Version 1.6
2021-05-20
Fix:
Der InitialisationState wird nun auch dann nach Ablauf der Initialisierungszeit zurückgesetzt, wenn er auf WITHDRAWN steht
Das Kommando INITIALIZE überschreibt den InitialisationState jetzt nicht mehr, wenn er auf WITHDRAWN steht
Das Inkrementieren von DTR0 beim Ausführen der Kommandos WRITE MEMORY CELL bzw. READ MEMORY CELL wurde korrigiert und wird jetzt nach Standard durchgeführt
Version 1.5
2021-05-10
New Feature:
Das Speichern der persistenten Daten bei Wertänderungen persistenter Variablen wird nun 29 Sekunden nach der ersten Wertänderung ausgelöst
Fix:
Der Überlauf des Zeitzählers war fehlerhaft und wurde korrigiert
Der Zeitzähler für die Demo-Laufzeit war fehlerhaft und wurde korrigiert
Beim Ausführen des RESET Kommandos wird der initialisationState jetzt nach Standard nicht mehr zurückgesetzt
Die Nummer der Speicherbank der D4i Erweiterung Part 351 wurde auf 201 korrigiert
Version 1.4
2021-03-31
New Feature:
D4i Erweiterungen können jetzt zur Compilezeit ein- bzw ausgeschaltet werden
Neue Aktionen zum Setzen des Lichtlevels mit Rohwerten wurden hinzgefügt
Fix:
Der Rückgabewert von fAppSend wird nun ausgewertet und im Fehlerfall wird R_DALILIB_BUSY an die Applikation zurückgegeben
Überprüfung der Send Twice Frames wurde angepasst, neues Timeout DALI_SEND_TWICE_TIMEOUT wurde eingeführt
Bei Wertänderung einer persistenten Variable wird nun unmittelbar das Speichern der persistenten Daten ausgelöst
Das Erstellen des Frames für den POWER NOTIFICATION Event war fehlerhaft und wurde nach Standard korrigiert
Gruppen-adressierte Kommandos werden nun bei gesetzter Gruppe auch ausgeführt
Das Inkrementieren von DTR0 beim Ausführen der Kommandos WRITE MEMORY CELL bzw. READ MEMORY CELL wurde korrigiert und wird jetzt nach Standard durchgeführt
Version 1.3
2021-03-08
New Feature:
D4i Erweiterungen (Parts 250, 251, 252, 253 und 351) werden vom Stack unterstützt
Neuer Konfigurations-Parameter savePersistentOnInit hinzugefügt. Wenn der persistente Speicher neu initialisiert wird, wird abhängig von savePersistentOnInit Dieser direkt gespeichert
Neue interne Gear- und Device-Aktion zum Anfordern eines Buffers mit den Default-Daten des Persistent Memory wurde eingeführt
Fix:
Kommandos mit Instanz-Adressierung "Device" werden nun akzeptiert und verarbeitet
Im Quiescent Mode werden nun keine Forward Frames mehr verschickt
Wartet der Stack auf eine WAntwort, erhält aber ein Kommando, so wird nun die Applikation über die fehlende Antwort benachrichtigt
Das Kommando QUERY INSTANCE TYPE wird jetzt nur dann vom Stack beantwortet, wenn dieser als Input Device konfiguriert ist
Durch -Wextra Compilerflag erzeugte Warnings wurden behoben
Das Target Level von Gears wird nun auch ohne Fading bei Erhalt eins DAPC 0 Kommandos auf 0 gesetzt
Der Buffer für die Callback-Funktionen fPAppSaveMem und fPAppLoadMem wurde auf 512 Bytes angehoben und der Parameter nSize wurde von uint8_t auf uint16_t vergrößert
Die Callback-Funktionen fPAppSaveMem und fPAppLoadMem übergeben jetzt die Gesamtgröße des Buffers an die Applikation
Auf das Kommando QUERY FEATURE TYPE antwortet der Stack jetz nur, wenn er als Input Device konfiguriert ist
IAR Compiler Warnungen wurden korrigiert
Version 1.2
2020-07-15
New Feature:
Aktionen für die Kommunikation mit DT8 Gears wurden hinzugefügt
C++ Direktive wurde in libdali.h eingefügt
Kollisionen auf dem DALI-Bus werden der Applikation gemeldet
Source-Dateien wurden in neues Unterverzeichnis "src" und Header-Dateien in neues Unterverzeichnis "inc" verschoben
Doxygen Source-Dateien in neues Unterverzeichnis "dali_lib_documentation" hinzugefügt
Senden und Empfangen von proprietären Frames mit einer Länge von 40 - 64 Bits wurde implementiert
Herstellerspezifische Speicherbänke können nun von der Applikation angelegt werden
Aktionen zum Setzen der Gear-Variablen powerOnLevel, systemFailureLevel, lastLightLevel, targetLevel und lastActiveLevel wurden hinzugefügt
Das Zulassen von Aktionen während eines DALI-Bus-SystemFailure ist jetzt konfigurierbar
Aktionen für Device-Kommandos READ NEXT MEMORY CELL, WRITE NEXT MEMORY CELL, QUERY MISSING SHORT ADDRESS, QUERY CONTENT DTR0, QUERY CONTENT DTR1, QUERY CONTENT DTR2 und QUERY QUIESCENT MODE wurden hinzugefügt
Aktionen für die Kommunikation mit Lichtsensor- und Occupancy Sensor-Devices wurden hinzugefügt
Fix:
Antworten auf Aktionen QUERY NEXT DEVICE TYPE und QUERY MISSING SHORT ADDRESS werden nun an die Applikation weitergegeben
Antworten auf Kommandos GEAR_CMD_DTR2, GEAR_CMD_QUERY_CONTENT_DTR0, GEAR_CMD_QUERY_CONTENT_DTR1 und GEAR_CMD_QUERY_CONTENT_DTR2 werden nun richtig ausgewertet.
Kommando-Sequenzen der Aktionen DALILIB_ACT_CTRL_GEAR_WRITE_MEMORY_CELL, DALILIB_ACT_CTRL_GEAR_LED_SELECT_DIMMING_CURVE und DALILIB_ACT_CTRL_GEAR_LED_SET_FAST_FADE_TIME waren fehlerhaft und wurden an DALI-Standard angepasst
Durch -Wextra Compilerflag erzeugte Warnings wurden behoben
Empfangene Events mit Schema "Device/Instance" werden jetzt korrekt an die Applikation weitergereicht