|
|
/*
|
|
|
* nmeaParser.h
|
|
|
*
|
|
|
* Created on: Oct 21, 2014
|
|
|
* Author: Alan Aguilar Sologuren
|
|
|
*/
|
|
|
|
|
|
#ifndef NMEALIB_NMEALIB___NMEAPARSER_H_
|
|
|
#define NMEALIB_NMEALIB___NMEAPARSER_H_
|
|
|
|
|
|
typedef struct _nmeaParserNODE
|
|
|
{
|
|
|
nmeaCode* pack;
|
|
|
struct _nmeaParserNODE *next_node;
|
|
|
|
|
|
} nmeaParserNODE;
|
|
|
|
|
|
class nmeaParser {
|
|
|
public:
|
|
|
nmeaParser();
|
|
|
virtual ~nmeaParser();
|
|
|
|
|
|
int nmea_find_tail(const char *buff, int buff_sz, int *res_crc)
|
|
|
int nmea_parse( const char *buff, int buff_sz, nmeaInfo *info );
|
|
|
|
|
|
int nmea_parser_push(const char *buff, int buff_sz);
|
|
|
int nmea_parser_top(void);
|
|
|
int nmea_parser_pop(nmeaCode **pack_ptr);
|
|
|
int nmea_parser_peek(nmeaCode **pack_ptr);
|
|
|
int nmea_parser_drop(void);
|
|
|
int nmea_parser_buff_clear(void);
|
|
|
int nmea_parser_queue_clear(void);
|
|
|
|
|
|
virtual void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
|
|
|
private:
|
|
|
void *top_node;
|
|
|
void *end_node;
|
|
|
unsigned char *buffer;
|
|
|
int buff_size;
|
|
|
int buff_use;
|
|
|
|
|
|
int nmea_parser_real_push(const char *buff, int buff_sz);
|
|
|
};
|
|
|
|
|
|
|
|
|
class nmeaGPALMParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
//codigos NMEA que se pueden enviar al receptor GPS GARMIN
|
|
|
class nmeaPGRMIParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
class nmeaPGRMCParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
class nmeaPGRMC1Parser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
class nmeaPGRMOParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
|
|
|
//Codigos NMEA que puede transmitir el receptor GNSS
|
|
|
|
|
|
class nmeaGPGGAParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
class nmeaGPGSAParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
class nmeaGPGSVParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
class nmeaGPRMCParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
class nmeaGPVTGParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
class nmeaGPGLLParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
//codigos de propiedad de GARMIN
|
|
|
class nmeaPGRMEParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
class nmeaPGRMFParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
class nmeaPGRMMParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
class nmeaPGRMTParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
class nmeaPGRMVParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
class nmeaPGRMBParser:nmeaParser {
|
|
|
void nmea_parser_code2info(nmeaCode* code, nmeaInfo* info);
|
|
|
};
|
|
|
|
|
|
#endif /* NMEALIB_NMEALIB___NMEAPARSER_H_ */
|
|
|
|