All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
furi_hal_serial.h
Go to the documentation of this file.
1
6#pragma once
7
8#include <stddef.h>
9#include <stdint.h>
10
11#include "furi_hal_serial_types.h"
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
26void furi_hal_serial_init(FuriHalSerialHandle* handle, uint32_t baud);
27
36
44
52
61
67void furi_hal_serial_set_br(FuriHalSerialHandle* handle, uint32_t baud);
68
78 FuriHalSerialHandle* handle,
79 FuriHalSerialDataBits data_bits,
80 FuriHalSerialParity parity,
81 FuriHalSerialStopBits stop_bits);
82
95void furi_hal_serial_tx(FuriHalSerialHandle* handle, const uint8_t* buffer, size_t buffer_size);
96
104
114
124 FuriHalSerialHandle* handle,
126 void* context);
127
139 FuriHalSerialHandle* handle,
141 void* context,
142 bool report_errors);
143
149
159
170
171/* DMA based Serial API */
172
173#define FURI_HAL_SERIAL_DMA_BUFFER_SIZE (256u)
174
186 FuriHalSerialHandle* handle,
188 size_t data_len,
189 void* context);
190
201 FuriHalSerialHandle* handle,
202 FuriHalSerialDirection direction);
203
214 FuriHalSerialHandle* handle,
215 FuriHalSerialDirection direction);
216
224const GpioPin*
225 furi_hal_serial_get_gpio_pin(FuriHalSerialHandle* handle, FuriHalSerialDirection direction);
226
235 FuriHalSerialHandle* handle,
237 void* context,
238 bool report_errors);
239
245
257size_t furi_hal_serial_dma_rx(FuriHalSerialHandle* handle, uint8_t* data, size_t len);
258
259#ifdef __cplusplus
260}
261#endif
void furi_hal_serial_async_rx_start(FuriHalSerialHandle *handle, FuriHalSerialAsyncRxCallback callback, void *context, bool report_errors)
Start and sets Serial Receive callback.
Definition furi_hal_serial.c:852
void furi_hal_serial_dma_rx_start(FuriHalSerialHandle *handle, FuriHalSerialDmaRxCallback callback, void *context, bool report_errors)
Start and sets Serial event callback receive DMA.
Definition furi_hal_serial.c:976
void furi_hal_serial_disable_direction(FuriHalSerialHandle *handle, FuriHalSerialDirection direction)
Disable an input/output direction.
Definition furi_hal_serial.c:1016
void(* FuriHalSerialDmaRxCallback)(FuriHalSerialHandle *handle, FuriHalSerialRxEvent event, size_t data_len, void *context)
Receive DMA callback.
Definition furi_hal_serial.h:185
size_t furi_hal_serial_dma_rx(FuriHalSerialHandle *handle, uint8_t *data, size_t len)
Get data Serial receive DMA.
Definition furi_hal_serial.c:929
void furi_hal_serial_enable_direction(FuriHalSerialHandle *handle, FuriHalSerialDirection direction)
Enable an input/output direction.
Definition furi_hal_serial.c:999
void furi_hal_serial_configure_framing(FuriHalSerialHandle *handle, FuriHalSerialDataBits data_bits, FuriHalSerialParity parity, FuriHalSerialStopBits stop_bits)
Configures framing of a serial interface.
Definition furi_hal_serial.c:656
FuriHalSerialRxEvent
Serial RX events.
Definition furi_hal_serial.h:106
@ FuriHalSerialRxEventNoiseError
Noise Error: noise on the line detected.
Definition furi_hal_serial.h:110
@ FuriHalSerialRxEventOverrunError
Overrun Error: no space for received data.
Definition furi_hal_serial.h:111
@ FuriHalSerialRxEventData
Data: new data available.
Definition furi_hal_serial.h:107
@ FuriHalSerialRxEventIdle
Idle: bus idle detected.
Definition furi_hal_serial.h:108
@ FuriHalSerialRxEventParityError
Parity Error: incorrect parity bit received.
Definition furi_hal_serial.h:112
@ FuriHalSerialRxEventFrameError
Framing Error: incorrect frame detected.
Definition furi_hal_serial.h:109
bool furi_hal_serial_async_rx_available(FuriHalSerialHandle *handle)
Check if there is data available for reading.
Definition furi_hal_serial.c:875
void furi_hal_serial_resume(FuriHalSerialHandle *handle)
Resume operation.
Definition furi_hal_serial.c:733
uint8_t furi_hal_serial_async_rx(FuriHalSerialHandle *handle)
Get data Serial receive.
Definition furi_hal_serial.c:886
void furi_hal_serial_deinit(FuriHalSerialHandle *handle)
De-initialize Serial.
Definition furi_hal_serial.c:694
void furi_hal_serial_dma_rx_stop(FuriHalSerialHandle *handle)
Stop Serial receive DMA.
Definition furi_hal_serial.c:993
void furi_hal_serial_set_br(FuriHalSerialHandle *handle, uint32_t baud)
Changes baud rate.
Definition furi_hal_serial.c:579
bool furi_hal_serial_is_baud_rate_supported(FuriHalSerialHandle *handle, uint32_t baud)
Determine whether a certain baud rate is supported.
Definition furi_hal_serial.c:507
void furi_hal_serial_tx_wait_complete(FuriHalSerialHandle *handle)
Wait until transmission is completed.
Definition furi_hal_serial.c:775
void furi_hal_serial_suspend(FuriHalSerialHandle *handle)
Suspend operation.
Definition furi_hal_serial.c:723
const GpioPin * furi_hal_serial_get_gpio_pin(FuriHalSerialHandle *handle, FuriHalSerialDirection direction)
Get the GPIO pin associated with a serial.
Definition furi_hal_serial.c:1032
void furi_hal_serial_tx(FuriHalSerialHandle *handle, const uint8_t *buffer, size_t buffer_size)
Transmits data in semi-blocking mode.
Definition furi_hal_serial.c:745
void(* FuriHalSerialAsyncRxCallback)(FuriHalSerialHandle *handle, FuriHalSerialRxEvent event, void *context)
Receive callback.
Definition furi_hal_serial.h:123
void furi_hal_serial_init(FuriHalSerialHandle *handle, uint32_t baud)
Initialize Serial.
Definition furi_hal_serial.c:498
void furi_hal_serial_async_rx_stop(FuriHalSerialHandle *handle)
Stop Serial Receive.
Definition furi_hal_serial.c:869
Definition furi_hal_serial_types_i.h:5
Gpio structure.
Definition furi_hal_gpio.h:161