49 #include "rnr/rnrconfig.h" 67 LaeAlarms::LaeAlarms()
71 LaeAlarms::~LaeAlarms()
75 bool LaeAlarms::isCritical()
77 return RtDb.m_alarms.m_system.m_bIsCritical;
80 bool LaeAlarms::isBatteryCritical()
82 return RtDb.m_alarms.m_battery.m_bIsCritical;
85 bool LaeAlarms::isSafeToOperate()
88 if( !RtDb.m_alarms.m_system.m_bIsCritical )
93 else if( (RtDb.m_alarms.m_system.m_uAlarms & ~LAE_ALARM_BATT) ==
105 void LaeAlarms::update()
114 int nMotor1, nMotor2;
122 for(nCtlr=0; nCtlr<LaeNumMotorCtlrs; ++nCtlr)
128 uStatus = RtDb.m_motorctlr[nCtlr].m_uStatus;
130 if( nCtlr == LaeMotorCtlrIdFront )
132 nMotor1 = LaeMotorIdLF;
133 nMotor2 = LaeMotorIdRF;
137 nMotor1 = LaeMotorIdLR;
138 nMotor2 = LaeMotorIdRR;
148 subsys.
m_uAlarms |= LAE_ALARM_MOTCTLR_BATT_V_HIGH;
152 subsys.
m_uAlarms |= LAE_ALARM_MOTCTLR_LOGIC_V_HIGH;
156 subsys.
m_uAlarms |= LAE_ALARM_MOTCTLR_LOGIC_V_LOW;
162 subsys.
m_uWarnings |= LAE_WARN_MOTCTLR_BATT_V_HIGH;
174 if( subsys.
m_uAlarms & LAE_CRIT_MOTCTLR )
210 copyAlarms(subsys, RtDb.m_alarms.m_motorctlr[nCtlr]);
211 copyAlarms(mot1, RtDb.m_alarms.m_motor[nMotor1]);
212 copyAlarms(mot2, RtDb.m_alarms.m_motor[nMotor2]);
215 updateSysAlarms(subsys, sys);
216 updateSysAlarms(mot1, sys);
217 updateSysAlarms(mot2, sys);
225 if( RtDb.m_energy.m_fBatterySoC < LAE_CRIT_BATT_SOC )
230 if( RtDb.m_energy.m_fBatterySoC < LAE_WARN_BATT_SOC )
236 copyAlarms(subsys, RtDb.m_alarms.m_battery);
239 updateSysAlarms(subsys, sys);
246 if( !RtDb.m_enable.m_bImu )
250 if( !RtDb.m_enable.m_bRange )
254 if( !RtDb.m_enable.m_bFCam )
260 copyAlarms(subsys, RtDb.m_alarms.m_sensors);
263 updateSysAlarms(subsys, sys);
268 if( RtDb.m_robotstatus.m_bIsEStopped )
274 copyAlarms(sys, RtDb.m_alarms.m_system);
279 if( RtDb.m_alarms.m_system.m_uAlarms == LAE_ALARM_NONE )
281 RtDb.m_robotstatus.m_bAlarmState =
false;
285 RtDb.m_robotstatus.m_bAlarmState =
true;
logic battery under volt error
u32_t m_uWarnings
warning or'ed bits
Alarm information state structure.
RoboClaw motor controller class interface.
bool m_bIsCritical
is [not] critical alarm
temperature out-of-range error
main battery over voltage error
The <b><i>Laelaps</i></b> namespace encapsulates all <b><i>Laelaps</i></b> related constructs...
temp out-of-range warning
main battery over volt warning
u32_t m_uAlarms
alarm or'ed bits
main battery under volt warning
Laelaps motors, encoder, and controllers hardware abstraction interfaces.
Laelaps alarm monitoring class interface.
logic battery over volt error
motor 1 over current warning
motor 2 over current warning
Laelaps real-time "database".
Top-level package include file.