X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fnet%2Fnmeap%2Finc%2Fnmeap.h;h=f9bcc0fba8802f64f0b6597dc0818fb11c254ea0;hb=bdf012dea686bbbe63e9785d9aa037536a9ec280;hp=6386c66551b0ee3bcb34beb6b83564d7f6fc52d7;hpb=5f97189f443a8ca50cc5f61f32066c2b65b6f44d;p=bertos.git diff --git a/bertos/net/nmeap/inc/nmeap.h b/bertos/net/nmeap/inc/nmeap.h index 6386c665..f9bcc0fb 100644 --- a/bertos/net/nmeap/inc/nmeap.h +++ b/bertos/net/nmeap/inc/nmeap.h @@ -5,17 +5,17 @@ All rights reserved. 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. */ @@ -26,7 +26,9 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. extern "C" { #endif -/* +#include "cfg/cfg_nmea.h" + +/* ============================================ COMPILE TIME CONFIGURATION CONSTANTS ============================================ @@ -35,14 +37,14 @@ 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 */ -#define NMEAP_MAX_SENTENCES 8 +#define NMEAP_MAX_SENTENCES CONFIG_NMEAP_MAX_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 */ -#define NMEAP_MAX_SENTENCE_LENGTH 255 +#define NMEAP_MAX_SENTENCE_LENGTH CONFIG_NMEAP_MAX_SENTENCE_LENGTH /** max tokens in one sentence. 24 is enough for any standard sentence */ -#define NMEAP_MAX_TOKENS 24 +#define NMEAP_MAX_TOKENS CONFIG_NMEAP_MAX_TOKENS /* predefined message ID's */ @@ -58,7 +60,7 @@ COMPILE TIME CONFIGURATION CONSTANTS struct nmeap_context; struct nmeap_sentence; -/* +/* ============================================ CALLOUTS ============================================ @@ -71,7 +73,7 @@ CALLOUTS * 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 -*/ +*/ typedef void (*nmeap_callout_t)(struct nmeap_context *context,void *sentence_data,void *user_data); /** @@ -83,7 +85,7 @@ typedef void (*nmeap_callout_t)(struct nmeap_context *context,void *sentence_dat * @param context nmea object context * @param sentence_data sentence specific data * @return id of sentence (each sentence parser knows its own ID) -*/ +*/ typedef int (*nmeap_sentence_parser_t)(struct nmeap_context *context,struct nmeap_sentence *sentence); @@ -91,7 +93,7 @@ typedef int (*nmeap_sentence_parser_t)(struct nmeap_context *context,struct nmea #include "nmeap_def.h" -/* +/* ============================================ STANDARD SENTENCE DATA STRUCTURES ============================================ @@ -124,7 +126,7 @@ struct nmeap_rmc { typedef struct nmeap_rmc nmeap_rmc_t; -/* +/* ============================================ METHODS ============================================ @@ -143,11 +145,11 @@ int nmeap_init(nmeap_context_t *context,void *user_data); * @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 sentence_callout callout triggered when this sentence is received and parsed. + * @param sentence_callout callout triggered when this sentence is received and parsed. * 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 - of the parser, so be careful if allocated on the stack. + of the parser, so be careful if allocated on the stack. * @return 0 if registered ok, -1 if registration failed */ int nmeap_addParser(nmeap_context_t *context, @@ -157,7 +159,7 @@ int nmeap_addParser(nmeap_context_t *context, void *sentence_data ); -/** +/** * parse a buffer of nmea data. * @param context nmea object context * @param buffer buffer of input characters @@ -167,23 +169,23 @@ int nmeap_addParser(nmeap_context_t *context, */ int nmeap_parseBuffer(nmeap_context_t *context,const char *buffer,int *length); -/** +/** * 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 */ int nmeap_parse(nmeap_context_t *context,char ch); -/** +/** * 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 @@ -207,6 +209,15 @@ double nmeap_latitude(const char *plat,const char *phem); */ double nmeap_longitude(const char *plat,const char *phem); + +/** + * 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); + #ifdef __cplusplus } // extern C #endif