Package Summary
| Version | 0.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-11-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_reactor_order_1
Core test that records whether a state reactor’s output event is processed before or after the event
that triggered it. The order is a property of ISmaccStateMachine::postEvent, which today runs the
reactors of the current state synchronously at post time, so a reactor’s output event is queued before
the triggering event itself. Machines depend on it: sm_retry_logic_1 goes from SsAttemptTask straight to
StExhausted on the third timeout only because the countdown’s end is processed before the timer event
that StAttempting also reacts to.
Design
-
CpEventPulse(onClPulseinOrPulse) postsEvXeverypulse_period_ms(default 500) from a node wall timer, that is from the executor thread, which is the posting thread of every subscription and timer callback. -
StAcreates aSrEventCountdownwith count 1 onEvX, whose output isEvCountdownEnd, and reacts to both:EvX→StViaTrigger,EvCountdownEnd→StViaCountdown. -
StViaCountdownandStViaTriggerreturn toStAon the nextEvX, so every pulse makes one pass throughStAand records one outcome in the log.
What it shows
On the current core every pass enters StViaCountdown: the countdown’s output is queued before the
trigger, so EvCountdownEnd wins. (The leftover EvX then lands in StViaCountdown and takes the machine
back to StA at once, the “events firing in the next state” rule.) A core change that processes the
trigger first would enter StViaTrigger instead, and EvCountdownEnd would land there with no reaction
until the next pulse. The count of each is the measure: before and after a change to the event path, the
StViaTrigger count must stay at zero.
Running
ros2 launch sm_coretest_reactor_order_1 sm_coretest_reactor_order_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_reactor_order_1_latest.log. Count the
[StViaCountdown] Entered and [StViaTrigger] Entered lines against the [CpEventPulse] pulse lines.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| sr_event_countdown | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_reactor_order_1 at Robotics Stack Exchange
Package Summary
| Version | 0.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-11-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_reactor_order_1
Core test that records whether a state reactor’s output event is processed before or after the event
that triggered it. The order is a property of ISmaccStateMachine::postEvent, which today runs the
reactors of the current state synchronously at post time, so a reactor’s output event is queued before
the triggering event itself. Machines depend on it: sm_retry_logic_1 goes from SsAttemptTask straight to
StExhausted on the third timeout only because the countdown’s end is processed before the timer event
that StAttempting also reacts to.
Design
-
CpEventPulse(onClPulseinOrPulse) postsEvXeverypulse_period_ms(default 500) from a node wall timer, that is from the executor thread, which is the posting thread of every subscription and timer callback. -
StAcreates aSrEventCountdownwith count 1 onEvX, whose output isEvCountdownEnd, and reacts to both:EvX→StViaTrigger,EvCountdownEnd→StViaCountdown. -
StViaCountdownandStViaTriggerreturn toStAon the nextEvX, so every pulse makes one pass throughStAand records one outcome in the log.
What it shows
On the current core every pass enters StViaCountdown: the countdown’s output is queued before the
trigger, so EvCountdownEnd wins. (The leftover EvX then lands in StViaCountdown and takes the machine
back to StA at once, the “events firing in the next state” rule.) A core change that processes the
trigger first would enter StViaTrigger instead, and EvCountdownEnd would land there with no reaction
until the next pulse. The count of each is the measure: before and after a change to the event path, the
StViaTrigger count must stay at zero.
Running
ros2 launch sm_coretest_reactor_order_1 sm_coretest_reactor_order_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_reactor_order_1_latest.log. Count the
[StViaCountdown] Entered and [StViaTrigger] Entered lines against the [CpEventPulse] pulse lines.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| sr_event_countdown | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_reactor_order_1 at Robotics Stack Exchange
Package Summary
| Version | 0.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-11-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_reactor_order_1
Core test that records whether a state reactor’s output event is processed before or after the event
that triggered it. The order is a property of ISmaccStateMachine::postEvent, which today runs the
reactors of the current state synchronously at post time, so a reactor’s output event is queued before
the triggering event itself. Machines depend on it: sm_retry_logic_1 goes from SsAttemptTask straight to
StExhausted on the third timeout only because the countdown’s end is processed before the timer event
that StAttempting also reacts to.
Design
-
CpEventPulse(onClPulseinOrPulse) postsEvXeverypulse_period_ms(default 500) from a node wall timer, that is from the executor thread, which is the posting thread of every subscription and timer callback. -
StAcreates aSrEventCountdownwith count 1 onEvX, whose output isEvCountdownEnd, and reacts to both:EvX→StViaTrigger,EvCountdownEnd→StViaCountdown. -
StViaCountdownandStViaTriggerreturn toStAon the nextEvX, so every pulse makes one pass throughStAand records one outcome in the log.
What it shows
On the current core every pass enters StViaCountdown: the countdown’s output is queued before the
trigger, so EvCountdownEnd wins. (The leftover EvX then lands in StViaCountdown and takes the machine
back to StA at once, the “events firing in the next state” rule.) A core change that processes the
trigger first would enter StViaTrigger instead, and EvCountdownEnd would land there with no reaction
until the next pulse. The count of each is the measure: before and after a change to the event path, the
StViaTrigger count must stay at zero.
Running
ros2 launch sm_coretest_reactor_order_1 sm_coretest_reactor_order_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_reactor_order_1_latest.log. Count the
[StViaCountdown] Entered and [StViaTrigger] Entered lines against the [CpEventPulse] pulse lines.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| sr_event_countdown | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_reactor_order_1 at Robotics Stack Exchange
Package Summary
| Version | 0.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-11-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_reactor_order_1
Core test that records whether a state reactor’s output event is processed before or after the event
that triggered it. The order is a property of ISmaccStateMachine::postEvent, which today runs the
reactors of the current state synchronously at post time, so a reactor’s output event is queued before
the triggering event itself. Machines depend on it: sm_retry_logic_1 goes from SsAttemptTask straight to
StExhausted on the third timeout only because the countdown’s end is processed before the timer event
that StAttempting also reacts to.
Design
-
CpEventPulse(onClPulseinOrPulse) postsEvXeverypulse_period_ms(default 500) from a node wall timer, that is from the executor thread, which is the posting thread of every subscription and timer callback. -
StAcreates aSrEventCountdownwith count 1 onEvX, whose output isEvCountdownEnd, and reacts to both:EvX→StViaTrigger,EvCountdownEnd→StViaCountdown. -
StViaCountdownandStViaTriggerreturn toStAon the nextEvX, so every pulse makes one pass throughStAand records one outcome in the log.
What it shows
On the current core every pass enters StViaCountdown: the countdown’s output is queued before the
trigger, so EvCountdownEnd wins. (The leftover EvX then lands in StViaCountdown and takes the machine
back to StA at once, the “events firing in the next state” rule.) A core change that processes the
trigger first would enter StViaTrigger instead, and EvCountdownEnd would land there with no reaction
until the next pulse. The count of each is the measure: before and after a change to the event path, the
StViaTrigger count must stay at zero.
Running
ros2 launch sm_coretest_reactor_order_1 sm_coretest_reactor_order_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_reactor_order_1_latest.log. Count the
[StViaCountdown] Entered and [StViaTrigger] Entered lines against the [CpEventPulse] pulse lines.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| sr_event_countdown | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_reactor_order_1 at Robotics Stack Exchange
Package Summary
| Version | 0.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-11-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_reactor_order_1
Core test that records whether a state reactor’s output event is processed before or after the event
that triggered it. The order is a property of ISmaccStateMachine::postEvent, which today runs the
reactors of the current state synchronously at post time, so a reactor’s output event is queued before
the triggering event itself. Machines depend on it: sm_retry_logic_1 goes from SsAttemptTask straight to
StExhausted on the third timeout only because the countdown’s end is processed before the timer event
that StAttempting also reacts to.
Design
-
CpEventPulse(onClPulseinOrPulse) postsEvXeverypulse_period_ms(default 500) from a node wall timer, that is from the executor thread, which is the posting thread of every subscription and timer callback. -
StAcreates aSrEventCountdownwith count 1 onEvX, whose output isEvCountdownEnd, and reacts to both:EvX→StViaTrigger,EvCountdownEnd→StViaCountdown. -
StViaCountdownandStViaTriggerreturn toStAon the nextEvX, so every pulse makes one pass throughStAand records one outcome in the log.
What it shows
On the current core every pass enters StViaCountdown: the countdown’s output is queued before the
trigger, so EvCountdownEnd wins. (The leftover EvX then lands in StViaCountdown and takes the machine
back to StA at once, the “events firing in the next state” rule.) A core change that processes the
trigger first would enter StViaTrigger instead, and EvCountdownEnd would land there with no reaction
until the next pulse. The count of each is the measure: before and after a change to the event path, the
StViaTrigger count must stay at zero.
Running
ros2 launch sm_coretest_reactor_order_1 sm_coretest_reactor_order_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_reactor_order_1_latest.log. Count the
[StViaCountdown] Entered and [StViaTrigger] Entered lines against the [CpEventPulse] pulse lines.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| sr_event_countdown | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_reactor_order_1 at Robotics Stack Exchange
Package Summary
| Version | 0.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-11-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_reactor_order_1
Core test that records whether a state reactor’s output event is processed before or after the event
that triggered it. The order is a property of ISmaccStateMachine::postEvent, which today runs the
reactors of the current state synchronously at post time, so a reactor’s output event is queued before
the triggering event itself. Machines depend on it: sm_retry_logic_1 goes from SsAttemptTask straight to
StExhausted on the third timeout only because the countdown’s end is processed before the timer event
that StAttempting also reacts to.
Design
-
CpEventPulse(onClPulseinOrPulse) postsEvXeverypulse_period_ms(default 500) from a node wall timer, that is from the executor thread, which is the posting thread of every subscription and timer callback. -
StAcreates aSrEventCountdownwith count 1 onEvX, whose output isEvCountdownEnd, and reacts to both:EvX→StViaTrigger,EvCountdownEnd→StViaCountdown. -
StViaCountdownandStViaTriggerreturn toStAon the nextEvX, so every pulse makes one pass throughStAand records one outcome in the log.
What it shows
On the current core every pass enters StViaCountdown: the countdown’s output is queued before the
trigger, so EvCountdownEnd wins. (The leftover EvX then lands in StViaCountdown and takes the machine
back to StA at once, the “events firing in the next state” rule.) A core change that processes the
trigger first would enter StViaTrigger instead, and EvCountdownEnd would land there with no reaction
until the next pulse. The count of each is the measure: before and after a change to the event path, the
StViaTrigger count must stay at zero.
Running
ros2 launch sm_coretest_reactor_order_1 sm_coretest_reactor_order_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_reactor_order_1_latest.log. Count the
[StViaCountdown] Entered and [StViaTrigger] Entered lines against the [CpEventPulse] pulse lines.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| sr_event_countdown | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_reactor_order_1 at Robotics Stack Exchange
Package Summary
| Version | 0.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-11-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_reactor_order_1
Core test that records whether a state reactor’s output event is processed before or after the event
that triggered it. The order is a property of ISmaccStateMachine::postEvent, which today runs the
reactors of the current state synchronously at post time, so a reactor’s output event is queued before
the triggering event itself. Machines depend on it: sm_retry_logic_1 goes from SsAttemptTask straight to
StExhausted on the third timeout only because the countdown’s end is processed before the timer event
that StAttempting also reacts to.
Design
-
CpEventPulse(onClPulseinOrPulse) postsEvXeverypulse_period_ms(default 500) from a node wall timer, that is from the executor thread, which is the posting thread of every subscription and timer callback. -
StAcreates aSrEventCountdownwith count 1 onEvX, whose output isEvCountdownEnd, and reacts to both:EvX→StViaTrigger,EvCountdownEnd→StViaCountdown. -
StViaCountdownandStViaTriggerreturn toStAon the nextEvX, so every pulse makes one pass throughStAand records one outcome in the log.
What it shows
On the current core every pass enters StViaCountdown: the countdown’s output is queued before the
trigger, so EvCountdownEnd wins. (The leftover EvX then lands in StViaCountdown and takes the machine
back to StA at once, the “events firing in the next state” rule.) A core change that processes the
trigger first would enter StViaTrigger instead, and EvCountdownEnd would land there with no reaction
until the next pulse. The count of each is the measure: before and after a change to the event path, the
StViaTrigger count must stay at zero.
Running
ros2 launch sm_coretest_reactor_order_1 sm_coretest_reactor_order_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_reactor_order_1_latest.log. Count the
[StViaCountdown] Entered and [StViaTrigger] Entered lines against the [CpEventPulse] pulse lines.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| sr_event_countdown | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_reactor_order_1 at Robotics Stack Exchange
Package Summary
| Version | 0.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-11-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_reactor_order_1
Core test that records whether a state reactor’s output event is processed before or after the event
that triggered it. The order is a property of ISmaccStateMachine::postEvent, which today runs the
reactors of the current state synchronously at post time, so a reactor’s output event is queued before
the triggering event itself. Machines depend on it: sm_retry_logic_1 goes from SsAttemptTask straight to
StExhausted on the third timeout only because the countdown’s end is processed before the timer event
that StAttempting also reacts to.
Design
-
CpEventPulse(onClPulseinOrPulse) postsEvXeverypulse_period_ms(default 500) from a node wall timer, that is from the executor thread, which is the posting thread of every subscription and timer callback. -
StAcreates aSrEventCountdownwith count 1 onEvX, whose output isEvCountdownEnd, and reacts to both:EvX→StViaTrigger,EvCountdownEnd→StViaCountdown. -
StViaCountdownandStViaTriggerreturn toStAon the nextEvX, so every pulse makes one pass throughStAand records one outcome in the log.
What it shows
On the current core every pass enters StViaCountdown: the countdown’s output is queued before the
trigger, so EvCountdownEnd wins. (The leftover EvX then lands in StViaCountdown and takes the machine
back to StA at once, the “events firing in the next state” rule.) A core change that processes the
trigger first would enter StViaTrigger instead, and EvCountdownEnd would land there with no reaction
until the next pulse. The count of each is the measure: before and after a change to the event path, the
StViaTrigger count must stay at zero.
Running
ros2 launch sm_coretest_reactor_order_1 sm_coretest_reactor_order_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_reactor_order_1_latest.log. Count the
[StViaCountdown] Entered and [StViaTrigger] Entered lines against the [CpEventPulse] pulse lines.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| sr_event_countdown | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_reactor_order_1 at Robotics Stack Exchange
Package Summary
| Version | 0.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-11-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_reactor_order_1
Core test that records whether a state reactor’s output event is processed before or after the event
that triggered it. The order is a property of ISmaccStateMachine::postEvent, which today runs the
reactors of the current state synchronously at post time, so a reactor’s output event is queued before
the triggering event itself. Machines depend on it: sm_retry_logic_1 goes from SsAttemptTask straight to
StExhausted on the third timeout only because the countdown’s end is processed before the timer event
that StAttempting also reacts to.
Design
-
CpEventPulse(onClPulseinOrPulse) postsEvXeverypulse_period_ms(default 500) from a node wall timer, that is from the executor thread, which is the posting thread of every subscription and timer callback. -
StAcreates aSrEventCountdownwith count 1 onEvX, whose output isEvCountdownEnd, and reacts to both:EvX→StViaTrigger,EvCountdownEnd→StViaCountdown. -
StViaCountdownandStViaTriggerreturn toStAon the nextEvX, so every pulse makes one pass throughStAand records one outcome in the log.
What it shows
On the current core every pass enters StViaCountdown: the countdown’s output is queued before the
trigger, so EvCountdownEnd wins. (The leftover EvX then lands in StViaCountdown and takes the machine
back to StA at once, the “events firing in the next state” rule.) A core change that processes the
trigger first would enter StViaTrigger instead, and EvCountdownEnd would land there with no reaction
until the next pulse. The count of each is the measure: before and after a change to the event path, the
StViaTrigger count must stay at zero.
Running
ros2 launch sm_coretest_reactor_order_1 sm_coretest_reactor_order_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_reactor_order_1_latest.log. Count the
[StViaCountdown] Entered and [StViaTrigger] Entered lines against the [CpEventPulse] pulse lines.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| sr_event_countdown | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_reactor_order_1 at Robotics Stack Exchange
Package Summary
| Version | 0.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-11-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_reactor_order_1
Core test that records whether a state reactor’s output event is processed before or after the event
that triggered it. The order is a property of ISmaccStateMachine::postEvent, which today runs the
reactors of the current state synchronously at post time, so a reactor’s output event is queued before
the triggering event itself. Machines depend on it: sm_retry_logic_1 goes from SsAttemptTask straight to
StExhausted on the third timeout only because the countdown’s end is processed before the timer event
that StAttempting also reacts to.
Design
-
CpEventPulse(onClPulseinOrPulse) postsEvXeverypulse_period_ms(default 500) from a node wall timer, that is from the executor thread, which is the posting thread of every subscription and timer callback. -
StAcreates aSrEventCountdownwith count 1 onEvX, whose output isEvCountdownEnd, and reacts to both:EvX→StViaTrigger,EvCountdownEnd→StViaCountdown. -
StViaCountdownandStViaTriggerreturn toStAon the nextEvX, so every pulse makes one pass throughStAand records one outcome in the log.
What it shows
On the current core every pass enters StViaCountdown: the countdown’s output is queued before the
trigger, so EvCountdownEnd wins. (The leftover EvX then lands in StViaCountdown and takes the machine
back to StA at once, the “events firing in the next state” rule.) A core change that processes the
trigger first would enter StViaTrigger instead, and EvCountdownEnd would land there with no reaction
until the next pulse. The count of each is the measure: before and after a change to the event path, the
StViaTrigger count must stay at zero.
Running
ros2 launch sm_coretest_reactor_order_1 sm_coretest_reactor_order_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_reactor_order_1_latest.log. Count the
[StViaCountdown] Entered and [StViaTrigger] Entered lines against the [CpEventPulse] pulse lines.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| sr_event_countdown | |
| rclcpp |