ROSaic
|
Data Structures | |
class | BaseParser |
Base class for parsing NMEA messages and SBF blocks. More... | |
class | GpggaParser |
Derived class for parsing GGA messages. More... | |
class | NMEASentence |
Struct to split an NMEA sentence into its ID (e.g. the standardized "$GPGGA" or proprietary "$PSSN,HRP") and its body, the latter tokenized into a vector of strings. More... | |
class | ParseException |
Ćlass to declare error message format when parsing, derived from the public class "std::runtime_error". More... | |
Functions | |
double | ParseDouble (const uint8_t *buffer) |
Converts an 8-byte-buffer into a double. More... | |
bool | ParseDouble (const std::string &string, double &value) |
Interprets the contents of "string" as a floating point number of type double, stores its value in "value" and returns whether or not all went well. More... | |
float | ParseFloat (const uint8_t *buffer) |
Converts a 4-byte-buffer into a float. More... | |
bool | ParseFloat (const std::string &string, float &value) |
Interprets the contents of "string" as a floating point number of type float, stores its value in "value" and returns whether or not all went well. More... | |
int16_t | ParseInt16 (const uint8_t *buffer) |
Converts a 2-byte-buffer into a signed 16-bit integer. More... | |
bool | ParseInt16 (const std::string &string, int16_t &value, int32_t base=10) |
Interprets the contents of "string" as a integer number of type int16_t, stores its value in "value" and returns whether or not all went well. More... | |
int32_t | ParseInt32 (const uint8_t *buffer) |
Converts a 4-byte-buffer into a signed 32-bit integer. More... | |
bool | ParseInt32 (const std::string &string, int32_t &value, int32_t base=10) |
Interprets the contents of "string" as a integer number of type int32_t, stores its value in "value" and returns whether or not all went well. More... | |
bool | ParseUInt8 (const std::string &string, uint8_t &value, int32_t base=10) |
Interprets the contents of "string" as a unsigned integer number of type uint8_t, stores its value in "value" and returns whether or not all went well. More... | |
uint16_t | ParseUInt16 (const uint8_t *buffer) |
Converts a 2-byte-buffer into an unsigned 16-bit integer. More... | |
bool | ParseUInt16 (const std::string &string, uint16_t &value, int32_t base=10) |
Interprets the contents of "string" as a unsigned integer number of type uint16_t, stores its value in "value" and returns whether or not all went well. More... | |
uint32_t | ParseUInt32 (const uint8_t *buffer) |
Converts a 4-byte-buffer into an unsigned 32-bit integer. More... | |
bool | ParseUInt32 (const std::string &string, uint32_t &value, int32_t base=10) |
Interprets the contents of "string" as a unsigned integer number of type uint32_t, stores its value in "value" and returns whether or not all went well. More... | |
double | UTCDoubleToSeconds (double utc_double) |
Converts the UTC time from the without-colon-delimiter format, type double, to the number-of-seconds-since-midnight format, type double. More... | |
double | ConvertDMSToDegrees (double dms) |
Converts latitude or longitude from the DMS notation (in the without-colon-delimiter format), type double, to the pure degree notation, type double. More... | |
time_t | UTCtoUnix (double utc_double) |
Converts UTC time from the without-colon-delimiter format, type double, to Unix Epoch time (a number-of-seconds-since-1970/01/01 format), type time_t (usually 32 bits) More... | |
double rosaic_driver::ConvertDMSToDegrees | ( | double | dms | ) |
Converts latitude or longitude from the DMS notation (in the without-colon-delimiter format), type double, to the pure degree notation, type double.
Recall: One degree is divided into 60 minutes (of arc), and in turn one minute into 60 seconds (of arc). Use of the degrees-minutes-seconds system is also called DMS notation.
dms | The double variable representing latitude or longitude in the DMS notation (in the without-colon-delimiter format) |
Definition at line 237 of file parsing_utilities.cpp.
Referenced by rosaic_driver::GpggaParser::ParseASCII().
double rosaic_driver::ParseDouble | ( | const uint8_t * | buffer | ) |
Converts an 8-byte-buffer into a double.
The function assumes that the bytes in the buffer are already arranged with the same endianness as the local platform. It copies the elements in the range [buffer,buffer + sizeof(double)) into the range beginning at reinterpret_cast<uint8_t*>(&x). Recall: data_type *var_name = reinterpret_cast <data_type *>(pointer_variable) converts the pointer type, no return type
[in] | buffer | A pointer to a buffer containing 8 bytes of data |
Definition at line 51 of file parsing_utilities.cpp.
Referenced by rosaic_driver::GpggaParser::ParseASCII().
bool rosaic_driver::ParseDouble | ( | const std::string & | string, |
double & | value | ||
) |
Interprets the contents of "string" as a floating point number of type double, stores its value in "value" and returns whether or not all went well.
It checks whether an error occurred (via errno) and whether junk characters exist within "string", and returns true if the latter two tests are negative or when the string is empty, false otherwise.
[in] | string | The string whose content should be interpreted as a floating point number |
[out] | value | The double variable that should be overwritten by the floating point number found in "string" |
Definition at line 62 of file parsing_utilities.cpp.
References string_utilities::ToDouble().
float rosaic_driver::ParseFloat | ( | const uint8_t * | buffer | ) |
Converts a 4-byte-buffer into a float.
The function assumes that the bytes in the buffer are already arranged with the same endianness as the local platform. It copies the elements in the range [buffer,buffer + sizeof(double)) into the range beginning at reinterpret_cast<uint8_t*>(&x). Recall: data_type *var_name = reinterpret_cast <data_type *>(pointer_variable) converts the pointer type, no return type
[in] | buffer | A pointer to a buffer containing 4 bytes of data |
Definition at line 72 of file parsing_utilities.cpp.
Referenced by rosaic_driver::GpggaParser::ParseASCII().
bool rosaic_driver::ParseFloat | ( | const std::string & | string, |
float & | value | ||
) |
Interprets the contents of "string" as a floating point number of type float, stores its value in "value" and returns whether or not all went well.
It checks whether an error occurred (via errno) and whether junk characters exist within "string", and returns true if the latter two tests are negative or when the string is empty, false otherwise.
[in] | string | The string whose content should be interpreted as a floating point number |
[out] | value | The float variable that should be overwritten by the floating point number found in "string" |
Definition at line 83 of file parsing_utilities.cpp.
References string_utilities::ToFloat().
int16_t rosaic_driver::ParseInt16 | ( | const uint8_t * | buffer | ) |
Converts a 2-byte-buffer into a signed 16-bit integer.
The function assumes that the bytes in the buffer are already arranged with the same endianness as the local platform. It copies the elements in the range [buffer,buffer + 2) into the range beginning at reinterpret_cast<uint8_t*>(&x). Recall: data_type *var_name = reinterpret_cast <data_type *>(pointer_variable) converts the pointer type, no return type
[in] | buffer | A pointer to a buffer containing 2 bytes of data |
Definition at line 93 of file parsing_utilities.cpp.
bool rosaic_driver::ParseInt16 | ( | const std::string & | string, |
int16_t & | value, | ||
int32_t | base | ||
) |
Interprets the contents of "string" as a integer number of type int16_t, stores its value in "value" and returns whether or not all went well.
It checks whether an error occurred (via errno) and whether junk characters exist within "string", and returns true if the latter two tests are negative or when the string is empty, false otherwise.
[in] | string | The string whose content should be interpreted as an integer number |
[out] | value | The int16_t variable that should be overwritten by the integer number found in "string" |
[in] | base | The numerical base of the integer in the string, default being 10 |
Definition at line 104 of file parsing_utilities.cpp.
References string_utilities::ToInt32().
int32_t rosaic_driver::ParseInt32 | ( | const uint8_t * | buffer | ) |
Converts a 4-byte-buffer into a signed 32-bit integer.
The function assumes that the bytes in the buffer are already arranged with the same endianness as the local platform. It copies the elements in the range [buffer,buffer + 4) into the range beginning at reinterpret_cast<uint8_t*>(&x). Recall: data_type *var_name = reinterpret_cast <data_type *>(pointer_variable) converts the pointer type, no return type
[in] | buffer | A pointer to a buffer containing 4 bytes of data |
Definition at line 129 of file parsing_utilities.cpp.
bool rosaic_driver::ParseInt32 | ( | const std::string & | string, |
int32_t & | value, | ||
int32_t | base | ||
) |
Interprets the contents of "string" as a integer number of type int32_t, stores its value in "value" and returns whether or not all went well.
It checks whether an error occurred (via errno) and whether junk characters exist within "string", and returns true if the latter two tests are negative or when the string is empty, false otherwise.
[in] | string | The string whose content should be interpreted as an integer number |
[out] | value | The int32_t variable that should be overwritten by the integer number found in "string" |
[in] | base | The numerical base of the integer in the string, default being 10 |
Definition at line 140 of file parsing_utilities.cpp.
References string_utilities::ToInt32().
uint16_t rosaic_driver::ParseUInt16 | ( | const uint8_t * | buffer | ) |
Converts a 2-byte-buffer into an unsigned 16-bit integer.
The function assumes that the bytes in the buffer are already arranged with the same endianness as the local platform. It copies the elements in the range [buffer,buffer + 2) into the range beginning at reinterpret_cast<uint8_t*>(&x). Recall: data_type *var_name = reinterpret_cast <data_type *>(pointer_variable) converts the pointer type, no return type
[in] | buffer | A pointer to a buffer containing 2 bytes of data |
Definition at line 172 of file parsing_utilities.cpp.
bool rosaic_driver::ParseUInt16 | ( | const std::string & | string, |
uint16_t & | value, | ||
int32_t | base | ||
) |
Interprets the contents of "string" as a unsigned integer number of type uint16_t, stores its value in "value" and returns whether or not all went well.
It checks whether an error occurred (via errno) and whether junk characters exist within "string", and returns true if the latter two tests are negative or when the string is empty, false otherwise.
[in] | string | The string whose content should be interpreted as an integer number |
[out] | value | The uint16_t variable that should be overwritten by the integer number found in "string" |
[in] | base | The numerical base of the integer in the string, default being 10 |
Definition at line 183 of file parsing_utilities.cpp.
References string_utilities::ToUInt32().
uint32_t rosaic_driver::ParseUInt32 | ( | const uint8_t * | buffer | ) |
Converts a 4-byte-buffer into an unsigned 32-bit integer.
The function assumes that the bytes in the buffer are already arranged with the same endianness as the local platform. It copies the elements in the range [buffer,buffer + 4) into the range beginning at reinterpret_cast<uint8_t*>(&x). Recall: data_type *var_name = reinterpret_cast <data_type *>(pointer_variable) converts the pointer type, no return type
[in] | buffer | A pointer to a buffer containing 4 bytes of data |
Definition at line 206 of file parsing_utilities.cpp.
Referenced by rosaic_driver::GpggaParser::ParseASCII().
bool rosaic_driver::ParseUInt32 | ( | const std::string & | string, |
uint32_t & | value, | ||
int32_t | base | ||
) |
Interprets the contents of "string" as a unsigned integer number of type uint32_t, stores its value in "value" and returns whether or not all went well.
It checks whether an error occurred (via errno) and whether junk characters exist within "string", and returns true if the latter two tests are negative or when the string is empty, false otherwise.
[in] | string | The string whose content should be interpreted as an integer number |
[out] | value | The uint32_t variable that should be overwritten by the integer number found in "string" |
[in] | base | The numerical base of the integer in the string, default being 10 |
Definition at line 217 of file parsing_utilities.cpp.
References string_utilities::ToUInt32().
bool rosaic_driver::ParseUInt8 | ( | const std::string & | string, |
uint8_t & | value, | ||
int32_t | base | ||
) |
Interprets the contents of "string" as a unsigned integer number of type uint8_t, stores its value in "value" and returns whether or not all went well.
It checks whether an error occurred (via errno) and whether junk characters exist within "string", and returns true if the latter two tests are negative or when the string is empty, false otherwise.
[in] | string | The string whose content should be interpreted as an integer number |
[out] | value | The uint8_t variable that should be overwritten by the integer number found in "string" |
[in] | base | The numerical base of the integer in the string, default being 10 |
Definition at line 149 of file parsing_utilities.cpp.
References string_utilities::ToUInt32().
double rosaic_driver::UTCDoubleToSeconds | ( | double | utc_double | ) |
Converts the UTC time from the without-colon-delimiter format, type double, to the number-of-seconds-since-midnight format, type double.
The UTC precision in NMEA messages is down to a tenth of a second, naturally in both the without-colon-delimiter and the number-of-seconds-since-midnight formats.
[in] | utc_float | The double variable representing UTC time in the without-colon-delimiter format |
Definition at line 225 of file parsing_utilities.cpp.
Referenced by rosaic_driver::GpggaParser::ParseASCII().
time_t rosaic_driver::UTCtoUnix | ( | double | utc_double | ) |
Converts UTC time from the without-colon-delimiter format, type double, to Unix Epoch time (a number-of-seconds-since-1970/01/01 format), type time_t (usually 32 bits)
Time information (hours, minutes, seconds) is extracted from the given double and augmented with the date, which is taken from the current system time on the host computer (i.e. current UTC+some_shift time via time(0)). The date ambiguity is resolved by adding/subtracting a day to the current date if the host time is more than 12 hours behind/ahead the NMEA time (i.e. UTC time). Recall time(0), time(NULL): If argument is a null pointer, the parameter is not used (the function still returns the current calendar time of type time_t). Otherwise, the return value is the same as the one stored in the location pointed by the argument. Note that the function assumes that utc_double has two significant digits after the decimal point, i.e. hhmmss.ss, and rounds the number of seconds to the nearest unsigned integer.
[in] | utc_float | The double variable representing UTC time in the without-colon-delimiter format |
Definition at line 253 of file parsing_utilities.cpp.
Referenced by rosaic_driver::GpggaParser::ParseASCII(), and io_comm_mosaic::TimestampSBF().