.. _program_listing_file_api_include_pntos_plugins_initialization.h: Program Listing for File initialization.h ========================================= |exhale_lsh| :ref:`Return to documentation for file ` (``api/include/pntos/plugins/initialization.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #ifdef __cplusplus extern "C" { #endif PNTOS_ASSUME_NONNULL_BEGIN typedef enum PntosInitializationType { PNTOS_INERTIAL_INITIALIZATION_STRATEGY, PNTOS_EWC_INITIALIZATION_STRATEGY } PntosInitializationType; typedef enum PntosInitializationStatus { PNTOS_WAITING, PNTOS_INITIALIZING_COARSE, PNTOS_INITIALIZING_FINE, PNTOS_INITIALIZED_GOOD, PNTOS_INITIALIZATION_FAILED } PntosInitializationStatus; typedef enum PntosInitializationMotionNeeded { PNTOS_NO_MOTION, PNTOS_MOTION_NEEDED, PNTOS_ANY_MOTION } PntosInitializationMotionNeeded; typedef struct PntosCommonInitializationStrategy { PntosManagedMemory* memory; PntosInitializationType type; PntosInitializationMotionNeeded (*request_motion_needed)( struct PntosCommonInitializationStrategy* self); PntosInitializationStatus (*request_current_status)( struct PntosCommonInitializationStrategy* self); void (*process_pntos_message)(struct PntosCommonInitializationStrategy* self, PntosMessage* message); } PntosCommonInitializationStrategy; typedef struct PntosInitialInertialSolution { PntosManagedMemory* memory; PntosMessage* PNTOS_NULLABLE solution; PntosStandardInertialErrors* PNTOS_NULLABLE inertial_errors; PntosMatrix* PNTOS_NULLABLE inertial_error_covariance; PntosInitializationStatus status; } PntosInitialInertialSolution; typedef struct PntosInertialInitializationStrategy { PntosCommonInitializationStrategy common; PntosInitialInertialSolution* (*request_solution)( struct PntosInertialInitializationStrategy* self); } PntosInertialInitializationStrategy; typedef struct PntosInitialEstimateWithCovariance { PntosManagedMemory* memory; AspnTypeTimestamp time; PntosEstimateWithCovariance* PNTOS_NULLABLE estimate_with_covariance; PntosInitializationStatus status; } PntosInitialEstimateWithCovariance; typedef struct PntosEwcInitializationStrategy { PntosCommonInitializationStrategy common; PntosInitialEstimateWithCovariance* PNTOS_NULLABLE (*request_solution)( struct PntosEwcInitializationStrategy* self); } PntosEwcInitializationStrategy; typedef struct PntosInitializationPlugin { PntosCommonPlugin common; bool (*is_initialization_type_supported)(struct PntosInitializationPlugin* self, PntosInitializationType type); PntosCommonInitializationStrategy* PNTOS_NULLABLE (*new_initialization_strategy)( struct PntosInitializationPlugin* self, PntosInitializationType type, char* PNTOS_NULLABLE config_group); } PntosInitializationPlugin; #ifdef __cplusplus } #endif PNTOS_ASSUME_NONNULL_END