64 lines
1.2 KiB
C
64 lines
1.2 KiB
C
//
|
|
// Created by xemon on 01.09.22.
|
|
//
|
|
|
|
#ifndef NMEA_ACP_PARSER_H
|
|
#define NMEA_ACP_PARSER_H
|
|
|
|
#include "stdint.h"
|
|
#include "stddef.h"
|
|
#include "stdbool.h"
|
|
|
|
typedef struct {
|
|
uint8_t hour;
|
|
uint8_t minute;
|
|
uint8_t second;
|
|
uint16_t millisecond;
|
|
} tNmeaTimeAcp;
|
|
|
|
typedef struct {
|
|
uint8_t day;
|
|
uint8_t month;
|
|
uint8_t year;
|
|
} tNmeaDateAcp;
|
|
|
|
typedef struct {
|
|
double latitude;
|
|
char nsIndicator;
|
|
double longitude;
|
|
double horizontDiluitPrecis;
|
|
double altitude;
|
|
char ewIndicator;
|
|
} tNmeaLocationAcp;
|
|
|
|
typedef struct {
|
|
double declination;
|
|
double nsat;
|
|
double mode;
|
|
} tNmeaMagneticAcp;
|
|
|
|
typedef struct {
|
|
char status;
|
|
|
|
tNmeaDateAcp date;
|
|
tNmeaTimeAcp time;
|
|
tNmeaLocationAcp location;
|
|
tNmeaMagneticAcp magnetic;
|
|
|
|
double knotVelocity;
|
|
double kmhVelocity;
|
|
double course;
|
|
} tNmeaAcp;
|
|
|
|
uint32_t iNmeaTimestampFromAcp(tNmeaAcp *env);
|
|
|
|
void vNmeaACPSign(char *str, size_t *strLen);
|
|
|
|
bool bNmeaACPParse(char *acprmcString, size_t len, tNmeaAcp *result);
|
|
|
|
bool bNmeaACPString(char *nmeaString, size_t len, tNmeaAcp *acp);
|
|
|
|
bool bNmeaACPIsValidString(char *nmeaString, size_t len);
|
|
|
|
#endif //NMEA_0183_PARSER_NMEA_0183_PARSER_H
|