VCCU: Problem mit automatischer IO Auswahl

Begonnen von MarcelK, 01 Februar 2017, 03:55:57

Vorheriges Thema - Nächstes Thema

MarcelK

Ich hab heute mehr oder weniger zufällig bemerkt dass die VCCU manche Devices bei mir ohne erkennbaren Grund zwischen meinen HMUART teilweise im Minutentakt hin- und herschiebt, obwohl es zudem auch noch einen HMLAN mit deutlich besserem RSSI gegeben hätte. Beim Debuggen zeigte sich folgender Ablauf:

1. CUL_HM_Parse: neue Message kommt, es wird CUL_HM_storeRSSI aufgerufen
2. CUL_HM_storeRSSI erkennt dass mNo anders ist, löscht den mRssi Hash und trägt den neuen RSSI Wert ein
3. CUL_HM_Parse: versucht jetzt einen ACK mittels CUL_HM_SndCmd zu senden
4. CUL_HM_SndCmd: ruft CUL_HM_assignIO auf um ein geeignetes IO zu finden
5. CUL_HM_assignIO: verwendet den mRssi Hash um das beste IO zu finden. Hier ist zu diesem Zeitpunkt IMMER nur ein RSSI Wert vorhanden, da der Hash erst gelöscht wurde

Es gewinnt also immer das Device, was zufällig als erstes die Nachricht über's Ethernet geschoben bekam, relativ unabhängig vom RSSI Wert.

Ich bin nicht versiert genug im Code um da jetzt direkt nen konkreten Patch zu liefern, aber eventuell sollte man die mRssi Werte und damit das Wissen um das beste IO nicht jedes mal komplett wegschmeißen. Und um nicht irgendwann mit veralteten Daten zu arbeiten könnte man sich auch den Timestamp jedes RSSI Werts merken und statt den kompletten Hash nur Ausreiser löschen, die deutlich älter sind als die anderen Werte. In der Regel sollten sie ja einigermaßen synchron sein, ne Sekunde hin- oder her.

Besten Gruß Marcel