FLAMINGO IoT is Coming Soon!

#include <Flamingo.h>

A library designed to support FLAMINGO interaction for an IoT platform.

The library supports both FLAMINGO registration methods as well as updating raw GNSS measurements. Results are now calculated on a server and supplied to the user by a web interface. More information on this interface will be provided in a later release of FLAMINGO.

Summary

Enumerations

enum {

CODE_UNKNOWN,

CODE_GPS_L1C,

CODE_GPS_L1P,

CODE_GPS_L1W,

CODE_GPS_L1S,

CODE_GPS_L1L,

CODE_GPS_L1X,

CODE_GPS_L2C,

CODE_GPS_L2P,

CODE_GPS_L2W,

CODE_GPS_L2S,

CODE_GPS_L2L,

CODE_GPS_L2X,

CODE_GPS_L5I,

CODE_GPS_L5Q,

CODE_GPS_L5X,

CODE_GLO_G1C,

CODE_GLO_G1P,

CODE_GLO_G2C,

CODE_GLO_G2P,

CODE_GAL_E1C,

CODE_GAL_E1A,

CODE_GAL_E1B,

CODE_GAL_E1X,

CODE_GAL_E1Z,

CODE_GAL_E5I,

CODE_GAL_E5Q,

CODE_GAL_E5X,

CODE_GAL_E6C,

CODE_GAL_E6A,

CODE_GAL_E6B,

CODE_GAL_E6X,

CODE_GAL_E6Z,

CODE_GAL_E7I,

CODE_GAL_E7Q,

CODE_GAL_E7X,

CODE_GAL_E8I,

CODE_GAL_E8Q,

CODE_GAL_E8X,

} code_t;

Classifiers for signal code following RINEX standards.
enum {

CONSTELLATION_GPS,

CONSTELLATION_GLONASS,

CONSTELLATION_GALILEO

} constellation_t;

Classifiers for GNSS constellation types.
enum {

TIME_SCALE_GPST,

TIME_SCALE_UTC,

TIME_SCALE_GLONASST

} tscale_t;

Classifiers for time scale of observation epoch.
enum {

CLOCK_STEERING_NO,

CLOCK_STEERING_APPLIED,

CLOCK_STEERING_UNKNOWN

} clocksteeringindicator_t;

Classifiers for clock steering.
enum {

CLOCK_INTERNAL,

CLOCK_EXTERNAL_LOCKED,

CLOCK_EXTERNAL_UNLOCKED,

CLOCK_UNKNOWN

} externalclockindicator_t;

Classifiers for clock situation.
enum {

APPLICATION_CONTEXT_FITNESS,

APPLICATION_CONTEXT_TRACKING,

APPLICATION_CONTEXT_VEHICLE_NAVIGATION,

APPLICATION_CONTEXT_PEDESTRIAN_NAVIGATION,

APPLICATION_CONTEXT_AUGMENTED_REALITY,

APPLICATION_CONTEXT_SURVEYING

} applicationcontext_t;

Classifiers for the designated application context.
enum {

SMOOTHING_INTERVAL_NONE,

SMOOTHING_INTERVAL_0_TO_30_S,

SMOOTHING_INTERVAL_30_TO_60_S,

SMOOTHING_INTERVAL_1_TO_2_MIN,

SMOOTHING_INTERVAL_2_TO_4_MIN,

SMOOTHING_INTERVAL_4_TO_8_MIN,

SMOOTHING_INTERVAL_GREATER_THAN_8_MIN,

SMOOTHING_INTERVAL_UNLIMITED

} smoothinginterval_t;

Classifier for the smoothing interval.

Structures

struct {

time_t time;

double sec;

tscale_t tscale;

} etime_t;

Structure containing data of the GNSS epoch time.
struct {

char svid;

char fcn;

char ncodes;

constellation_t constellation;

code_t code[7];

double pseudorange[7];

double carrier[7];

double doppler[7];

double snr[7];

int lockIndicator[7];

boolean_t hcycleamb[7];

} observationd_t;

Structure containing data of a single satellite observation
struct {

int nsat;

etime_t epochTime;

clockstreeringindicator_t clockSteeringIndicator;

externalclockindicator_t externalClockIndication;

boolean_t divergenceFreeSmoothing;

smoothinginterval_t smoothingInterval;

observationd_t *observationData;

} observation_t;

Structure containing data of the GNSS observation epoch.

Functions

int registerFlamingoService (

char *applicationId,

char *password,

char *clientId,

char *installId,

char *nmeaGns,

unsigned int applicationContext,

void (*callback)(char *, char *)

);

Perform a registration of the FLAMINGO service, providing information for the initial service request and data callback.
int updateGnssMeasurement (

observation_t observation;

);

