hunting/test/hal/tool/src/CameraHalMock.h
2024-07-25 02:04:40 +08:00

70 lines
2.5 KiB
C++

/*
* 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 CAMERA_HAL_MOCK_H
#define CAMERA_HAL_MOCK_H
#include "CameraHal.h"
#include "HalCpp.h"
#include "HalTestTool.h"
#include <condition_variable>
#include <mutex>
#include <thread>
class CameraHalTest : public CameraHal
{
public:
CameraHalTest(const CameraType &cameraType);
virtual ~CameraHalTest() = default;
void Init(void) override;
void UnInit(void) override;
protected:
void SetCameraMonitor(std::shared_ptr<VCameraHalMonitor> &monitor) override;
StatusCode StartSingleTask(const CameraTaskParam &param) override;
StatusCode StopTask(void) override;
virtual void SetCameraMonitorTrace(std::shared_ptr<VCameraHalMonitor> &monitor);
virtual StatusCode StartSingleTaskTrace(const CameraTaskParam &param);
private:
void MockReportMediaStream(void);
void ReadDataFromH264File(const void *stream, const unsigned int length, const unsigned long long duration_us);
void ReadDataFromG711aFile(const void *stream, const unsigned int length, const unsigned long long duration_us);
void ReadFileInit(void);
void ReadFileUnInit(void);
int ReadJpegFileForMockData(void);
protected:
const CameraType mCameraType;
std::weak_ptr<VCameraHalMonitor> mMonitor;
std::shared_ptr<CameraReportEvent> mFastBootEvent;
void *mReadH264File;
void *mReadG711aFile;
std::mutex mMutex;
std::condition_variable mCv;
bool mTaskRuning;
std::thread mTaskTimerThread;
unsigned long long mVideoTimeStamp_us;
unsigned long long mAudioTimeStamp_us;
unsigned char *mJpegData;
unsigned int mJpegSize;
};
class CameraHalMock : public CameraHalTest
{
public:
CameraHalMock(const CameraType &cameraType);
virtual ~CameraHalMock() = default;
void MockReportCameraEvent(const CameraReportEvent &event);
MOCK_METHOD1(SetCameraMonitorTrace, void(std::shared_ptr<VCameraHalMonitor> &));
MOCK_METHOD1(StartSingleTaskTrace, StatusCode(const CameraTaskParam &));
};
#endif