mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-06-14 03:25:44 +08:00
82 lines
2.3 KiB
Python
82 lines
2.3 KiB
Python
from openpilot.common.params_pyx import Params as _Params, ParamKeyFlag, ParamKeyType, UnknownKeyName
|
|
assert _Params
|
|
assert ParamKeyFlag
|
|
assert ParamKeyType
|
|
assert UnknownKeyName
|
|
|
|
|
|
class Params(_Params):
|
|
def get(self, key, block=False, return_default=False, encoding=None, default=None):
|
|
try:
|
|
value = super().get(key, block=block, return_default=return_default)
|
|
except UnknownKeyName:
|
|
return default
|
|
if value is None:
|
|
return default
|
|
if encoding is not None and isinstance(value, bytes):
|
|
try:
|
|
return value.decode(encoding)
|
|
except Exception:
|
|
return value.decode("utf-8", errors="replace")
|
|
return value
|
|
|
|
def get_bool(self, key, block=False, default=False):
|
|
try:
|
|
return super().get_bool(key, block=block)
|
|
except UnknownKeyName:
|
|
return bool(default)
|
|
|
|
def get_int(self, key, block=False, return_default=False, default=0):
|
|
val = self.get(key, block=block, return_default=return_default, encoding="utf-8")
|
|
if val is None or val == "":
|
|
return default
|
|
try:
|
|
return int(float(val))
|
|
except ValueError:
|
|
return default
|
|
|
|
def get_float(self, key, block=False, return_default=False, default=0.0):
|
|
val = self.get(key, block=block, return_default=return_default, encoding="utf-8")
|
|
if val is None or val == "":
|
|
return default
|
|
try:
|
|
return float(val)
|
|
except ValueError:
|
|
return default
|
|
|
|
def put_int(self, key, val):
|
|
t = self.get_type(key)
|
|
if t == ParamKeyType.FLOAT:
|
|
self.put(key, float(val))
|
|
elif t == ParamKeyType.INT:
|
|
self.put(key, int(val))
|
|
elif t == ParamKeyType.BOOL:
|
|
self.put(key, bool(val))
|
|
else:
|
|
self.put(key, str(int(val)))
|
|
|
|
def put_float(self, key, val):
|
|
t = self.get_type(key)
|
|
if t == ParamKeyType.FLOAT:
|
|
self.put(key, float(val))
|
|
elif t == ParamKeyType.INT:
|
|
self.put(key, int(val))
|
|
elif t == ParamKeyType.BOOL:
|
|
self.put(key, bool(val))
|
|
else:
|
|
self.put(key, str(float(val)))
|
|
|
|
if __name__ == "__main__":
|
|
import sys
|
|
|
|
params = Params()
|
|
key = sys.argv[1]
|
|
assert params.check_key(key), f"unknown param: {key}"
|
|
|
|
if len(sys.argv) == 3:
|
|
val = sys.argv[2]
|
|
print(f"SET: {key} = {val}")
|
|
params.put(key, val)
|
|
elif len(sys.argv) == 2:
|
|
print(f"GET: {key} = {params.get(key)}")
|