Hi Max,
ja, den zweiten Schritt (GA-Index auf KO-Nummer) habe ich auch nicht. Bei angenommen 256 GAs und KOs kommt man zwar mit 2-Byte-Einträgen hin - aber wozu?
Schätze die Idee war es, dass eine GA nur einmal abgelegt wird und dann eben über den Association Table mit MEHREREN KOs verknüpft werden kann. Ändert sich die GA muss nur ein Eintrag (im Addresstable) geändert werden.
Meine Beobachtung ist aber, das man an einem Gerät eher selten mehreren KOs dieselbe GA zuweist (außer vielleicht Zentraladressen). Daher fand ich eben auch zwei Tabellen wie oben dargestellt ausreichend:
Addresstable mit Mapping: GA-Idx: <GA> -> <KO-Idx>
KO-Table: KO-Idx: Flags, Options
Ja, bei den Properties der BCU kann man nur die Speicheradresse der Tables auslesen.
ABER:
Bei neueren Typen wird das auch per Property gemacht, eben weil das "memwrite" zu limitiert war. Daher sollten wir das auch nicht mehr machen, da man sonst immer wissen muss, wie die Firmware die Adressen und vor allem die weiteren Daten intern ablegt. Das ging bei einer BCU2 vielleicht, aber bei komplexeren Busunits führt das in die Irre. Beim Zugriff über Properties kann die Firmware Prüfen, Umsortieren oder sogar sich weigern.
Irgendwann hatte ich auch schon mal die Specs neuerer Typen gesehen - kann es aber grad nicht finden.
Also: Alles gut. Einzig könnten wir uns vielleicht noch mal auf eine (Bit-)Reihenfolge für die Kommunikationsflags einigen damit man da nicht umdenken muss. Da bin ich aber schmerzfrei.
Grüße
Robert
ja, den zweiten Schritt (GA-Index auf KO-Nummer) habe ich auch nicht. Bei angenommen 256 GAs und KOs kommt man zwar mit 2-Byte-Einträgen hin - aber wozu?
Schätze die Idee war es, dass eine GA nur einmal abgelegt wird und dann eben über den Association Table mit MEHREREN KOs verknüpft werden kann. Ändert sich die GA muss nur ein Eintrag (im Addresstable) geändert werden.
Meine Beobachtung ist aber, das man an einem Gerät eher selten mehreren KOs dieselbe GA zuweist (außer vielleicht Zentraladressen). Daher fand ich eben auch zwei Tabellen wie oben dargestellt ausreichend:
Addresstable mit Mapping: GA-Idx: <GA> -> <KO-Idx>
KO-Table: KO-Idx: Flags, Options
Ja, bei den Properties der BCU kann man nur die Speicheradresse der Tables auslesen.
ABER:
Bei neueren Typen wird das auch per Property gemacht, eben weil das "memwrite" zu limitiert war. Daher sollten wir das auch nicht mehr machen, da man sonst immer wissen muss, wie die Firmware die Adressen und vor allem die weiteren Daten intern ablegt. Das ging bei einer BCU2 vielleicht, aber bei komplexeren Busunits führt das in die Irre. Beim Zugriff über Properties kann die Firmware Prüfen, Umsortieren oder sogar sich weigern.
Irgendwann hatte ich auch schon mal die Specs neuerer Typen gesehen - kann es aber grad nicht finden.
Also: Alles gut. Einzig könnten wir uns vielleicht noch mal auf eine (Bit-)Reihenfolge für die Kommunikationsflags einigen damit man da nicht umdenken muss. Da bin ich aber schmerzfrei.
Grüße
Robert
Kommentar