Update FLAMINGO with a new GNSS measurement.
int unregisterFlamingoService (

);

Unregister from the FLAMINGO service.

Enumerations

code_t

code_t

Classifiers for signal code following RINEX Standard Version 3.3.

Properties

CODE_UNKNOWN The code is unknown.
CODE_GPS_L1C The code is GPS in the L1 frequency band, C code based.
CODE_GPS_L1P The code is GPS in the L1 frequency band, P code based.
CODE_GPS_L1W The code is GPS in the L1 frequency band, based on Z-tracking.
CODE_GPS_L1S The code is GPS in the L1 frequency band, M channel.
CODE_GPS_L1L The code is GPS in the L1 frequency band, L channel
CODE_GPS_L1X The code is GPS in the L1 frequency band, I+Q channel.
CODE_GPS_L2P The code is GPS in the L2 frequency band, P code based.
CODE_GPS_L2W The code is GPS in the L2 frequency band, based on Z-tracking.
CODE_GPS_L2S The code is GPS in the L2 frequency band, M channel.
CODE_GPS_L2L The code is GPS in the L2 frequency band, L channel.
CODE_GPS_L2X The code is GPS in the L2 frequency band, I+Q channel.
CODE_GPS_L5I The code is GPS in the L5 frequency band, I channel.
CODE_GPS_L5Q The code is GPS in the L5 frequency band, Q channel.
CODE_GPS_L5X The code is GPS in the L5 frequency band, I+Q channel.
CODE_GLO_G1C The code is GLONASS in the G1 frequency band, C code based.
CODE_GLO_G1P The code is GLONASS in the G1 frequency band, P code based.
CODE_GLO_G2C The code is GLONASS in the G2 frequency band, C code based.
CODE_GLO_G2P The code is GLONASS in the G2 frequency band, P code based.
CODE_GAL_E1C The code is Galileo in the E1 frequency band, C channel.
CODE_GAL_E1A The code is Galileo in the E1 frequency band, A channel.
CODE_GAL_E1B The code is Galileo in the E1 frequency band, B channel.
CODE_GAL_E1X The code is Galileo in the E1 frequency band, B+C channel.
CODE_GAL_E1Z The code is Galileo in the E1 frequency band, A+B+C channel.
CODE_GAL_E5I The code is Galileo in the E5a frequency band, I channel.
CODE_GAL_E5Q The code is Galileo in the E5a frequency band, Q channel.
CODE_GAL_E5X The code is Galileo in the E5a frequency band, I+Q channel.
CODE_GAL_E6C The code is Galileo in the E6 frequency band, C channel.
CODE_GAL_E6A The code is Galileo in the E6 frequency band, A channel.
CODE_GAL_E6B The code is Galileo in the E6 frequency band, B channel.
CODE_GAL_E6X The code is Galileo in the E6 frequency band, B+C channel.
CODE_GAL_E6Z The code is Galileo in the E6 frequency band, A+B+C channel.
CODE_GAL_E7I The code is Galileo in the E5b frequency band, I channel.
CODE_GAL_E7Q The code is Galileo in the E5b frequency band, Q channel.
CODE_GAL_E7X The code is Galileo in the E5b frequency band, I+Q channel.
CODE_GAL_E8I The code is Galileo in the E5a+b frequency band, I channel.
CODE_GAL_E8Q The code is Galileo in the E5a+b frequency band, Q channel.
CODE_GAL_E8X The code is Galileo in the E5a+b frequency band, I+Q channel.

constellation_t

constellation_t

Classifiers for GNSS constellation type.

Properties

CONSTELLATION_GPS GPS constellation.
CONSTELLATION_GLONASS GLONASS constellation.
CONSTELLATION_GALILEO Galileo constellation.

tscale_t

tscale_t

Classifiers for GNSS time scale.

Properties

TIME_SCALE_GPST Time scale of the epoch in GPS time.
TIME_SCALE_UTC Time scale of the epoch in Universal Coordinated Time.
TIME_SCALE_GLONASST Time scale of the epoch in GLONASS time.

clocksteeringindicator_t

clocksteeringindicator_t

Classifiers for clock steering.

Properties

CLOCK_STEERING_NO No clock steering is applied.
CLOCK_STEERING_APPLIED Clock steering is applied.
CLOCK_STEERING_UNKNOWN It is not known if clock steering is applied.

externalclockindicator_t

externalclockindicator_t

Classifiers for clock situation.

Properties

CLOCK_INTERNAL Internal clock is used.
CLOCK_EXTERNAL_LOCKED External clock is used, clock status is ‘locked’.
CLOCK_EXTERNAL_UNLOCKED External clock is user, clock status is ‘not locked’, which may be because of failure or unreliable.
CLOCK_UNKNOWN Unknown clock is used.

