#ifndef FUSION_GPS_ADAPTER_H #define FUSION_GPS_ADAPTER_H #include #include "fusion/fusion_measurement.h" typedef struct { double minimum_horizontal_std_m; double minimum_vertical_std_m; double maximum_position_std_m; double minimum_horizontal_velocity_std_mps; double minimum_vertical_velocity_std_mps; double maximum_velocity_std_mps; } fusion_gps_adapter_config_t; typedef struct { double origin_latitude_deg; double origin_longitude_deg; double origin_height_m; double origin_ecef_m[3]; double ecef_to_enu[3][3]; fusion_gps_adapter_config_t config; bool origin_valid; } fusion_gps_adapter_t; void fusion_gps_adapter_default_config(fusion_gps_adapter_config_t* config); bool fusion_gps_adapter_init(fusion_gps_adapter_t* adapter, const fusion_gps_adapter_config_t* config); bool fusion_gps_adapter_convert(fusion_gps_adapter_t* adapter, const fusion_gps_measurement_t* gps, fusion_position_measurement_t* position_out); bool fusion_gps_adapter_convert_navigation( fusion_gps_adapter_t* adapter, const fusion_gps_measurement_t* gps, fusion_navigation_measurement_t* navigation_out); bool fusion_gps_adapter_local_to_geodetic( const fusion_gps_adapter_t* adapter, const double position_enu_m[3], double* latitude_deg_out, double* longitude_deg_out, double* height_m_out); #endif