|
|
@ -106,6 +106,23 @@ def replay_sensor_events(s, msgs): |
|
|
|
rk.keep_time() |
|
|
|
rk.keep_time() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def replay_sensor_event(s, msgs): |
|
|
|
|
|
|
|
smsgs = [m for m in msgs if m.which() == s] |
|
|
|
|
|
|
|
#if len(smsgs) == 0: |
|
|
|
|
|
|
|
# return |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pm = messaging.PubMaster([s, ]) |
|
|
|
|
|
|
|
rk = Ratekeeper(service_list[s].frequency, print_delay_threshold=None) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while True: |
|
|
|
|
|
|
|
for m in smsgs: |
|
|
|
|
|
|
|
m = m.as_builder() |
|
|
|
|
|
|
|
m.logMonoTime = int(sec_since_boot() * 1e9) |
|
|
|
|
|
|
|
getattr(m, m.which()).timestamp = m.logMonoTime |
|
|
|
|
|
|
|
pm.send(m.which(), m) |
|
|
|
|
|
|
|
rk.keep_time() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def replay_service(s, msgs): |
|
|
|
def replay_service(s, msgs): |
|
|
|
pm = messaging.PubMaster([s, ]) |
|
|
|
pm = messaging.PubMaster([s, ]) |
|
|
|
rk = Ratekeeper(service_list[s].frequency, print_delay_threshold=None) |
|
|
|
rk = Ratekeeper(service_list[s].frequency, print_delay_threshold=None) |
|
|
@ -193,8 +210,49 @@ def migrate_carparams(lr): |
|
|
|
return all_msgs |
|
|
|
return all_msgs |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def migrate_sensorEvents(lr): |
|
|
|
|
|
|
|
all_msgs = [] |
|
|
|
|
|
|
|
for msg in lr: |
|
|
|
|
|
|
|
if msg.which() != 'sensorEvents': |
|
|
|
|
|
|
|
all_msgs.append(msg) |
|
|
|
|
|
|
|
continue |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# migrate to split sensor events |
|
|
|
|
|
|
|
for evt in msg.sensorEvents: |
|
|
|
|
|
|
|
# build new message for each sensor type |
|
|
|
|
|
|
|
sensor_service = '' |
|
|
|
|
|
|
|
if evt.which() == 'acceleration': |
|
|
|
|
|
|
|
sensor_service = 'accelerometer' |
|
|
|
|
|
|
|
elif evt.which() == 'gyro' or evt.which() == 'gyroUncalibrated': |
|
|
|
|
|
|
|
sensor_service = 'gyroscope' |
|
|
|
|
|
|
|
elif evt.which() == 'light' or evt.which() == 'proximity': |
|
|
|
|
|
|
|
sensor_service = 'lightSensor' |
|
|
|
|
|
|
|
elif evt.which() == 'magnetic' or evt.which() == 'magneticUncalibrated': |
|
|
|
|
|
|
|
sensor_service = 'magnetometer' |
|
|
|
|
|
|
|
elif evt.which() == 'temperature': |
|
|
|
|
|
|
|
sensor_service = 'temperatureSensor' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m = messaging.new_message(sensor_service) |
|
|
|
|
|
|
|
m.valid = True |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_dat = getattr(m, sensor_service) |
|
|
|
|
|
|
|
m_dat.version = evt.version |
|
|
|
|
|
|
|
m_dat.sensor = evt.sensor |
|
|
|
|
|
|
|
m_dat.type = evt.type |
|
|
|
|
|
|
|
m_dat.source = evt.source |
|
|
|
|
|
|
|
setattr(m_dat, evt.which(), getattr(evt, evt.which())) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
all_msgs.append(m.as_reader()) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# append also legacy sensorEvents, to have both (remove later) |
|
|
|
|
|
|
|
all_msgs.append(msg) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return all_msgs |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def regen_segment(lr, frs=None, outdir=FAKEDATA, disable_tqdm=False): |
|
|
|
def regen_segment(lr, frs=None, outdir=FAKEDATA, disable_tqdm=False): |
|
|
|
lr = migrate_carparams(list(lr)) |
|
|
|
lr = migrate_carparams(list(lr)) |
|
|
|
|
|
|
|
lr = migrate_sensorEvents(list(lr)) |
|
|
|
if frs is None: |
|
|
|
if frs is None: |
|
|
|
frs = dict() |
|
|
|
frs = dict() |
|
|
|
|
|
|
|
|
|
|
@ -213,6 +271,9 @@ def regen_segment(lr, frs=None, outdir=FAKEDATA, disable_tqdm=False): |
|
|
|
fake_daemons = { |
|
|
|
fake_daemons = { |
|
|
|
'sensord': [ |
|
|
|
'sensord': [ |
|
|
|
multiprocessing.Process(target=replay_sensor_events, args=('sensorEvents', lr)), |
|
|
|
multiprocessing.Process(target=replay_sensor_events, args=('sensorEvents', lr)), |
|
|
|
|
|
|
|
multiprocessing.Process(target=replay_sensor_event, args=('accelerometer', lr)), |
|
|
|
|
|
|
|
multiprocessing.Process(target=replay_sensor_event, args=('gyroscope', lr)), |
|
|
|
|
|
|
|
multiprocessing.Process(target=replay_sensor_event, args=('magnetometer', lr)), |
|
|
|
], |
|
|
|
], |
|
|
|
'pandad': [ |
|
|
|
'pandad': [ |
|
|
|
multiprocessing.Process(target=replay_service, args=('can', lr)), |
|
|
|
multiprocessing.Process(target=replay_service, args=('can', lr)), |
|
|
|