applicationcontext_t

applicationcontext_t

Classifiers for the designated application context.

Properties

APPLICATION_CONTEXT_FITNESS The application FLAMINGO is used in is targeted at fitness.
APPLICATION_CONTEXT_TRACKING The application FLAMINGO is used in is targeted at tracking.
APPLICATION_CONTEXT_VEHICLE_NAVIGATION The application FLAMINGO is used in is targeted at vehicle navigation.
APPLICATION_CONTEXT_PEDESTRIAN_NAVIGATION The application FLAMINGO is used in is targeted at pedestrian navigation.
APPLICATION_CONTEXT_AUGMENTED_REALITY The application FLAMINGO is used in is targeted at augmented reality.
APPLICATION_CONTEXT_SURVEYING The application FLAMINGO is used in is targeted at surveying.

smoothinginterval_t

smoothinginterval_t

Classifiers for the smoothing interval.

Properties

SMOOTHING_INTERVAL_NONE There is no smoothing interval.
SMOOTHING_INTERVAL_0_TO_30_S The smoothing interval is less than 30 s.
SMOOTHING_INTERVAL_30_TO_60_S The smoothing interval is 30 s to 60 s.
SMOOTHING_INTERVAL_1_TO_2_MIN, The smoothing interval is 60 s to 2 min.
SMOOTHING_INTERVAL_2_TO_4_MIN The smoothing interval is 2 min to 4 min.
SMOOTHING_INTERVAL_4_TO_8_MIN The smoothing interval is 4 min to 8 min.
SMOOTHING_INTERVAL_GREATER_THAN_8_MIN The smoothing interval is greater than 8 min.
SMOOTHING_INTERVAL_UNLIMITED The smoothing interval is unlimited.

Structures

etime_t

struct etime_t

Structure containing data of the GNSS epoch time. This structure will need to be filled for each GNSS observation epoch. Three-time scales may be used, defined by tscale_t.

Public Attributes

time_t time Time in integer seconds, using scale specified by tscale.
double sec Time in fraction of a second.
tscale_t tscale Enumerated descriptor of time scale.

observationd_t

observationd_t

Structure containing data of a single satellite observation. This structure consists of observation parameters for a single satellite observation. If values are incorrectly inserted, the observation will be rejected.

Public Attributes

char svid The satellite identification number (GPS: 1-32, GLONASS: 1-24, Galileo: 1-27).
char fcn This parameter is to be set if the satellite is GLONASS, otherwise not. The value will be specified from -6 to 7, denoting the frequency channel number.
char ncodes This value defines the number of received satellite signal codes for this observation, up to 7.
constellation_t constellation Satellite constellation.
code_t code[7] Signal code type for each observed satellite signal code.
double pseudorange[7] Signal pseudorange in metres.
double carrier[7] Number of carrier cycles in observed signal.
double doppler[7] Doppler shift of satellite signal in Hertz.
double snr[7] Signal to noise ratio of observed signal in decibel-Hertz.
int lockIndicator[7] Minimum lock time in milliseconds.
boolean_t hcycleamb[7] Indicates if the ambiguity is half-cycle for the current observed signal.

observation_t

observation_t

Structure containing data of an observation epoch. This structure consists of observation parameters for an observation epoch. If values are incorrectly inserted, the observation will be rejected.

Public Attributes

int nsat Number of satellites observed in the epoch.
etime_t epochtime Time of the observation epoch.
clocksteeringindicator_t clockSteeringIndicator Indicator if the clock is being steered.
externalclockindicator_t externalClockIndicator Indicator if the clock is external.
boolean_t divergenceFreeSmoothing Indicator if observations have been divergence-free smoothed.
smoothinginterval_t smoothingInterval Descriptor of the size of the smoothing interval.
observationd_t *observationData Satellite observation structure, containing single satellite observation data. Length is equal to nsat.

Functions

registerFlamingoService

int registerFlamingoService (

char *applicationId,

char *password,

char *clientId,

char *installId,

char *nmeaGns,

unsigned int applicationContext,

void (*callback)(char *, char *)

);

Register for the FLAMINGO service. This will send a connection request to the FLAMINGO server, providing authentication and access.

Details

Returns Flag indicating success or failure of the connection request.

updateGnssMeasurement

int updateGnssMeasurement(

observation_t observation

);

Update FLAMINGO server with a new raw GNSS observation. This parameter should be updated whenever the GNSS receiver has received a new GNSS measurement.

Details

Returns Success flag of the GNSS measurement.

unregisterFlamingoService

int unregisterFlamingoService();

Unregister to the FLAMINGO server, where positioning services will no longer be required.

Details

Returns Success flag of the FLAMINGO disconnection.