Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
uart.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018-2019 Nordic Semiconductor ASA
3 * Copyright (c) 2015 Wind River Systems, Inc.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
13#ifndef ZEPHYR_INCLUDE_DRIVERS_UART_H_
14#define ZEPHYR_INCLUDE_DRIVERS_UART_H_
15
23#include <errno.h>
24#include <stddef.h>
25
26#include <device.h>
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
39};
40
146};
147
148
169 UART_BREAK = (1 << 3),
180};
181
185 const uint8_t *buf;
187 size_t len;
188};
189
200 size_t offset;
202 size_t len;
203};
204
207 /* @brief Pointer to buffer that is no longer in use. */
209};
210
217};
218
238};
239
249typedef void (*uart_callback_t)(const struct device *dev,
250 struct uart_event *evt, void *user_data);
251
267};
268
276};
277
284};
285
293};
294
306};
307
316typedef void (*uart_irq_callback_user_data_t)(const struct device *dev,
317 void *user_data);
318
327typedef void (*uart_irq_config_func_t)(const struct device *dev);
328
338 union {
342 };
343
345
346#if defined(CONFIG_UART_INTERRUPT_DRIVEN) || defined(CONFIG_UART_ASYNC_API)
348#endif
349};
350
352__subsystem struct uart_driver_api {
353
354#ifdef CONFIG_UART_ASYNC_API
355
356 int (*callback_set)(const struct device *dev,
357 uart_callback_t callback,
358 void *user_data);
359
360 int (*tx)(const struct device *dev, const uint8_t *buf, size_t len,
362 int (*tx_abort)(const struct device *dev);
363
364 int (*rx_enable)(const struct device *dev, uint8_t *buf, size_t len,
366 int (*rx_buf_rsp)(const struct device *dev, uint8_t *buf, size_t len);
367 int (*rx_disable)(const struct device *dev);
368
369#endif
370
372 int (*poll_in)(const struct device *dev, unsigned char *p_char);
373 void (*poll_out)(const struct device *dev, unsigned char out_char);
374
376 int (*err_check)(const struct device *dev);
377
379 int (*configure)(const struct device *dev,
380 const struct uart_config *cfg);
381 int (*config_get)(const struct device *dev, struct uart_config *cfg);
382
383#ifdef CONFIG_UART_INTERRUPT_DRIVEN
384
386 int (*fifo_fill)(const struct device *dev, const uint8_t *tx_data,
387 int len);
388
390 int (*fifo_read)(const struct device *dev, uint8_t *rx_data,
391 const int size);
392
394 void (*irq_tx_enable)(const struct device *dev);
395
397 void (*irq_tx_disable)(const struct device *dev);
398
400 int (*irq_tx_ready)(const struct device *dev);
401
403 void (*irq_rx_enable)(const struct device *dev);
404
406 void (*irq_rx_disable)(const struct device *dev);
407
409 int (*irq_tx_complete)(const struct device *dev);
410
412 int (*irq_rx_ready)(const struct device *dev);
413
415 void (*irq_err_enable)(const struct device *dev);
416
418 void (*irq_err_disable)(const struct device *dev);
419
421 int (*irq_is_pending)(const struct device *dev);
422
424 int (*irq_update)(const struct device *dev);
425
427 void (*irq_callback_set)(const struct device *dev,
429 void *user_data);
430
431#endif
432
433#ifdef CONFIG_UART_LINE_CTRL
434 int (*line_ctrl_set)(const struct device *dev, uint32_t ctrl,
435 uint32_t val);
436 int (*line_ctrl_get)(const struct device *dev, uint32_t ctrl,
437 uint32_t *val);
438#endif
439
440#ifdef CONFIG_UART_DRV_CMD
441 int (*drv_cmd)(const struct device *dev, uint32_t cmd, uint32_t p);
442#endif
443
444};
445
446
457static inline int uart_callback_set(const struct device *dev,
458 uart_callback_t callback,
459 void *user_data)
460{
461#ifdef CONFIG_UART_ASYNC_API
462 const struct uart_driver_api *api =
463 (const struct uart_driver_api *)dev->api;
464
465 return api->callback_set(dev, callback, user_data);
466#else
467 return -ENOTSUP;
468#endif
469}
470
487__syscall int uart_tx(const struct device *dev, const uint8_t *buf,
488 size_t len,
490
491static inline int z_impl_uart_tx(const struct device *dev, const uint8_t *buf,
492 size_t len, int32_t timeout)
493
494{
495#ifdef CONFIG_UART_ASYNC_API
496 const struct uart_driver_api *api =
497 (const struct uart_driver_api *)dev->api;
498
499 return api->tx(dev, buf, len, timeout);
500#else
501 return -ENOTSUP;
502#endif
503}
504
517__syscall int uart_tx_abort(const struct device *dev);
518
519static inline int z_impl_uart_tx_abort(const struct device *dev)
520{
521#ifdef CONFIG_UART_ASYNC_API
522 const struct uart_driver_api *api =
523 (const struct uart_driver_api *)dev->api;
524
525 return api->tx_abort(dev);
526#else
527 return -ENOTSUP;
528#endif
529}
530
552__syscall int uart_rx_enable(const struct device *dev, uint8_t *buf,
553 size_t len,
555
556static inline int z_impl_uart_rx_enable(const struct device *dev,
557 uint8_t *buf,
558 size_t len, int32_t timeout)
559{
560#ifdef CONFIG_UART_ASYNC_API
561 const struct uart_driver_api *api =
562 (const struct uart_driver_api *)dev->api;
563
564 return api->rx_enable(dev, buf, len, timeout);
565#else
566 return -ENOTSUP;
567#endif
568}
569
591static inline int uart_rx_buf_rsp(const struct device *dev, uint8_t *buf,
592 size_t len)
593{
594#ifdef CONFIG_UART_ASYNC_API
595 const struct uart_driver_api *api =
596 (const struct uart_driver_api *)dev->api;
597
598 return api->rx_buf_rsp(dev, buf, len);
599#else
600 return -ENOTSUP;
601#endif
602}
603
619__syscall int uart_rx_disable(const struct device *dev);
620
621static inline int z_impl_uart_rx_disable(const struct device *dev)
622{
623#ifdef CONFIG_UART_ASYNC_API
624 const struct uart_driver_api *api =
625 (const struct uart_driver_api *)dev->api;
626
627 return api->rx_disable(dev);
628#else
629 return -ENOTSUP;
630#endif
631}
632
641__syscall int uart_err_check(const struct device *dev);
642
643static inline int z_impl_uart_err_check(const struct device *dev)
644{
645 const struct uart_driver_api *api =
646 (const struct uart_driver_api *)dev->api;
647
648 if (api->err_check == NULL) {
649 return -ENOSYS;
650 }
651 return api->err_check(dev);
652}
653
654
667__syscall int uart_poll_in(const struct device *dev, unsigned char *p_char);
668
669static inline int z_impl_uart_poll_in(const struct device *dev,
670 unsigned char *p_char)
671{
672 const struct uart_driver_api *api =
673 (const struct uart_driver_api *)dev->api;
674
675 return api->poll_in(dev, p_char);
676}
677
691__syscall void uart_poll_out(const struct device *dev,
692 unsigned char out_char);
693
694static inline void z_impl_uart_poll_out(const struct device *dev,
695 unsigned char out_char)
696{
697 const struct uart_driver_api *api =
698 (const struct uart_driver_api *)dev->api;
699
700 api->poll_out(dev, out_char);
701}
702
716__syscall int uart_configure(const struct device *dev,
717 const struct uart_config *cfg);
718
719static inline int z_impl_uart_configure(const struct device *dev,
720 const struct uart_config *cfg)
721{
722 const struct uart_driver_api *api =
723 (const struct uart_driver_api *)dev->api;
724
725 if (api->configure == NULL) {
726 return -ENOSYS;
727 }
728 return api->configure(dev, cfg);
729}
730
743__syscall int uart_config_get(const struct device *dev,
744 struct uart_config *cfg);
745
746static inline int z_impl_uart_config_get(const struct device *dev,
747 struct uart_config *cfg)
748{
749 const struct uart_driver_api *api =
750 (const struct uart_driver_api *)dev->api;
751
752 if (api->config_get == NULL) {
753 return -ENOSYS;
754 }
755
756 return api->config_get(dev, cfg);
757
758}
759
778static inline int uart_fifo_fill(const struct device *dev,
779 const uint8_t *tx_data,
780 int size)
781{
782#ifdef CONFIG_UART_INTERRUPT_DRIVEN
783 const struct uart_driver_api *api =
784 (const struct uart_driver_api *)dev->api;
785
786 if (api->fifo_fill != NULL) {
787 return api->fifo_fill(dev, tx_data, size);
788 }
789#endif
790
791 return 0;
792}
793
816static inline int uart_fifo_read(const struct device *dev, uint8_t *rx_data,
817 const int size)
818{
819#ifdef CONFIG_UART_INTERRUPT_DRIVEN
820 const struct uart_driver_api *api =
821 (const struct uart_driver_api *)dev->api;
822
823 if (api->fifo_read != NULL) {
824 return api->fifo_read(dev, rx_data, size);
825 }
826#endif
827
828 return 0;
829}
830
838__syscall void uart_irq_tx_enable(const struct device *dev);
839
840static inline void z_impl_uart_irq_tx_enable(const struct device *dev)
841{
842#ifdef CONFIG_UART_INTERRUPT_DRIVEN
843 const struct uart_driver_api *api =
844 (const struct uart_driver_api *)dev->api;
845
846 if (api->irq_tx_enable != NULL) {
847 api->irq_tx_enable(dev);
848 }
849#endif
850}
858__syscall void uart_irq_tx_disable(const struct device *dev);
859
860static inline void z_impl_uart_irq_tx_disable(const struct device *dev)
861{
862#ifdef CONFIG_UART_INTERRUPT_DRIVEN
863 const struct uart_driver_api *api =
864 (const struct uart_driver_api *)dev->api;
865
866 if (api->irq_tx_disable != NULL) {
867 api->irq_tx_disable(dev);
868 }
869#endif
870}
871
887static inline int uart_irq_tx_ready(const struct device *dev)
888{
889#ifdef CONFIG_UART_INTERRUPT_DRIVEN
890 const struct uart_driver_api *api =
891 (const struct uart_driver_api *)dev->api;
892
893 if (api->irq_tx_ready != NULL) {
894 return api->irq_tx_ready(dev);
895 }
896#endif
897
898 return 0;
899}
900
908__syscall void uart_irq_rx_enable(const struct device *dev);
909
910static inline void z_impl_uart_irq_rx_enable(const struct device *dev)
911{
912#ifdef CONFIG_UART_INTERRUPT_DRIVEN
913 const struct uart_driver_api *api =
914 (const struct uart_driver_api *)dev->api;
915
916 if (api->irq_rx_enable != NULL) {
917 api->irq_rx_enable(dev);
918 }
919#endif
920}
921
929__syscall void uart_irq_rx_disable(const struct device *dev);
930
931static inline void z_impl_uart_irq_rx_disable(const struct device *dev)
932{
933#ifdef CONFIG_UART_INTERRUPT_DRIVEN
934 const struct uart_driver_api *api =
935 (const struct uart_driver_api *)dev->api;
936
937 if (api->irq_rx_disable != NULL) {
938 api->irq_rx_disable(dev);
939 }
940#endif
941}
942
961static inline int uart_irq_tx_complete(const struct device *dev)
962{
963#ifdef CONFIG_UART_INTERRUPT_DRIVEN
964 const struct uart_driver_api *api =
965 (const struct uart_driver_api *)dev->api;
966
967 if (api->irq_tx_complete == NULL) {
968 return -ENOSYS;
969 }
970 return api->irq_tx_complete(dev);
971#endif
972 return -ENOTSUP;
973
974}
975
976
996static inline int uart_irq_rx_ready(const struct device *dev)
997{
998#ifdef CONFIG_UART_INTERRUPT_DRIVEN
999 const struct uart_driver_api *api =
1000 (const struct uart_driver_api *)dev->api;
1001
1002 if (api->irq_rx_ready == NULL) {
1003 return -ENOSYS;
1004 }
1005 return api->irq_rx_ready(dev);
1006#endif
1007
1008 return 0;
1009}
1017__syscall void uart_irq_err_enable(const struct device *dev);
1018
1019static inline void z_impl_uart_irq_err_enable(const struct device *dev)
1020{
1021#ifdef CONFIG_UART_INTERRUPT_DRIVEN
1022 const struct uart_driver_api *api =
1023 (const struct uart_driver_api *)dev->api;
1024
1025 if (api->irq_err_enable) {
1026 api->irq_err_enable(dev);
1027 }
1028#endif
1029}
1030
1039__syscall void uart_irq_err_disable(const struct device *dev);
1040
1041static inline void z_impl_uart_irq_err_disable(const struct device *dev)
1042{
1043#ifdef CONFIG_UART_INTERRUPT_DRIVEN
1044 const struct uart_driver_api *api =
1045 (const struct uart_driver_api *)dev->api;
1046
1047 if (api->irq_err_disable) {
1048 api->irq_err_disable(dev);
1049 }
1050#endif
1051}
1052
1061__syscall int uart_irq_is_pending(const struct device *dev);
1062
1063static inline int z_impl_uart_irq_is_pending(const struct device *dev)
1064{
1065#ifdef CONFIG_UART_INTERRUPT_DRIVEN
1066 const struct uart_driver_api *api =
1067 (const struct uart_driver_api *)dev->api;
1068
1069 if (api->irq_is_pending == NULL) {
1070 return -ENOSYS;
1071 }
1072 return api->irq_is_pending(dev);
1073#endif
1074 return 0;
1075}
1076
1100__syscall int uart_irq_update(const struct device *dev);
1101
1102static inline int z_impl_uart_irq_update(const struct device *dev)
1103{
1104#ifdef CONFIG_UART_INTERRUPT_DRIVEN
1105 const struct uart_driver_api *api =
1106 (const struct uart_driver_api *)dev->api;
1107
1108 if (api->irq_update == NULL) {
1109 return -ENOSYS;
1110 }
1111 return api->irq_update(dev);
1112#endif
1113 return 0;
1114}
1115
1129static inline void uart_irq_callback_user_data_set(const struct device *dev,
1131 void *user_data)
1132{
1133#ifdef CONFIG_UART_INTERRUPT_DRIVEN
1134 const struct uart_driver_api *api =
1135 (const struct uart_driver_api *)dev->api;
1136
1137 if ((api != NULL) && (api->irq_callback_set != NULL)) {
1138 api->irq_callback_set(dev, cb, user_data);
1139 }
1140#endif
1141}
1142
1154static inline void uart_irq_callback_set(const struct device *dev,
1156{
1157 uart_irq_callback_user_data_set(dev, cb, NULL);
1158}
1159
1160
1171__syscall int uart_line_ctrl_set(const struct device *dev,
1172 uint32_t ctrl, uint32_t val);
1173
1174static inline int z_impl_uart_line_ctrl_set(const struct device *dev,
1175 uint32_t ctrl, uint32_t val)
1176{
1177#ifdef CONFIG_UART_LINE_CTRL
1178 const struct uart_driver_api *api =
1179 (const struct uart_driver_api *)dev->api;
1180
1181 if (api->line_ctrl_set == NULL) {
1182 return -ENOSYS;
1183 }
1184 return api->line_ctrl_set(dev, ctrl, val);
1185#endif
1186
1187 return -ENOTSUP;
1188}
1189
1200__syscall int uart_line_ctrl_get(const struct device *dev, uint32_t ctrl,
1201 uint32_t *val);
1202
1203static inline int z_impl_uart_line_ctrl_get(const struct device *dev,
1204 uint32_t ctrl, uint32_t *val)
1205{
1206#ifdef CONFIG_UART_LINE_CTRL
1207 const struct uart_driver_api *api =
1208 (const struct uart_driver_api *)dev->api;
1209
1210 if (api->line_ctrl_get == NULL) {
1211 return -ENOSYS;
1212 }
1213 return api->line_ctrl_get(dev, ctrl, val);
1214#endif
1215
1216 return -ENOTSUP;
1217}
1218
1232__syscall int uart_drv_cmd(const struct device *dev, uint32_t cmd, uint32_t p);
1233
1234static inline int z_impl_uart_drv_cmd(const struct device *dev, uint32_t cmd,
1235 uint32_t p)
1236{
1237#ifdef CONFIG_UART_DRV_CMD
1238 const struct uart_driver_api *api =
1239 (const struct uart_driver_api *)dev->api;
1240
1241 if (api->drv_cmd == NULL) {
1242 return -ENOSYS;
1243 }
1244 return api->drv_cmd(dev, cmd, p);
1245#endif
1246
1247 return -ENOTSUP;
1248}
1249
1250#ifdef __cplusplus
1251}
1252#endif
1253
1258#include <syscalls/uart.h>
1259
1260#endif /* ZEPHYR_INCLUDE_DRIVERS_UART_H_ */
ZTEST_BMEM int timeout
Definition: main.c:31
System error numbers.
void
Definition: eswifi_shell.c:15
static void cmd(uint32_t command)
Execute a display list command by co-processor engine.
Definition: ft8xx_reference_api.h:153
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition: util_macro.h:44
#define ENOSYS
Definition: errno.h:83
#define ENOTSUP
Definition: errno.h:115
uart_line_ctrl
Line control signals.
Definition: uart.h:33
void uart_poll_out(const struct device *dev, unsigned char out_char)
Output a character in polled mode.
int uart_irq_is_pending(const struct device *dev)
Check if any IRQs is pending.
int uart_err_check(const struct device *dev)
Check whether an error was detected.
static int uart_rx_buf_rsp(const struct device *dev, uint8_t *buf, size_t len)
Provide receive buffer in response to uart_event_type::UART_RX_BUF_REQUEST event.
Definition: uart.h:591
void(* uart_irq_callback_user_data_t)(const struct device *dev, void *user_data)
Define the application callback function signature for uart_irq_callback_user_data_set() function.
Definition: uart.h:316
void uart_irq_rx_enable(const struct device *dev)
Enable RX interrupt.
static int uart_irq_tx_ready(const struct device *dev)
Check if UART TX buffer can accept a new char.
Definition: uart.h:887
void(* uart_irq_config_func_t)(const struct device *dev)
For configuring IRQ on each individual UART device.
Definition: uart.h:327
void(* uart_callback_t)(const struct device *dev, struct uart_event *evt, void *user_data)
Define the application callback function signature for uart_callback_set() function.
Definition: uart.h:249
void uart_irq_err_enable(const struct device *dev)
Enable error interrupt.
int uart_config_get(const struct device *dev, struct uart_config *cfg)
Get UART configuration.
uart_config_flow_control
Hardware flow control options.
Definition: uart.h:302
int uart_rx_enable(const struct device *dev, uint8_t *buf, size_t len, int32_t timeout)
Start receiving data through UART.
static int uart_irq_tx_complete(const struct device *dev)
Check if UART TX block finished transmission.
Definition: uart.h:961
void uart_irq_tx_enable(const struct device *dev)
Enable TX interrupt in IER.
int uart_configure(const struct device *dev, const struct uart_config *cfg)
Set UART configuration.
void uart_irq_rx_disable(const struct device *dev)
Disable RX interrupt.
int uart_drv_cmd(const struct device *dev, uint32_t cmd, uint32_t p)
Send extra command to driver.
int uart_tx_abort(const struct device *dev)
Abort current TX transmission.
void uart_irq_err_disable(const struct device *dev)
Disable error interrupt.
int uart_line_ctrl_set(const struct device *dev, uint32_t ctrl, uint32_t val)
Manipulate line control for UART.
static int uart_fifo_read(const struct device *dev, uint8_t *rx_data, const int size)
Read data from FIFO.
Definition: uart.h:816
uart_config_parity
Parity modes.
Definition: uart.h:270
uart_config_data_bits
Number of data bits.
Definition: uart.h:287
int uart_irq_update(const struct device *dev)
Start processing interrupts in ISR.
static void uart_irq_callback_set(const struct device *dev, uart_irq_callback_user_data_t cb)
Set the IRQ callback function pointer (legacy).
Definition: uart.h:1154
static int uart_irq_rx_ready(const struct device *dev)
Check if UART RX buffer has a received char.
Definition: uart.h:996
static int uart_callback_set(const struct device *dev, uart_callback_t callback, void *user_data)
Set event handler function.
Definition: uart.h:457
uart_rx_stop_reason
Reception stop reasons.
Definition: uart.h:155
int uart_poll_in(const struct device *dev, unsigned char *p_char)
Poll the device for input.
static void uart_irq_callback_user_data_set(const struct device *dev, uart_irq_callback_user_data_t cb, void *user_data)
Set the IRQ callback function pointer.
Definition: uart.h:1129
uart_event_type
Types of events passed to callback in UART_ASYNC_API.
Definition: uart.h:93
void uart_irq_tx_disable(const struct device *dev)
Disable TX interrupt in IER.
int uart_tx(const struct device *dev, const uint8_t *buf, size_t len, int32_t timeout)
Send given number of bytes from buffer through UART.
uart_config_stop_bits
Number of stop bits.
Definition: uart.h:279
int uart_rx_disable(const struct device *dev)
Disable RX.
int uart_line_ctrl_get(const struct device *dev, uint32_t ctrl, uint32_t *val)
Retrieve line control for UART.
static int uart_fifo_fill(const struct device *dev, const uint8_t *tx_data, int size)
Fill FIFO with data.
Definition: uart.h:778
@ UART_LINE_CTRL_DTR
Definition: uart.h:36
@ UART_LINE_CTRL_RTS
Definition: uart.h:35
@ UART_LINE_CTRL_BAUD_RATE
Definition: uart.h:34
@ UART_LINE_CTRL_DCD
Definition: uart.h:37
@ UART_LINE_CTRL_DSR
Definition: uart.h:38
@ UART_CFG_FLOW_CTRL_DTR_DSR
Definition: uart.h:305
@ UART_CFG_FLOW_CTRL_NONE
Definition: uart.h:303
@ UART_CFG_FLOW_CTRL_RTS_CTS
Definition: uart.h:304
@ UART_CFG_PARITY_MARK
Definition: uart.h:274
@ UART_CFG_PARITY_NONE
Definition: uart.h:271
@ UART_CFG_PARITY_ODD
Definition: uart.h:272
@ UART_CFG_PARITY_SPACE
Definition: uart.h:275
@ UART_CFG_PARITY_EVEN
Definition: uart.h:273
@ UART_CFG_DATA_BITS_5
Definition: uart.h:288
@ UART_CFG_DATA_BITS_8
Definition: uart.h:291
@ UART_CFG_DATA_BITS_7
Definition: uart.h:290
@ UART_CFG_DATA_BITS_6
Definition: uart.h:289
@ UART_CFG_DATA_BITS_9
Definition: uart.h:292
@ UART_ERROR_OVERRUN
Overrun error.
Definition: uart.h:157
@ UART_BREAK
Break interrupt.
Definition: uart.h:169
@ UART_ERROR_PARITY
Parity error.
Definition: uart.h:159
@ UART_ERROR_COLLISION
Collision error.
Definition: uart.h:179
@ UART_ERROR_FRAMING
Framing error.
Definition: uart.h:161
@ UART_RX_STOPPED
RX has stopped due to external event.
Definition: uart.h:145
@ UART_TX_ABORTED
Transmitting aborted due to timeout or uart_tx_abort call.
Definition: uart.h:103
@ UART_RX_BUF_REQUEST
Driver requests next buffer for continuous reception.
Definition: uart.h:127
@ UART_TX_DONE
Whole TX buffer was transmitted.
Definition: uart.h:95
@ UART_RX_RDY
Received data is ready for processing.
Definition: uart.h:115
@ UART_RX_DISABLED
RX has been disabled and can be reenabled.
Definition: uart.h:139
@ UART_RX_BUF_RELEASED
Buffer is no longer used by UART driver.
Definition: uart.h:131
@ UART_CFG_STOP_BITS_1_5
Definition: uart.h:282
@ UART_CFG_STOP_BITS_0_5
Definition: uart.h:280
@ UART_CFG_STOP_BITS_1
Definition: uart.h:281
@ UART_CFG_STOP_BITS_2
Definition: uart.h:283
struct k_pipe p
Definition: kobject.c:1311
__UINT32_TYPE__ uint32_t
Definition: stdint.h:60
__INT32_TYPE__ int32_t
Definition: stdint.h:44
__UINT8_TYPE__ uint8_t
Definition: stdint.h:58
Runtime device structure (in ROM) per driver instance.
Definition: device.h:367
const void * api
Definition: device.h:373
UART controller configuration structure.
Definition: uart.h:261
uint8_t stop_bits
Definition: uart.h:264
uint8_t parity
Definition: uart.h:263
uint8_t data_bits
Definition: uart.h:265
uint32_t baudrate
Definition: uart.h:262
uint8_t flow_ctrl
Definition: uart.h:266
UART device configuration.
Definition: uart.h:337
uint32_t sys_clk_freq
Definition: uart.h:344
uint32_t port
Definition: uart.h:339
uart_irq_config_func_t irq_config_func
Definition: uart.h:347
uint32_t regs
Definition: uart.h:341
uint8_t * base
Definition: uart.h:340
Driver API structure.
Definition: uart.h:352
void(* irq_err_disable)(const struct device *dev)
Definition: uart.h:418
int(* irq_is_pending)(const struct device *dev)
Definition: uart.h:421
int(* drv_cmd)(const struct device *dev, uint32_t cmd, uint32_t p)
Definition: uart.h:441
int(* fifo_read)(const struct device *dev, uint8_t *rx_data, const int size)
Definition: uart.h:390
int(* poll_in)(const struct device *dev, unsigned char *p_char)
Definition: uart.h:372
void(* irq_tx_enable)(const struct device *dev)
Definition: uart.h:394
void(* poll_out)(const struct device *dev, unsigned char out_char)
Definition: uart.h:373
int(* err_check)(const struct device *dev)
Definition: uart.h:376
int(* irq_tx_ready)(const struct device *dev)
Definition: uart.h:400
int(* irq_rx_ready)(const struct device *dev)
Definition: uart.h:412
int(* irq_update)(const struct device *dev)
Definition: uart.h:424
void(* irq_tx_disable)(const struct device *dev)
Definition: uart.h:397
int(* fifo_fill)(const struct device *dev, const uint8_t *tx_data, int len)
Definition: uart.h:386
int(* irq_tx_complete)(const struct device *dev)
Definition: uart.h:409
void(* irq_rx_enable)(const struct device *dev)
Definition: uart.h:403
int(* tx_abort)(const struct device *dev)
Definition: uart.h:362
int(* rx_disable)(const struct device *dev)
Definition: uart.h:367
void(* irq_callback_set)(const struct device *dev, uart_irq_callback_user_data_t cb, void *user_data)
Definition: uart.h:427
void(* irq_rx_disable)(const struct device *dev)
Definition: uart.h:406
int(* rx_enable)(const struct device *dev, uint8_t *buf, size_t len, int32_t timeout)
Definition: uart.h:364
int(* tx)(const struct device *dev, const uint8_t *buf, size_t len, int32_t timeout)
Definition: uart.h:360
int(* rx_buf_rsp)(const struct device *dev, uint8_t *buf, size_t len)
Definition: uart.h:366
int(* config_get)(const struct device *dev, struct uart_config *cfg)
Definition: uart.h:381
void(* irq_err_enable)(const struct device *dev)
Definition: uart.h:415
int(* configure)(const struct device *dev, const struct uart_config *cfg)
Definition: uart.h:379
int(* callback_set)(const struct device *dev, uart_callback_t callback, void *user_data)
Definition: uart.h:356
UART RX buffer released event data.
Definition: uart.h:206
uint8_t * buf
Definition: uart.h:208
UART RX stopped data.
Definition: uart.h:212
struct uart_event_rx data
Last received data.
Definition: uart.h:216
enum uart_rx_stop_reason reason
Reason why receiving stopped.
Definition: uart.h:214
UART RX event data.
Definition: uart.h:196
uint8_t * buf
Pointer to current buffer.
Definition: uart.h:198
size_t len
Number of new bytes received.
Definition: uart.h:202
size_t offset
Currently received data offset in bytes.
Definition: uart.h:200
UART TX event data.
Definition: uart.h:183
const uint8_t * buf
Pointer to current buffer.
Definition: uart.h:185
size_t len
Number of bytes sent.
Definition: uart.h:187
Structure containing information about current event.
Definition: uart.h:220
union uart_event::uart_event_data data
enum uart_event_type type
Type of event.
Definition: uart.h:222
static const intptr_t user_data[5]
Definition: main.c:590
Event data.
Definition: uart.h:224
struct uart_event_tx tx
uart_event_type::UART_TX_DONE and uart_event_type::UART_TX_ABORTED events data.
Definition: uart.h:228
struct uart_event_rx_stop rx_stop
uart_event_type::UART_RX_STOPPED event data.
Definition: uart.h:236
struct uart_event_rx_buf rx_buf
uart_event_type::UART_RX_BUF_RELEASED event data.
Definition: uart.h:234
struct uart_event_rx rx
uart_event_type::UART_RX_RDY event data.
Definition: uart.h:230