This product is licensed for use and distribution under the BSD Open Source License.
see the file COPYING for more details.
This product is licensed for use and distribution under the BSD Open Source License.
see the file COPYING for more details.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
-OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
============================================
COMPILE TIME CONFIGURATION CONSTANTS
============================================
============================================
COMPILE TIME CONFIGURATION CONSTANTS
============================================
/* these constants affect the size of the context object. tweak them as desired but know what you are doing */
/** maximum number of sentence parsers supported */
/* these constants affect the size of the context object. tweak them as desired but know what you are doing */
/** maximum number of sentence parsers supported */
/** length of sentence name. leave this at 5 unless you really know what you are doing */
#define NMEAP_MAX_SENTENCE_NAME_LENGTH 5
/** max length of a complete sentence. the standard says 82 bytes, but its probably better to go at least 128 since
* some units don't adhere to the 82 bytes especially for proprietary sentences */
/** length of sentence name. leave this at 5 unless you really know what you are doing */
#define NMEAP_MAX_SENTENCE_NAME_LENGTH 5
/** max length of a complete sentence. the standard says 82 bytes, but its probably better to go at least 128 since
* some units don't adhere to the 82 bytes especially for proprietary sentences */
* the callout must cast the 'sentence_data' to the appropriate type for that callout
* @param context nmea object context
* @param sentence_data sentence specific data
* the callout must cast the 'sentence_data' to the appropriate type for that callout
* @param context nmea object context
* @param sentence_data sentence specific data
* @param context nmea object context
* @param sentence_data sentence specific data
* @return id of sentence (each sentence parser knows its own ID)
* @param context nmea object context
* @param sentence_data sentence specific data
* @return id of sentence (each sentence parser knows its own ID)
============================================
STANDARD SENTENCE DATA STRUCTURES
============================================
============================================
STANDARD SENTENCE DATA STRUCTURES
============================================
* @param context nmea object context
* @param sentence_name string matching the sentence name for this parser. e.g. "GPGGA". not including the '$'
* @param sentence_parser parser function for this sentence
* @param context nmea object context
* @param sentence_name string matching the sentence name for this parser. e.g. "GPGGA". not including the '$'
* @param sentence_parser parser function for this sentence
* if null, no callout is triggered for this sentence
* @param sentence_data user allocated sentence specific data defined by the application. the parser uses
this data item to store the extracted data. This data object needs to persist over the life
* if null, no callout is triggered for this sentence
* @param sentence_data user allocated sentence specific data defined by the application. the parser uses
this data item to store the extracted data. This data object needs to persist over the life
* @return 0 if registered ok, -1 if registration failed
*/
int nmeap_addParser(nmeap_context_t *context,
* @return 0 if registered ok, -1 if registration failed
*/
int nmeap_addParser(nmeap_context_t *context,
* parse a buffer of nmea data.
* @param context nmea object context
* @param buffer buffer of input characters
* parse a buffer of nmea data.
* @param context nmea object context
* @param buffer buffer of input characters
* parse one character of nmea data.
* @param context nmea object context
* @param ch input character
* parse one character of nmea data.
* @param context nmea object context
* @param ch input character
- * @return -1 if error, 0 if the data did not complete a sentence, sentence code if a sentence was found in the stream
+ * @return -1 if error, 0 if the data did not complete a sentence, sentence code if a sentence was found in the stream
* built-in parser for GGA sentences.
* @param context nmea object context
* @param sentence sentence object for this parser
*/
int nmeap_gpgga(nmeap_context_t *context,nmeap_sentence_t *sentence);
* built-in parser for GGA sentences.
* @param context nmea object context
* @param sentence sentence object for this parser
*/
int nmeap_gpgga(nmeap_context_t *context,nmeap_sentence_t *sentence);
* built-in parser for RMC sentences.
* @param context nmea object context
* @param sentence sentence object for this parser
* built-in parser for RMC sentences.
* @param context nmea object context
* @param sentence sentence object for this parser
+
+/**
+ * extract altitude from 2 tokens in xx.x format.
+ * @param palt pointer to token with numerical altitude
+ * @param punits pointer to token with measure unint
+ * @return altitude in meter or feet
+ */
+double nmeap_altitude(const char *palt,const char *punits);
+