44 lines
1.1 KiB
C
44 lines
1.1 KiB
C
#ifndef GPS_PPS_H
|
|
#define GPS_PPS_H
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
#include "gps/gps_pps_quality.h"
|
|
#include "gps/gps_pps_time_filter.h"
|
|
|
|
#define GPS_PPS_CLOCK_HZ 125000000u
|
|
|
|
typedef struct {
|
|
uint32_t status;
|
|
uint32_t active_sequence;
|
|
uint32_t pulse_count;
|
|
int64_t phase_error_q32;
|
|
int64_t integrator_q32;
|
|
int64_t rate_word_q32;
|
|
} gps_pps_diagnostics_t;
|
|
|
|
void gps_pps_init(unsigned int nav_solve_tick);
|
|
void gps_pps_service(void);
|
|
bool gps_pps_is_locked(void);
|
|
bool gps_pps_set_loop_profile(gps_pps_profile_t profile);
|
|
void gps_pps_set_holdover(bool holdover);
|
|
void gps_pps_reset_time_filter(void);
|
|
bool gps_pps_read_diagnostics(gps_pps_diagnostics_t* diagnostics);
|
|
bool gps_pps_read_capture(unsigned int channel, uint64_t* counter, uint32_t* sequence);
|
|
gps_pps_time_filter_result_t gps_pps_filter_clock_bias(
|
|
uint64_t epoch_counter,
|
|
double measured_clock_bias_m,
|
|
bool clock_drift_valid,
|
|
double measured_clock_drift_mps,
|
|
double tdop,
|
|
double* filtered_clock_bias_m_out,
|
|
double* innovation_m_out);
|
|
bool gps_pps_commit_solution(
|
|
uint64_t epoch_counter,
|
|
int gps_week,
|
|
double receiver_tow_sec,
|
|
bool force_coarse);
|
|
|
|
#endif
|