#include <iostream>
#include <phosphor-logging/elog.hpp>
#include <phosphor-logging/elog-errors.hpp>
#include "elog_meta.hpp"

using namespace phosphor::logging;

int main(int argc, char** argv)
{
    if(2 != argc)
    {
        std::cerr << "usage: callout-test <sysfs path>" << std::endl;
        return -1;
    }

    using namespace example::xyz::openbmc_project::Example::Elog;
    try
    {
        elog<TestCallout>(
            TestCallout::DEV_ADDR(0xDEADEAD),
            TestCallout::CALLOUT_ERRNO_TEST(0),
            TestCallout::CALLOUT_DEVICE_PATH_TEST(argv[1]));
    }
    catch (elogException<TestCallout>& e)
    {
        commit(e.name());
    }

    return 0;
}


