mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-07-19 08:12:07 +08:00
comms error?
This commit is contained in:
@@ -281,7 +281,13 @@ def default_ev_tuning_enabled(CP):
|
||||
return bool(ev_vehicle)
|
||||
|
||||
def get_starpilot_toggles(sm=messaging.SubMaster(["starpilotPlan"])):
|
||||
toggles = process_starpilot_toggles(sm["starpilotPlan"].starpilotToggles)
|
||||
toggles_text = sm["starpilotPlan"].starpilotToggles
|
||||
if toggles_text:
|
||||
get_starpilot_toggles._last_toggles_text = toggles_text
|
||||
else:
|
||||
toggles_text = getattr(get_starpilot_toggles, "_last_toggles_text", "")
|
||||
|
||||
toggles = process_starpilot_toggles(toggles_text)
|
||||
|
||||
# Force drive-state controls must be authoritative from params so they
|
||||
# apply immediately even if starpilotPlan publication is temporarily stale.
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
from types import SimpleNamespace
|
||||
|
||||
from openpilot.starpilot.common import starpilot_variables as spv
|
||||
|
||||
|
||||
def test_get_starpilot_toggles_uses_last_non_empty_broadcast(monkeypatch):
|
||||
params = SimpleNamespace(get_bool=lambda _key: False)
|
||||
monkeypatch.setattr(spv.get_starpilot_toggles, "_params", params, raising=False)
|
||||
monkeypatch.delattr(spv.get_starpilot_toggles, "_last_toggles_text", raising=False)
|
||||
|
||||
payload = '{"always_on_lateral": true, "vision_speed_limit_detection": true}'
|
||||
sm_with_toggles = {"starpilotPlan": SimpleNamespace(starpilotToggles=payload)}
|
||||
sm_without_toggles = {"starpilotPlan": SimpleNamespace(starpilotToggles="")}
|
||||
|
||||
first = spv.get_starpilot_toggles(sm_with_toggles)
|
||||
second = spv.get_starpilot_toggles(sm_without_toggles)
|
||||
|
||||
assert first.always_on_lateral is True
|
||||
assert second.always_on_lateral is True
|
||||
assert second.vision_speed_limit_detection is True
|
||||
@@ -32,6 +32,10 @@ def _sanitize_json_value(value):
|
||||
return value
|
||||
|
||||
|
||||
def serialize_starpilot_toggles(starpilot_toggles):
|
||||
return json.dumps(_sanitize_json_value(vars(starpilot_toggles)), allow_nan=False)
|
||||
|
||||
|
||||
class StarPilotPlanner:
|
||||
def __init__(self, error_log, ThemeManager):
|
||||
self.params = Params(return_defaults=True)
|
||||
@@ -152,7 +156,7 @@ class StarPilotPlanner:
|
||||
self.tracking_lead_filter.update(following_lead)
|
||||
return self.tracking_lead_filter.x >= THRESHOLD
|
||||
|
||||
def publish(self, theme_updated, sm, pm, starpilot_toggles):
|
||||
def publish(self, theme_updated, sm, pm, starpilot_toggles, serialized_toggles=""):
|
||||
starpilot_plan_send = messaging.new_message("starpilotPlan")
|
||||
starpilot_plan_send.valid = sm.all_checks(service_list=["carState", "controlsState", "selfdriveState", "radarState"])
|
||||
starpilotPlan = starpilot_plan_send.starpilotPlan
|
||||
@@ -178,7 +182,7 @@ class StarPilotPlanner:
|
||||
|
||||
starpilotPlan.starpilotEvents = self.starpilot_events.events.to_msg()
|
||||
|
||||
starpilotPlan.starpilotToggles = json.dumps(_sanitize_json_value(vars(starpilot_toggles)), allow_nan=False)
|
||||
starpilotPlan.starpilotToggles = serialized_toggles
|
||||
|
||||
if sm["starpilotCarState"].trafficModeEnabled:
|
||||
starpilotPlan.increasedStoppedDistance = 0
|
||||
|
||||
@@ -24,12 +24,13 @@ from openpilot.starpilot.common.safe_mode import (
|
||||
)
|
||||
from openpilot.starpilot.common.starpilot_utilities import ThreadManager, flash_panda, is_url_pingable, lock_doors, use_konik_server
|
||||
from openpilot.starpilot.common.starpilot_variables import ERROR_LOGS_PATH, StarPilotVariables
|
||||
from openpilot.starpilot.controls.starpilot_planner import StarPilotPlanner
|
||||
from openpilot.starpilot.controls.starpilot_planner import StarPilotPlanner, serialize_starpilot_toggles
|
||||
from openpilot.starpilot.system.starpilot_stats import send_stats
|
||||
from openpilot.starpilot.system.starpilot_tracking import StarPilotTracking
|
||||
|
||||
ASSET_CHECK_RATE = (1 / DT_MDL)
|
||||
DRIVE_STATS_SYNC_RATE = 30
|
||||
TOGGLE_BROADCAST_INTERVAL_FRAMES = int(1 / DT_MDL)
|
||||
UPDATE_CHECK_INTERVAL_SECONDS = 60 * 60
|
||||
|
||||
|
||||
@@ -181,6 +182,8 @@ def starpilot_thread():
|
||||
thread_manager = ThreadManager()
|
||||
|
||||
starpilot_toggles = starpilot_variables.starpilot_toggles
|
||||
serialized_starpilot_toggles = serialize_starpilot_toggles(starpilot_toggles)
|
||||
toggle_broadcast_pending = True
|
||||
|
||||
drive_stats_session = requests.Session()
|
||||
next_drive_stats_sync = 0.0
|
||||
@@ -211,6 +214,8 @@ def starpilot_thread():
|
||||
starpilot_planner.shutdown()
|
||||
|
||||
starpilot_toggles = update_toggles(starpilot_variables, started, theme_manager, thread_manager, time_validated, params, starpilot_toggles)
|
||||
serialized_starpilot_toggles = serialize_starpilot_toggles(starpilot_toggles)
|
||||
toggle_broadcast_pending = True
|
||||
transition_offroad(starpilot_planner, theme_manager, thread_manager, time_validated, sm, params, starpilot_toggles)
|
||||
|
||||
run_update_checks = True
|
||||
@@ -221,13 +226,17 @@ def starpilot_thread():
|
||||
transition_onroad(error_log)
|
||||
|
||||
if started and sm.updated["modelV2"]:
|
||||
broadcast_toggles = toggle_broadcast_pending or (rate_keeper.frame % TOGGLE_BROADCAST_INTERVAL_FRAMES == 0)
|
||||
starpilot_planner.update(now, time_validated, sm, starpilot_toggles)
|
||||
starpilot_planner.publish(theme_manager.theme_updated, sm, pm, starpilot_toggles)
|
||||
starpilot_planner.publish(theme_manager.theme_updated, sm, pm, starpilot_toggles,
|
||||
serialized_starpilot_toggles if broadcast_toggles else "")
|
||||
if broadcast_toggles:
|
||||
toggle_broadcast_pending = False
|
||||
|
||||
starpilot_tracking.update(now, time_validated, sm, starpilot_toggles)
|
||||
elif not started:
|
||||
starpilot_plan_send = messaging.new_message("starpilotPlan")
|
||||
starpilot_plan_send.starpilotPlan.starpilotToggles = json.dumps(vars(starpilot_toggles))
|
||||
starpilot_plan_send.starpilotPlan.starpilotToggles = serialized_starpilot_toggles
|
||||
starpilot_plan_send.starpilotPlan.themeUpdated = theme_manager.theme_updated
|
||||
pm.send("starpilotPlan", starpilot_plan_send)
|
||||
|
||||
@@ -256,6 +265,8 @@ def starpilot_thread():
|
||||
|
||||
if params_memory.get_bool("StarPilotTogglesUpdated") or theme_manager.theme_updated:
|
||||
starpilot_toggles = update_toggles(starpilot_variables, started, theme_manager, thread_manager, time_validated, params, starpilot_toggles)
|
||||
serialized_starpilot_toggles = serialize_starpilot_toggles(starpilot_toggles)
|
||||
toggle_broadcast_pending = True
|
||||
|
||||
periodic_update_due = monotonic_now >= next_periodic_update_check
|
||||
if periodic_update_due:
|
||||
|
||||
Reference in New Issue
Block a user