Skip to content
Snippets Groups Projects
debug.h 1.68 KiB
Newer Older
  • Learn to ignore specific revisions
  • // SPDX-License-Identifier: GPL-2.0-only
    
    /*
     * debug.h - header file for debug and log messages.
     *
     * Copyright (C) 2025 Genexis AB.
     *
     * Author: anjan.chanda@genexis.eu
     */
    
    #ifndef WIFIMNGR_DEBUG_H
    #define WIFIMNGR_DEBUG_H
    
    /* log feature categories */
    enum {
    	LOG_CMD,	/* command request and response */
    	LOG_EVENT,	/* events */
    	LOG_DEFAULT,	/* uncategorized messages */
    };
    
    /* log levels */
    enum {
    	LOGLEVEL_ERROR,
    	LOGLEVEL_WARN,
    	LOGLEVEL_INFO,
    	LOGLEVEL_DEBUG,
    	LOGLEVEL_TRACE,
    };
    
    #define LOG_FEATURE(x)	BIT(x)
    #define LOG_FEATURE_ALL	BIT(LOG_DEFAULT) | (BIT(LOG_DEFAULT) - 1)
    
    #define DEFAULT_LOGLEVEL	LOGLEVEL_INFO
    
    uint32_t logfeature_to_enum(const char *s);
    const char *logfeature_to_string(uint32_t e);
    
    void restart_logging(void *opts);
    void stop_logging(void);
    void log_message(int feature, int level, const char *fmt, ...)
    	__attribute__((__format__(__printf__, 3, 4)));
    
    #define wm_err(f, fmt, ...)         log_message(f, 0, fmt, ## __VA_ARGS__)
    #define wm_warn(f, fmt, ...)        log_message(f, 1, fmt, ## __VA_ARGS__)
    #define wm_info(f, fmt, ...)        log_message(f, 2, fmt, ## __VA_ARGS__)
    #define wm_dbg(f, fmt, ...)         log_message(f, 3, fmt, ## __VA_ARGS__)
    #define wm_trace(f, fmt, ...)       log_message(f, 4, fmt, ## __VA_ARGS__)
    
    #define wifimngr_err(fmt, ...)      log_message(LOG_DEFAULT, 0, fmt, ## __VA_ARGS__)
    #define wifimngr_warn(fmt, ...)     log_message(LOG_DEFAULT, 1, fmt, ## __VA_ARGS__)
    #define wifimngr_info(fmt, ...)     log_message(LOG_DEFAULT, 2, fmt, ## __VA_ARGS__)
    #define wifimngr_dbg(fmt, ...)      log_message(LOG_DEFAULT, 3, fmt, ## __VA_ARGS__)
    #define wifimngr_trace(fmt, ...)    log_message(LOG_DEFAULT, 4, fmt, ## __VA_ARGS__)
    
    #endif /* WIFIMNGR_DEBUG_H */