/* * 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" static unsigned char gLogLevel = 2; // 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; case DMT_TIME: return PARAM_STRING; default: break; } *err = -1; return 0; } int get_proto_type(const char *proto) { int type = BBFDM_BOTH; if (proto) { if (is_str_eq("cwmp", proto)) type = BBFDM_CWMP; else if (is_str_eq("usp", proto)) type = BBFDM_USP; else type = BBFDM_BOTH; } return type; } int get_instance_mode(int instance_mode) { if (instance_mode > INSTANCE_MODE_ALIAS) instance_mode = INSTANCE_MODE_NUMBER; return instance_mode; }