.. _program_listing_file_api_include_pntos_plugins_fusion.h: Program Listing for File fusion.h ================================= |exhale_lsh| :ref:`Return to documentation for file ` (``api/include/pntos/plugins/fusion.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 struct PntosCommonFusionEngine { PntosManagedMemory* memory; PntosFusionType engine_type; } PntosCommonFusionEngine; typedef struct PntosCrossCovariances { PntosManagedMemory* memory; size_t num_covariances; char** block_labels; PntosMatrix** cross_covariances; } PntosCrossCovariances; typedef struct PntosStandardFusionEngine { PntosCommonFusionEngine common; void (*set_time)(struct PntosStandardFusionEngine* self, AspnTypeTimestamp time); AspnTypeTimestamp (*get_time)(struct PntosStandardFusionEngine* self); void (*set_strategy)(struct PntosStandardFusionEngine* self, PntosStandardFusionStrategy* strategy); PntosStandardFusionStrategy* PNTOS_NULLABLE (*get_strategy)( struct PntosStandardFusionEngine* self); size_t (*get_num_states)(struct PntosStandardFusionEngine* self); PntosStringArray* PNTOS_NULLABLE (*get_state_block_labels)( struct PntosStandardFusionEngine* self); bool (*has_block)(struct PntosStandardFusionEngine* self, char* block_label); void (*add_state_block)(struct PntosStandardFusionEngine* self, PntosStandardStateBlock* block, PntosEstimateWithCovariance* initial_estimate_covariance, PntosCrossCovariances* PNTOS_NULLABLE cross_covariances); PntosMatrix* PNTOS_NULLABLE (*get_state_block_estimate)(struct PntosStandardFusionEngine* self, char* block_label); PntosMatrix* PNTOS_NULLABLE (*get_state_block_covariance)( struct PntosStandardFusionEngine* self, char* block_label); PntosMatrix* PNTOS_NULLABLE (*get_state_block_cross_covariance)( struct PntosStandardFusionEngine* self, char* block_label1, char* block_label2); void (*set_state_block_estimate)(struct PntosStandardFusionEngine* self, char* block_label, PntosMatrix* estimate); void (*set_state_block_covariance)(struct PntosStandardFusionEngine* self, char* block_label, PntosMatrix* covariance); void (*set_state_block_cross_covariance)(struct PntosStandardFusionEngine* self, char* block_label1, char* block_label2, PntosMatrix* covariance); void (*remove_state_block)(struct PntosStandardFusionEngine* self, char* block_label); PntosStringArray* PNTOS_NULLABLE (*get_virtual_state_block_target_labels)( struct PntosStandardFusionEngine* self); bool (*has_virtual_state_block)(struct PntosStandardFusionEngine* self, char* vsb_target_label); void (*add_virtual_state_block)(struct PntosStandardFusionEngine* self, PntosVirtualStateBlock* virtual_state_block); void (*remove_virtual_state_block)(struct PntosStandardFusionEngine* self, char* vsb_target_label); PntosStringArray* PNTOS_NULLABLE (*get_measurement_processor_labels)( struct PntosStandardFusionEngine* self); bool (*has_processor)(struct PntosStandardFusionEngine* self, char* processor_label); void (*add_measurement_processor)(struct PntosStandardFusionEngine* self, PntosStandardMeasurementProcessor* processor); void (*remove_measurement_processor)(struct PntosStandardFusionEngine* self, char* processor_label); void (*propagate)(struct PntosStandardFusionEngine* self, AspnTypeTimestamp time); void (*update)(struct PntosStandardFusionEngine* self, char* processor_label, PntosMessage* message); PntosEstimateWithCovariance* PNTOS_NULLABLE (*peek_ahead)( struct PntosStandardFusionEngine* self, AspnTypeTimestamp time, char** block_labels, size_t num_block_labels); PntosEstimateWithCovariance* PNTOS_NULLABLE (*generate_x_and_p)( struct PntosStandardFusionEngine* self, char** block_labels, size_t num_block_labels); void (*give_state_block_aux_data)(struct PntosStandardFusionEngine* self, char* block_label, PntosMessageArray* aux); void (*give_measurement_processor_aux_data)(struct PntosStandardFusionEngine* self, char* processor_label, PntosMessageArray* aux); void (*give_virtual_state_block_aux_data)(struct PntosStandardFusionEngine* self, char* target_label, PntosMessageArray* aux); struct PntosStandardFusionEngine* (*clone)(struct PntosStandardFusionEngine* self); } PntosStandardFusionEngine; typedef struct PntosFusionPlugin { PntosCommonPlugin common; bool (*is_fusion_type_supported)(struct PntosFusionPlugin* self, PntosFusionType type); PntosCommonFusionEngine* PNTOS_NULLABLE (*new_fusion_engine)(struct PntosFusionPlugin* self, PntosFusionType type); } PntosFusionPlugin; PNTOS_ASSUME_NONNULL_END #ifdef __cplusplus } #endif