MRTKLIB 0.7.14
Modernized GNSS Positioning Library
Loading...
Searching...
No Matches
mrtk_rtksvr.h File Reference

MRTKLIB RTK Server Module — real-time positioning server. More...

Include dependency graph for mrtk_rtksvr.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  rtksvr_t

Functions

int rtksvrinit (rtksvr_t *svr)
 Initialize RTK server.
void rtksvrfree (rtksvr_t *svr)
 Free RTK server resources.
int rtksvrstart (rtksvr_t *svr, int cycle, int buffsize, int *strs, char **paths, int *formats, int navsel, char **cmds, char **cmds_periodic, char **rcvopts, int nmeacycle, int nmeareq, const double *nmeapos, prcopt_t *prcopt, solopt_t *solopt, stream_t *moni, gtime_t rst, char *errmsg)
 Start RTK server.
void rtksvrstop (rtksvr_t *svr, char **cmds)
 Stop RTK server.
int rtksvropenstr (rtksvr_t *svr, int index, int str, const char *path, const solopt_t *solopt)
 Open RTK server output/log stream.
void rtksvrclosestr (rtksvr_t *svr, int index)
 Close RTK server output/log stream.
void rtksvrlock (rtksvr_t *svr)
 Lock RTK server mutex.
void rtksvrunlock (rtksvr_t *svr)
 Unlock RTK server mutex.
int rtksvrostat (rtksvr_t *svr, int type, gtime_t *time, int *sat, double *az, double *el, int **snr, int *vsat)
 Get observation data status.
void rtksvrsstat (rtksvr_t *svr, int *sstat, char *msg)
 Get stream status.
int rtksvrmark (rtksvr_t *svr, const char *name, const char *comment)
 Mark current position in solution.
int rtksvr_ssr_applicable (const rtksvr_t *svr, int index, int ret)
 Decide whether a decoded SSR result may be applied to nav.ssr_ch[0].

Detailed Description

MRTKLIB RTK Server Module — real-time positioning server.

This header provides the rtksvr_t type and functions for managing a real-time RTK positioning server that reads receiver data streams, performs positioning computation, and outputs solutions.

Note
Functions declared here are implemented in mrtk_rtksvr.c.

Definition in file mrtk_rtksvr.h.

Function Documentation

◆ rtksvr_ssr_applicable()

int rtksvr_ssr_applicable ( const rtksvr_t * svr,
int index,
int ret )

Decide whether a decoded SSR result may be applied to nav.ssr_ch[0].

In CLAS/PPP-RTK mode (svr->clas set) the CLAS decoder owns nav.ssr_ch[0], so MADOCA-PPP SSR from a raw L6E stream (STRFMT_L6E, code 10) or from a UBX/SBF L6E frame (code 15) is not applied. Other SSR sources (e.g. RTCM3 SSR, code 10) are applied as before.

Parameters
[in]svrRTK server struct
[in]indexinput stream index (0..2)
[in]retdecoder status (10 or 15)
Returns
1 if update_ssr() should apply the result, 0 otherwise

Definition at line 336 of file mrtk_rtksvr.c.

References rtksvr_t::clas, rtksvr_t::format, and STRFMT_L6E.

Referenced by update_svr().

Here is the caller graph for this function:

◆ rtksvrclosestr()

void rtksvrclosestr ( rtksvr_t * svr,
int index )

Close RTK server output/log stream.

Parameters
[in,out]svrRTK server struct
[in]indexstream index

Definition at line 1481 of file mrtk_rtksvr.c.

References rtksvrlock(), rtksvrunlock(), rtksvr_t::state, strclose(), rtksvr_t::stream, and tracet().

Here is the call graph for this function:

◆ rtksvrfree()

void rtksvrfree ( rtksvr_t * svr)

Free RTK server resources.

Parameters
[in,out]svrRTK server struct

Definition at line 1097 of file mrtk_rtksvr.c.

References rtksvr_t::clas, clas_ctx_free(), obs_t::data, nav_s::eph, free, nav_s::geph, rtksvr_t::has, has_free(), MAXOBSBUF, rtksvr_t::mdciono, rtksvr_t::nav, rtksvr_t::obs, nav_s::pppiono, rtksvr_t::rtk, rtkfree(), and nav_s::seph.

Here is the call graph for this function:

◆ rtksvrinit()

◆ rtksvrlock()

