mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-09-12 03:03:51 +08:00
ui: check for updated message before updating states in HUD (#1392)
This commit is contained in:
@@ -26,31 +26,54 @@ HudRendererSP::HudRendererSP() {
|
|||||||
void HudRendererSP::updateState(const UIState &s) {
|
void HudRendererSP::updateState(const UIState &s) {
|
||||||
HudRenderer::updateState(s);
|
HudRenderer::updateState(s);
|
||||||
|
|
||||||
|
float speedConv = is_metric ? MS_TO_KPH : MS_TO_MPH;
|
||||||
|
devUiInfo = s.scene.dev_ui_info;
|
||||||
|
roadName = s.scene.road_name;
|
||||||
|
showTurnSignals = s.scene.turn_signals;
|
||||||
|
speedLimitMode = static_cast<SpeedLimitMode>(s.scene.speed_limit_mode);
|
||||||
|
speedUnit = is_metric ? tr("km/h") : tr("mph");
|
||||||
|
standstillTimer = s.scene.standstill_timer;
|
||||||
|
|
||||||
const SubMaster &sm = *(s.sm);
|
const SubMaster &sm = *(s.sm);
|
||||||
const auto cs = sm["controlsState"].getControlsState();
|
const auto cs = sm["controlsState"].getControlsState();
|
||||||
const auto car_state = sm["carState"].getCarState();
|
const auto car_state = sm["carState"].getCarState();
|
||||||
const auto car_control = sm["carControl"].getCarControl();
|
const auto car_control = sm["carControl"].getCarControl();
|
||||||
const auto radar_state = sm["radarState"].getRadarState();
|
const auto radar_state = sm["radarState"].getRadarState();
|
||||||
const auto is_gps_location_external = sm.rcv_frame("gpsLocationExternal") > 1;
|
const auto is_gps_location_external = sm.rcv_frame("gpsLocationExternal") > 1;
|
||||||
const auto gpsLocation = is_gps_location_external ? sm["gpsLocationExternal"].getGpsLocationExternal() : sm["gpsLocation"].getGpsLocation();
|
const char *gps_source = is_gps_location_external ? "gpsLocationExternal" : "gpsLocation";
|
||||||
|
const auto gpsLocation = is_gps_location_external ? sm[gps_source].getGpsLocationExternal() : sm[gps_source].getGpsLocation();
|
||||||
const auto ltp = sm["liveTorqueParameters"].getLiveTorqueParameters();
|
const auto ltp = sm["liveTorqueParameters"].getLiveTorqueParameters();
|
||||||
const auto car_params = sm["carParams"].getCarParams();
|
const auto car_params = sm["carParams"].getCarParams();
|
||||||
const auto car_params_sp = sm["carParamsSP"].getCarParamsSP();
|
const auto car_params_sp = sm["carParamsSP"].getCarParamsSP();
|
||||||
const auto lp_sp = sm["longitudinalPlanSP"].getLongitudinalPlanSP();
|
const auto lp_sp = sm["longitudinalPlanSP"].getLongitudinalPlanSP();
|
||||||
const auto lmd = sm["liveMapDataSP"].getLiveMapDataSP();
|
const auto lmd = sm["liveMapDataSP"].getLiveMapDataSP();
|
||||||
|
|
||||||
float speedConv = is_metric ? MS_TO_KPH : MS_TO_MPH;
|
if (sm.updated("carParams")) {
|
||||||
speedLimit = lp_sp.getSpeedLimit().getResolver().getSpeedLimit() * speedConv;
|
steerControlType = car_params.getSteerControlType();
|
||||||
speedLimitLast = lp_sp.getSpeedLimit().getResolver().getSpeedLimitLast() * speedConv;
|
}
|
||||||
speedLimitOffset = lp_sp.getSpeedLimit().getResolver().getSpeedLimitOffset() * speedConv;
|
|
||||||
speedLimitValid = lp_sp.getSpeedLimit().getResolver().getSpeedLimitValid();
|
if (sm.updated("carParamsSP")) {
|
||||||
speedLimitLastValid = lp_sp.getSpeedLimit().getResolver().getSpeedLimitLastValid();
|
pcmCruiseSpeed = car_params_sp.getPcmCruiseSpeed();
|
||||||
speedLimitFinalLast = lp_sp.getSpeedLimit().getResolver().getSpeedLimitFinalLast() * speedConv;
|
}
|
||||||
speedLimitSource = lp_sp.getSpeedLimit().getResolver().getSource();
|
|
||||||
speedLimitMode = static_cast<SpeedLimitMode>(s.scene.speed_limit_mode);
|
if (sm.updated("longitudinalPlanSP")) {
|
||||||
speedLimitAssistState = lp_sp.getSpeedLimit().getAssist().getState();
|
speedLimit = lp_sp.getSpeedLimit().getResolver().getSpeedLimit() * speedConv;
|
||||||
speedLimitAssistActive = lp_sp.getSpeedLimit().getAssist().getActive();
|
speedLimitLast = lp_sp.getSpeedLimit().getResolver().getSpeedLimitLast() * speedConv;
|
||||||
roadName = s.scene.road_name;
|
speedLimitOffset = lp_sp.getSpeedLimit().getResolver().getSpeedLimitOffset() * speedConv;
|
||||||
|
speedLimitValid = lp_sp.getSpeedLimit().getResolver().getSpeedLimitValid();
|
||||||
|
speedLimitLastValid = lp_sp.getSpeedLimit().getResolver().getSpeedLimitLastValid();
|
||||||
|
speedLimitFinalLast = lp_sp.getSpeedLimit().getResolver().getSpeedLimitFinalLast() * speedConv;
|
||||||
|
speedLimitSource = lp_sp.getSpeedLimit().getResolver().getSource();
|
||||||
|
speedLimitAssistState = lp_sp.getSpeedLimit().getAssist().getState();
|
||||||
|
speedLimitAssistActive = lp_sp.getSpeedLimit().getAssist().getActive();
|
||||||
|
smartCruiseControlVisionEnabled = lp_sp.getSmartCruiseControl().getVision().getEnabled();
|
||||||
|
smartCruiseControlVisionActive = lp_sp.getSmartCruiseControl().getVision().getActive();
|
||||||
|
smartCruiseControlMapEnabled = lp_sp.getSmartCruiseControl().getMap().getEnabled();
|
||||||
|
smartCruiseControlMapActive = lp_sp.getSmartCruiseControl().getMap().getActive();
|
||||||
|
greenLightAlert = lp_sp.getE2eAlerts().getGreenLightAlert();
|
||||||
|
leadDepartAlert = lp_sp.getE2eAlerts().getLeadDepartAlert();
|
||||||
|
}
|
||||||
|
|
||||||
if (sm.updated("liveMapDataSP")) {
|
if (sm.updated("liveMapDataSP")) {
|
||||||
roadNameStr = QString::fromStdString(lmd.getRoadName());
|
roadNameStr = QString::fromStdString(lmd.getRoadName());
|
||||||
speedLimitAheadValid = lmd.getSpeedLimitAheadValid();
|
speedLimitAheadValid = lmd.getSpeedLimitAheadValid();
|
||||||
@@ -66,7 +89,7 @@ void HudRendererSP::updateState(const UIState &s) {
|
|||||||
|
|
||||||
static int reverse_delay = 0;
|
static int reverse_delay = 0;
|
||||||
bool reverse_allowed = false;
|
bool reverse_allowed = false;
|
||||||
if (int(car_state.getGearShifter()) != 4) {
|
if (car_state.getGearShifter() != cereal::CarState::GearShifter::REVERSE) {
|
||||||
reverse_delay = 0;
|
reverse_delay = 0;
|
||||||
reverse_allowed = false;
|
reverse_allowed = false;
|
||||||
} else {
|
} else {
|
||||||
@@ -78,46 +101,47 @@ void HudRendererSP::updateState(const UIState &s) {
|
|||||||
|
|
||||||
reversing = reverse_allowed;
|
reversing = reverse_allowed;
|
||||||
|
|
||||||
|
if (sm.updated("liveParameters")) {
|
||||||
|
roll = sm["liveParameters"].getLiveParameters().getRoll();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sm.updated("deviceState")) {
|
||||||
|
memoryUsagePercent = sm["deviceState"].getDeviceState().getMemoryUsagePercent();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sm.updated(gps_source)) {
|
||||||
|
gpsAccuracy = is_gps_location_external ? gpsLocation.getHorizontalAccuracy() : 1.0; // External reports accuracy, internal does not.
|
||||||
|
altitude = gpsLocation.getAltitude();
|
||||||
|
bearingAccuracyDeg = gpsLocation.getBearingAccuracyDeg();
|
||||||
|
bearingDeg = gpsLocation.getBearingDeg();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sm.updated("liveTorqueParameters")) {
|
||||||
|
torquedUseParams = ltp.getUseParams();
|
||||||
|
latAccelFactorFiltered = ltp.getLatAccelFactorFiltered();
|
||||||
|
frictionCoefficientFiltered = ltp.getFrictionCoefficientFiltered();
|
||||||
|
liveValid = ltp.getLiveValid();
|
||||||
|
}
|
||||||
|
|
||||||
latActive = car_control.getLatActive();
|
latActive = car_control.getLatActive();
|
||||||
|
actuators = car_control.getActuators();
|
||||||
|
longOverride = car_control.getCruiseControl().getOverride();
|
||||||
|
carControlEnabled = car_control.getEnabled();
|
||||||
|
|
||||||
steerOverride = car_state.getSteeringPressed();
|
steerOverride = car_state.getSteeringPressed();
|
||||||
|
|
||||||
devUiInfo = s.scene.dev_ui_info;
|
|
||||||
|
|
||||||
speedUnit = is_metric ? tr("km/h") : tr("mph");
|
|
||||||
lead_d_rel = radar_state.getLeadOne().getDRel();
|
lead_d_rel = radar_state.getLeadOne().getDRel();
|
||||||
lead_v_rel = radar_state.getLeadOne().getVRel();
|
lead_v_rel = radar_state.getLeadOne().getVRel();
|
||||||
lead_status = radar_state.getLeadOne().getStatus();
|
lead_status = radar_state.getLeadOne().getStatus();
|
||||||
steerControlType = car_params.getSteerControlType();
|
|
||||||
actuators = car_control.getActuators();
|
|
||||||
torqueLateral = steerControlType == cereal::CarParams::SteerControlType::TORQUE;
|
torqueLateral = steerControlType == cereal::CarParams::SteerControlType::TORQUE;
|
||||||
angleSteers = car_state.getSteeringAngleDeg();
|
angleSteers = car_state.getSteeringAngleDeg();
|
||||||
desiredCurvature = cs.getDesiredCurvature();
|
desiredCurvature = cs.getDesiredCurvature();
|
||||||
curvature = cs.getCurvature();
|
curvature = cs.getCurvature();
|
||||||
roll = sm["liveParameters"].getLiveParameters().getRoll();
|
|
||||||
memoryUsagePercent = sm["deviceState"].getDeviceState().getMemoryUsagePercent();
|
|
||||||
gpsAccuracy = is_gps_location_external ? gpsLocation.getHorizontalAccuracy() : 1.0; // External reports accuracy, internal does not.
|
|
||||||
altitude = gpsLocation.getAltitude();
|
|
||||||
vEgo = car_state.getVEgo();
|
vEgo = car_state.getVEgo();
|
||||||
aEgo = car_state.getAEgo();
|
aEgo = car_state.getAEgo();
|
||||||
steeringTorqueEps = car_state.getSteeringTorqueEps();
|
steeringTorqueEps = car_state.getSteeringTorqueEps();
|
||||||
bearingAccuracyDeg = gpsLocation.getBearingAccuracyDeg();
|
|
||||||
bearingDeg = gpsLocation.getBearingDeg();
|
|
||||||
torquedUseParams = ltp.getUseParams();
|
|
||||||
latAccelFactorFiltered = ltp.getLatAccelFactorFiltered();
|
|
||||||
frictionCoefficientFiltered = ltp.getFrictionCoefficientFiltered();
|
|
||||||
liveValid = ltp.getLiveValid();
|
|
||||||
|
|
||||||
standstillTimer = s.scene.standstill_timer;
|
|
||||||
isStandstill = car_state.getStandstill();
|
isStandstill = car_state.getStandstill();
|
||||||
if (not s.scene.started) standstillElapsedTime = 0.0;
|
if (not s.scene.started) standstillElapsedTime = 0.0;
|
||||||
longOverride = car_control.getCruiseControl().getOverride();
|
|
||||||
smartCruiseControlVisionEnabled = lp_sp.getSmartCruiseControl().getVision().getEnabled();
|
|
||||||
smartCruiseControlVisionActive = lp_sp.getSmartCruiseControl().getVision().getActive();
|
|
||||||
smartCruiseControlMapEnabled = lp_sp.getSmartCruiseControl().getMap().getEnabled();
|
|
||||||
smartCruiseControlMapActive = lp_sp.getSmartCruiseControl().getMap().getActive();
|
|
||||||
|
|
||||||
greenLightAlert = lp_sp.getE2eAlerts().getGreenLightAlert();
|
|
||||||
leadDepartAlert = lp_sp.getE2eAlerts().getLeadDepartAlert();
|
|
||||||
|
|
||||||
// override stock current speed values
|
// override stock current speed values
|
||||||
float v_ego = (v_ego_cluster_seen && !s.scene.trueVEgoUI) ? car_state.getVEgoCluster() : car_state.getVEgo();
|
float v_ego = (v_ego_cluster_seen && !s.scene.trueVEgoUI) ? car_state.getVEgoCluster() : car_state.getVEgo();
|
||||||
@@ -128,11 +152,8 @@ void HudRendererSP::updateState(const UIState &s) {
|
|||||||
rightBlinkerOn = car_state.getRightBlinker();
|
rightBlinkerOn = car_state.getRightBlinker();
|
||||||
leftBlindspot = car_state.getLeftBlindspot();
|
leftBlindspot = car_state.getLeftBlindspot();
|
||||||
rightBlindspot = car_state.getRightBlindspot();
|
rightBlindspot = car_state.getRightBlindspot();
|
||||||
showTurnSignals = s.scene.turn_signals;
|
|
||||||
|
|
||||||
carControlEnabled = car_control.getEnabled();
|
|
||||||
speedCluster = car_state.getCruiseState().getSpeedCluster() * speedConv;
|
speedCluster = car_state.getCruiseState().getSpeedCluster() * speedConv;
|
||||||
pcmCruiseSpeed = car_params_sp.getPcmCruiseSpeed();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void HudRendererSP::draw(QPainter &p, const QRect &surface_rect) {
|
void HudRendererSP::draw(QPainter &p, const QRect &surface_rect) {
|
||||||
|
|||||||
@@ -121,5 +121,5 @@ private:
|
|||||||
bool carControlEnabled;
|
bool carControlEnabled;
|
||||||
float speedCluster = 0;
|
float speedCluster = 0;
|
||||||
int icbm_active_counter = 0;
|
int icbm_active_counter = 0;
|
||||||
bool pcmCruiseSpeed;
|
bool pcmCruiseSpeed = true;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user