Skip to content

File cameraInterface.h

File List > src > cameraInterface.h

Go to the documentation of this file

/*******************************************************
 * Author: Intelligent Medical Systems
 * License: see LICENSE.md file
 *******************************************************/
#ifndef CAMERA_INTERFACE_H
#define CAMERA_INTERFACE_H

#include <xiApi.h>

#include <QtCore>
#include <boost/asio/io_service.hpp>
#include <boost/scoped_ptr.hpp>

#include "camera.h"
#include "constants.h"
#include "imageContainer.h"
#include "xiAPIWrapper.h"

class CameraInterface : public QObject
{
    Q_OBJECT

  public:
    CameraInterface() : m_cameraHandle(INVALID_HANDLE_VALUE){};

    void Initialize(const std::shared_ptr<XiAPIWrapper> &apiWrapper);

    std::shared_ptr<XiAPIWrapper> m_apiWrapper;

    ~CameraInterface();

    void SetCamera(const QString &cameraType, const QString &cameraFamily);

    int OpenDevice(DWORD cameraDeviceID);

    void StartAcquisition(QString cameraIdentifier);

    int StopAcquisition() const;

    void CloseDevice();

    void SetCameraProperties(const QString &cameraModel);

    void SetCameraIndex(int index);

    QMap<QString, float> m_cameraTemperature = {
        {CHIP_TEMP, 0.},
        {HOUSE_TEMP, 0.},
        {HOUSE_BACK_TEMP, 0.},
        {SENSOR_BOARD_TEMP, 0.},
    };

    HANDLE GetHandle() const;

    QMap<QString, DWORD> m_availableCameras;

    QStringList GetAvailableCameraIdentifiers();

    QString GetCameraIdentifier(HANDLE cameraHandle) const;

    QString m_cameraIdentifier;

    QString m_cameraSN;

    QString m_cameraType;

    int m_cameraIndex;

    std::unique_ptr<Camera> m_camera;

    std::unique_ptr<CameraFamily> m_cameraFamily;

    QString m_cameraFamilyName;

    HANDLE m_cameraHandle;
};

#endif // CAMERA_INTERFACE_H