Skip to content
This repository has been archived by the owner on Apr 13, 2021. It is now read-only.

update for libswiftnav dgnss_state refactor #562

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion libswiftnav
1 change: 0 additions & 1 deletion src/STM32F405xG.ld
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,6 @@ SECTIONS

.ccmram (NOLOAD) : {
*(.ccmram*)
*(.bss.nkf)
} > ccmram

.data :
Expand Down
25 changes: 14 additions & 11 deletions src/solution.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ systime_t last_dgnss;
double soln_freq = 10.0;
u32 obs_output_divisor = 2;

dgnss_state_t dgnss_state _CCM;

double known_baseline[3] = {0, 0, 0};
u16 msg_obs_max_size = 104;

Expand Down Expand Up @@ -593,7 +595,8 @@ void process_matched_obs(u8 n_sds, gps_time_t *t, sdiff_t *sds)
double known_baseline_ecef[3];
wgsned2ecef(known_baseline, position_solution.pos_ecef,
known_baseline_ecef);
dgnss_init_known_baseline(n_sds, sds, position_solution.pos_ecef,
dgnss_init_known_baseline(&dgnss_state, n_sds, sds,
position_solution.pos_ecef,
known_baseline_ecef);
init_known_base = false;
} else {
Expand All @@ -604,23 +607,23 @@ void process_matched_obs(u8 n_sds, gps_time_t *t, sdiff_t *sds)
if (n_sds > 4) {
/* Initialize filters. */
log_info("Initializing DGNSS filters");
dgnss_init(n_sds, sds, position_solution.pos_ecef);
dgnss_init(&dgnss_state, n_sds, sds, position_solution.pos_ecef);
/* Initialize ambiguity states. */
ambiguities_init(&amb_state.fixed_ambs);
ambiguities_init(&amb_state.float_ambs);
init_done = 1;
}
} else {
if (reset_iar) {
dgnss_reset_iar();
dgnss_reset_iar(&dgnss_state);
reset_iar = false;
}
/* Update filters. */
dgnss_update(n_sds, sds, position_solution.pos_ecef,
dgnss_update(&dgnss_state, n_sds, sds, position_solution.pos_ecef,
disable_raim, DEFAULT_RAIM_THRESHOLD);
/* Update ambiguity states. */
chMtxLock(&amb_state_lock);
dgnss_update_ambiguity_state(&amb_state);
dgnss_update_ambiguity_state(&dgnss_state, &amb_state);
chMtxUnlock();
/* If we are in time matched mode then calculate and output the baseline
* for this observation. */
Expand Down Expand Up @@ -773,13 +776,13 @@ void solution_setup()
SETTING("solution", "known_baseline_e", known_baseline[1], TYPE_FLOAT);
SETTING("solution", "known_baseline_d", known_baseline[2], TYPE_FLOAT);

SETTING("iar", "phase_var", dgnss_settings.phase_var_test, TYPE_FLOAT);
SETTING("iar", "code_var", dgnss_settings.code_var_test, TYPE_FLOAT);
SETTING("iar", "phase_var", dgnss_state.settings.phase_var_test, TYPE_FLOAT);
SETTING("iar", "code_var", dgnss_state.settings.code_var_test, TYPE_FLOAT);

SETTING("float_kf", "phase_var", dgnss_settings.phase_var_kf, TYPE_FLOAT);
SETTING("float_kf", "code_var", dgnss_settings.code_var_kf, TYPE_FLOAT);
SETTING("float_kf", "amb_init_var", dgnss_settings.amb_init_var, TYPE_FLOAT);
SETTING("float_kf", "new_amb_var", dgnss_settings.new_int_var, TYPE_FLOAT);
SETTING("float_kf", "phase_var", dgnss_state.settings.phase_var_kf, TYPE_FLOAT);
SETTING("float_kf", "code_var", dgnss_state.settings.code_var_kf, TYPE_FLOAT);
SETTING("float_kf", "amb_init_var", dgnss_state.settings.amb_init_var, TYPE_FLOAT);
SETTING("float_kf", "new_amb_var", dgnss_state.settings.new_int_var, TYPE_FLOAT);

SETTING("sbp", "obs_msg_max_size", msg_obs_max_size, TYPE_INT);

Expand Down
3 changes: 3 additions & 0 deletions src/solution.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include <libswiftnav/pvt.h>
#include <libswiftnav/track.h>
#include <libswiftnav/gpstime.h>
#include <libswiftnav/dgnss_management.h>

typedef enum {
SOLN_MODE_LOW_LATENCY,
Expand All @@ -43,6 +44,8 @@ typedef enum {
extern double soln_freq;
extern u32 obs_output_divisor;

extern dgnss_state_t dgnss_state;

void solution_send_sbp(gnss_solution *soln, dops_t *dops);
void solution_send_nmea(gnss_solution *soln, dops_t *dops,
u8 n, navigation_measurement_t *nm,
Expand Down
3 changes: 2 additions & 1 deletion src/system_monitor.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "main.h"
#include "sbp.h"
#include "manage.h"
#include "solution.h"
#include "simulator.h"
#include "system_monitor.h"
#include "position.h"
Expand Down Expand Up @@ -191,7 +192,7 @@ static msg_t system_monitor_thread(void *arg)
if (simulation_enabled_for(SIMULATION_MODE_RTK)) {
iar_state.num_hyps = 1;
} else {
iar_state.num_hyps = dgnss_iar_num_hyps();
iar_state.num_hyps = dgnss_iar_num_hyps(&dgnss_state);
}
sbp_send_msg(SBP_MSG_IAR_STATE, sizeof(msg_iar_state_t), (u8 *)&iar_state);

Expand Down