/** @file
 * @brief Modem receiver header file.
 *
 * A modem receiver driver allowing application to handle all
 * aspects of received protocol data.
 */

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

#ifndef _MODEM_RECEIVER_H_
#define _MODEM_RECEIVER_H_

#include <stdlib.h>
#include <kernel.h>

#ifdef __cplusplus
extern "C" {
#endif

struct mdm_receiver_context {
	struct device *uart_dev;

	/* rx data */
	u8_t *uart_pipe_buf;
	size_t uart_pipe_size;
	struct k_pipe uart_pipe;
	struct k_sem rx_sem;

	/* modem data */
	char *data_manufacturer;
	char *data_model;
	char *data_revision;
	char *data_imei;
	int   data_rssi;
};

struct mdm_receiver_context *mdm_receiver_context_from_id(int id);

int mdm_receiver_recv(struct mdm_receiver_context *ctx,
		      u8_t *buf, size_t size, size_t *bytes_read);
int mdm_receiver_send(struct mdm_receiver_context *ctx,
		      const u8_t *buf, size_t size);
int mdm_receiver_register(struct mdm_receiver_context *ctx,
			  const char *uart_dev_name,
			  u8_t *buf, size_t size);

#ifdef __cplusplus
}
#endif

#endif /* _MODEM_RECEIVER_H_ */
