Skip to content

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_state The current buffer state (AllSame or Different).
  • fov_state The current FoV state (AllSame or Different).
  • current_buffer The 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_before The FSM state before the update.
  • state_after The 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_before Buffer state before the azimuth update.
  • buffer_state_after Buffer state after the azimuth update.
  • fov_state_before FoV state before the azimuth update.
  • fov_state_after FoV state after the azimuth update.
  • current_buffer The 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