#include "config.h"

#include "msl_verify.hpp"

#include <phosphor-logging/elog-errors.hpp>
#include <phosphor-logging/elog.hpp>
#include <xyz/openbmc_project/Software/Version/error.hpp>

int main(int, char*[])
{
    using MinimumShipLevel = openpower::software::image::MinimumShipLevel;
    MinimumShipLevel minimumShipLevel(PNOR_MSL);

    if (!minimumShipLevel.verify())
    {
        using namespace phosphor::logging;
        using IncompatibleErr = sdbusplus::xyz::openbmc_project::Software::
            Version::Error::Incompatible;
        using Incompatible =
            xyz::openbmc_project::Software::Version::Incompatible;

        report<IncompatibleErr>(prev_entry<Incompatible::MIN_VERSION>(),
                                prev_entry<Incompatible::ACTUAL_VERSION>(),
                                prev_entry<Incompatible::VERSION_PURPOSE>());
    }

    return 0;
}
