mirror of
https://github.com/openharmony/drivers_framework.git
synced 2026-08-28 04:59:54 -04:00
20e219caf6
Signed-off-by: yuanbo <yuanbo@huawei.com>
72 lines
1.6 KiB
C
72 lines
1.6 KiB
C
/*
|
|
* Copyright (c) 2021-2022 Bestechnic (Shanghai) Co., Ltd. All rights reserved.
|
|
*
|
|
* This file is dual licensed: you can use it either under the terms of
|
|
* the GPL, or the BSD license, at your option.
|
|
* See the LICENSE file in the root of this repository for complete details.
|
|
*/
|
|
|
|
#ifndef __UART_BES_H__
|
|
#define __UART_BES_H__
|
|
|
|
#include "uart_if.h"
|
|
#include "uart_core.h"
|
|
#include "hal_uart.h"
|
|
#include "kfifo.h"
|
|
#include "osal_sem.h"
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define UART_DEV_SERVICE_NAME_PREFIX "HDF_PLATFORM_UART%d"
|
|
#define MAX_DEV_NAME_SIZE 32
|
|
|
|
struct UartResource {
|
|
uint32_t num; /* UART port num */
|
|
uint32_t baudRate; /* Default baudrate */
|
|
uint32_t wLen; /* Default word length */
|
|
uint32_t parity; /* Default parity */
|
|
uint32_t stopBit; /* Default stop bits */
|
|
bool txDMA;
|
|
bool rxDMA;
|
|
};
|
|
|
|
enum UartDeviceState {
|
|
UART_DEVICE_UNINITIALIZED = 0x0u,
|
|
UART_DEVICE_INITIALIZED = 0x1u,
|
|
};
|
|
|
|
struct UART_CTX_OBJ {
|
|
uint8_t *buffer;
|
|
bool txDMA;
|
|
bool rxDMA;
|
|
bool isBlock;
|
|
struct kfifo fifo;
|
|
struct OsalSem rxSem;
|
|
struct OsalSem txSem;
|
|
void (*UartDmaRxHandler)(uint32_t xferSize, int dmaError, union HAL_UART_IRQ_T status);
|
|
void (*UartDmaTxHandler)(uint32_t xferSize, int dmaError);
|
|
};
|
|
|
|
struct UartDevice {
|
|
struct IDeviceIoService ioService;
|
|
struct UartResource resource;
|
|
struct HAL_UART_CFG_T config;
|
|
uint32_t uartId;
|
|
bool initFlag;
|
|
uint32_t transMode;
|
|
};
|
|
|
|
enum {
|
|
UART_READ = 0,
|
|
UART_WRITE
|
|
};
|
|
|
|
int32_t UartDispatch(struct HdfDeviceIoClient *client, int cmdId, struct HdfSBuf *data, struct HdfSBuf *reply);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|