zephyr/include/drivers/modem/modem_receiver.h
Michael Scott 9182d2e59c drivers: modem: add modem receiver (tty) driver
Modem drivers need a fast buffer-based receiver for passing data
back and forth from the UART to the driver.  This provides an
efficient configuarable driver which merely sends and receives
but doesn't process the data, that's left up to the modem driver.

Signed-off-by: Michael Scott <mike@foundries.io>
2018-08-06 10:43:46 +03:00

56 lines
1.1 KiB
C

/** @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_ */