/* * Copyright (c) 2023 Fancy Code. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef UART_DEVICE_TEST_TOOL_H #define UART_DEVICE_TEST_TOOL_H #include "LinuxApiMock.h" #include "UartDevice.h" #include constexpr int UART_DEVICE_READ_NOTHING = 0; class UartDeviceTestTool { public: UartDeviceTestTool() = default; virtual ~UartDeviceTestTool() = default; /** * @brief Enable the UartDevice module to run and debug on Ubuntu * * @param mock * @param uart * @return int Return a virtual handle, and the simulated test code uses this handle to bind the device. */ int RegisterUartDevice(std::shared_ptr &mock, const UartInfo &uart); /** * @brief Get the Device Mock Fd object * * @param uart * @return int fd of uart device. */ int GetDeviceMockFd(const UartInfo &uart); /** * @brief * * @param uart */ void UnregisterUartDevice(const UartInfo &uart); /** * @brief Set the Send Api object * Set the length of a successful send. * @param mock * @param uart * @param length The length of a successful send. */ void SetSendApiOnce(std::shared_ptr &mock, const UartInfo &uart, const ssize_t &length); /** * @brief Set the Recv Api Once object * Set the data received at once. * @param mock * @param uart * @param recvBuff The data that will be received. * @param length The length of data that will be received. */ void SetRecvApiOnce(std::shared_ptr &mock, const UartInfo &uart, void *recvBuff, const ssize_t &length); private: std::map mDeviceMap; }; #endif