/* * 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 MCU_PROTOCOL_TEST_TOOL_H #define MCU_PROTOCOL_TEST_TOOL_H #include "LinuxApiMock.h" #include "UartDeviceTestTool.h" #include #include constexpr int READ_PRINT = 0; constexpr int WRITE_PRINT = 1; class McuProtocolTestTool : virtual public UartDeviceTestTool { public: McuProtocolTestTool(); virtual ~McuProtocolTestTool() = default; void Init(std::shared_ptr &mock, const UartInfo &uart); void UnInit(void); private: void CheckSerialNumber(const void *buf, const size_t &count); void ResetCheckCode(const void *buf, const size_t &count); void ReplySelectSucceed(std::shared_ptr &mock, const int &uartFd); void IpcMissionProtocolHandle(std::shared_ptr &mock, const int &uartFd, const void *buf, size_t count); void IpcMissionProtocolInit(std::shared_ptr &mock, const int &uartFd, const void *buf, size_t count); void CutOffPowerSupplyProtocolHandle(std::shared_ptr &mock, const int &uartFd, const void *buf, size_t count); void FeedWatchDogProtocolHandle(std::shared_ptr &mock, const int &uartFd, const void *buf, size_t count); void FeedingCycleProtocolHandle(std::shared_ptr &mock, const int &uartFd, const void *buf, size_t count); void FeedingCycleProtocolInit(std::shared_ptr &mock, const int &uartFd, const void *buf, size_t count); void LockProtocolHandle(void); void UnlockProtocolHandle(void); void UnlockThread(void); private: static void PrintHexadecimalData(const void *buf, const size_t &bufLength, const int event); private: std::mutex mMutex; bool mThreadRuning; std::thread mLockThread; std::thread mUnLockThread; unsigned int mSerialNumberCheck; }; #endif