Program Listing for File MechEyeApi.h

Return to documentation for file (D:\projects\eye\src\api\include\MechEyeApi.h)

/*******************************************************************************
 *BSD 3-Clause License
 *
 *Copyright (c) 2016-2022, Mech-Mind Robotics
 *All rights reserved.
 *
 *Redistribution and use in source and binary forms, with or without
 *modification, are permitted provided that the following conditions are met:
 *
 *1. Redistributions of source code must retain the above copyright notice, this
 *   list of conditions and the following disclaimer.
 *
 *2. Redistributions in binary form must reproduce the above copyright notice,
 *   this list of conditions and the following disclaimer in the documentation
 *   and/or other materials provided with the distribution.
 *
 *3. Neither the name of the copyright holder nor the names of its
 *   contributors may be used to endorse or promote products derived from
 *   this software without specific prior written permission.
 *
 *THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 *AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 *IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 *DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 *DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 *SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 *CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 *OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 ******************************************************************************/

#pragma once
#include <memory>
#include <vector>
#include "api_global.h"
#include "MechEyeFrame.hpp"
#include "MechEyeDataType.h"
#include "MechEyeSettings.h"

namespace mmind {

namespace api {

class MechEyeDeviceImpl;

std::string MMIND_API_EXPORT getApiInformation();

class MMIND_API_EXPORT MechEyeDevice
{
public:
    MechEyeDevice();

    ~MechEyeDevice();

    MechEyeDevice(const MechEyeDevice&) = delete;

    MechEyeDevice& operator=(const MechEyeDevice&) = delete;

    static std::vector<MechEyeDeviceInfo> enumerateMechEyeDeviceList();

    ErrorStatus connect(const MechEyeDeviceInfo& info, int timeout = 10000);

    ErrorStatus connect(const std::string& ipAddress, int port = 5577, int timeout = 10000);

    void disconnect();

    ErrorStatus getDeviceInfo(MechEyeDeviceInfo& info) const;

    ErrorStatus getDeviceIntri(DeviceIntri& intri) const;

    ErrorStatus getDeviceResolution(DeviceResolution& imageResolution) const;

    ErrorStatus captureColorMap(ColorMap& colorMap) const;

    ErrorStatus captureDepthMap(DepthMap& depthMap) const;

    ErrorStatus capturePointXYZMap(PointXYZMap& pointXYZMap) const;

    ErrorStatus capturePointXYZBGRMap(PointXYZBGRMap& pointXYZBGRMap) const;

    ErrorStatus setScan2DExposureMode(Scanning2DSettings::Scan2DExposureMode value) const;

    ErrorStatus getScan2DExposureMode(Scanning2DSettings::Scan2DExposureMode& value) const;

    ErrorStatus setScan2DExposureTime(double value) const;

    ErrorStatus getScan2DExposureTime(double& value) const;

    ErrorStatus setScan2DHDRExposureSequence(std::vector<double>& values) const;

    ErrorStatus getScan2DHDRExposureSequence(std::vector<double>& values) const;

    ErrorStatus setScan2DExpectedGrayValue(int value) const;

    ErrorStatus getScan2DExpectedGrayValue(int& value) const;

    ErrorStatus setScan2DToneMappingEnable(bool value) const;

    ErrorStatus getScan2DToneMappingEnable(bool& value) const;

    ErrorStatus setScan2DSharpenFactor(double value) const;

    ErrorStatus getScan2DSharpenFactor(double& value) const;

    ErrorStatus setScan2DROI(const ROI& value) const;

    ErrorStatus getScan2DROI(ROI& value) const;

    ErrorStatus setScan3DExposure(const std::vector<double>& valueSequence) const;

    ErrorStatus getScan3DExposure(std::vector<double>& valueSequence) const;

    ErrorStatus setScan3DGain(double value) const;

    ErrorStatus getScan3DGain(double& value) const;

    ErrorStatus setScan3DROI(const ROI& value) const;

    ErrorStatus getScan3DROI(ROI& value) const;

    ErrorStatus setDepthRange(const DepthRange& value) const;

    ErrorStatus getDepthRange(DepthRange& value) const;

    ErrorStatus setFringeContrastThreshold(int value) const;

    ErrorStatus getFringeContrastThreshold(int& value) const;

    ErrorStatus setFringeMinThreshold(int value) const;

    ErrorStatus getFringeMinThreshold(int& value) const;

    ErrorStatus setCloudOutlierFilterMode(
        PointCloudProcessingSettings::CloudOutlierFilterMode value) const;

    ErrorStatus getCloudOutlierFilterMode(
        PointCloudProcessingSettings::CloudOutlierFilterMode& value) const;

    ErrorStatus setCloudSmoothMode(PointCloudProcessingSettings::CloudSmoothMode value) const;

    ErrorStatus getCloudSmoothMode(PointCloudProcessingSettings::CloudSmoothMode& value) const;

    ErrorStatus setProjectorFringeCodingMode(ProjectorSettings::FringeCodingMode value) const;

    ErrorStatus getProjectorFringeCodingMode(ProjectorSettings::FringeCodingMode& value) const;

    ErrorStatus setProjectorPowerLevel(ProjectorSettings::PowerLevel value) const;

    ErrorStatus getProjectorPowerLevel(ProjectorSettings::PowerLevel& value) const;

    ErrorStatus setProjectorAntiFlickerMode(ProjectorSettings::AntiFlickerMode value) const;

    ErrorStatus getProjectorAntiFlickerMode(ProjectorSettings::AntiFlickerMode& value) const;

    ErrorStatus setLaserSettings(const LaserSettings& value) const;

    ErrorStatus getLaserSettings(LaserSettings& value) const;

    ErrorStatus setUhpSettings(UhpSettings value) const;

    ErrorStatus getUhpSettings(UhpSettings& value) const;

    ErrorStatus setUhpCaptureMode(UhpSettings::UhpCaptureMode value) const;

    ErrorStatus getUhpCaptureMode(UhpSettings::UhpCaptureMode& value) const;

    ErrorStatus setUhpFringeCodingMode(UhpSettings::UhpFringeCodingMode value) const;

    ErrorStatus getUhpFringeCodingMode(UhpSettings::UhpFringeCodingMode& value) const;

    ErrorStatus saveAllSettingsToUserSets() const;

    ErrorStatus setCurrentUserSet(const std::string& userSetName) const;

    ErrorStatus getCurrentUserSet(std::string& userSetName) const;

    ErrorStatus getAllUserSets(std::vector<std::string>& userSetNames) const;

    ErrorStatus deleteUserSet(const std::string& userSetName) const;

    ErrorStatus addUserSet(const std::string& userSetName) const;

private:
    std::unique_ptr<MechEyeDeviceImpl> _d;
};

} // namespace api
} // namespace mmind