@ -25,7 +25,7 @@ int write_param_float(float param, const char* param_name, bool persistent_param
}
}
void ui_init ( UIState * s ) {
void ui_init ( UIState * s ) {
s - > sm = new SubMaster ( { " modelV2 " , " controlsState " , " uiLayoutState " , " liveCalibration " , " radarState " , " thermal " ,
s - > sm = new SubMaster ( { " modelV2 " , " controlsState " , " uiLayoutState " , " liveCalibration " , " radarState " , " thermal " , " frame " ,
" health " , " carParams " , " ubloxGnss " , " driverState " , " dMonitoringState " , " sensorEvents " } ) ;
" health " , " carParams " , " ubloxGnss " , " driverState " , " dMonitoringState " , " sensorEvents " } ) ;
s - > started = false ;
s - > started = false ;
@ -262,7 +262,7 @@ void ui_update(UIState *s) {
s - > scene . alert_size = cereal : : ControlsState : : AlertSize : : NONE ;
s - > scene . alert_size = cereal : : ControlsState : : AlertSize : : NONE ;
}
}
// Handle controls timeout
// Handle controls/fcamera timeout
if ( s - > started & & ! s - > scene . frontview & & ( ( s - > sm ) - > frame - s - > started_frame ) > 5 * UI_FREQ ) {
if ( s - > started & & ! s - > scene . frontview & & ( ( s - > sm ) - > frame - s - > started_frame ) > 5 * UI_FREQ ) {
if ( ( s - > sm ) - > rcv_frame ( " controlsState " ) < s - > started_frame ) {
if ( ( s - > sm ) - > rcv_frame ( " controlsState " ) < s - > started_frame ) {
// car is started, but controlsState hasn't been seen at all
// car is started, but controlsState hasn't been seen at all
@ -271,7 +271,8 @@ void ui_update(UIState *s) {
s - > scene . alert_size = cereal : : ControlsState : : AlertSize : : MID ;
s - > scene . alert_size = cereal : : ControlsState : : AlertSize : : MID ;
} else if ( ( ( s - > sm ) - > frame - ( s - > sm ) - > rcv_frame ( " controlsState " ) ) > 5 * UI_FREQ ) {
} else if ( ( ( s - > sm ) - > frame - ( s - > sm ) - > rcv_frame ( " controlsState " ) ) > 5 * UI_FREQ ) {
// car is started, but controls is lagging or died
// car is started, but controls is lagging or died
if ( s - > scene . alert_text2 ! = " Controls Unresponsive " ) {
if ( s - > scene . alert_text2 ! = " Controls Unresponsive " & &
s - > scene . alert_text1 ! = " Camera Malfunction " ) {
s - > sound - > play ( AudibleAlert : : CHIME_WARNING_REPEAT ) ;
s - > sound - > play ( AudibleAlert : : CHIME_WARNING_REPEAT ) ;
LOGE ( " Controls unresponsive " ) ;
LOGE ( " Controls unresponsive " ) ;
}
}
@ -281,6 +282,19 @@ void ui_update(UIState *s) {
s - > scene . alert_size = cereal : : ControlsState : : AlertSize : : FULL ;
s - > scene . alert_size = cereal : : ControlsState : : AlertSize : : FULL ;
s - > status = STATUS_ALERT ;
s - > status = STATUS_ALERT ;
}
}
if ( ( ( s - > sm ) - > rcv_frame ( " frame " ) > s - > started_frame & &
( ( s - > sm ) - > frame - ( s - > sm ) - > rcv_frame ( " frame " ) ) > 5 * UI_FREQ ) | |
( ( s - > sm ) - > frame - ( s - > sm ) - > rcv_frame ( " frame " ) ) > 15 * UI_FREQ ) {
// controls is fine, but rear camera is lagging or died
s - > scene . alert_text1 = " Camera Malfunction " ;
s - > scene . alert_text2 = " Contact Support " ;
s - > scene . alert_size = cereal : : ControlsState : : AlertSize : : FULL ;
s - > status = STATUS_DISENGAGED ;
s - > sound - > stop ( ) ;
ui_draw_vision_alert ( s , s - > scene . alert_size , s - > status ,
s - > scene . alert_text1 . c_str ( ) , s - > scene . alert_text2 . c_str ( ) ) ;
}
}
}
// Read params
// Read params