Class nebula::drivers::FsmCutAtFovEnd
ClassList > nebula > drivers > FsmCutAtFovEnd
FSM for scan cutting when the cut angle is at the FoV end (limited FoV mode). This is a 6-state FSM that tracks both buffer and FoV state. More...
#include <fsm_cut_at_fov_end.hpp>
Public Types
| Type | Name |
|---|---|
| typedef scan_cutter::AllSame< T > | AllSame |
| typedef scan_cutter::ChannelBufferState | ChannelBufferState |
| typedef scan_cutter::ChannelFovState | ChannelFovState |
| typedef scan_cutter::Different | Different |
| enum uint8_t | State |
| typedef scan_cutter::TransitionActions | TransitionActions |
| typedef scan_cutter::buffer_index_t | buffer_index_t |
Public Static Functions
| Type | Name |
|---|---|
| State | determine_state (const ChannelBufferState & buffer_state, const ChannelFovState & fov_state, buffer_index_t current_buffer) Determine the FSM state from buffer state, FoV state, and current active buffer. |
| TransitionActions | get_transition_actions (State state_before, State state_after) Compute the transition actions based on state change. |
| TransitionActions | step (const ChannelBufferState & buffer_state_before, const ChannelBufferState & buffer_state_after, const ChannelFovState & fov_state_before, const ChannelFovState & fov_state_after, buffer_index_t current_buffer) Step the FSM and return the actions to perform. |
Detailed Description
States: * O0: All channels in buffer 0, all outside FoV (Outside 0) * F0: All channels in buffer 0, at least one in FoV (Filled 0) * C0_1: Channels split between buffers, transitioning 0->1 (Crossing 0->1) * O1: All channels in buffer 1, all outside FoV (Outside 1) * F1: All channels in buffer 1, at least one in FoV (Filled 1) * C1_0: Channels split between buffers, transitioning 1->0 (Crossing 1->0)
Transition table for buffer 0 states (From columns, To rows):
| To \ From | O0 | F0 | C0_1 |
|---|---|---|---|
| O0 | - | ||
| F0 | T0 | - | |
| C0_1 | T0 | - | - |
| O1 | T1, E0 | E0 | E0 |
| F1 | T1, E0 | T1, E0 | |
| C1_0 | ⛔ |
Analogous transitions exist for buffer 1 states (symmetric).
Public Types Documentation
typedef AllSame
using nebula::drivers::FsmCutAtFovEnd::AllSame = scan_cutter::AllSame<T>;
typedef ChannelBufferState
using nebula::drivers::FsmCutAtFovEnd::ChannelBufferState = scan_cutter::ChannelBufferState;
typedef ChannelFovState
using nebula::drivers::FsmCutAtFovEnd::ChannelFovState = scan_cutter::ChannelFovState;
typedef Different
using nebula::drivers::FsmCutAtFovEnd::Different = scan_cutter::Different;
enum State
enum nebula::drivers::FsmCutAtFovEnd::State {
O0,
F0,
C0_1,
O1,
F1,
C1_0
};
typedef TransitionActions
using nebula::drivers::FsmCutAtFovEnd::TransitionActions = scan_cutter::TransitionActions;
typedef buffer_index_t
using nebula::drivers::FsmCutAtFovEnd::buffer_index_t = scan_cutter::buffer_index_t;
Public Static Functions Documentation
function determine_state
Determine the FSM state from buffer state, FoV state, and current active buffer.
static inline State nebula::drivers::FsmCutAtFovEnd::determine_state (
const ChannelBufferState & buffer_state,
const ChannelFovState & fov_state,
buffer_index_t current_buffer
)
Parameters:
buffer_stateThe current buffer state (AllSame or Different).fov_stateThe current FoV state (AllSame or Different).current_bufferThe current active buffer index.
Returns:
The FSM state.
function get_transition_actions
Compute the transition actions based on state change.
static inline TransitionActions nebula::drivers::FsmCutAtFovEnd::get_transition_actions (
State state_before,
State state_after
)
Parameters:
state_beforeThe FSM state before the update.state_afterThe FSM state after the update.
Returns:
The transition actions to perform.
function step
Step the FSM and return the actions to perform.
static inline TransitionActions nebula::drivers::FsmCutAtFovEnd::step (
const ChannelBufferState & buffer_state_before,
const ChannelBufferState & buffer_state_after,
const ChannelFovState & fov_state_before,
const ChannelFovState & fov_state_after,
buffer_index_t current_buffer
)
Parameters:
buffer_state_beforeBuffer state before the azimuth update.buffer_state_afterBuffer state after the azimuth update.fov_state_beforeFoV state before the azimuth update.fov_state_afterFoV state after the azimuth update.current_bufferThe current active buffer index.
Returns:
The transition actions to perform.
The documentation for this class was generated from the following file src/nebula_core/nebula_core_decoders/include/nebula_core_decoders/scan_cutter/fsm_cut_at_fov_end.hpp