Program Listing for File version_info.hpp
↰ Return to documentation for file (include/kobuki_core/version_info.hpp
)
/*****************************************************************************
** Ifdefs
*****************************************************************************/
#ifndef KOBUKI_CORE_VERSION_HPP_
#define KOBUKI_CORE_VERSION_HPP_
/*****************************************************************************
** Includes
*****************************************************************************/
#include <iostream>
#include <string>
#include <sstream>
#include <stdint.h>
#include <vector>
#include "macros.hpp"
/*****************************************************************************
** Namespaces
*****************************************************************************/
namespace kobuki {
/*****************************************************************************
** Interfaces
*****************************************************************************/
class kobuki_PUBLIC VersionInfo {
public:
VersionInfo(const uint32_t &fw, const uint32_t &hw, const uint32_t udid0_, const uint32_t udid1_, const uint32_t udid2_ ) :
firmware(fw),
hardware(hw),
software(0),
udid0(udid0_),
udid1(udid1_),
udid2(udid2_)
{}
const uint32_t firmware;
const uint32_t hardware;
const uint32_t software;
const uint32_t udid0;
const uint32_t udid1;
const uint32_t udid2;
static int majorVersion(const uint32_t &version) {
return ((version & 0x00FF0000) >> 16);
}
static int minorVersion(const uint32_t &version) {
return ((version & 0x0000FF00) >> 8);
}
static int patchVersion(const uint32_t &version) {
return (version & 0x000000FF);
}
static std::string toString(const uint32_t &version)
{
// Convert an unsigned int into a string of type <major>.<minor>.<patch>; first byte is ignored
std::stringstream ss;
ss << majorVersion(version) << "." << minorVersion(version) << "." << patchVersion(version);
return std::string(ss.str());
}
static std::string toString(const std::vector<uint32_t> &versions)
{
std::stringstream ss;
std::size_t number_versions = versions.size();
for(std::size_t i = 0; i < number_versions; ++i) {
ss << VersionInfo::toString(versions[i]);
if (i != (number_versions - 1)) {
ss << " / ";
}
}
return std::string(ss.str());
}
static std::string toString(const uint32_t &udid0, const uint32_t &udid1, const uint32_t &udid2)
{
// Convert three udid unsigned integers into a string of type <udid0>-<udid1>-<udid2>
std::stringstream ss;
ss << udid0 << "-" << udid1 << "-" << udid2;
return std::string(ss.str());
}
static std::string getSoftwareVersion();
};
} // namespace kobuki
#endif /* KOBUKI_CORE_VERSION_HPP_ */