add CLEAR_ON_IGNITION param type (#20810)

albatross
Adeeb Shihadeh 2021-05-04 11:32:40 -07:00 committed by GitHub
parent c405442820
commit b4447993c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 15 additions and 24 deletions

View File

@ -12,6 +12,7 @@ cdef extern from "selfdrive/common/params.h":
PERSISTENT PERSISTENT
CLEAR_ON_MANAGER_START CLEAR_ON_MANAGER_START
CLEAR_ON_PANDA_DISCONNECT CLEAR_ON_PANDA_DISCONNECT
CLEAR_ON_IGNITION
ALL ALL
cdef cppclass Params: cdef cppclass Params:

View File

@ -13,6 +13,7 @@ cdef class ParamKeyType:
PERSISTENT = c_ParamKeyType.PERSISTENT PERSISTENT = c_ParamKeyType.PERSISTENT
CLEAR_ON_MANAGER_START = c_ParamKeyType.CLEAR_ON_MANAGER_START CLEAR_ON_MANAGER_START = c_ParamKeyType.CLEAR_ON_MANAGER_START
CLEAR_ON_PANDA_DISCONNECT = c_ParamKeyType.CLEAR_ON_PANDA_DISCONNECT CLEAR_ON_PANDA_DISCONNECT = c_ParamKeyType.CLEAR_ON_PANDA_DISCONNECT
CLEAR_ON_IGNITION = c_ParamKeyType.CLEAR_ON_IGNITION
ALL = c_ParamKeyType.ALL ALL = c_ParamKeyType.ALL
def ensure_bytes(v): def ensure_bytes(v):
@ -43,12 +44,6 @@ cdef class Params:
self.p.clearAll(tx_type) self.p.clearAll(tx_type)
def manager_start(self):
self.clear_all(ParamKeyType.CLEAR_ON_MANAGER_START)
def panda_disconnect(self):
self.clear_all(ParamKeyType.CLEAR_ON_PANDA_DISCONNECT)
def check_key(self, key): def check_key(self, key):
key = ensure_bytes(key) key = ensure_bytes(key)

View File

@ -6,7 +6,7 @@ import shutil
import stat import stat
import unittest import unittest
from common.params import Params, UnknownKeyName, put_nonblocking from common.params import Params, ParamKeyType, UnknownKeyName, put_nonblocking
class TestParams(unittest.TestCase): class TestParams(unittest.TestCase):
def setUp(self): def setUp(self):
@ -35,7 +35,7 @@ class TestParams(unittest.TestCase):
self.params.put("CarParams", "test") self.params.put("CarParams", "test")
self.params.put("DongleId", "cb38263377b873ee") self.params.put("DongleId", "cb38263377b873ee")
assert self.params.get("CarParams") == b"test" assert self.params.get("CarParams") == b"test"
self.params.panda_disconnect() self.params.clear_all(ParamKeyType.CLEAR_ON_PANDA_DISCONNECT)
assert self.params.get("CarParams") is None assert self.params.get("CarParams") is None
assert self.params.get("DongleId") is not None assert self.params.get("DongleId") is not None
@ -43,7 +43,7 @@ class TestParams(unittest.TestCase):
self.params.put("CarParams", "test") self.params.put("CarParams", "test")
self.params.put("DongleId", "cb38263377b873ee") self.params.put("DongleId", "cb38263377b873ee")
assert self.params.get("CarParams") == b"test" assert self.params.get("CarParams") == b"test"
self.params.manager_start() self.params.clear_all(ParamKeyType.CLEAR_ON_MANAGER_START)
assert self.params.get("CarParams") is None assert self.params.get("CarParams") is None
assert self.params.get("DongleId") is not None assert self.params.get("DongleId") is not None

View File

@ -320,12 +320,7 @@ void panda_state_thread(bool spoofing_started) {
// clear VIN, CarParams, and set new safety on car start // clear VIN, CarParams, and set new safety on car start
if (ignition && !ignition_last) { if (ignition && !ignition_last) {
int result = params.remove("CarVin"); params.clearAll(CLEAR_ON_IGNITION);
assert((result == 0) || (result == ERR_NO_VALUE));
result = params.remove("CarParams");
assert((result == 0) || (result == ERR_NO_VALUE));
result = params.remove("ControlsReady");
assert((result == 0) || (result == ERR_NO_VALUE));
if (!safety_setter_thread_running) { if (!safety_setter_thread_running) {
safety_setter_thread_running = true; safety_setter_thread_running = true;

View File

@ -149,11 +149,11 @@ std::unordered_map<std::string, uint32_t> keys = {
{"AthenadPid", PERSISTENT}, {"AthenadPid", PERSISTENT},
{"CalibrationParams", PERSISTENT}, {"CalibrationParams", PERSISTENT},
{"CarBatteryCapacity", PERSISTENT}, {"CarBatteryCapacity", PERSISTENT},
{"CarParams", CLEAR_ON_MANAGER_START | CLEAR_ON_PANDA_DISCONNECT}, {"CarParams", CLEAR_ON_MANAGER_START | CLEAR_ON_PANDA_DISCONNECT | CLEAR_ON_IGNITION},
{"CarParamsCache", CLEAR_ON_MANAGER_START | CLEAR_ON_PANDA_DISCONNECT}, {"CarParamsCache", CLEAR_ON_MANAGER_START | CLEAR_ON_PANDA_DISCONNECT},
{"CarVin", CLEAR_ON_MANAGER_START | CLEAR_ON_PANDA_DISCONNECT}, {"CarVin", CLEAR_ON_MANAGER_START | CLEAR_ON_PANDA_DISCONNECT | CLEAR_ON_IGNITION},
{"CommunityFeaturesToggle", PERSISTENT}, {"CommunityFeaturesToggle", PERSISTENT},
{"ControlsReady", CLEAR_ON_MANAGER_START | CLEAR_ON_PANDA_DISCONNECT}, {"ControlsReady", CLEAR_ON_MANAGER_START | CLEAR_ON_PANDA_DISCONNECT | CLEAR_ON_IGNITION},
{"EnableLteOnroad", PERSISTENT}, {"EnableLteOnroad", PERSISTENT},
{"EndToEndToggle", PERSISTENT}, {"EndToEndToggle", PERSISTENT},
{"CompletedTrainingVersion", PERSISTENT}, {"CompletedTrainingVersion", PERSISTENT},

View File

@ -11,7 +11,8 @@ enum ParamKeyType {
PERSISTENT = 0x02, PERSISTENT = 0x02,
CLEAR_ON_MANAGER_START = 0x04, CLEAR_ON_MANAGER_START = 0x04,
CLEAR_ON_PANDA_DISCONNECT = 0x08, CLEAR_ON_PANDA_DISCONNECT = 0x08,
ALL = 0x02 | 0x04 | 0x08 CLEAR_ON_IGNITION = 0x10,
ALL = 0x02 | 0x04 | 0x08 | 0x10
}; };
class Params { class Params {

View File

@ -9,7 +9,7 @@ import traceback
import cereal.messaging as messaging import cereal.messaging as messaging
import selfdrive.crash as crash import selfdrive.crash as crash
from common.basedir import BASEDIR from common.basedir import BASEDIR
from common.params import Params from common.params import Params, ParamKeyType
from common.text_window import TextWindow from common.text_window import TextWindow
from selfdrive.boardd.set_time import set_time from selfdrive.boardd.set_time import set_time
from selfdrive.hardware import HARDWARE, PC, TICI from selfdrive.hardware import HARDWARE, PC, TICI
@ -28,7 +28,7 @@ def manager_init():
set_time(cloudlog) set_time(cloudlog)
params = Params() params = Params()
params.manager_start() params.clear_all(ParamKeyType.CLEAR_ON_MANAGER_START)
default_params = [ default_params = [
("CompletedTrainingVersion", "0"), ("CompletedTrainingVersion", "0"),

View File

@ -351,7 +351,6 @@ def python_replay_process(cfg, lr):
params = Params() params = Params()
params.clear_all() params.clear_all()
params.manager_start()
params.put_bool("OpenpilotEnabledToggle", True) params.put_bool("OpenpilotEnabledToggle", True)
params.put_bool("Passive", False) params.put_bool("Passive", False)
params.put_bool("CommunityFeaturesToggle", True) params.put_bool("CommunityFeaturesToggle", True)

View File

@ -12,7 +12,7 @@ import cereal.messaging as messaging
from cereal import log from cereal import log
from common.filter_simple import FirstOrderFilter from common.filter_simple import FirstOrderFilter
from common.numpy_fast import clip, interp from common.numpy_fast import clip, interp
from common.params import Params from common.params import Params, ParamKeyType
from common.realtime import DT_TRML, sec_since_boot from common.realtime import DT_TRML, sec_since_boot
from common.dict_helpers import strip_deprecated_keys from common.dict_helpers import strip_deprecated_keys
from selfdrive.controls.lib.alertmanager import set_offroad_alert from selfdrive.controls.lib.alertmanager import set_offroad_alert
@ -222,7 +222,7 @@ def thermald_thread():
if pandaState_prev is not None: if pandaState_prev is not None:
if pandaState.pandaState.pandaType == log.PandaState.PandaType.unknown and \ if pandaState.pandaState.pandaType == log.PandaState.PandaType.unknown and \
pandaState_prev.pandaState.pandaType != log.PandaState.PandaType.unknown: pandaState_prev.pandaState.pandaType != log.PandaState.PandaType.unknown:
params.panda_disconnect() params.clear_all(ParamKeyType.CLEAR_ON_PANDA_DISCONNECT)
pandaState_prev = pandaState pandaState_prev = pandaState
# get_network_type is an expensive call. update every 10s # get_network_type is an expensive call. update every 10s