/* ipm_console.c - Console messages to/from another processor */

/*
 * Copyright (c) 2015 Intel Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef _IPM_CONSOLE_H_
#define _IPM_CONSOLE_H_

#include <kernel.h>
#include <device.h>
#include <misc/ring_buffer.h>

#ifdef __cplusplus
extern "C" {
#endif

#define IPM_CONSOLE_STDOUT	(1 << 0)
#define IPM_CONSOLE_PRINTK	(1 << 1)

/*
 * Good way to determine these numbers other than trial-and-error?
 * using printf() in the thread seems to require a lot more stack space
 */
#define IPM_CONSOLE_STACK_SIZE		CONFIG_IPM_CONSOLE_STACK_SIZE
#define IPM_CONSOLE_PRI			2

struct ipm_console_receiver_config_info {
	/** Name of the low-level IPM driver to bind to */
	char *bind_to;

	/**
	 * Stack for the receiver's thread, which prints out messages as
	 * they come in. Should be sized CONFIG_IPM_CONSOLE_STACK_SIZE
	 */
	k_thread_stack_t *thread_stack;

	/**
	 * Ring buffer data area for stashing characters from the interrupt
	 * callback
	 */
	u32_t *ring_buf_data;

	/** Size of ring_buf_data in 32-bit chunks */
	unsigned int rb_size32;

	/**
	 * Line buffer for incoming messages, characters accumulate here
	 * and then are sent to printk() once full (including a trailing NULL)
	 * or a carriage return seen
	 */
	char *line_buf;

	/** Size in bytes of the line buffer. Must be at least 2 */
	unsigned int lb_size;

	/**
	 * Destination for received console messages, one of
	 * IPM_CONSOLE_STDOUT or IPM_CONSOLE_PRINTK
	 */
	unsigned int flags;
};

struct ipm_console_receiver_runtime_data {
	/** Buffer for received bytes from the low-level IPM device */
	struct ring_buf rb;

	/** Semaphore to wake up the thread to print out messages */
	struct k_sem sem;

	/** pointer to the bound low-level IPM device */
	struct device *ipm_device;

	/** Indicator that the channel is temporarily disabled due to
	 * full buffer
	 */
	int channel_disabled;

	/** Receiver worker thread */
	struct k_thread rx_thread;
};

struct ipm_console_sender_config_info {
	/** Name of the low-level driver to bind to */
	char *bind_to;

	/**
	 * Source of messages to forward, hooks will be installed.
	 * Can be IPM_CONSOLE_STDOUT, IPM_CONSOLE_PRINTK, or both
	 */
	int flags;
};

#if CONFIG_IPM_CONSOLE_RECEIVER
int ipm_console_receiver_init(struct device *d);
#endif

#if CONFIG_IPM_CONSOLE_SENDER
int ipm_console_sender_init(struct device *d);
#endif

#ifdef __cplusplus
}
#endif

#endif /* _IPM_CONSOLE_H_ */
