42 lines
1.3 KiB
C
42 lines
1.3 KiB
C
//
|
|
// Created by villuton on 25.03.25.
|
|
//
|
|
|
|
#ifndef NMEA_RMC_H
|
|
#define NMEA_RMC_H
|
|
|
|
#include "Nmea0183Parser_Time.h"
|
|
#include "Nmea0183_Sentence.h"
|
|
|
|
#define RMC_MSG_ID "RMC"
|
|
#define RMC_MSG_ID_LEN (3)
|
|
|
|
#define RMC_STATUS_NotValid 'V'
|
|
#define RMC_STATUS_Valid 'A'
|
|
|
|
#define RMC_MODE_Autonomous 'A'
|
|
#define RMC_MODE_Differential 'D'
|
|
#define RMC_MODE_Estimated 'E'
|
|
#define RMC_MODE_NotValid 'N'
|
|
#define RMC_MODE_Simulator 'S'
|
|
|
|
/**
|
|
* RMC packet information structure (Recommended Minimum sentence C)
|
|
*/
|
|
typedef struct {
|
|
tNmeaTime time; /**< time of position */
|
|
char status; /**< Status (A = active or V = void) */
|
|
tNmeaLocation location; /**< Sentence location data in fractional NDEG and Cardinal directions */
|
|
double speed; /**< Speed over the ground in knots */
|
|
double direction; /**< Track angle in degrees True */
|
|
double declination; /**< Magnetic variation degrees (Easterly var. subtracts from true course) */
|
|
char declin_ew; /**< [E]ast or [W]est */
|
|
char mode; /**< Mode indicator of fix type (A = autonomous, D = differential, E = estimated, N = not valid, S = simulator) */
|
|
}tNmeaRMC;
|
|
|
|
|
|
bool NmeaRmc_Parse(char *str, size_t len, tNmeaRMC *result);
|
|
|
|
|
|
#endif //NMEA_RMC_H
|