void rtksvrlock ( rtksvr_t * svr)

Lock RTK server mutex.

Parameters
[in,out]svrRTK server struct

Definition at line 1132 of file mrtk_rtksvr.c.

References rtksvr_t::lock, and rtk_lock.

Referenced by decodefile(), decoderaw(), rtksvrclosestr(), rtksvrmark(), rtksvropenstr(), rtksvrostat(), rtksvrsstat(), rtksvrstop(), rtksvrthread(), saveoutbuf(), and writesol().

Here is the caller graph for this function:

◆ rtksvrmark()

int rtksvrmark ( rtksvr_t * svr,
const char * name,
const char * comment )

Mark current position in solution.

Parameters
[in,out]svrRTK server struct
[in]namemark name
[in]commentmark comment
Returns
status (0:error,1:ok)

Definition at line 1565 of file mrtk_rtksvr.c.

References COMMENTH, ecef2pos(), MAXSOLMSG, rtksvr_t::moni, solopt_t::posf, R2D, sol_t::rr, rtksvr_t::rtk, rtksvrlock(), rtksvrunlock(), saveoutbuf(), rtk_t::sol, SOLF_NMEA, SOLF_STAT, rtksvr_t::solopt, sol_t::stat, rtksvr_t::state, rtksvr_t::stream, strwrite(), sol_t::time, time2gpst(), time2str(), and tracet().

Here is the call graph for this function:

◆ rtksvropenstr()

int rtksvropenstr ( rtksvr_t * svr,
int index,
int str,
const char * path,
const solopt_t * solopt )

Open RTK server output/log stream.

Parameters
[in,out]svrRTK server struct
[in]indexstream index
[in]strstream type
[in]pathstream path
[in]soloptsolution options
Returns
status (0:error,1:ok)

Definition at line 1446 of file mrtk_rtksvr.c.

References rtksvrlock(), rtksvrunlock(), rtksvr_t::solopt, rtksvr_t::state, stream_tag::state, STR_MODE_W, rtksvr_t::stream, stropen(), tracet(), and writesolhead().

Here is the call graph for this function:

◆ rtksvrostat()

int rtksvrostat ( rtksvr_t * svr,
int type,
gtime_t * time,
int * sat,
double * az,
double * el,
int ** snr,
int * vsat )

Get observation data status.

Parameters
[in]svrRTK server struct
[in]typereceiver type (0:rover,1:base,2:corr)
[out]timeobservation time
[out]satsatellite numbers
[out]azazimuths (rad)
[out]elelevations (rad)
[out]snrSNR (0.001 dBHz)
[out]vsatvalid satellite flags
Returns
number of satellites

Definition at line 1507 of file mrtk_rtksvr.c.

References ssat_t::azel, obs_t::data, obs_t::n, rtksvr_t::obs, rtksvr_t::rtk, rtksvrlock(), rtksvrunlock(), obsd_t::sat, obsd_t::SNR, SNR_UNIT, rtk_t::sol, SOLQ_NONE, SOLQ_SINGLE, rtk_t::ssat, sol_t::stat, rtksvr_t::state, obsd_t::time, tracet(), ssat_t::vs, and ssat_t::vsat.

Here is the call graph for this function:

◆ rtksvrsstat()

void rtksvrsstat ( rtksvr_t * svr,
int * sstat,
char * msg )

Get stream status.

Parameters
[in,out]svrRTK server struct
[out]sstatstream status
[out]msgstatus message

Definition at line 1543 of file mrtk_rtksvr.c.

References MAXSTRMSG, MAXSTRRTK, rtksvrlock(), rtksvrunlock(), rtksvr_t::stream, strstat(), and tracet().

Here is the call graph for this function:

◆ rtksvrstart()

int rtksvrstart ( rtksvr_t * svr,
int cycle,
int buffsize,
int * strs,
char ** paths,
int * formats,
int navsel,
char ** cmds,
char ** cmds_periodic,
char ** rcvopts,
int nmeacycle,
int nmeareq,
const double * nmeapos,
prcopt_t * prcopt,
solopt_t * solopt,
stream_t * moni,
gtime_t rst,
char * errmsg )

Start RTK server.

