| #pragma once |
| |
| #include <cstdint> |
| #include <string> |
| |
| namespace minimum_ship_level |
| { |
| |
| /** @brief Version components */ |
| struct Version |
| { |
| uint8_t major; |
| uint8_t minor; |
| uint8_t rev; |
| }; |
| |
| /** @brief Verify if the current BMC version meets the min ship level |
| * @return true if the verification succeeded, false otherwise |
| */ |
| bool verify(const std::string& versionStr); |
| |
| /** @brief Parse the version components into a struct |
| * @details User passes a version string in regex format (REGEX_BMC_MSL) |
| * at compilation time, this value is break down by parse function to allocate |
| * a struct so it can be compared position by position against the (BMC_MSL) |
| * also defined at compile time. |
| * @param[in] versionStr - The version string to be parsed |
| * @param[out] version - The version struct to be populated |
| */ |
| void parse(const std::string& versionStr, Version& version); |
| |
| /** @brief Compare the versions provided |
| * @param[in] a - The first version to compare |
| * @param[in] b - The second version to compare |
| * @return 1 if a > b |
| * 0 if a = b |
| * -1 if a < b |
| */ |
| int compare(const Version& a, const Version& b); |
| |
| /** @brief Check if the minimum ship level option is enabled |
| * @return true if enabled, false otherwise |
| */ |
| bool enabled(); |
| |
| /** @brief Get the minimum version |
| * @return[out] msl - Minimum version string |
| */ |
| std::string getMinimumVersion(); |
| |
| } // namespace minimum_ship_level |