Mech-Eye API 2.5.2
API reference documentation for Mech-Eye 3D Laser Profiler
Loading...
Searching...
No Matches
Profiler.h
1/*******************************************************************************
2 *BSD 3-Clause License
3 *
4 *Copyright (c) 2016-2025, Mech-Mind Robotics Technologies Co., Ltd.
5 *All rights reserved.
6 *
7 *Redistribution and use in source and binary forms, with or without
8 *modification, are permitted provided that the following conditions are met:
9 *
10 *1. Redistributions of source code must retain the above copyright notice, this
11 * list of conditions and the following disclaimer.
12 *
13 *2. Redistributions in binary form must reproduce the above copyright notice,
14 * this list of conditions and the following disclaimer in the documentation
15 * and/or other materials provided with the distribution.
16 *
17 *3. Neither the name of the copyright holder nor the names of its
18 * contributors may be used to endorse or promote products derived from
19 * this software without specific prior written permission.
20 *
21 *THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 *AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 *IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24 *DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 *DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27 *SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28 *CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29 *OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 *OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 ******************************************************************************/
32
33#pragma once
34#include <memory>
35#include <functional>
36#include "api_global.h"
37#include "ProfilerInfo.h"
38#include "ProfileData.h"
39#include "UserSetManager.h"
40#include "UserSet.h"
41
42namespace mmind {
43
44namespace eye {
45
46class ProfilerImpl;
50enum class OutputLineGPIO {
51 Line21 = 0,
52 Line22,
53 Line23,
54 Line24,
55 Line25,
56 Line26,
57 Line27,
58 Line28,
59};
60
64enum class OutputLevel { Low, High };
68enum class AcquisitionStatus {
69 AcquisitionTriggerWait,
70 AcquisitionActive,
71 FrameTriggerWait,
73 FrameActive,
75};
76
85
90{
91 ProfilerTemperature temperature;
92};
93
99class MMIND_API_EXPORT Profiler
100{
101public:
108 using AcquisitionCallback = std::function<void(const ProfileBatch& batch, void* pUser)>;
113
118
122 Profiler(const Profiler& other) noexcept;
123
127 Profiler& operator=(const Profiler& other) noexcept;
128
138 static std::vector<ProfilerInfo> discoverProfilers(unsigned int timeoutMs = 5000);
139
156 ErrorStatus connect(const ProfilerInfo& info, unsigned int timeoutMs = 5000);
157
177 ErrorStatus saveVirtualDeviceFile(const ProfileBatch& data, const std::string& fileName);
178
194 ErrorStatus connect(const std::string& ipAddress, unsigned int timeoutMs = 5000);
195
207
219 ErrorStatus setHeartbeatInterval(unsigned int intervalMs);
220
232
242
251
260
280 ErrorStatus retrieveBatchData(ProfileBatch& batch, int timeoutMs = 4000) const;
281
295
315
328
342
358 ErrorStatus setOutputForGPIO(OutputLineGPIO outputLine, OutputLevel value, int holdTimeMs = -1);
359
370 ErrorStatus getAcquisitionStatus(AcquisitionStatus& status);
371
372private:
373 friend class ProfilerEvent;
374 friend class InternalInterfaces;
375 std::shared_ptr<ProfilerImpl> _d;
376};
377
378} // namespace eye
379
380} // namespace mmind
Represents a batch of profiles, which can be obtained by calling Profiler::retrieveBatchData()....
Definition ProfileData.h:74
Describes the event of profiler. Use ProfilerEvent::registerProfilerEventCallback to register an even...
Operates the laser profiler. Use Profiler::connect to connect an available laser profiler,...
Definition Profiler.h:100
std::function< void(const ProfileBatch &batch, void *pUser)> AcquisitionCallback
The type of callback function.
Definition Profiler.h:108
ErrorStatus retrieveBatchData(ProfileBatch &batch, int timeoutMs=4000) const
Retrieves a batch of the profiles. There are two ways to retrieve profile data, by polling or callbac...
ErrorStatus registerAcquisitionCallback(const Profiler::AcquisitionCallback &func, void *pUser)
Registers the callback function for data acquisition. There are two ways to retrieve profile data,...
UserSetManager & userSetManager()
Gets the UserSetManager of the laser profiler. UserSetManager provides various operations to manage a...
ErrorStatus disconnect()
Disconnects from the current laser profiler and releases the associated resources.
ErrorStatus setHeartbeatInterval(unsigned int intervalMs)
Sets the time interval at which the client sends periodic heartbeat messages to the profiler side....
ErrorStatus getProfilerStatus(ProfilerStatus &status) const
Gets various statuses of the laser profiler.
Profiler(const Profiler &other) noexcept
Copy constructor.
UserSet & currentUserSet()
Gets the UserSet currently in effect of the laser profiler. UserSet can access all available paramete...
~Profiler()
Destructor.
ErrorStatus setOutputForGPIO(OutputLineGPIO outputLine, OutputLevel value, int holdTimeMs=-1)
Sets controller GPIO output value.
ErrorStatus triggerSoftware()
Sends a software signal to trigger data acquisition. This method is used when no external signals are...
ErrorStatus getAcquisitionStatus(AcquisitionStatus &status)
Gets the acquisition status.
ErrorStatus getProfilerInfo(ProfilerInfo &info) const
Gets the basic information of the laser profiler, such as model, serial number, firmware version,...
ErrorStatus stopAcquisition()
Exits the laser profiler from the acquisition ready status to avoid accidental triggering of scanning...
ErrorStatus connect(const std::string &ipAddress, unsigned int timeoutMs=5000)
Connects to a laser profiler via IP address.
ErrorStatus saveVirtualDeviceFile(const ProfileBatch &data, const std::string &fileName)
Saves the acquired ProfileBatch data, Parameter s, and ProfilerInfo in an MRAW format file that can b...
ErrorStatus connect(const ProfilerInfo &info, unsigned int timeoutMs=5000)
Connects to a laser profiler via ProfilerInfo.
Profiler()
Constructor.
static std::vector< ProfilerInfo > discoverProfilers(unsigned int timeoutMs=5000)
Discovers all available laser profilers and returns the list of information of all available laser pr...
ErrorStatus startAcquisition()
Enters the laser profiler into the acquisition ready status, where it can accept trigger signals for ...
Profiler & operator=(const Profiler &other) noexcept
Copy assignment.
Manages device user sets.
Describes the types of errors.
Definition ErrorStatus.h:12
Describes the laser profiler information.
Describes the laser profiler's statuses.
Definition Profiler.h:90
Describes the laser profiler temperatures.
Definition Profiler.h:81
float controllerCpuTemperature
The temperature (in °C) of the controller CPU.
Definition Profiler.h:82
float sensorCpuTemperature
The temperature (in °C) of the FPGA.
Definition Profiler.h:83