| /* |
| * Copyright (c) 2023 Google LLC |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/drivers/uart.h> |
| #include <zephyr/kernel.h> |
| #include <zephyr/types.h> |
| #include <zephyr/ztest.h> |
| #include <zephyr/ztest_mock.h> |
| |
| #include "uart_mock.h" |
| |
| static struct uart_mock_data mock_data; |
| static struct device_state mock_state = { |
| .init_res = 0, |
| .initialized = 1, |
| }; |
| |
| static int uart_mock_callback_set(const struct device *dev, uart_callback_t callback, |
| void *user_data) |
| { |
| struct uart_mock_data *data = dev->data; |
| |
| data->user_data = user_data; |
| data->cb = callback; |
| |
| return 0; |
| } |
| |
| int uart_mock_tx(const struct device *dev, const uint8_t *buf, size_t len, int32_t timeout) |
| { |
| struct uart_mock_data *data = dev->data; |
| |
| data->tx_buf = buf; |
| |
| ztest_check_expected_data(buf, len); |
| ztest_check_expected_value(len); |
| |
| k_sem_give(&data->resp_sent); |
| |
| return 0; |
| } |
| |
| static int uart_mock_rx_enable(const struct device *dev, uint8_t *buf, size_t len, int32_t timeout) |
| { |
| struct uart_mock_data *data = dev->data; |
| |
| data->rx_buf = buf; |
| data->rx_buf_size = len; |
| data->rx_timeout = timeout; |
| |
| return 0; |
| } |
| |
| static int uart_mock_rx_disable(const struct device *dev) |
| { |
| return 0; |
| } |
| |
| static struct uart_driver_api mock_api = { |
| .callback_set = uart_mock_callback_set, |
| .tx = uart_mock_tx, |
| .rx_enable = uart_mock_rx_enable, |
| .rx_disable = uart_mock_rx_disable, |
| }; |
| |
| struct device uart_mock = { |
| .api = &mock_api, |
| .data = &mock_data, |
| .state = &mock_state, |
| }; |