58 virtual TimeSpan getScanTime(
const ScanSetupSettings& settings)
const override;
59 virtual String scannerType()
const override;
60 virtual void standardUpdate();
61 virtual Motor* headMotor(
uint01 axis)
const override;
62 virtual void startScan(
const ScanSetupSettings& settings)
override;
63 virtual void stopScan()
override;
64 virtual void pauseScan()
override;
65 virtual void resumeScan()
override;
66 virtual void createScanner()
override;
67 virtual bool isValid()
const override;
68 virtual bool canDeploy()
const override {
return false; };
70 virtual void recordPoint(
bool record_to_cloud =
true,
bool record_to_mesh =
true)
override;
71 void startScanProcess();
73 virtual bool supportsContinuousScan()
const override {
return false; }
74 virtual bool executeManualCommand(
const String& command)
override;
75 virtual bool scanModeSupported(
ScanMode scan_mode)
const override;
76 virtual Bounds<2, Angle> scanBounds()
const;
77 void requestDisconnect(
bool disconnect) { m_request_disconnect = disconnect; }
78 virtual void setScannerState(ScannerState scanner_state)
override;
79 virtual PositionSensor* positionSensor()
const override;
80 virtual RangeSensor* rangeSensor()
const override {
return m_range_sensor; }
81 ScannerState scannerState()
const override;
82 Bounds<2, Angle> maxScanBounds(
ScanMode mode)
const override;
83 virtual Connection* connection()
const override {
return m_connection; };
84 [[nodiscard]]
virtual Buffer<Battery*> batteries()
const;
85 [[nodiscard]]
virtual Buffer<TemperatureSensor*> temperatureSensors()
const;
86 [[nodiscard]]
virtual OrientationSensor* orientationSensor()
const;
87 [[nodiscard]]
virtual TimeSpan scanTimeRemaining()
const;
88 [[nodiscard]]
virtual fltp04 getScanPercent()
const;
89 int processPoints(std::vector<Optech::RtLidar::LidarPoint>& lidarPointsArray);
90 int processPoints(Optech::RtLidar::LidarPoint* points,
uint04 size);
91 static OPTECH_POLARIS_API::SPlsScanROI Convert(
const ScanSetupSettings& setting);
94 void recordPoint(
const PolarScanRecord<fltp04>& record,
bool record_to_cloud =
true,
bool record_to_mesh =
true)
override;
95 virtual FileRequest scanModelFile()
const override;
96 virtual Matrix<fltp08> scanModelFileTransform()
const;
97 virtual void update()
override;
98 void parkDevice()
override;
99 TimeSpan updateInterval()
const override;
100 Matrix<fltp08> laserTransform(
const Vector<3, Angle>& head_angle)
const override;
101 virtual Matrix<fltp08> scanTransform()
const;
102 virtual INIFactory getINI()
override;
109 virtual void OnCommConnected(
unsigned int ip,
unsigned int port)
override;
110 virtual void OnCommDrop(
unsigned int ip,
unsigned int port)
override;
111 virtual void OnCommError(
unsigned int ip,
unsigned int port)
override;
112 virtual void OnCommZeroLength(
unsigned int ip,
unsigned int port)
override;
131 virtual void OnGetSoftwareVersions(
const OPTECH_POLARIS_API::PlsSoftwareVersion* softwareVersion)
override;
134 virtual void OnGetSystemSerial(
const int serial_num)
override;
138 virtual void OnGetSystemTime(
const SYSTEMTIME time)
override;
142 virtual void OnSetSystemTime(
const int status)
override {};
147 virtual void OnUpdateSoftwareAndFirmware(
const int status)
override;
151 virtual void OnUpdateCalAndConfig(
const int status)
override {};
155 virtual void OnGetSystemState(
const int system_state)
override;
163 virtual void OnGetBatteryStatic(
const OPTECH_POLARIS_API::SPlsBatteryConst batter_static)
override;
172 virtual void OnGetBatteryDynamic(
const OPTECH_POLARIS_API::SPlsBatteryDynamic battery_dynamic)
override;
178 virtual void OnGetDiskInfo(
const float capacity,
const float free_space)
override;
183 virtual void OnGetModelNumber(
const int modelNumber)
override;
185 virtual void OnSetExternalCameraTrigger(
const int status)
override;
191 virtual void OnSetPanPosition(
const int status)
override;
200 virtual void OnStopCamera(
const int status)
override;
208 virtual void OnGetGpsStatus(
const OPTECH_POLARIS_API::SPlsGpsStatus gps_status)
override;
215 virtual void OnGetGpsPositionECEF(
const OPTECH_POLARIS_API::SPlsPositionD gps_position)
override;
222 virtual void OnGetGpsPositionGeodetic(
const OPTECH_POLARIS_API::SPlsPosGeodeticF)
override;
229 virtual void OnGetCompass(
const OPTECH_POLARIS_API::SPlsCompass compass_read)
override;
235 virtual void OnGetInclinometer(
const OPTECH_POLARIS_API::SPlsInclinometer incli_read)
override;
240 virtual void OnGetWirelessRadioMode(
const int wireless_mode)
override {};
244 virtual void OnSetWirelessRadioMode(
const int status)
override {};
248 virtual void OnGetEthernetMode(
const int eth_mode)
override {};
252 virtual void OnSetEthernetMode(
const int status)
override {};
256 virtual void OnGetScanRasterView(
const unsigned char* rasterData,
const int dataBufferSize)
override;
265 virtual void OnGetScanCameraImage(
const int image_index,
const unsigned char* image_buf,
const int bufSize)
override {};
273 virtual void OnListSurveys(
const int num_names,
const OPTECH_POLARIS_API::SPlsFileName* array_names)
override {};
277 virtual void OnDeleteSurvey(
const int status)
override {};
281 virtual void OnExportSurvey(
const int status)
override {};
285 virtual void OnAddScanRoi(
const int roiIndex,
const int status)
override {};
290 virtual void OnSetSurveyCamFlag(
const int status)
override;
294 virtual void OnGetSurveyTimeEstimate(
const int seconds)
override;
298 virtual void OnSetSurveyOccupyPoint(
const int status)
override {};
302 virtual void OnGetSurveyMetadata(
const unsigned char*
meta_data,
const unsigned int dataSize)
override;
304 virtual void OnSetScannerSpeed(
const int status)
override;
305 virtual void OnSetScanParameters(
const int roiIndex,
const int status)
override;
306 virtual void OnGetScannerSpeed(
const int scannerSpeed)
override;
307 virtual void OnGetLaserTemperatures(
const int status,
const float boosterTemp,
const float prepumpTemp,
const float seedTemp,
const float caseTemp)
override;
308 virtual void OnGetScannerType(
const int scannerType)
override;
312 virtual void OnSurveyStart(
const int status)
override;
316 virtual void OnSurveyStop(
const int status)
override;
320 virtual void OnSurveyPause(
const int status)
override;
324 virtual void OnSurveyResume(
const int status)
override;
329 virtual void OnGetScanIndex(
const int scan_index)
override {};
335 virtual void OnListScanPresets(
const int num_names,
const OPTECH_POLARIS_API::SPlsFileName* array_names)
override {};
349 virtual void OnGetScanPreset(
char* xml_file,
const int file_size)
override {};
355 virtual void OnAddNewSurvey(
const int status)
override {};
364 virtual void OnListProject(
const int num_names,
const OPTECH_POLARIS_API::SPlsFileName* array_names)
override {};
368 virtual void OnExternalCameraConfigImport(
const int status)
override {};
373 virtual void OnSetProjectContext(
const int status)
override;
377 virtual void OnGetProjectContext(
const OPTECH_POLARIS_API::SPlsFileName* projectContextName)
override {};
387 virtual void OnListPlans(
const int num_names,
const OPTECH_POLARIS_API::SPlsFileName* array_names)
override {};
391 virtual void OnGetPlanStatus(
const int status)
override {};
395 virtual void OnPlanStart(
const int status)
override {};
399 virtual void OnPlanFileImport(
const int status)
override {};
403 virtual void OnPlanExport(
const int status)
override {};
408 virtual void OnGetPlanStations(
const int num_names,
const OPTECH_POLARIS_API::SPlsFileName* array_names)
override;
412 virtual void OnGetPlanStationStatus(
const int status)
override {};
417 virtual void OnListPlanStationTargets(
const int num_names,
const OPTECH_POLARIS_API::SPlsFileName* array_names)
override;
426 virtual void OnListCoordinates(
const int num_names,
const OPTECH_POLARIS_API::SPlsFileName* array_names)
override;
432 virtual void OnGetCoordinates(
const OPTECH_POLARIS_API::SPlsCoordinates coordinates)
override;
436 virtual void OnAddCoordinates(
const int status)
override {};
441 virtual void OnGetIPAddress(
const char* eth_addr,
const char* wls_addr)
override {};
444 virtual void OnAddCustomFovScanRoi(
const int status)
override {};
455 virtual void OnGetPowerSource(
const int source,
const float volts)
override;
459 virtual void OnSyncSystemTimeWithGPS(
const int status)
override {};
466 virtual void OnListExtCamCfgFile(
const int num_names,
const OPTECH_POLARIS_API::SPlsFileName* array_cfg_names)
override {};
469 virtual void OnDeleteExtCamCfgFile(
const int status)
override {};
471 virtual void OnClearSurvey(
const int status)
override {};
474 virtual void OnDeletePlan(
const int status)
override;
479 virtual void OnGetSurveySizeEstimate(
const float file_size)
override;
482 virtual void OnExportProj(
const int status)
override;
484 virtual void OnDeleteProj(
const int status)
override;
486 virtual void OnGetProjectInfo(
const float size,
const int nSurveys)
override;
487 virtual void OnPresetImport(
const int status)
override;
488 virtual void OnGetPlanStationGeorefType(
const int type)
override;
489 virtual void OnPlanReset(
const int status)
override;
490 virtual void OnExportCalAndConfigFile(
const int status)
override;
495 virtual void OnChangeOperatingMode(
const int status)
override;
500 virtual void OnListNearbyStations(
const int num_names,
const OPTECH_POLARIS_API::SPlsFileName* array_names)
override;
506 virtual void OnCalcTargetRelLocation(
const int validFlag,
const double range,
const double panAngle,
const double galvoAngle)
override;
512 virtual void OnCalcTargetCentroid(
const OPTECH_POLARIS_API::SPlsPositionD centroid,
const float rx,
const float ry)
override;
517 virtual void OnCalcBacksight(
const int valid_flag,
const float heading)
override;
524 virtual void OnCalcResection(
525 const OPTECH_POLARIS_API::SPlsPositionD position,
526 const OPTECH_POLARIS_API::SPlsAttitudeF attitude,
528 std::vector<float> residual
531 virtual void OnAddTarget(
const int status)
override;
536 virtual void OnFindRetroTarget(OPTECH_POLARIS_API::SPlsRetroTargetPosn retro, std::vector<OPTECH_POLARIS_API::SPlsRetroTargetData> targetData)
override;
541 virtual void OnCalcManualCentroid(
const OPTECH_POLARIS_API::SPlsPositionD centroid_local_pos,
const float rx,
const float ry)
override;
550 virtual void OnSetAttenuator(
const int status)
override;
567 virtual void OnSetLaserPRF(
const int status)
override;
571 virtual void OnSetLaserOn(
const int status)
override;
579 virtual void OnGetGalvoPosition(
const int galvo_position)
override;
583 virtual void OnSetGalvoPosition(
const int status)
override;
591 virtual void OnSaveRawData(
const int status)
override;
597 virtual void OnDatErrorMessage(
const int err_code,
const int msg_id,
const int int_err_code)
override;
600 virtual void OnDatGeneralMessage(
const int msg_code)
override;
605 virtual void OnDatSurveyProgress(
const int tasks,
const int current_task,
const float current_progress,
const __int64 survey_size)
override;
608 virtual void OnDatStartScan(
const int scan_index)
override;
611 virtual void OnDatEndScan(
const int scan_index)
override;
614 virtual void OnDatScan(
const unsigned char* data_buf,
const int data_size)
override;
617 virtual void OnDatScanHeader(
const unsigned char* rawHeaderBuffer,
const int bufferSize)
override;
620 virtual void OnDatPpsRecord(
const unsigned char* rawPpsBuffer,
const int bufferSize)
override;
623 virtual void OnDatNmeaRecord(
const unsigned char* rawNmeaBuffer,
const int bufferSize)
override;
626 virtual void OnDatCamera(
const int cam_number,
const unsigned char* img_buf,
const int data_size)
override;
630 virtual void OnDatDatafile(
const int flag,
const unsigned char* data_buf,
const int data_size)
override;
635 virtual void Alert(std::string alert)
override;
639 void initConnection();
640 OPTECH_POLARIS_API::IPolarisControl* m_polaris_control;
641 Motor* m_scope =
nullptr;
642 Motor* m_head =
nullptr;
650 Battery* m_battery_1 =
nullptr;
651 Battery* m_battery_2 =
nullptr;
652 Battery* m_power_source =
nullptr;
655 OPTECH_POLARIS_API::SPlsScanROI m_survey_parameters;
656 Time m_last_standard_refresh;
657 Time m_last_scan_update_time;
661 bool m_is_initializing_scan =
false;
662 bool m_is_valid =
false;
663 bool m_is_init =
false;
664 bool m_use_internal_camera =
false;
665 bool m_use_external_camera =
false;
667 PowerSource m_current_power_source;