/** @file
 * @brief Modem interface for UART header file.
 *
 * Modem interface UART handling for modem context driver.
 */

/*
 * Copyright (c) 2019 Foundries.io
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_INCLUDE_DRIVERS_MODEM_MODEM_IFACE_UART_H_
#define ZEPHYR_INCLUDE_DRIVERS_MODEM_MODEM_IFACE_UART_H_

#include <kernel.h>

#ifdef __cplusplus
extern "C" {
#endif

struct modem_iface_uart_data {
	/* HW flow control */
	bool hw_flow_control;

	/* ring buffer char buffer */
	char *rx_rb_buf;
	size_t rx_rb_buf_len;

	/* ring buffer */
	struct ring_buf rx_rb;

	/* rx semaphore */
	struct k_sem rx_sem;
};

/**
 * @brief  Init modem interface device for UART
 *
 * @details This can be called after the init if the UART is changed.
 *
 * @param  *iface: modem interface to initialize.
 * @param  *dev_name: name of the UART device to use
 *
 * @retval 0 if ok, < 0 if error.
 */
int modem_iface_uart_init_dev(struct modem_iface *iface,
			      const struct device *dev);

/**
 * @brief  Init modem interface for UART
 *
 * @param  *iface: modem interface to initialize.
 * @param  *data: modem interface data to use
 * @param  *dev_name: name of the UART device to use
 *
 * @retval 0 if ok, < 0 if error.
 */
int modem_iface_uart_init(struct modem_iface *iface,
			  struct modem_iface_uart_data *data,
			  const struct device *dev);

#ifdef __cplusplus
}
#endif

#endif /* ZEPHYR_INCLUDE_DRIVERS_MODEM_MODEM_IFACE_UART_H_ */
