MRTKLIB 0.7.14
Modernized GNSS Positioning Library
Loading...
Searching...
No Matches
mrtk_opt.h
Go to the documentation of this file.
1/*------------------------------------------------------------------------------
2 * mrtk_opt.h : processing and solution option type definitions
3 *
4 * Copyright (C) 2026 H.SHIONO (MRTKLIB Project)
5 * Copyright (C) 2023-2025 Cabinet Office, Japan
6 * Copyright (C) 2024-2025 Lighthouse Technology & Consulting Co. Ltd.
7 * Copyright (C) 2023-2025 Japan Aerospace Exploration Agency
8 * Copyright (C) 2023-2025 TOSHIBA ELECTRONIC TECHNOLOGIES CORPORATION
9 * Copyright (C) 2015- Mitsubishi Electric Corp.
10 * Copyright (C) 2014 Geospatial Information Authority of Japan
11 * Copyright (C) 2014 T.SUZUKI
12 * Copyright (C) 2007-2023 T.TAKASU
13 *
14 * SPDX-License-Identifier: BSD-2-Clause
15 *----------------------------------------------------------------------------*/
16/**
17 * @file mrtk_opt.h
18 * @brief MRTKLIB Options Module — Processing and solution option types.
19 *
20 * This header provides the processing option (prcopt_t), solution output
21 * option (solopt_t), and file option (filopt_t) structures, along with
22 * related mode/option constants, extracted from rtklib.h with zero
23 * algorithmic changes.
24 *
25 * @note Default option instances (prcopt_default, solopt_default) are
26 * defined in mrtk_opt.c.
27 */
28#ifndef MRTK_OPT_H
29#define MRTK_OPT_H
30
31#include <stddef.h> /* size_t */
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
38#include "mrtklib/mrtk_nav.h" /* pcv_t, MAXSAT, MAXANT, MAXSTRPATH */
39#include "mrtklib/mrtk_obs.h" /* snrmask_t */
40
41/*============================================================================
42 * Processing Mode Constants
43 *===========================================================================*/
44
45#define PMODE_SINGLE 0 /* positioning mode: single */
46#define PMODE_DGPS 1 /* positioning mode: DGPS/DGNSS */
47#define PMODE_KINEMA 2 /* positioning mode: kinematic */
48#define PMODE_STATIC 3 /* positioning mode: static */
49#define PMODE_MOVEB 4 /* positioning mode: moving-base */
50#define PMODE_FIXED 5 /* positioning mode: fixed */
51#define PMODE_PPP_KINEMA 6 /* positioning mode: PPP-kinemaric */
52#define PMODE_PPP_STATIC 7 /* positioning mode: PPP-static */
53#define PMODE_PPP_FIXED 8 /* positioning mode: PPP-fixed */
54#define PMODE_PPP_RTK 9 /* positioning mode: PPP-RTK (CLAS) */
55#define PMODE_SSR2OSR 10 /* conversion mode: SSR2OSR */
56#define PMODE_SSR2OSR_FIXED 11 /* conversion mode: SSR2OSR-fixed */
57#define PMODE_VRS_RTK 12 /* positioning mode: VRS-RTK (CLAS) */
58
59/*============================================================================
60 * Solution Format / Quality Constants
61 *===========================================================================*/
62
63#define SOLF_LLH 0 /* solution format: lat/lon/height */
64#define SOLF_XYZ 1 /* solution format: x/y/z-ecef */
65#define SOLF_ENU 2 /* solution format: e/n/u-baseline */
66#define SOLF_NMEA 3 /* solution format: NMEA-183 */
67#define SOLF_STAT 4 /* solution format: solution status */
68#define SOLF_GSIF 5 /* solution format: GSI F1/F2 */
69
70#define SOLQ_NONE 0 /* solution status: no solution */
71#define SOLQ_FIX 1 /* solution status: fix */
72#define SOLQ_FLOAT 2 /* solution status: float */
73#define SOLQ_SBAS 3 /* solution status: SBAS */
74#define SOLQ_DGPS 4 /* solution status: DGPS/DGNSS */
75#define SOLQ_SINGLE 5 /* solution status: single */
76#define SOLQ_PPP 6 /* solution status: PPP */
77#define SOLQ_DR 7 /* solution status: dead reconing */
78#define MAXSOLQ 7 /* max number of solution status */
79
80/*============================================================================
81 * Time System Constants
82 *===========================================================================*/
83
84#define TIMES_GPST 0 /* time system: gps time */
85#define TIMES_UTC 1 /* time system: utc */
86#define TIMES_JST 2 /* time system: jst */
87
88/*============================================================================
89 * Ionosphere / Troposphere / Ephemeris Option Constants
90 *===========================================================================*/
91
92#define IONOOPT_OFF 0 /* ionosphere option: correction off */
93#define IONOOPT_BRDC 1 /* ionosphere option: broadcast model */
94#define IONOOPT_SBAS 2 /* ionosphere option: SBAS model */
95#define IONOOPT_IFLC 3 /* ionosphere option: L1/L2 iono-free LC */
96#define IONOOPT_EST 4 /* ionosphere option: estimation */
97#define IONOOPT_TEC 5 /* ionosphere option: IONEX TEC model */
98#define IONOOPT_QZS 6 /* ionosphere option: QZSS broadcast model */
99#define IONOOPT_STEC 8 /* ionosphere option: SLANT TEC model */
100#define IONOOPT_EST_ADPT 9 /* ionosphere option: adaptive estimation */
101
102#define TROPOPT_OFF 0 /* troposphere option: correction off */
103#define TROPOPT_SAAS 1 /* troposphere option: Saastamoinen model */
104#define TROPOPT_SBAS 2 /* troposphere option: SBAS model */
105#define TROPOPT_EST 3 /* troposphere option: ZTD estimation */
106#define TROPOPT_ESTG 4 /* troposphere option: ZTD+grad estimation */
107#define TROPOPT_ZTD 5 /* troposphere option: ZTD correction */
108
109#define EPHOPT_BRDC 0 /* ephemeris option: broadcast ephemeris */
110#define EPHOPT_PREC 1 /* ephemeris option: precise ephemeris */
111#define EPHOPT_SBAS 2 /* ephemeris option: broadcast + SBAS */
112#define EPHOPT_SSRAPC 3 /* ephemeris option: broadcast + SSR_APC */
113#define EPHOPT_SSRCOM 4 /* ephemeris option: broadcast + SSR_COM */
114
115#define CORR_AUTO -1 /* correction source: infer from mode + sateph (default) */
116#define CORR_NONE 0 /* correction source: none (SPP/DGPS/RTK) */
117#define CORR_IGS 1 /* correction source: IGS precise products (files) */
118#define CORR_IGS_RTS 2 /* correction source: IGS Real-Time Service (RTCM-SSR) [reserved] */
119#define CORR_QZS_MADOCA 3 /* correction source: MADOCA-PPP (QZSS L6E / RTCM-SSR) */
120#define CORR_GAL_HAS 4 /* correction source: Galileo HAS (E6-B SSR) [reserved] */
121#define CORR_BDS_B2B 5 /* correction source: BeiDou PPP-B2b (B2b SSR) [reserved] */
122#define CORR_QZS_CLAS 6 /* correction source: QZSS CLAS (L6D CSSR) */
123
124/*============================================================================
125 * AR Mode Constants
126 *===========================================================================*/
127
128#define ARMODE_OFF 0 /* AR mode: off */
129#define ARMODE_CONT 1 /* AR mode: continuous */
130#define ARMODE_INST 2 /* AR mode: instantaneous */
131#define ARMODE_FIXHOLD 3 /* AR mode: fix and hold */
132#define ARMODE_WLNL 4 /* AR mode: wide lane/narrow lane */
133#define ARMODE_TCAR 5 /* AR mode: triple carrier ar */
134
135#define GLO_ARMODE_OFF 0 /* GLO AR mode: off */
136#define GLO_ARMODE_ON 1 /* GLO AR mode: on */
137#define GLO_ARMODE_AUTOCAL 2 /* GLO AR mode: auto calibrate */
138#define GLO_ARMODE_FIXHOLD 3 /* GLO AR mode: fix and hold */
139
140/*============================================================================
141 * SBAS / Position Option Constants
142 *===========================================================================*/
143
144#define SBSOPT_LCORR 1 /* SBAS option: long term correction */
145#define SBSOPT_FCORR 2 /* SBAS option: fast correction */
146#define SBSOPT_ICORR 4 /* SBAS option: ionosphere correction */
147#define SBSOPT_RANGE 8 /* SBAS option: ranging */
148
149#define POSOPT_POS 0 /* pos option: LLH/XYZ */
150#define POSOPT_SINGLE 1 /* pos option: average of single pos */
151#define POSOPT_FILE 2 /* pos option: read from pos file */
152#define POSOPT_RINEX 3 /* pos option: rinex header pos */
153#define POSOPT_RTCM 4 /* pos option: rtcm/raw station pos */
154
155/*============================================================================
156 * Extended Receiver Error Model Type
157 *===========================================================================*/
158
159typedef struct { /* extended receiver error model */
160 int ena[4]; /* model enabled */
161 double cerr[4][NFREQ * 2]; /* code errors (m) */
162 double perr[4][NFREQ * 2]; /* carrier-phase errors (m) */
163 double gpsglob[NFREQ]; /* gps-glonass h/w bias (m) */
164 double gloicb[NFREQ]; /* glonass interchannel bias (m/fn) */
165} exterr_t;
166
167/*============================================================================
168 * Processing Options Type
169 *===========================================================================*/
170
171typedef struct prcopt_t { /* processing options type */
172 int mode; /* positioning mode (PMODE_???) */
173 int soltype; /* solution type (0:forward,1:backward,2:combined) */
174 int nf; /* number of frequencies (1:L1,2:L1+L2,3:L1+L2+L5) */
175 int navsys; /* navigation system */
176 double elmin; /* elevation mask angle (rad) */
177 snrmask_t snrmask; /* SNR mask */
178 int sateph; /* satellite ephemeris/clock (EPHOPT_???) */
179 int modear; /* AR mode (0:off,1:continuous,2:instantaneous,3:fix and hold,4:ppp-ar) */
180 int glomodear; /* GLONASS AR mode (0:off,1:on,2:auto cal,3:ext cal) */
181 int bdsmodear; /* BeiDou AR mode (0:off,1:on) */
182 int arsys; /* navigation system for PPP-AR */
183 int maxout; /* obs outage count to reset bias */
184 int minlock; /* min lock count to fix ambiguity */
185 int minfix; /* min fix count to hold ambiguity */
186 int armaxiter; /* max iteration to resolve ambiguity */
187 int ionoopt; /* ionosphere option (IONOOPT_???) */
188 int tropopt; /* troposphere option (TROPOPT_???) */
189 int dynamics; /* dynamics model (0:none,1:velociy,2:accel) */
190 int tidecorr; /* earth tide correction (0:off,1:solid,2:solid+otl+pole) */
191 int niter; /* number of filter iteration */
192 int codesmooth; /* code smoothing window size (0:none) */
193 int intpref; /* interpolate reference obs (for post mission) */
194 int sbascorr; /* SBAS correction options */
195 int sbassatsel; /* SBAS satellite selection (0:all) */
196 int rovpos; /* rover position for fixed mode */
197 int refpos; /* base position for relative mode */
198 /* (0:pos in prcopt, 1:average of single pos, */
199 /* 2:read from file, 3:rinex header, 4:rtcm pos) */
200 double eratio[NFREQ]; /* code/phase error ratio */
201 double err[8]; /* measurement error factor */
202 /* [0]:reserved */
203 /* [1-3]:error factor a/b/c of phase (m) */
204 /* [4]:doppler frequency (hz) */
205 /* [5]:max SNR (dBHz) for SNR-based variance (0=disabled) */
206 /* [6]:SNR variance scale factor (0=disabled) */
207 /* [7]:reserved */
208 double std[3]; /* initial-state std [0]bias,[1]iono [2]trop */
209 double prn[7]; /* process-noise std [0]bias,[1]iono [2]trop [3]acch [4]accv [5]pos [6]ifb */
210 double sclkstab; /* satellite clock stability (sec/sec) */
211 double thresar[8]; /* AR validation threshold */
212 double elmaskar; /* elevation mask of AR for rising satellite (deg) */
213 double elmaskhold; /* elevation mask to hold ambiguity (deg) */
214 double thresslip; /* slip threshold of geometry-free phase (m) */
215 double thresdop; /* slip threshold of doppler-phase difference (cycle/s) (0:off) */
216 double maxtdiff; /* max difference of time (sec) */
217 double maxinno; /* reject threshold of innovation (m) */
218 double maxgdop; /* reject threshold of gdop */
219 double baseline[2]; /* baseline length constraint {const,sigma} (m) */
220 double ru[3]; /* rover position for fixed mode {x,y,z} (ecef) (m) */
221 double rb[3]; /* base position for relative mode {x,y,z} (ecef) (m) */
222 char anttype[2][MAXANT]; /* antenna types {rover,base} */
223 double antdel[2][3]; /* antenna delta {{rov_e,rov_n,rov_u},{ref_e,ref_n,ref_u}} */
224 pcv_t pcvr[2]; /* receiver antenna parameters {rov,base} */
225 uint8_t exsats[MAXSAT]; /* excluded satellites (1:excluded,2:included) */
226 int ign_chierr; /* ignore chi-square error mode (0:off,1:on) */
227 int bds2bias; /* estimate of bias for each BeiDou2 satellite type (0:off,1:on) */
228 int sattmode; /* 0:nominal */
229 int pppsatcb; /* satellite code bias selection (0:auto,1:ssr,2:bia,3:dcb) */
230 int pppsatpb; /* satellite phase bias selection (0:auto,1:ssr,2:bia,3:fcb) */
231 int unbias; /* (0:use uncorrected code bias,1:do not use uncorrected code bias) */
232 double maxbiasdt; /* bias sinex and fcb code/phase bias timeout(s) */
233 int maxaveep; /* max averaging epoches */
234 int initrst; /* initialize by restart */
235 int outsingle; /* output single by dgps/float/fix/ppp outage */
236 char rnxopt[2][256]; /* rinex options {rover,base} */
237 int posopt[13]; /* positioning options */
238 int syncsol; /* solution sync mode (0:off,1:on) */
239 double odisp[2][6 * 11]; /* ocean tide loading parameters {rov,base} */
240 exterr_t exterr; /* extended receiver error model */
241 int freqopt; /* disable L2-AR */
242 int16_t elmaskopt[360]; /* elevation mask pattern */
243 char pppopt[256]; /* ppp option */
244 char rtcmopt[256]; /* rtcm options */
245 int pppsig[5]; /* signal selection [0]GPS,[1]QZS,[2]GAL,[3]BDS2,[4]BDS3 */
246 char staname[32]; /* station name */
247 char* l6dpath[MIONO_MAX_PRN]; /* MADOCA-PPP L6D file paths */
248 int ionocorr; /* MADOCA-PPP ionospheric correction (0:off,1:on) */
249 double uraratio; /* ratio for external URA in PPP variance */
250
251 /* PPP-RTK specific (CLAS) options — appended for ABI stability */
252 int gridsel; /* grid select threshold (m), 0=auto */
253 int alphaar; /* AR significance index (0:0.1%..5:20%) */
254 int qzsmodear; /* QZSS AR mode (0:off,1:on) */
255 int minamb; /* min ambiguities for PAR */
256 int armaxdelsat; /* max excluded sats for PAR */
257 int floatcnt; /* float counter for filter reset */
258 int poserrcnt; /* pos error count to reset */
259 int phasshft; /* phase shift correction (0:off,1:table) */
260 int isb; /* ISB correction mode (0:off, 1:table) */
261 int prnadpt; /* adaptive process noise (0:off,1:on) */
262 double maxinno_ext[5]; /* reject thresholds [0]:L1/L2 [1]:disp [2]:nondisp [3]:F&H [4]:Fix */
263 double varholdamb; /* hold-ambiguity variance (cycle^2) */
264 double maxdiffp; /* max pseudorange diff for reset (m) */
265 double maxobsloss_s; /* max obs gap to reset states (s) */
266 double forgetion; /* forgetting factor iono (0-1) */
267 double afgainion; /* adaptive gain iono */
268 double forgetpva; /* forgetting factor PVA (0-1) */
269 double afgainpva; /* adaptive gain PVA */
270 double prnionomax; /* max process noise for adaptive iono (m) */
271 double stats_prnposith; /* process noise std pos h (m) */
272 double stats_prnpositv; /* process noise std pos v (m) */
273 double stats_tconstiono; /* time constant of iono variation (s) */
274 char rectype[2][MAXANT]; /* receiver types {rover,ref} */
275 int l6mrg; /* L6 2-channel mode (0:single,1:dual-priority,2:dual-balanced) */
276 int regularly; /* filter reset cycle (s) (0:off) */
277
278 /* VRS-RTK specific options */
279 double maxpdopar; /* maximum PDOP for AR (0:no limit) */
280 double maxpdophold; /* maximum PDOP to hold ambiguity (0:no limit) */
281 int refdop; /* reference DOP (0:conventional, 1:single-diff) */
282 double beta; /* VRS iono Gauss-Markov time constant (s). NOTE: not
283 wired to any config key, so it stays 0 (decay off)
284 unless set programmatically. The PPP-RTK iono decay
285 uses stats_tconstiono (parsed from stats-tconstiono)
286 instead; see udion(). */
287
288 /* Partial AR and AR filter options (demo5) */
289 int minfixsats; /* min sats for valid AR fix; nb >= minfixsats-1 DD pairs required (0=no minimum) */
290 int mindropsats; /* min sats before excluding weakest for PAR; nb >= mindropsats required (0=off) */
291 int minholdsats; /* min DD pairs for fix-and-hold (0=no minimum) */
292 int arfilter; /* AR filter: exclude newly-locked sats degrading ratio (0:off,1:on) */
293 int gpsmodear; /* GPS AR mode for GLO fix-and-hold second pass (0:off,1:on) */
294 double gainholdamb; /* gain for fractional GLO/SBAS inter-channel bias update */
295
296 /* Signal configuration (explicit band/code specification) */
297 mrtk_sigcfg_t sigcfg[MRTK_NSYS]; /* per-constellation signal config */
298 int sigcfg_set; /* 1: sigcfg explicitly configured (overrides nf/pppsig) */
299
300 int correction; /* correction source (CORR_???; CORR_AUTO=infer from mode+sateph) */
301
302 /* #116 P2: SPP robust estimation (appended for ABI stability) */
303 int robust; /* SPP robust mode (0:off, 1:igg3 IGG-III equivalent weight) */
304 double robustk[2]; /* IGG-III thresholds {k0,k1} on standardized residual (<=0: code default) */
305
306 /* #116 P4: SPP TDCP auxiliary constraint (appended for ABI stability) */
307 int tdcp; /* SPP TDCP mode (0:off, 1:on time-differenced carrier phase) */
308 double tdcpjump; /* TDCP jump-rejection threshold (m); reject epoch if the code position
309 * change disagrees with the TDCP displacement by more than this (<=0: code default) */
310
311 /* PPP-RTK/VRS a-priori SPP seed quality (appended for ABI stability).
312 * When set, the per-epoch single-point seed (pntpos) used to (re)initialize
313 * the CLAS/VRS filter applies a v0.6.10 SPP profile (see SEEDENH_??? below) on
314 * its PRIVATE option copy only. prcopt_default sets SEEDENH_BASE (C/N0 + TDCP):
315 * a net win on kinematic data and inert on the static regression suite. Set
316 * SEEDENH_OFF to restore prior seed behaviour. */
317 int enhanced_spp_seed; /* a-priori SPP seed profile (SEEDENH_???) */
318
319 /* SPP large-residual exclusion (upstream CLAS sync, appended for ABI stability) */
320 double rejethres; /* pseudorange residual rejection threshold (m, <0:off, 0:CLAS seed auto) */
321 int rejeminsat; /* SPP residual rejection runs only when valid sats exceed this (nv > rejeminsat, as upstream) */
322
323 /* PPP day-boundary clock-jump handling (kept separate from CLAS posopt[5]) */
324 int clockjump; /* reset PPP phase biases at a GPS day boundary (0:off,1:on) */
325
326 /* CLAS PPP-RTK atmosphere terms in the measurement variance model
327 * (kept separate from err[5]/err[6], which are C/N0 weighting parameters). */
328 double stats_erriono; /* ionosphere estimation-error term (m) */
329 double stats_errtrop; /* troposphere estimation-error term (m) */
330
331 /* BeiDou PRN reassignment (MADOCALIB 2.2, #401; appended for ABI stability).
332 * Applied process-wide by set_bds2prn()/set_bds3igso() in postpos() and rtkinit(). */
333 char bds2prn[256]; /* BDS-2 satellites in PRN 1-18, e.g. "C09,C10" ("": no BDS-2) */
334 char bds3igso[256]; /* BDS-3 IGSO satellites ("": C06-C08) */
335 int bds2prn_set; /* bds2prn given by the configuration (0: not given, see bds2prn_warning()) */
337
338/* enhanced_spp_seed profiles (applied to the PPP-RTK/VRS a-priori SPP seed only).
339 * BASE (C/N0 + TDCP) is the default (prcopt_default). ROBUST adds IGG-III robust
340 * weighting: it helps in open sky but, in deep urban canyons, perturbs the seed
341 * enough to trip the filter into fix-and-hold mis-fixes, so it is an explicit
342 * operator opt-in, not the default. See docs/design/spp-accuracy.md. */
343#define SEEDENH_OFF 0 /* off: seed bit-identical to prior behaviour */
344#define SEEDENH_BASE 1 /* C/N0 weighting + TDCP jump-reject (default) */
345#define SEEDENH_ROBUST 2 /* BASE + IGG-III robust (open-sky opt-in) */
346
347/*============================================================================
348 * Solution Options Type
349 *===========================================================================*/
350
351typedef struct { /* solution options type */
352 int posf; /* solution format (SOLF_???) */
353 int times; /* time system (TIMES_???) */
354 int timef; /* time format (0:sssss.s,1:yyyy/mm/dd hh:mm:ss.s) */
355 int timeu; /* time digits under decimal point */
356 int degf; /* latitude/longitude format (0:ddd.ddd,1:ddd mm ss) */
357 int outhead; /* output header (0:no,1:yes) */
358 int outopt; /* output processing options (0:no,1:yes) */
359 int outvel; /* output velocity options (0:no,1:yes) */
360 int datum; /* datum (0:WGS84,1:Tokyo) */
361 int height; /* height (0:ellipsoidal,1:geodetic) */
362 int geoid; /* geoid model (0:EGM96,1:JGD2000) */
363 int solstatic; /* solution of static mode (0:all,1:single) */
364 int sstat; /* solution statistics level (0:off,1:states,2:residuals) */
365 int trace; /* debug trace level (0:off,1-5:debug) */
366 double nmeaintv[2]; /* nmea output interval (s) (<0:no,0:all) */
367 /* nmeaintv[0]:gprmc,gpgga,nmeaintv[1]:gpgsv */
368 char sep[64]; /* field separator */
369 char prog[64]; /* program name */
370 double maxsolstd; /* max std-dev for solution output (m) (0:all) */
371} solopt_t;
372
373/*============================================================================
374 * File Options Type
375 *===========================================================================*/
376
377typedef struct { /* file options type */
378 char satantp[MAXSTRPATH]; /* satellite antenna parameters file */
379 char rcvantp[MAXSTRPATH]; /* receiver antenna parameters file */
380 char stapos[MAXSTRPATH]; /* station positions file */
381 char geoid[MAXSTRPATH]; /* external geoid data file */
382 char iono[MAXSTRPATH]; /* ionosphere data file */
383 char dcb[MAXSTRPATH]; /* dcb data file */
384 char eop[MAXSTRPATH]; /* eop data file */
385 char blq[MAXSTRPATH]; /* ocean tide loading blq file */
386 char tempdir[MAXSTRPATH]; /* ftp/http temporaly directory */
387 char geexe[MAXSTRPATH]; /* google earth exec file */
388 char elmask[MAXSTRPATH]; /* elevation mask file */
389 char solstat[MAXSTRPATH]; /* solution statistics file */
390 char trace[MAXSTRPATH]; /* debug trace file */
391 char bia[MAXSTRPATH]; /* bias sinex data file */
392 char fcb[MAXSTRPATH]; /* fcb data file */
393 char grid[MAXSTRPATH]; /* CLAS grid definition file */
394 char isb[MAXSTRPATH]; /* ISB correction table file */
395 char phacyc[MAXSTRPATH]; /* phase cycle shift table file */
396} filopt_t;
397
398/*============================================================================
399 * Default Option Instances
400 *===========================================================================*/
401
402extern const prcopt_t prcopt_default;
403extern const solopt_t solopt_default;
404
405/* resolve correction source (CORR_AUTO) and validate the (mode, correction)
406 * combination; returns 1 on success, 0 with msg set on an invalid combination */
407extern int resolve_correction(prcopt_t* opt, char* msg, size_t msgsz);
408
409/**
410 * @brief Apply the BeiDou PRN-reassignment options process-wide.
411 *
412 * Calls set_bds2prn(opt->bds2prn) and set_bds3igso(opt->bds3igso). With warn,
413 * also prints to stderr when a list is invalid, or when BeiDou is enabled
414 * (opt->navsys) but bds2prn was not given by the configuration (opt->bds2prn_set).
415 * @param[in] opt Processing options
416 * @param[in] warn Print warnings to stderr (0: trace only)
417 * @return 1: ok, 0: an invalid list was replaced by its default
418 */
419extern int set_bdsopt(const prcopt_t* opt, int warn);
420
421#ifdef __cplusplus
422}
423#endif
424
425#endif /* MRTK_OPT_H */
#define MAXSAT
Definition mrtk_coords.c:45
MRTKLIB Foundation — Common types, standard includes, and system constants (MAXSAT,...
#define MIONO_MAX_PRN
#define MAXSTRPATH
#define MAXANT
MRTKLIB Navigation Module — Navigation data types and satellite/nav utility functions.
MRTKLIB Observation Module — Observation data types and utility functions.
#define MRTK_NSYS
Definition mrtk_obs.h:194
const prcopt_t prcopt_default
Definition mrtk_opt.c:31
const solopt_t solopt_default
Definition mrtk_opt.c:92
int resolve_correction(prcopt_t *opt, char *msg, size_t msgsz)
Definition mrtk_opt.c:165
int set_bdsopt(const prcopt_t *opt, int warn)
Apply the BeiDou PRN-reassignment options process-wide.
Definition mrtk_nav.c:282
double cerr[4][5 *2]
Definition mrtk_opt.h:161
int ena[4]
Definition mrtk_opt.h:160
double perr[4][5 *2]
Definition mrtk_opt.h:162
double gloicb[5]
Definition mrtk_opt.h:164
double gpsglob[5]
Definition mrtk_opt.h:163
char solstat[MAXSTRPATH]
Definition mrtk_opt.h:389
char satantp[MAXSTRPATH]
Definition mrtk_opt.h:378
char fcb[MAXSTRPATH]
Definition mrtk_opt.h:392
char stapos[MAXSTRPATH]
Definition mrtk_opt.h:380
char trace[MAXSTRPATH]
Definition mrtk_opt.h:390
char eop[MAXSTRPATH]
Definition mrtk_opt.h:384
char phacyc[MAXSTRPATH]
Definition mrtk_opt.h:395
char elmask[MAXSTRPATH]
Definition mrtk_opt.h:388
char bia[MAXSTRPATH]
Definition mrtk_opt.h:391
char geexe[MAXSTRPATH]
Definition mrtk_opt.h:387
char blq[MAXSTRPATH]
Definition mrtk_opt.h:385
char iono[MAXSTRPATH]
Definition mrtk_opt.h:382
char tempdir[MAXSTRPATH]
Definition mrtk_opt.h:386
char geoid[MAXSTRPATH]
Definition mrtk_opt.h:381
char rcvantp[MAXSTRPATH]
Definition mrtk_opt.h:379
char grid[MAXSTRPATH]
Definition mrtk_opt.h:393
char isb[MAXSTRPATH]
Definition mrtk_opt.h:394
char dcb[MAXSTRPATH]
Definition mrtk_opt.h:383
int clockjump
Definition mrtk_opt.h:324
mrtk_sigcfg_t sigcfg[MRTK_NSYS]
Definition mrtk_opt.h:297
int sbassatsel
Definition mrtk_opt.h:195
int sattmode
Definition mrtk_opt.h:228
int isb
Definition mrtk_opt.h:260
int sigcfg_set
Definition mrtk_opt.h:298
int ionocorr
Definition mrtk_opt.h:248
double stats_errtrop
Definition mrtk_opt.h:329
int bds2bias
Definition mrtk_opt.h:227
double thresdop
Definition mrtk_opt.h:215
int prnadpt
Definition mrtk_opt.h:261
int soltype
Definition mrtk_opt.h:173
snrmask_t snrmask
Definition mrtk_opt.h:177
int codesmooth
Definition mrtk_opt.h:192
int armaxiter
Definition mrtk_opt.h:186
int minfixsats
Definition mrtk_opt.h:289
int sbascorr
Definition mrtk_opt.h:194
int outsingle
Definition mrtk_opt.h:235
int niter
Definition mrtk_opt.h:191
int minfix
Definition mrtk_opt.h:185
double elmin
Definition mrtk_opt.h:176
int qzsmodear
Definition mrtk_opt.h:254
char * l6dpath[MIONO_MAX_PRN]
Definition mrtk_opt.h:247
int bdsmodear
Definition mrtk_opt.h:181
double afgainion
Definition mrtk_opt.h:267
int poserrcnt
Definition mrtk_opt.h:258
double maxdiffp
Definition mrtk_opt.h:264
int phasshft
Definition mrtk_opt.h:259
double robustk[2]
Definition mrtk_opt.h:304
int mindropsats
Definition mrtk_opt.h:290
double maxgdop
Definition mrtk_opt.h:218
int ionoopt
Definition mrtk_opt.h:187
char anttype[2][MAXANT]
Definition mrtk_opt.h:222
int armaxdelsat
Definition mrtk_opt.h:256
pcv_t pcvr[2]
Definition mrtk_opt.h:224
double stats_prnpositv
Definition mrtk_opt.h:272
double stats_erriono
Definition mrtk_opt.h:328
double elmaskhold
Definition mrtk_opt.h:213
double thresslip
Definition mrtk_opt.h:214
double maxpdopar
Definition mrtk_opt.h:279
double tdcpjump
Definition mrtk_opt.h:308
int arsys
Definition mrtk_opt.h:182
char rnxopt[2][256]
Definition mrtk_opt.h:236
double forgetpva
Definition mrtk_opt.h:268
int rovpos
Definition mrtk_opt.h:196
double prn[7]
Definition mrtk_opt.h:209
int minlock
Definition mrtk_opt.h:184
int dynamics
Definition mrtk_opt.h:189
double err[8]
Definition mrtk_opt.h:201
int floatcnt
Definition mrtk_opt.h:257
int freqopt
Definition mrtk_opt.h:241
int intpref
Definition mrtk_opt.h:193
double eratio[5]
Definition mrtk_opt.h:200
int tropopt
Definition mrtk_opt.h:188
int tdcp
Definition mrtk_opt.h:307
char rectype[2][MAXANT]
Definition mrtk_opt.h:274
int pppsatcb
Definition mrtk_opt.h:229
double baseline[2]
Definition mrtk_opt.h:219
uint8_t exsats[MAXSAT]
Definition mrtk_opt.h:225
double odisp[2][6 *11]
Definition mrtk_opt.h:239
int arfilter
Definition mrtk_opt.h:292
double sclkstab
Definition mrtk_opt.h:210
int glomodear
Definition mrtk_opt.h:180
int minholdsats
Definition mrtk_opt.h:291
double maxpdophold
Definition mrtk_opt.h:280
double afgainpva
Definition mrtk_opt.h:269
int regularly
Definition mrtk_opt.h:276
double stats_prnposith
Definition mrtk_opt.h:271
int unbias
Definition mrtk_opt.h:231
int pppsig[5]
Definition mrtk_opt.h:245
char pppopt[256]
Definition mrtk_opt.h:243
int initrst
Definition mrtk_opt.h:234
int rejeminsat
Definition mrtk_opt.h:321
int posopt[13]
Definition mrtk_opt.h:237
double maxbiasdt
Definition mrtk_opt.h:232
double stats_tconstiono
Definition mrtk_opt.h:273
double thresar[8]
Definition mrtk_opt.h:211
int16_t elmaskopt[360]
Definition mrtk_opt.h:242
double uraratio
Definition mrtk_opt.h:249
double beta
Definition mrtk_opt.h:282
int maxout
Definition mrtk_opt.h:183
int ign_chierr
Definition mrtk_opt.h:226
double maxobsloss_s
Definition mrtk_opt.h:265
int maxaveep
Definition mrtk_opt.h:233
double rejethres
Definition mrtk_opt.h:320
int bds2prn_set
Definition mrtk_opt.h:335
int gpsmodear
Definition mrtk_opt.h:293
double elmaskar
Definition mrtk_opt.h:212
int modear
Definition mrtk_opt.h:179
int refdop
Definition mrtk_opt.h:281
int mode
Definition mrtk_opt.h:172
int tidecorr
Definition mrtk_opt.h:190
int enhanced_spp_seed
Definition mrtk_opt.h:317
int minamb
Definition mrtk_opt.h:255
exterr_t exterr
Definition mrtk_opt.h:240
int gridsel
Definition mrtk_opt.h:252
double varholdamb
Definition mrtk_opt.h:263
double forgetion
Definition mrtk_opt.h:266
double antdel[2][3]
Definition mrtk_opt.h:223
double gainholdamb
Definition mrtk_opt.h:294
int syncsol
Definition mrtk_opt.h:238
int robust
Definition mrtk_opt.h:303
double ru[3]
Definition mrtk_opt.h:220
int correction
Definition mrtk_opt.h:300
double std[3]
Definition mrtk_opt.h:208
int navsys
Definition mrtk_opt.h:175
double maxtdiff
Definition mrtk_opt.h:216
double prnionomax
Definition mrtk_opt.h:270
int sateph
Definition mrtk_opt.h:178
char bds3igso[256]
Definition mrtk_opt.h:334
double maxinno_ext[5]
Definition mrtk_opt.h:262
char bds2prn[256]
Definition mrtk_opt.h:333
int pppsatpb
Definition mrtk_opt.h:230
double rb[3]
Definition mrtk_opt.h:221
int alphaar
Definition mrtk_opt.h:253
double maxinno
Definition mrtk_opt.h:217
char staname[32]
Definition mrtk_opt.h:246
int l6mrg
Definition mrtk_opt.h:275
int refpos
Definition mrtk_opt.h:197
char rtcmopt[256]
Definition mrtk_opt.h:244
SNR mask type.
Definition mrtk_obs.h:67
int datum
Definition mrtk_opt.h:360
int height
Definition mrtk_opt.h:361
int degf
Definition mrtk_opt.h:356
double nmeaintv[2]
Definition mrtk_opt.h:366
int sstat
Definition mrtk_opt.h:364
int timef
Definition mrtk_opt.h:354
int outopt
Definition mrtk_opt.h:358
int trace
Definition mrtk_opt.h:365
int outvel
Definition mrtk_opt.h:359
int times
Definition mrtk_opt.h:353
int timeu
Definition mrtk_opt.h:355
int geoid
Definition mrtk_opt.h:362
double maxsolstd
Definition mrtk_opt.h:370
int posf
Definition mrtk_opt.h:352
int outhead
Definition mrtk_opt.h:357
char sep[64]
Definition mrtk_opt.h:368
char prog[64]
Definition mrtk_opt.h:369
int solstatic
Definition mrtk_opt.h:363