Files
INS-VN-200/vnproglib/cpp/include/vn/utilities.h
r.koeppe 2d22ccd2d6 initial
2024-05-14 02:14:13 +02:00

129 lines
3.8 KiB
C++

/// \file
/// {COMMON_HEADER}
#ifndef _VN_UTILITIES_H_
#define _VN_UTILITIES_H_
#include <string>
#include <vector>
#include "int.h"
#include "export.h"
/// \brief Defines for the specific version of the VectorNav library.
#define VNAPI_MAJOR 1
#define VNAPI_MINOR 2
#define VNAPI_PATCH 0
#define VNAPI_REVISION 126
namespace vn {
/// \brief Class for version information about the VectorNav library.
class ApiVersion
{
public:
/// \brief Returns the major version of the VectorNav library.
///
/// \return The major version.
static int major();
/// \brief Returns the minor version of the VectorNav library.
///
/// \return The minor version
static int minor();
/// \brief Returns the patch version of the VectorNav library.
///
/// \return The patch version.
static int patch();
/// \brief Returns the revision version of the VectorNav library.
///
/// \return The revision version.
static int revision();
/// \brief Returns the full version of the VectorNav library.
///
/// \return The library's version in a string format.
static std::string getVersion();
};
/// \brief Converts two characters encoded in hex to a uint8_t.
///
/// \param[in] str Two characters string with hexadecimal encoding.
/// \return The converted value.
uint8_t toUint8FromHexStr(const char* str);
/// \brief Converts a 16-bit integer in sensor order to host order.
///
/// \param[in] sensorOrdered The 16-bit integer in sensor order.
/// \return The value converted to host ordered.
uint16_t stoh(uint16_t sensorOrdered);
/// \brief Converts a 32-bit integer in sensor order to host order.
///
/// \param[in] sensorOrdered The 32-bit integer in sensor order.
/// \return The value converted to host ordered.
uint32_t stoh(uint32_t sensorOrdered);
/// \brief Converts a 64-bit integer in sensor order to host order.
///
/// \param[in] sensorOrdered The 64-bit integer in sensor order.
/// \return The value converted to host ordered.
uint64_t stoh(uint64_t sensorOrdered);
/// \brief Counts the number of bits set in the provided value.
///
/// \param[in] d The value to count the bits of.
/// \return The number of bits set.
uint8_t countSetBits(uint8_t d);
/// \brief Converts the character encoded as a hexadecimal to a uint8_t.
///
/// \param[in] c The hexadecimal character to convert.
/// \return The converted value.
uint8_t to_uint8_from_hexchar(char c);
/// \brief Converts two characters encoded in hex to a uint8_t.
///
/// \param[in] str Two characters string with hexadecimal encoding.
/// \return The converted value.
uint8_t to_uint8_from_hexstr(const char* str);
/// \brief Converts four characters encoded in hex to a uint16_t.
///
/// \param[in] str Four characters string with hexadecimal encoding.
/// \return The converted value.
uint16_t to_uint16_from_hexstr(const char* str);
#if PYTHON
/// \brief Checks a DLL's first level dependencies to see if they are all
/// present. If any of the DLLs cannot be found the software will
/// print the missing DLLs to the console
///
/// \param[in] dllName absolute or relative path to the dll in question
/// \param[in] workingDirectory current working directory. Must be the
/// same one as the program or results may be incorrect
/// \param[out] missingDlls vector of stings to hold the names of any missing
/// Dlls. This vector will be emptied if all Dlls are
/// present.
/// \return flag indicating succes so the user may choose to shut down
/// gracefully should the DLL be missing
vn_proglib_DLLEXPORT bool checkDllValidity(const std::string& dllName,
const std::string& workingDirectory,
std::vector<std::string>& missingDlls);
#endif
}
#endif