Parameters
[in,out]svrRTK server struct
[in]cycleprocessing cycle (ms)
[in]buffsizeinput buffer size (bytes)
[in]strsstream types (8)
[in]pathsstream paths (8)
[in]formatsinput formats (3)
[in]navselnavigation select (0:all,1:rov,2:base,3:corr)
[in]cmdsstartup commands (3)
[in]cmds_periodicperiodic commands (3)
[in]rcvoptsreceiver options (3)
[in]nmeacycleNMEA request cycle (ms) (0:no)
[in]nmeareqNMEA request type (0:no,1:nmeapos,2:single)
[in]nmeaposNMEA request position (ecef) (m) (3)
[in]prcoptprocessing options
[in]soloptsolution options (2)
[in]monimonitor stream (NULL: no monitor)
[in]rstreset time
[out]errmsgerror message
Returns
status (0:error,1:ok)

Definition at line 1181 of file mrtk_rtksvr.c.

References rtksvr_t::buff, buffsize, rtksvr_t::buffsize, calloc, rtksvr_t::clas, nav_s::clas_ctx, clas_ctx_init(), rtksvr_t::cmds_periodic, CORR_GAL_HAS, CORR_QZS_MADOCA, prcopt_t::correction, rtksvr_t::ctx, rtksvr_t::cycle, nav_s::dgps, rtcm_t::dgps, nav_s::eph, errmsg(), rtksvr_t::format, free, g_mrtk_ctx, nav_s::geph, rtksvr_t::has, has_new(), init_raw(), init_rtcm(), prcopt_t::initrst, prcopt_t::ionocorr, prcopt_t::ionoopt, IONOOPT_EST, malloc, MAXOBSBUF, MAXSAT, MAXSTRRTK, rtksvr_t::mdciono, MIONO_MAX_PRN, prcopt_t::mode, rtksvr_t::moni, obs_t::n, rtksvr_t::nav, rtksvr_t::nave, rtksvr_t::navsel, rtksvr_t::nb, rtksvr_t::nmeacycle, rtksvr_t::nmeapos, rtksvr_t::nmeareq, rtksvr_t::nmsg, rtksvr_t::npb, NSATGLO, NSATSBS, rtksvr_t::nsbs, rtksvr_t::nsol, rtksvr_t::obs, raw_t::opt, rtcm_t::opt, rtksvr_t::pbuf, PMODE_PPP_RTK, POSOPT_SINGLE, nav_s::pppiono, rtksvr_t::prcout, rtksvr_t::raw, prcopt_t::rb, rtk_t::rb, rtksvr_t::rb_ave, prcopt_t::refpos, rtksvr_t::rtcm, rtksvr_t::rtk, rtkfree(), rtkinit(), rtksvrthread(), rtksvr_t::sbuf, nav_s::seph, prcopt_t::sigcfg, raw_t::sigcfg, prcopt_t::sigcfg_set, raw_t::sigcfg_set, sleepms(), rtksvr_t::solopt, rtksvr_t::state, STR_FILE, STR_MODE_R, STR_MODE_W, strclose(), rtksvr_t::stream, STRFMT_CLAS, STRFMT_L6E, STRFMT_SEPT, STRFMT_UBX, strgettime(), strinitcom(), stropen(), strsendcmd(), strsync(), strwrite(), rtksvr_t::thread, gtime_t::time, raw_t::time, rtcm_t::time, timeget(), geph_t::tof, seph_t::tof, tracet(), eph_t::ttr, utc2gpst(), and writesolhead().

Here is the call graph for this function:

◆ rtksvrstop()

void rtksvrstop ( rtksvr_t * svr,
char ** cmds )

Stop RTK server.

Parameters
[in,out]svrRTK server struct
[in]cmdsshutdown commands (3)

Definition at line 1415 of file mrtk_rtksvr.c.

References rtksvrlock(), rtksvrunlock(), rtksvr_t::state, rtksvr_t::stream, strsendcmd(), rtksvr_t::thread, and tracet().

Here is the call graph for this function:

◆ rtksvrunlock()

void rtksvrunlock ( rtksvr_t * svr)

Unlock RTK server mutex.

Parameters
[in,out]svrRTK server struct

Definition at line 1133 of file mrtk_rtksvr.c.

References rtksvr_t::lock, and rtk_unlock.

Referenced by decodefile(), decoderaw(), rtksvrclosestr(), rtksvrmark(), rtksvropenstr(), rtksvrostat(), rtksvrsstat(), rtksvrstop(), rtksvrthread(), saveoutbuf(), and writesol().

Here is the caller graph for this function: