NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
nmea_parser_interface.h
Go to the documentation of this file.
1 #ifndef SDK_ECDIS_NMEA_PARSER_INTERFACE_H_
11 #define SDK_ECDIS_NMEA_PARSER_INTERFACE_H_
12 #pragma once
13 
14 #include <base/inc/platform.h>
15 #include <base/inc/base_types.h>
16 #include <base/inc/forward_declarations.h>
20 #include "filters_enumerator_interface.h"
22 
23 SDK_ECDISLAYER_BEGIN_NAMESPACE
24 
25 namespace nmea {
26 
27 FWD_DECL_INTERFACE(INMEAParser);
28 
29 // Generic NMEA parser properties
30 enum NMEAParserPropertyIDs
31 {
32  // Filtering mode for NMEA sentences:
33  // There are two modes of NMEA sentences filtering, in case no filters defined
34  // via AddSentenceFilter, the NMEA parser will parse ALL of NMEA sentences.
35  // In case at least one filter is defined and given property value is set to
36  // 1) true: only NMEA sentences, which are satisfies to filtering conditions
37  // will be parsed, in case sentence does not satisfy filtering
38  // conditions, it will be filtered without parsing
39  // 2) false: only NMEA sentences, which are satisfies to filtering conditions
40  // will be filtered, ALL of other sentences will be parsed
41  // Example: Filter is set to GLL mnemonic code only, talker ID is not defined
42  // Sentence mnemonic code | Mode = true | Mode = false
43  // GLL | Sentence will be parsed | Sentence will be filtered
44  // GGA | Sentence will be filtered | Sentence will be parsed
45  kNMEAParserProperty_SentenceFilterMode_ParseOnlyRequested = 0, // kSDKAnyType_Bool
46 
47  // Filtering mode for checksum checks
48  // (see description above, it's similar to sentence filtering mode)
49  kNMEAParserProperty_ChecksumFilterMode_CheckOnlyRequested = 1, // kSDKAnyType_Bool
50 
51  // Use strict IEC 61162 format check
52  kNMEAParserProperty_StrictFormatCheck = 2, // kSDKAnyType_Bool
53 
54  // CRC is mandatory flag
55  // If NMEA sentence does not have a CRC and CRC filtering is off for
56  // given sentence, this sentence will be rejected with
57  // kParseResult_Failed_AbsentChecksum result
58  kNMEAParserProperty_CRCIsMandatory = 3, // kSDKAnyType_Bool
59 };
60 
94 class INMEAParser : public ISDKProperties
95 {
96  public:
98  virtual SDKResult SDK_CALLTYPE ParseNMEASentence(
99  const SDKString& nmea_sentence,
100  IParsedNMEASentenceDataSP& parsed_nmea_sentence_data) throw() = 0;
101 
108  virtual SDKResult SDK_CALLTYPE AddSentenceFilter(
109  const SDKString& talker_id_filter,
110  const SDKString& mnemonic_code_filter) throw() = 0;
111 
113  virtual SDKResult SDK_CALLTYPE RemoveSentenceFilter(
114  const SDKString& talker_id_filter,
115  const SDKString& mnemonic_code_filter) throw() = 0;
116 
118  virtual SDKResult SDK_CALLTYPE GetSentenceFilters(
119  IFiltersEnumSP& filters_enum) const throw() = 0;
120 
128  virtual SDKResult SDK_CALLTYPE AddChecksumFilter(
129  const SDKString& talker_id_filter,
130  const SDKString& mnemonic_code_filter) throw() = 0;
131 
133  virtual SDKResult SDK_CALLTYPE RemoveChecksumFilter(
134  const SDKString& talker_id_filter,
135  const SDKString& mnemonic_code_filter) throw() = 0;
136 
138  virtual SDKResult SDK_CALLTYPE GetChecksumFilters(
139  IFiltersEnumSP& filters_enum) const throw() = 0;
140 
141  SDK_IMPLEMENT_IID(INMEAParser)
142  SDK_END_INTERFACE(INMEAParser)
143 };
144 SDK_DECLARE_IID(INMEAParser)
145 
146 } // namespace nmea
147 
148 SDK_ECDISLAYER_END_NAMESPACE
149 
150 #endif // SDK_ECDIS_NMEA_PARSER_INTERFACE_H_
parsed_nmea_sentence_data_interface.h
A container for parsed NMEA sentence(s) data fields.
nmea::INMEAParser::RemoveSentenceFilter
virtual SDKResult SDK_CALLTYPE RemoveSentenceFilter(const SDKString &talker_id_filter, const SDKString &mnemonic_code_filter)=0
Removes currently existing NMEA sentences filter.
nmea::INMEAParser::GetSentenceFilters
virtual SDKResult SDK_CALLTYPE GetSentenceFilters(IFiltersEnumSP &filters_enum) const =0
Returns filters enumerator for NMEA sentences.
base_types.h
SDK base types.
nmea::INMEAParser::GetChecksumFilters
virtual SDKResult SDK_CALLTYPE GetChecksumFilters(IFiltersEnumSP &filters_enum) const =0
Returns filters enumerator for sentences checksums.
nmea::INMEAParser::ParseNMEASentence
virtual SDKResult SDK_CALLTYPE ParseNMEASentence(const SDKString &nmea_sentence, IParsedNMEASentenceDataSP &parsed_nmea_sentence_data)=0
Parses single NMEA sentence.
properties_interface.h
Object generic properties interface.
nmea::INMEAParser::AddChecksumFilter
virtual SDKResult SDK_CALLTYPE AddChecksumFilter(const SDKString &talker_id_filter, const SDKString &mnemonic_code_filter)=0
Add a checksum filter for the specified combinations of TalkerIDs and Mnemonics. Filtering can be pe...
ecdislayer_const.h
The ecdislayer constants.
SDKResult
SDKInt32 SDKResult
Type of all error or return codes which SDK functions can end with.
Definition: sdk_results.h:17
sdk_component_interface.h
Common base SDK interfaces.
nmea::INMEAParser::RemoveChecksumFilter
virtual SDKResult SDK_CALLTYPE RemoveChecksumFilter(const SDKString &talker_id_filter, const SDKString &mnemonic_code_filter)=0
Removes currently existing sentence checksum filter.
platform.h
Describes the platform constants.
nmea::INMEAParser::AddSentenceFilter
virtual SDKResult SDK_CALLTYPE AddSentenceFilter(const SDKString &talker_id_filter, const SDKString &mnemonic_code_filter)=0
Adds new filter by TalkerID/Mnemonic Code for NMEA sentences Filtering can be performed by Talker ID...
nmea::INMEAParser
NMEA parser for NMEA sentences parsing.
Definition: nmea_parser_interface.h:94
FWD_DECL_INTERFACE
FWD_DECL_INTERFACE(ILWEParserWrapper)
Provides a wrapper around the message parser to get, add or remove the.