-
Arne Bartels TAS600MHD
Up with a fresh news there is a small story: recently i was sitting on the apron after another Arne's TCAS gauge test flight. 1 hour "in-flight" has passed long away and suddenly i've decided to resize main panel. and voila! the TCAS gauge was working again!:Hug:So, i became well assured that this is time rollover as i mentioned previously. And where is the problem?ok, look at this part of Arne's code: void MyGaugeCDrawable::Update(void){ lookup_var(&m_tick18); if(m_radar==NULL) return; if(m_owner==NULL) return; if(m_tick18.var_old.n+TICK_MODULO>m_tick18.var_value.n) return; m_recalced = true; m_radar->QueryAiData((int)m_maxnum_act,m_max_range_nm, m_owner->GetTimeSepTA(),m_owner->GetTimeSepRA(), m_owner->GetDistanceSepTA(),m_owner->GetDistanceSepRA(), m_owner->GetAltitudeSepTA(),m_owner->GetAltitudeSepRA() ); m_tick18.var_old = m_tick18.var_value;}] This is from XMLCCallbacks.cppIf you look presizely you will see (in line 8) that if m_tick18.var_value.n would oddly become zero again, the essential thing of Update call - m_radar->QueryAiData would never happen because m_tick18.var_old.n+TICK_MODULO - (1 time per second updating) would always be greater than that rollovered MS messAnyway, all you need is to add checking for m_tick18.var_value.n and reset the m_tick18.var_old.njust like this... void MyGaugeCDrawable::Update(void){ lookup_var(&m_tick18); if(m_radar==NULL) return; if(m_owner==NULL) return; //additional checking against rollover :) if (m_tick18.var_value.n<m_tick18.var_old.n) m_tick18.var_old = m_tick18.var_value; if(m_tick18.var_old.n+TICK_MODULO>m_tick18.var_value.n) return; m_recalced = true; m_radar->QueryAiData((int)m_maxnum_act,m_max_range_nm, m_owner->GetTimeSepTA(),m_owner->GetTimeSepRA(), m_owner->GetDistanceSepTA(),m_owner->GetDistanceSepRA(), m_owner->GetAltitudeSepTA(),m_owner->GetAltitudeSepRA() ); m_tick18.var_old = m_tick18.var_value;} But.. there was the other side of the coin . After panel resizing XML variable P:Absolute time rollovers also. Meaning that your favourite clock gauge will show you pretty nice zeros :(
-
Arne Bartels TAS600MHD
In observations that i did about Arne Bartels' XML TCAS gauge, it had never work without a freeze more than 60 + a half minutes(1hrs 30 sec) So, i thought it might be UINT16 overflowing somewhere? (60*60*18hz) but 1 time it stuck only after 52 minutes of flight:Thinking: what do FS code masters can spell about this trouble? can anyone confirm that he saw this gause running flawlessly (>>1 hr)?
Skalne
Members
-
Joined
-
Last visited