@ -12,7 +12,7 @@ def dmonitoringd_thread(sm=None, pm=None):
pm = messaging . PubMaster ( [ ' dMonitoringState ' ] )
pm = messaging . PubMaster ( [ ' dMonitoringState ' ] )
if sm is None :
if sm is None :
sm = messaging . SubMaster ( [ ' driverState ' , ' liveCalibration ' , ' carState ' , ' model ' ] , poll = [ ' driverState ' ] )
sm = messaging . SubMaster ( [ ' driverState ' , ' liveCalibration ' , ' carState ' , ' controlsState ' , ' model' ] , poll = [ ' driverState ' ] )
driver_status = DriverStatus ( )
driver_status = DriverStatus ( )
driver_status . is_rhd_region = Params ( ) . get ( " IsRHD " ) == b " 1 "
driver_status . is_rhd_region = Params ( ) . get ( " IsRHD " ) == b " 1 "
@ -22,7 +22,6 @@ def dmonitoringd_thread(sm=None, pm=None):
sm [ ' liveCalibration ' ] . calStatus = Calibration . INVALID
sm [ ' liveCalibration ' ] . calStatus = Calibration . INVALID
sm [ ' liveCalibration ' ] . rpyCalib = [ 0 , 0 , 0 ]
sm [ ' liveCalibration ' ] . rpyCalib = [ 0 , 0 , 0 ]
sm [ ' carState ' ] . vEgo = 0.
sm [ ' carState ' ] . vEgo = 0.
sm [ ' carState ' ] . cruiseState . enabled = False
sm [ ' carState ' ] . cruiseState . speed = 0.
sm [ ' carState ' ] . cruiseState . speed = 0.
sm [ ' carState ' ] . buttonEvents = [ ]
sm [ ' carState ' ] . buttonEvents = [ ]
sm [ ' carState ' ] . steeringPressed = False
sm [ ' carState ' ] . steeringPressed = False
@ -47,7 +46,7 @@ def dmonitoringd_thread(sm=None, pm=None):
sm [ ' carState ' ] . steeringPressed or \
sm [ ' carState ' ] . steeringPressed or \
sm [ ' carState ' ] . gasPressed
sm [ ' carState ' ] . gasPressed
if driver_engaged :
if driver_engaged :
driver_status . update ( Events ( ) , True , sm [ ' car State ' ] . cruiseState . enabled , sm [ ' carState ' ] . standstill )
driver_status . update ( Events ( ) , True , sm [ ' controls State ' ] . enabled , sm [ ' carState ' ] . standstill )
v_cruise_last = v_cruise
v_cruise_last = v_cruise
if sm . updated [ ' model ' ] :
if sm . updated [ ' model ' ] :
@ -55,14 +54,14 @@ def dmonitoringd_thread(sm=None, pm=None):
# Get data from dmonitoringmodeld
# Get data from dmonitoringmodeld
events = Events ( )
events = Events ( )
driver_status . get_pose ( sm [ ' driverState ' ] , sm [ ' liveCalibration ' ] . rpyCalib , sm [ ' carState ' ] . vEgo , sm [ ' car State ' ] . cruiseState . enabled )
driver_status . get_pose ( sm [ ' driverState ' ] , sm [ ' liveCalibration ' ] . rpyCalib , sm [ ' carState ' ] . vEgo , sm [ ' controls State ' ] . enabled )
# Block engaging after max number of distrations
# Block engaging after max number of distrations
if driver_status . terminal_alert_cnt > = MAX_TERMINAL_ALERTS or driver_status . terminal_time > = MAX_TERMINAL_DURATION :
if driver_status . terminal_alert_cnt > = MAX_TERMINAL_ALERTS or driver_status . terminal_time > = MAX_TERMINAL_DURATION :
events . add ( car . CarEvent . EventName . tooDistracted )
events . add ( car . CarEvent . EventName . tooDistracted )
# Update events from driver state
# Update events from driver state
driver_status . update ( events , driver_engaged , sm [ ' car State ' ] . cruiseState . enabled , sm [ ' carState ' ] . standstill )
driver_status . update ( events , driver_engaged , sm [ ' controls State ' ] . enabled , sm [ ' carState ' ] . standstill )
# build dMonitoringState packet
# build dMonitoringState packet
dat = messaging . new_message ( ' dMonitoringState ' )
dat = messaging . new_message ( ' dMonitoringState ' )