User Tools

Site Tools


eeros_architecture:safety_system:properties

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
eeros_architecture:safety_system:properties [2017/07/25 08:46] – [Safety Events] grafeeros_architecture:safety_system:properties [2018/05/15 13:04] – external edit 127.0.0.1
Line 35: Line 35:
 <code c> <code c>
   SafetyLevel slOff("off");   SafetyLevel slOff("off");
-  SafetyLevel slIinitializing("initialize";+  SafetyLevel slIinitializing("initialize");
   SafetyLevel slRunning("running");   SafetyLevel slRunning("running");
      
Line 59: Line 59:
 It is also possible to add an event to many levels. In the following example we add from the level //slPowerOn// until the level //slMoving// the event //seDoEmergency//, which causes a transition to the level //emergency// and is a public event. It is also possible to add an event to many levels. In the following example we add from the level //slPowerOn// until the level //slMoving// the event //seDoEmergency//, which causes a transition to the level //emergency// and is a public event.
 <code c> <code c>
- // Add events to multiple levels+  // Add events to multiple levels
   addEventToLevelAndAbove(slPowerOn, slMoving, seDoEmergency, kPublicEvent);   addEventToLevelAndAbove(slPowerOn, slMoving, seDoEmergency, kPublicEvent);
 </code> </code>
Line 66: Line 66:
   // Add events to all levels equal or smaller than srcLevel   // Add events to all levels equal or smaller than srcLevel
   addEventToLevelAndBelow(srcLevel, destLevel, event, kPublicEvent);   addEventToLevelAndBelow(srcLevel, destLevel, event, kPublicEvent);
 +  // Add events to all levels in between lowerLevel and upperLevel (including lowerLevel and upperLevel)
 +  addEventToAllLevelsBetween(lowerLevel, upperLevel, destLevel, event, kPublicEvent);
 </code> </code>
  
Line 75: Line 77:
 Define actions for the safety levels. Each level can cause no or one action. Define actions for the safety levels. Each level can cause no or one action.
 <code cpp> <code cpp>
-  slOff.setLevelAction([&](SafetyContext* privateContext) {+  slOff.setLevelAction([this](SafetyContext* privateContext) {
     privateContext->triggerEvent(seDoSwInit);     privateContext->triggerEvent(seDoSwInit);
   });   });
Line 85: Line 87:
 Each time that the safety system runs in a certain level a counter named ''nofActivations'' is incremented. Whenever the safety level due to an event this counter will be reset to 0. This allows for measuring the time the system will run in a given safety level. The following example demonstrates this.  Each time that the safety system runs in a certain level a counter named ''nofActivations'' is incremented. Whenever the safety level due to an event this counter will be reset to 0. This allows for measuring the time the system will run in a given safety level. The following example demonstrates this. 
 <code cpp> <code cpp>
-  slRunning.setLevelAction([&](SafetyContext* privateContext) {+  slRunning.setLevelAction([this,period](SafetyContext* privateContext) {
     if (slRunning.getNofActivations() * period >= 60.0)     if (slRunning.getNofActivations() * period >= 60.0)
       privateContext->triggerEvent(seStop);       privateContext->triggerEvent(seStop);
eeros_architecture/safety_system/properties.txt · Last modified: 2024/06/10 09:45 by ursgraf