0423d12c9c
* Update carrot_functions.py * fix.. atc.. * TR16 model. * fix.. atc * Adjust interpolation value for t_follow calculation * fix safeMode.. * fix safeMode2 * fix.. v_cruise * model_turn_speed.. * fix.. * fix.. * fix.. cruise.py * fix.. modelTurn.. * fix stopped car safe mode. * model turn 120% * remove model turn speed.. * paramsd... * Revert "remove model turn speed.." This reverts commit 564e9dd609d63215687551a2bc9bfee0141563e1. * model_turn_speed... 120 -> 115% * starting achange cost 30 -> 10 * fix.. * aChangeCostStarting * fix.. * gwm v7 * Adjust traffic stop distance parameter * Update carrot_functions.py * update gwm 250929 * trafficStopDistance adjust * localizer_roll_std * scc13 * fix... * fix.. scc13 * scc14 * bypass scc13 * fix scc13 * TheCoolPeople's Model * North Nevada Model * Revert "model_turn_speed... 120 -> 115%" This reverts commit e842a7e99fd6af82fd64d10bf0a08441e9150e5d. * Reapply "remove model turn speed.." This reverts commit 544ac168114814df5293f4a7481ea4769bc4b6b3. * for c3x lite (#218) add hardware c3x lite * NNV(North Nevada) v2 * fix.. * Nuggets In Dijon Model * toyota accel pid long * for c3xlite fix (#219) * LatSmoothSec * Revert "Reapply "remove model turn speed.."" This reverts commit 2c10aae495cc0b601001634d8ee7eaa07faf0022. * apply livePose * releases 251017 --------- Co-authored-by: 「 crwusiz 」 <43285072+crwusiz@users.noreply.github.com>
52 lines
1.2 KiB
Python
52 lines
1.2 KiB
Python
"""
|
|
Utilities for generating mock messages for testing.
|
|
example in common/tests/test_mock.py
|
|
"""
|
|
|
|
|
|
import functools
|
|
import threading
|
|
from cereal.messaging import PubMaster
|
|
from cereal.services import SERVICE_LIST
|
|
from openpilot.common.mock.generators import generate_livePose, generate_liveLocationKalman
|
|
from openpilot.common.realtime import Ratekeeper
|
|
|
|
|
|
MOCK_GENERATOR = {
|
|
"livePose": generate_livePose
|
|
"liveLocationKalman": generate_liveLocationKalman
|
|
}
|
|
|
|
|
|
def generate_messages_loop(services: list[str], done: threading.Event):
|
|
pm = PubMaster(services)
|
|
rk = Ratekeeper(100)
|
|
i = 0
|
|
while not done.is_set():
|
|
for s in services:
|
|
should_send = i % (100/SERVICE_LIST[s].frequency) == 0
|
|
if should_send:
|
|
message = MOCK_GENERATOR[s]()
|
|
pm.send(s, message)
|
|
i += 1
|
|
rk.keep_time()
|
|
|
|
|
|
def mock_messages(services: list[str] | str):
|
|
if isinstance(services, str):
|
|
services = [services]
|
|
|
|
def decorator(func):
|
|
@functools.wraps(func)
|
|
def wrapper(*args, **kwargs):
|
|
done = threading.Event()
|
|
t = threading.Thread(target=generate_messages_loop, args=(services, done))
|
|
t.start()
|
|
try:
|
|
return func(*args, **kwargs)
|
|
finally:
|
|
done.set()
|
|
t.join()
|
|
return wrapper
|
|
return decorator
|