natürlich habe ich auch in der XML "gebastelt", ich sehe darin auch den Sinn einer XML?
Natürlich kann man in einer XML "von Hand" manipulieren. Wenn man sich aber "vertut" darf man sich nicht wundern wenn etwas nicht geht. Deshalb mein Rat: .kdevice.xml von Hand anlegen (Ja...), aber danach: Finger weg. Das Risiko dass du einen Configurationsabschnitt falsch interpretierst und darauf hin die ganze Sache sich "seltsam" verhält ist zu groß. Und ich kann nicht jedesmal auf Fehlersuche in der XML gehen und den Nutzer vertrösten mit: "Ist sicher kein Bug, hast sicher selbst drin rumgepfuscht. Ich kann dir leider nicht weiterhelfen, weil mir meine Zeit dafür zu schade ist."
Kurzum: Wer an der XML abseits der notwendigen ".kdevice.xml" herummanipuliert, der ist erstmal auf sich alleine gestellt.
ich benötige bei weitem nicht alle davon..
Seit man in der Suite KOs in der KO Liste ein/ausblenden kann, ist die bedeutung von active "etwas anders". Und es kommt drauf an wo man schaut.
Von seiten der Suite ist jedes KO Active dem ich eine GA geben *kann*. Demnach sind es bei der in der XML alle 244 (weil du wohl keine Dependencies genutzt hast um unnötige ganz abzuschalten/auszublenden).
Beim Programmieren wird dann geschaut ob es eine GA für das Aktive KO gibt. Wenn ja, wird dem Arduino übermittelt:
KO #xyz ist aktiv und hat GA a/b/c
Wenn es keine GA gibt, dann wird das KO dem Arduino als "inaktiv" übermittelt.
Das sieht man dann auch im Programmiervorgang.
die _orderedIndexTable im KnxTpUart.cpp hat nach dem Sortieren 244 Index-Einträge, obwohl nur 68KO eine GA haben, also ist jede ID 3 mal in der _orderedIndexTable vorhanden.
244KOs in der Liste machen schon mehr oder weniger Sinn. Denn du hast ja 244KOs, nur hat nicht jedes davon eine aktive/gültige GA. Natürlich ist das noch nicht optimal, aber das ist der aktuelle Stand der Dinge in beta4.
Der Suchalgorithmus im KnxTpUart::IsAddressAssigned findet daraufhin einiger der Adressen in der Tabelle nicht, obwohl diese in der Tabelle sind. Ich vermute es hängt mit den auskommentierten Zeilen zusammen, kann es aber erst am Abend testen..
Du sagst die Liste ist 244 Einträge groß und es werden nicht alle gefunden?
Der auskommentierte Code-Teil hat früher identische GAs heraus gefiltert, da es nicht vor kam bzw. kommen konnte, dass eine GA für mehrere KOs zugetroffen hat.
Aber genau das hat mit dem aktiv/inaktiv Probleme bereitet und wird auch in beta5 Probleme bereiten:
Wenn eine GA NICHT gesetzt ist, dann kann man das an ihren 2 bytes nicht erkennen. Die stehen dann jeweils auf 0xff... Aber das wäre dann auch eine gültige GA. Ergo gibt's noch das Aktiv-Inaktiv Flag das diese Zusatzinformation bereit stellt.
Demnach gibt es bei ganz vielen inaktiven KOs die selbe GA (0xFFFF). Und der betroffene Code hätte das aussortiert.
Gleiche gilt für die kommende Beta5, wo man eine GA an mehrere KOs geben kann. Nur sind hier dann alle vermeintlich doppelten" KOs vermeintlich aktiv. Und das st auch gut so.
Was der Code nicht nicht kann: Mit mehreren gleichen GAs umgehen....
https://github.com/KONNEKTING/Konnek...pUart.cpp#L598
Die erste gefundene GA die Aktiv oder Inaktiv liefert das "IsAddressAssigned" Ergebnis....
D.h. wenn ein und dieselbe GA auf KO10 und KO 11 liegen, wird immer KO10 gewinnen und KO11 wird nie dran kommen.
Alles in allem: Ohne konkretes Beispiel was in der XML steht, was die Suite programmiert hat (Suite Console bzw. Log), sowie Arduio Startup-Seriallog kann ich nur raten/mutmaßen.
Kommentar