NDEVR
API Documentation
PointScannerOptions.h
1/*--------------------------------------------------------------------------------------------
2Copyright (c) 2019, NDEVR LLC
3tyler.parke@ndevr.org
4 __ __ ____ _____ __ __ _______
5 | \ | | | __ \ | ___|\ \ / / | __ \
6 | \ | | | | \ \ | |___ \ \ / / | |__) |
7 | . \| | | |__/ / | |___ \ V / | _ /
8 | |\ |_|_____/__|_____|___\_/____| | \ \
9 |__| \__________________________________| \__\
10
11Subject to the terms of the Enterprise+ Agreement, NDEVR hereby grants
12Licensee a limited, non-exclusive, non-transferable, royalty-free license
13(without the right to sublicense) to use the API solely for the purpose of
14Licensee's internal development efforts to develop applications for which
15the API was provided.
16
17The above copyright notice and this permission notice shall be included in all
18copies or substantial portions of the Software.
19
20THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
21INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
22PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
23FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25DEALINGS IN THE SOFTWARE.
26
27Library: Hardware
28File: PointScannerOptions
29Included in API: True
30Author(s): Tyler Parke
31 *-----------------------------------------------------------------------------------------**/
32#pragma once
33#include "DLLInfo.h"
34#include <NDEVR/INIInterface.h>
35#include <NDEVR/PasswordString.h>
36
37namespace NDEVR
38{
44 class POINT_SCANNER_API PointScannerOptions : public INIInterface
45 {
46 public:
51 Resource<fltp04> acceleration_bias_limit_movement;
52 Resource<fltp04> acceleration_bias_limit_scan_ready;
53 Resource<fltp04> acceleration_bias_limit_scanning;
54 Resource<fltp04> acceleration_bias_limit_calibrating;
55 Resource<uint02> gyro_bias_time;
56 Resource<fltp04> gyro_proximity;
57 Resource<String> custom_deployment_length;
58 Resource<uint02> passes_per_sweep;
59 Resource<Angle<sint04>> max_calibration_angle_change;
60 Resource<Angle<sint04>> max_scan_angle_change;
61 Resource<Angle<sint04>> scan_angle_tolerance;
62 Resource<Angle<sint04>> max_drift_per_minute;
63 Resource<Angle<fltp08>> smart_angle_scan_increment;
64 //A weak password designed to allow advanced maintenance menus.
65 Resource<PasswordString> maintenance_password;
66 //Used to decode PasswordString for maintenance_password across sessions.
67 static constexpr StringView maintenance_password_encode = "point_scanner_maintenance";
68 Resource<String> last_successful_connection;
69
70 Resource<bool> allow_camera_during_scan;
71 Resource<bool> allow_camera_draping;
72 Resource<bool> auto_orient_camera;
73 Resource<bool> auto_record_camera;
74 Resource<bool> auto_swap_cameras;
75 Resource<bool> ignore_camera_connection;
76
77 Resource<bool> allow_fixed_deployment;
78 Resource<bool> allow_rodded_deployment;
79 // This controls whether the circle scan calibration technique is used to determine probe bias.
80 // True: The scan will perform a two circle scans and then correct the probe drift at the same time that it corrects the scan itself.
81 // False: the probe drift rate is unknown.
82 Resource<bool> perform_calibrated_scan;
83
84 // This controls whether or not the scanner receives orientation correction during the scan.
85 // True: every point sent from the scanner will have an orientation correction along with it.
86 // False: the scanner will not adjust its orientation at all during the scan.Drift incurred will be the same as drift
87 bool live_update_orientation = true;
88
89
90
91 // This controls the algorithm used to adjust for orientation and drift during the scan.
92 // True: the probe will send out raw data directly from the gyro unit which will then be corrected software-end
93 // False: the drift will be calculated on the firmware side and the probe will incur drift.
94 bool use_raw_data_scan = true;
95
96 // This controls the algorithm used to adjust for orientation and drift during deployment.
97 // True: the probe will send out raw data directly from the gyro unit which will then be corrected software-end
98 // False: the drift will be calculated on the firmware side and the probe will incur drift.
99 bool use_raw_data_deployment = false;
100
101 bool auto_reset_digidriver = true;
102
103 bool use_last_reading_average = true;
104
105 Resource<bool> smart_angle_scan;
106 Resource<bool> constant_range_updates;
107 public:
108 PointScannerOptions();
109 bool isMaintenancePasswordValid() const;
110 void getINI(INIFactory& factory) final override;
111 void resetToDefaults();
112 static PointScannerOptions& defaultOptions();
113 };
114}
115
Contains methods for easily reading and writing to an INI file including efficient casting,...
Definition INIReader.h:107
INIInterface()
Constructs an INIInterface with no default INI file.
Resource< fltp08 > light_brightness
Scanner light brightness level.
void getINI(INIFactory &factory) final override
Populates the given INI factory with the options managed by this interface.
Resource< fltp04 > slow_speed
Slow motor speed setting.
Resource< fltp04 > fast_speed
Fast motor speed setting.
Resource< String > remote_connections
Comma-separated list of remote scanner connection strings.
A core part of the engine, stores variables that can be listened to with ResourceListener which will ...
Definition Resource.h:42
The core String View class for the NDEVR API.
Definition StringView.h:58
The primary namespace for the NDEVR SDK.