// SPDX-License-Identifier: (LGPL-2.1-only OR BSD-3-Clause)
/*
 * Copyright 2019 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
 */

#ifndef _CEC_LOG_H_
#define _CEC_LOG_H_

struct cec_arg_enum_values {
	const char *type_name;
	__u8 value;
};

enum cec_arg_type {
	CEC_ARG_TYPE_U8,
	CEC_ARG_TYPE_U16,
	CEC_ARG_TYPE_U32,
	CEC_ARG_TYPE_STRING,
	CEC_ARG_TYPE_ENUM,
};

struct cec_arg {
	enum cec_arg_type type;
	__u8 num_enum_values;
	const struct cec_arg_enum_values *values;
};

#define CEC_MAX_ARGS 16

struct cec_msg_args {
	__u8 msg;
	__u8 num_args;
	const char *arg_names[CEC_MAX_ARGS+1];
	const struct cec_arg *args[CEC_MAX_ARGS];
	const char *msg_name;
};

const struct cec_msg_args *cec_log_msg_args(unsigned int index);
void cec_log_msg(const struct cec_msg *msg);
void cec_log_htng_msg(const struct cec_msg *msg);
const char *cec_log_ui_cmd_string(__u8 ui_cmd);

#endif
