common.c 3.08 KiB
/*
* common.c: Common utils of Get/Set/Operate handlers
*
* Copyright (C) 2023 IOPSYS Software Solutions AB. All rights reserved.
*
* Author: Vivek Dutta <vivek.dutta@iopsys.eu>
* Author: Amin Ben Romdhane <amin.benromdhane@iopsys.eu>
* Author: Iryna Antsyferova <iryna.antsyferova@iopsys.eu>
*
* See LICENSE file for license related information.
*/
#include "common.h"
#include "get_helper.h"
#define DEFAULT_LOG_LEVEL (2)
static unsigned char gLogLevel = DEFAULT_LOG_LEVEL;
// Logging utilities
void set_debug_level(unsigned char level)
{
gLogLevel = level;
}
void print_error(const char *format, ...)
{
va_list arglist;
if (gLogLevel < 1)
return;
va_start(arglist, format);
vsyslog(LOG_ERR, format, arglist);
va_end(arglist);
}
void print_warning(const char *format, ...)
{
va_list arglist;
if (gLogLevel < 2)
return;
va_start(arglist, format);
vsyslog(LOG_WARNING, format, arglist);
va_end(arglist);
}
void print_info(const char *format, ...)
{
va_list arglist;
if (gLogLevel < 3)
return;
va_start(arglist, format);
vsyslog(LOG_INFO, format, arglist);
va_end(arglist);
}
void print_debug(const char *format, ...)
{
va_list arglist;
if (gLogLevel < 4)
return;
va_start(arglist, format);
vsyslog(LOG_DEBUG, format, arglist);
va_end(arglist);
}
bool is_str_eq(const char *s1, const char *s2)
{
if (strcmp(s1, s2) == 0)
return true;
return false;
}
bool get_boolean_string(char *value)
{
if (!value)
return false;
if (strncasecmp(value, "true", 4) == 0 ||
value[0] == '1' ||
strncasecmp(value, "on", 2) == 0 ||
strncasecmp(value, "yes", 3) == 0 ||
strncasecmp(value, "enabled", 7) == 0)
return true;
return false;
}
int get_dm_type(char *dm_type)
{
if (dm_type == NULL)
return DMT_STRING;
if (DM_STRCMP(dm_type, DMT_TYPE[DMT_STRING]) == 0)
return DMT_STRING;
else if (DM_STRCMP(dm_type, DMT_TYPE[DMT_UNINT]) == 0)
return DMT_UNINT;
else if (DM_STRCMP(dm_type, DMT_TYPE[DMT_INT]) == 0)
return DMT_INT;
else if (DM_STRCMP(dm_type, DMT_TYPE[DMT_UNLONG]) == 0)
return DMT_UNLONG;
else if (DM_STRCMP(dm_type, DMT_TYPE[DMT_LONG]) == 0)
return DMT_LONG;
else if (DM_STRCMP(dm_type, DMT_TYPE[DMT_BOOL]) == 0)
return DMT_BOOL;
else if (DM_STRCMP(dm_type, DMT_TYPE[DMT_TIME]) == 0)
return DMT_TIME;
else if (DM_STRCMP(dm_type, DMT_TYPE[DMT_HEXBIN]) == 0)
return DMT_HEXBIN;
else if (DM_STRCMP(dm_type, DMT_TYPE[DMT_BASE64]) == 0)
return DMT_BASE64;
else if (DM_STRCMP(dm_type, DMT_TYPE[DMT_COMMAND]) == 0)
return DMT_COMMAND;
else if (DM_STRCMP(dm_type, DMT_TYPE[DMT_EVENT]) == 0)
return DMT_EVENT;
else
return DMT_STRING;
return DMT_STRING;
}
eParamType get_eparam_type(char *dm_type, int *err)
{
*err = 0;
switch (get_dm_type(dm_type))
{
case DMT_STRING: return PARAM_STRING;
case DMT_UNINT: return PARAM_UNSIGNED_INTEGER;
case DMT_INT: return PARAM_INTEGER;
case DMT_UNLONG: return PARAM_UNSIGNED_LONG;
case DMT_LONG: return PARAM_LONG;
case DMT_BOOL: return PARAM_BOOLEAN;
case DMT_HEXBIN: return PARAM_HEXBINARY;
case DMT_BASE64: return PARAM_BASE64;
default: break;
}
*err = -1;
return 0;
}