/* ===================================================
 *  message handling routines for the OpenCRG project
 * ---------------------------------------------------
 *
 * See the NOTICE file distributed with this work regarding copyright ownership.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * More Information on ASAM OpenCRG can be found here:
 * https://www.asam.net/standards/detail/opencrg/
 *
 */
/* ====== INCLUSIONS ====== */
#include "crgBaseLibPrivate.h"
#include <stdio.h>

/* ====== LOCAL VARIABLES ====== */
static int mLevel = dCrgMsgLevelNotice;

/* ====== LOCAL METHODS ====== */

/* ====== IMPLEMENTATION ====== */

void
crgMsgSetLevel( int level )
{
    if ( level >= dCrgMsgLevelNone && level <= dCrgMsgLevelDebug )
        mLevel = level;

    /* --- update the setting in the portability libraries --- */
    crgPortSetMsgLevel( mLevel );
}

int
crgMsgGetLevel( void )
{
    return mLevel;
}

const char*
crgMsgGetLevelName( int level )
{
    if ( level == dCrgMsgLevelNone )
        return "NONE";

    if ( level == dCrgMsgLevelFatal )
        return "FATAL";

    if ( level == dCrgMsgLevelWarn )
        return "WARNING";

    if ( level == dCrgMsgLevelNotice )
        return "NOTICE";

    if ( level == dCrgMsgLevelInfo )
        return "INFO";

    if ( level == dCrgMsgLevelDebug )
        return "DEBUG";

    return "unknown level";
}

void
crgMsgSetMaxWarnMsgs( int maxNo )
{
    crgPortSetMaxWarnMsgs( maxNo );
}

void
crgMsgSetMaxLogMsgs( int maxNo )
{
    crgPortSetMaxLogMsgs( maxNo );
}

int
crgMsgIsPrintable( int level )
{
    if ( mLevel < level )
        return 0;

    return crgPortMsgIsPrintable( level );
}

