2022-03-08 10:05:18 +01:00
|
|
|
#ifndef FSFW_SRC_FSFW_VERSION_H_
|
|
|
|
#define FSFW_SRC_FSFW_VERSION_H_
|
|
|
|
|
2022-03-10 09:34:29 +01:00
|
|
|
#include "fsfw/FSFW.h"
|
|
|
|
|
|
|
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
|
|
|
#include <iostream>
|
|
|
|
#endif
|
2022-03-08 10:05:18 +01:00
|
|
|
#include <cstdint>
|
2022-03-10 09:34:29 +01:00
|
|
|
#include <cstdio>
|
2022-03-08 10:05:18 +01:00
|
|
|
|
|
|
|
namespace fsfw {
|
|
|
|
|
2022-03-09 19:05:07 +01:00
|
|
|
class Version {
|
|
|
|
public:
|
|
|
|
Version(uint32_t major, uint32_t minor, uint32_t revision);
|
2022-03-08 10:05:18 +01:00
|
|
|
uint32_t major = 0;
|
|
|
|
uint32_t minor = 0;
|
|
|
|
uint32_t revision = 0;
|
2022-03-09 19:05:07 +01:00
|
|
|
|
|
|
|
friend bool operator==(const Version& v1, const Version& v2) {
|
|
|
|
return (v1.major == v2.major and v1.minor == v2.minor and v1.revision == v2.revision);
|
|
|
|
}
|
|
|
|
|
|
|
|
friend bool operator!=(const Version& v1, const Version& v2) { return not(v1 == v2); }
|
|
|
|
|
|
|
|
friend bool operator<(const Version& v1, const Version& v2) {
|
|
|
|
return ((v1.major < v2.major) or (v1.major == v2.major and v1.minor < v2.minor) or
|
|
|
|
(v1.major == v2.major and v1.minor == v2.minor and v1.revision < v2.revision));
|
|
|
|
}
|
|
|
|
|
|
|
|
friend bool operator>(const Version& v1, const Version& v2) { return not(v1 < v2); }
|
|
|
|
|
|
|
|
friend bool operator<=(const Version& v1, const Version& v2) { return ((v1 == v2) or (v1 < v2)); }
|
|
|
|
|
|
|
|
friend bool operator>=(const Version& v1, const Version& v2) { return ((v1 == v2) or (v1 > v2)); }
|
2022-03-10 09:34:29 +01:00
|
|
|
|
|
|
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
|
|
|
/**
|
|
|
|
* Print format to given ostream using format "major.minor.revision"
|
|
|
|
* @param os
|
|
|
|
* @param v
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
friend std::ostream& operator<<(std::ostream& os, const Version& v) {
|
|
|
|
os << v.major << "." << v.minor << "." << v.revision;
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get version as format "major.minor.revision"
|
|
|
|
* @param str
|
|
|
|
* @param maxLen
|
|
|
|
*/
|
|
|
|
void getVersion(char* str, size_t maxLen) const {
|
|
|
|
snprintf(str, maxLen, "%d.%d.%d", major, minor, revision);
|
|
|
|
}
|
2022-03-08 10:05:18 +01:00
|
|
|
};
|
|
|
|
|
2022-03-09 19:05:07 +01:00
|
|
|
extern const fsfw::Version FSFW_VERSION;
|
|
|
|
|
|
|
|
} // namespace fsfw
|
2022-03-08 10:05:18 +01:00
|
|
|
|
|
|
|
#endif /* FSFW_SRC_FSFW_VERSION_H_ */
|