Bug in der ARM Lib ?
Verfasst: 3. Mär 2021, 18:38
Hallo zusammen,
bin gerade dabei eine eigene App
https://www.heliosventilatoren.de/de/co ... -09416-002
zu entwickeln und habe festgestellt, dass beim Programmieren der Applikation mit der ETS die Adresse der ComObjectTable falsch gesetzt wird. In der ETS Diagnose habe ich folgende Zeile gefunden:
248 01.03.2021 10:53:27,809 zum Bus System 1.1.254 - - 1.1.64 KWL-EB 6 ObjectIndex=3, PropertyId=5, Count=1, StartIndex=1, Data=03 02 45 30 00 01 12 00 01 10
Dies führt dazu, dass in der ARM Library properties.cpp Zeile 121
userEeprom.commsTabAddr = addr;
die commsTabAddr falsch auf 0x4530 gesetzt wird, obwohl die laut .knxprod auf 0x43FE stehen muss.
<ComObjectTable CodeSegment="M-0112_A-0001-10-C995_AS-43FE" Offset="0">
Das führt dann dazu, dass die Kommunikationsobjekte nicht ansprechbar sind, da die Lib auf die falschen Adressen zugreift. Ich habe mir jetzt eine private Version der ARM Lib mit einem quick fix gebaut, die in der bcu_base.h eine zusätzliche Methode
void begin(int manufacturer, int deviceType, int version, word commsTabAddr);
und ein neues Attribut
word commsTabAddr;
enthält. In der properties.cpp wird der Wert dann der Tabelle übergeben.
userEeprom.commsTabAddr = bcu.commsTabAddr;
Damit bin ich jetzt in der Lage alle Objekte korrekt anzusprechen und kann mit der Programmierung der eigentlichen App beginnen. Nach meinen bisherigen Untersuchungen stellt sich mir die Frage warum die Adressen der einzelnen Tabellen überhaupt aus den ETS Daten von der Lib ermittelt werden. Wäre es nicht besser diese Adressen grundsätzlich selbst aus der .knxprod zu lesen und dann über bcu.begin(...) der Lib zu übergeben ? Würde da gerne zu einer kleinen Diskussion mit den Entwicklern der ARM Lib beitragen.
Liebe Grüße
bin gerade dabei eine eigene App
https://www.heliosventilatoren.de/de/co ... -09416-002
zu entwickeln und habe festgestellt, dass beim Programmieren der Applikation mit der ETS die Adresse der ComObjectTable falsch gesetzt wird. In der ETS Diagnose habe ich folgende Zeile gefunden:
248 01.03.2021 10:53:27,809 zum Bus System 1.1.254 - - 1.1.64 KWL-EB 6 ObjectIndex=3, PropertyId=5, Count=1, StartIndex=1, Data=03 02 45 30 00 01 12 00 01 10
Dies führt dazu, dass in der ARM Library properties.cpp Zeile 121
userEeprom.commsTabAddr = addr;
die commsTabAddr falsch auf 0x4530 gesetzt wird, obwohl die laut .knxprod auf 0x43FE stehen muss.
<ComObjectTable CodeSegment="M-0112_A-0001-10-C995_AS-43FE" Offset="0">
Das führt dann dazu, dass die Kommunikationsobjekte nicht ansprechbar sind, da die Lib auf die falschen Adressen zugreift. Ich habe mir jetzt eine private Version der ARM Lib mit einem quick fix gebaut, die in der bcu_base.h eine zusätzliche Methode
void begin(int manufacturer, int deviceType, int version, word commsTabAddr);
und ein neues Attribut
word commsTabAddr;
enthält. In der properties.cpp wird der Wert dann der Tabelle übergeben.
userEeprom.commsTabAddr = bcu.commsTabAddr;
Damit bin ich jetzt in der Lage alle Objekte korrekt anzusprechen und kann mit der Programmierung der eigentlichen App beginnen. Nach meinen bisherigen Untersuchungen stellt sich mir die Frage warum die Adressen der einzelnen Tabellen überhaupt aus den ETS Daten von der Lib ermittelt werden. Wäre es nicht besser diese Adressen grundsätzlich selbst aus der .knxprod zu lesen und dann über bcu.begin(...) der Lib zu übergeben ? Würde da gerne zu einer kleinen Diskussion mit den Entwicklern der ARM Lib beitragen.
Liebe Grüße