4cfea4a520
This commit adds parsing utilites for common string representations of values contained in GNSS messages. These utilites both parse and validate the integrity of the data. Unit tests are also added to validate the parsing utilities. Signed-off-by: Bjarki Arge Andreasen <bjarkix123@gmail.com>
66 lines
1.7 KiB
C
66 lines
1.7 KiB
C
/*
|
|
* Copyright (c) 2023 Trackunit Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef ZEPHYR_DRIVERS_GNSS_GNSS_PARSE_H_
|
|
#define ZEPHYR_DRIVERS_GNSS_GNSS_PARSE_H_
|
|
|
|
#include <zephyr/types.h>
|
|
|
|
/**
|
|
* @brief Parse decimal string to nano parts
|
|
*
|
|
* @example "-1231.3512" -> -1231351200000
|
|
*
|
|
* @param str The decimal string to be parsed
|
|
* @param nano Destination for parsed decimal
|
|
*
|
|
* @retval -EINVAL if str could not be parsed
|
|
* @retval 0 if str successfully parsed
|
|
*/
|
|
int gnss_parse_dec_to_nano(const char *str, int64_t *nano);
|
|
|
|
/**
|
|
* @brief Parse decimal string to micro parts
|
|
*
|
|
* @example "-1231.3512" -> -1231351200
|
|
*
|
|
* @param str The decimal string to be parsed
|
|
* @param milli Destination for parsed decimal
|
|
*
|
|
* @retval -EINVAL if str could not be parsed
|
|
* @retval 0 if str successfully parsed
|
|
*/
|
|
int gnss_parse_dec_to_micro(const char *str, uint64_t *micro);
|
|
|
|
/**
|
|
* @brief Parse decimal string to milli parts
|
|
*
|
|
* @example "-1231.3512" -> -1231351
|
|
*
|
|
* @param str The decimal string to be parsed
|
|
* @param milli Destination for parsed decimal
|
|
*
|
|
* @retval -EINVAL if str could not be parsed
|
|
* @retval 0 if str successfully parsed
|
|
*/
|
|
int gnss_parse_dec_to_milli(const char *str, int64_t *milli);
|
|
|
|
/**
|
|
* @brief Parse integer string of configurable base to integer
|
|
*
|
|
* @example "-1231" -> -1231
|
|
*
|
|
* @param str Decimal string to be parsed
|
|
* @param base Base of decimal string to be parsed
|
|
* @param integer Destination for parsed integer
|
|
*
|
|
* @retval -EINVAL if str could not be parsed
|
|
* @retval 0 if str successfully parsed
|
|
*/
|
|
int gnss_parse_atoi(const char *str, uint8_t base, int32_t *integer);
|
|
|
|
#endif /* ZEPHYR_DRIVERS_GNSS_GNSS_PARSE_H_ */
|