NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
ais_targets_interface.h
Go to the documentation of this file.
1 #ifndef SDK_ECDIS_AIS_TARGETS_INTERFACE_H_
11 #define SDK_ECDIS_AIS_TARGETS_INTERFACE_H_
12 #pragma once
13 
14 #include <base/inc/platform.h>
15 #include <base/inc/sdk_results.h>
16 #include <base/inc/base_types.h>
26 
27 SDK_VESSELS_BEGIN_NAMESPACE
28 
39 
52 
73 
79 
82 inline AISTargetFOID AISTargetMMSI2AISTargetFOID(const SDKUInt32& mmsi)
83 { return static_cast<AISTargetFOID>(mmsi & 0x3FFFFFFF); }
84 
87 inline SDKUInt32 AISTargetFOID2AISTargetMMSI(const AISTargetFOID& foid)
88 { return static_cast<SDKUInt32>(foid & 0x000000003FFFFFFF); }
89 
93 { return target_foid | 0x8000000000000000; }
94 
98 { return past_track_foid & ~0x8000000000000000; }
99 
102 inline bool IsPastTrackFoid(const AISTargetFOID& foid)
103 { return (0ULL != (foid & 0x8000000000000000)); }
104 
108  const SDKUInt32& mmsi, const SDKUInt32& msg_link_id, const SDKUInt32& site_id)
109 {
110  const AISTargetFOID link_id = static_cast<AISTargetFOID>(
111  msg_link_id & 0x0000FFFF);
112  const AISTargetFOID s_id = static_cast<AISTargetFOID>(
113  site_id & 0x0000007F);
114  return mmsi | (link_id << 32UL) | (s_id << 48UL) | 0x4000000000000000;
115 }
116 
117 inline AISTargetFOID MMSI2AisSynthTargetFoid(const SDKUInt32& mmsi)
118 { return static_cast<AISTargetFOID>((mmsi & 0x3FFFFFFF) | 0x2000000000000000); }
119 
120 inline AISTargetFOID IMO2AisSynthTargetFoid(const SDKUInt32& src_mmsi, const SDKUInt32& imo)
121 {
122  const AISTargetFOID s_imo = static_cast<AISTargetFOID>( imo & 0x00FFFFFF);
123  return static_cast<AISTargetFOID>((src_mmsi & 0x3FFFFFFF) | (s_imo << 32UL) | (1UL << 56UL) | 0x2000000000000000);
124 }
125 inline AISTargetFOID ASMTargetID2AisSynthTargetFoid(const SDKUInt32& mmsi, const SDKUInt32& msg_link_id, const SDKUInt32& site_id)
126 {
127  const AISTargetFOID link_id = static_cast<AISTargetFOID>(
128  msg_link_id & 0x0000FFFF);
129  const AISTargetFOID s_id = static_cast<AISTargetFOID>(
130  site_id & 0x0000007F);
131  return mmsi | (link_id << 32UL) | (s_id << 48UL) |(2UL << 56UL) | 0x2000000000000000;
132 }
133 
134 
137 inline bool IsASMFoid(const AISTargetFOID& foid)
138 { return (0ULL != (foid & 0x4000000000000000)); }
139 
140 inline bool IsAisSynthTargetFoid(const AISTargetFOID& foid)
141 { return (0ULL != (foid & 0x2000000000000000)); }
142 
143 
144 enum GetAISTargetsParameter {
145  kGetAISTargetsParameter_FindContext = 0,
146  kGetAISTargetsParameter_OrderBy,
147  kGetAISTargetsParameter_TargetType,
148 };
149 
150 enum GetAISTargets_OrderBy_Parameter {
151  kGetAISTargets_OrderBy_None = 0,
152  kGetAISTargets_OrderBy_Name,
153  kGetAISTargets_OrderBy_MMSI,
154  kGetAISTargets_OrderBy_IMO,
155  kGetAISTargets_OrderBy_Distance,
156  kGetAISTargets_OrderBy_DCPA,
157  kGetAISTargets_OrderBy_TCPA
158 };
159 
160 enum GetAISTargets_TargetType_Parameter
161 {
162  kGetAISTargets_TargetType_None,
163  kGetAISTargets_TargetType_RegularTarget,
164  kGetAISTargets_TargetType_SynthTarget,
165  kGetAISTargets_TargetType_AsmTarget,
166 };
167 
171 {
172 public:
173  // Only methods of IUpdatedTargets interface
174  SDK_IMPLEMENT_IID(IUpdatedAISTargets)
175  SDK_END_INTERFACE(IUpdatedAISTargets)
176 };
177 SDK_DECLARE_IID(IUpdatedAISTargets)
178 
182 {
183 public:
185  virtual SDKResult SDK_CALLTYPE GetTargetsDataset(const DatasetID& dsid,
186  IAISTargetsDatasetSP& targets_dataset) throw() = 0;
187 
189  virtual SDKResult SDK_CALLTYPE GetTarget(const AISTargetFOID& foid,
190  IAISTargetSP& target) const throw() = 0;
192  virtual SDKResult SDK_CALLTYPE GetTarget(const sdk::gdb::ObjectID& oid,
193  IAISTargetSP& target) const throw() = 0;
194 
196  virtual SDKResult SDK_CALLTYPE GetTargetPastTrack(
197  const AISTargetFOID& target_foid,
198  IAISTargetPastTrackSP& target_past_track) const throw() = 0;
200  virtual SDKResult SDK_CALLTYPE GetTargetPastTrack(
201  const sdk::gdb::ObjectID& target_oid,
202  IAISTargetPastTrackSP& target_past_track) const throw() = 0;
203 
205  virtual SDKResult SDK_CALLTYPE RemoveTarget(
206  const AISTargetFOID& foid) throw() = 0;
208  virtual SDKResult SDK_CALLTYPE RemoveTarget(
209  const sdk::gdb::ObjectID& oid) throw() = 0;
210 
212  virtual SDKResult SDK_CALLTYPE SetOwnShip(
213  const SDK_VESSELS_NAMESPACE::IOwnShipDatasetSP& own_ship_ds) throw() = 0;
214 
216  virtual SDKResult SDK_CALLTYPE SetManager(
217  const IAISTargetsManagerSP& manager) throw() = 0;
219  virtual SDKResult SDK_CALLTYPE GetManager(
220  IAISTargetsManagerSP& manager) const throw() = 0;
221 
222  SDK_IMPLEMENT_IID(IAISTargetsWorkspace)
223  SDK_END_INTERFACE(IAISTargetsWorkspace)
224 };
225 SDK_DECLARE_IID(IAISTargetsWorkspace)
226 
227 class IAISTargetsDataset : public IVesselDataset
230 {
231 public:
266  virtual SDKResult SDK_CALLTYPE UpdateTargetData(
267  const SDK_NMEA_NAMESPACE::IParsedNMEASentenceDataSP& parsed_nmea_data,
268  IUpdatedAISTargetsSP& updated_targets) throw() = 0;
269 
273  virtual SDKResult SDK_CALLTYPE OwnShipParametersChanged(
274  IUpdatedAISTargetsSP& updated_targets) throw() = 0;
275 
277  virtual SDKResult SDK_CALLTYPE GetTarget(const AISTargetFOID& foid,
278  IAISTargetSP& target) const throw() = 0;
280  virtual SDKResult SDK_CALLTYPE GetTarget(const sdk::gdb::ObjectID& oid,
281  IAISTargetSP& target) const throw() = 0;
282 
284  virtual SDKResult SDK_CALLTYPE GetTargetPastTrack(
285  const AISTargetFOID& target_foid,
286  IAISTargetPastTrackSP& target_past_track) const throw() = 0;
288  virtual SDKResult SDK_CALLTYPE GetTargetPastTrack(
289  const sdk::gdb::ObjectID& target_oid,
290  IAISTargetPastTrackSP& target_past_track) const throw() = 0;
291 
293  virtual SDKResult SDK_CALLTYPE GetTargets(
294  IAISTargetsCollectionSP& targets_collection,
295  const ISDKParametersSP& params) const throw() = 0;
296 
298  virtual SDKResult SDK_CALLTYPE RemoveTarget(
299  const AISTargetFOID& foid) throw() = 0;
301  virtual SDKResult SDK_CALLTYPE RemoveTarget(
302  const sdk::gdb::ObjectID& oid) throw() = 0;
303 
304  virtual SDKResult SDK_CALLTYPE UpdateTarget( const AISTargetFOID& foid) throw() = 0;
305 
307  virtual SDKResult SDK_CALLTYPE SetOwnShip(
308  const SDK_VESSELS_NAMESPACE::IOwnShipDatasetSP& own_ship_ds) throw() = 0;
310  virtual SDKResult SDK_CALLTYPE GetOwnShip(
311  SDK_VESSELS_NAMESPACE::IOwnShipDatasetSP& own_ship_ds) const throw() = 0;
312 
316 
319  virtual SDKResult SDK_CALLTYPE SelectTarget(
320  const AISTargetFOID& target_foid) throw() = 0;
323  virtual SDKResult SDK_CALLTYPE GetSelectedTarget(
324  AISTargetFOID& target_foid) throw() = 0;
325 
327  virtual SDKResult SDK_CALLTYPE AcknowledgeTargetAlarms(
328  const AISTargetFOID& target_foid, const TargetAlarmIDs& alarms,
329  IUpdatedAISTargetsSP& updated_targets) throw() = 0;
330 
332  virtual SDKResult SDK_CALLTYPE ResetTargetsPastTrack() throw() = 0;
333 
334  SDK_IMPLEMENT_IID(IAISTargetsDataset)
335  SDK_END_INTERFACE(IAISTargetsDataset)
336 };
337 SDK_DECLARE_IID(IAISTargetsDataset)
338 
342 {
343 public:
345  virtual SDKResult SDK_CALLTYPE EditTarget(SDKUInt32 mmsi,
346  AISTargetFeatureClassCode class_code,
347  IAISTargetEditSP& target_edit) throw() = 0;
348 
349 virtual SDKResult SDK_CALLTYPE EditTarget2(const AISTargetFOID& foid,
350  AISTargetFeatureClassCode class_code,
351  IAISTargetEditSP& target_edit) throw() = 0;
352 
353  SDK_IMPLEMENT_IID(IAISTargetsDatasetEdit)
354  SDK_END_INTERFACE(IAISTargetsDatasetEdit)
355 };
356 SDK_DECLARE_IID(IAISTargetsDatasetEdit)
357 
358 class IAISTarget : public IVessel
361 {
362 public:
364  virtual SDKResult SDK_CALLTYPE GetFOID(AISTargetFOID& foid) const throw() = 0;
365 
367  virtual SDKResult SDK_CALLTYPE GetTargetPosition(
368  SDKGeoPoint& position) const throw() = 0;
369 
372  virtual SDKResult SDK_CALLTYPE ResetPastTrack() throw() = 0;
373 
374  SDK_IMPLEMENT_IID(IAISTarget)
375  SDK_END_INTERFACE(IAISTarget)
376 };
377 SDK_DECLARE_IID(IAISTarget)
378 
381 {
382 public:
384  virtual SDKResult UpdateTargetPosition(const SDKGeoPoint& pos) throw() = 0;
385 
387  virtual SDKResult SetTargetAttributeValue(
388  const AttributeClassCode& class_code, const SDKAny& value) throw() = 0;
389 
390  SDK_IMPLEMENT_IID(IAISTargetEdit)
391  SDK_END_INTERFACE(IAISTargetEdit)
392 };
393 SDK_DECLARE_IID(IAISTargetEdit)
394 
395 class IAISTargetPastTrack : public ISDKComponent
398 {
399 public:
401  virtual SDKResult SDK_CALLTYPE GetFOID(AISTargetFOID& foid) const throw() = 0;
402 
404  virtual SDKResult SDK_CALLTYPE GetVisiblePastTrack(
405  const SDKUInt32& past_track_interval, const SDKUInt32& past_track_length,
406  sdk::geometry::IPointCollectionSP& past_track) throw() = 0;
407 
409  virtual SDKResult SDK_CALLTYPE ResetPastTrack() throw() = 0;
410 
411  SDK_IMPLEMENT_IID(IAISTargetPastTrack)
412  SDK_END_INTERFACE(IAISTargetPastTrack)
413 };
414 SDK_DECLARE_IID(IAISTargetPastTrack)
415 
419 {
420 public:
422  virtual SDKResult SDK_CALLTYPE Next(IAISTargetSP& target) const throw() = 0;
423 
425  virtual SDKResult SDK_CALLTYPE Reset() throw() = 0;
426 
427  SDK_IMPLEMENT_IID(IAISTargetsEnum)
428  SDK_END_INTERFACE(IAISTargetsEnum)
429 };
430 SDK_DECLARE_IID(IAISTargetsEnum)
431 
435 {
436 public:
438  virtual SDKResult SDK_CALLTYPE GetCount(
439  SDKUInt32& targets_count) const throw() = 0;
440 
442  virtual SDKResult SDK_CALLTYPE GetTarget(const SDKUInt32& target_index,
443  IAISTargetSP& target) const throw() = 0;
444 
445  SDK_IMPLEMENT_IID(IAISTargetsCollection)
446  SDK_END_INTERFACE(IAISTargetsCollection)
447 };
448 SDK_DECLARE_IID(IAISTargetsCollection)
449 
450 SDK_VESSELS_END_NAMESPACE
451 
452 #endif // SDK_ECDIS_AIS_TARGETS_INTERFACE_H_
parsed_nmea_sentence_data_interface.h
A container for parsed NMEA sentence(s) data fields.
IAISTargetsWorkspace::SetManager
virtual SDKResult SDK_CALLTYPE SetManager(const IAISTargetsManagerSP &manager)=0
Sets new instance of AIS targets manager.
IAISTargetsDataset::GetSelectedTarget
virtual SDKResult SDK_CALLTYPE GetSelectedTarget(AISTargetFOID &target_foid)=0
Returns selected AIS target FOID Implementation depends of currently used targets manager.
sdk_results.h
A list of SDK error/return results.
geometry.h
Describes interfaces that manages a geometry objects.
IAISTargetsDatasetEdit
AIS targets dataset.
Definition: ais_targets_interface.h:341
IAISTargetsDataset::SetOwnShip
virtual SDKResult SDK_CALLTYPE SetOwnShip(const SDK_VESSELS_NAMESPACE::IOwnShipDatasetSP &own_ship_ds)=0
Sets the own ship dataset instance.
base_types.h
SDK base types.
IAISTargetsCollection
AIS targets collection.
Definition: ais_targets_interface.h:434
IAISTargetsEnum
AIS targets enumerator.
Definition: ais_targets_interface.h:418
IUpdatedTargets
Set of updated target's.
Definition: updated_targets_interface.h:46
IAISTargetsDataset::GetTarget
virtual SDKResult SDK_CALLTYPE GetTarget(const AISTargetFOID &foid, IAISTargetSP &target) const =0
Returns the AIS target record by it's FOID.
IAISTargetsDataset::UpdateTargetData
virtual SDKResult SDK_CALLTYPE UpdateTargetData(const SDK_NMEA_NAMESPACE::IParsedNMEASentenceDataSP &parsed_nmea_data, IUpdatedAISTargetsSP &updated_targets)=0
Updates AIS target information or creates new target Valid source data is a result of INMEAParser::Pa...
TargetAlarmIDs
SDKUInt32 TargetAlarmIDs
AIS/Radar/Sonar target alarm IDs (see the TargetAlarmType description below)
Definition: vessels_const.h:60
IUpdatedAISTargets
Set of updated AIS targets.
Definition: ais_targets_interface.h:170
updated_targets_interface.h
Updated targets interface.
IAISTargetEdit
Single AIS target editor.
Definition: ais_targets_interface.h:380
IVesselWorkspace
Provides access to members that manage the vessels workspace.
Definition: vessels_interface.h:32
IAISTargetsWorkspace::SetOwnShip
virtual SDKResult SDK_CALLTYPE SetOwnShip(const SDK_VESSELS_NAMESPACE::IOwnShipDatasetSP &own_ship_ds)=0
Sets the own ship dataset instance.
ais_targets_const.h
Set of specific for AIS targets constants.
AISTargetFOID2AISTargetMMSI
SDKUInt32 AISTargetFOID2AISTargetMMSI(const AISTargetFOID &foid)
Converts AIS target FOID to appropriate AIS target MMSI.
Definition: ais_targets_interface.h:87
IVesselDataset
Provides access to members that provide information about a VesselDataset.
Definition: vessels_interface.h:68
IAISTargetsManager
An interface for high-level managing of AIS targets over the database Allows to controls the target's...
Definition: ais_targets_manager_interface.h:57
IsPastTrackFoid
bool IsPastTrackFoid(const AISTargetFOID &foid)
Checks, if given FOID belongs to Past Track Feature.
Definition: ais_targets_interface.h:102
parameters_interface.h
Provides access to members for managing a parameter set.
IAISTargetsWorkspace::GetTargetPastTrack
virtual SDKResult SDK_CALLTYPE GetTargetPastTrack(const AISTargetFOID &target_foid, IAISTargetPastTrackSP &target_past_track) const =0
Returns the AIS target past track record by AIS target FOID.
IAISTargetsDataset::RemoveTarget
virtual SDKResult SDK_CALLTYPE RemoveTarget(const AISTargetFOID &foid)=0
Removes one AIS target entry from dataset by target's FOID.
ecdislayer_const.h
The ecdislayer constants.
SDKResult
SDKInt32 SDKResult
Type of all error or return codes which SDK functions can end with.
Definition: sdk_results.h:17
AISTargetFoid2PastTrackFoid
AISTargetFOID AISTargetFoid2PastTrackFoid(const AISTargetFOID &target_foid)
Converts AIS target FOID to appropriate AIS target past track FOID.
Definition: ais_targets_interface.h:92
IAISTarget
Single AIS target.
Definition: ais_targets_interface.h:360
SDKGeoPoint
Geo point in degree units.
Definition: geometry_base_types.h:1727
IAISTargetsDataset::AcknowledgeTargetAlarms
virtual SDKResult SDK_CALLTYPE AcknowledgeTargetAlarms(const AISTargetFOID &target_foid, const TargetAlarmIDs &alarms, IUpdatedAISTargetsSP &updated_targets)=0
Notification about some of AIS target's alarms were acknowledged.
IAISTargetsDataset::OwnShipParametersChanged
virtual SDKResult SDK_CALLTYPE OwnShipParametersChanged(IUpdatedAISTargetsSP &updated_targets)=0
Notification about own ship parameters changed (position/COG/SOG etc) This will initiate the status/a...
sdk_component_interface.h
Common base SDK interfaces.
IVessel
Common interface for all of vessel objects.
Definition: vessels_interface.h:96
IsASMFoid
bool IsASMFoid(const AISTargetFOID &foid)
Checks, if given FOID belongs to AIS ASM feature.
Definition: ais_targets_interface.h:137
ASMTargetID2AisTargetFoid
AISTargetFOID ASMTargetID2AisTargetFoid(const SDKUInt32 &mmsi, const SDKUInt32 &msg_link_id, const SDKUInt32 &site_id)
Converts AIS ASM target MMSI/Message link ID to target FOID.
Definition: ais_targets_interface.h:107
IAISTargetsDataset::GetTargetPastTrack
virtual SDKResult SDK_CALLTYPE GetTargetPastTrack(const AISTargetFOID &target_foid, IAISTargetPastTrackSP &target_past_track) const =0
Returns the AIS target past track record by AIS target FOID.
AISTargetMMSI2AISTargetFOID
AISTargetFOID AISTargetMMSI2AISTargetFOID(const SDKUInt32 &mmsi)
Structure of AIS target FOID Bit 63: If set - FOID for Past Track feature Bit 62: If set - FOID for A...
Definition: ais_targets_interface.h:82
platform.h
Describes the platform constants.
ownship_device_config_interface.h
Describes the own ship devices configuration.
ownship_interface.h
Own Ship dataset/object interface.
IAISTargetPastTrack
Single AIS target past track.
Definition: ais_targets_interface.h:397
IAISTargetsDataset::GetTargets
virtual SDKResult SDK_CALLTYPE GetTargets(IAISTargetsCollectionSP &targets_collection, const ISDKParametersSP &params) const =0
Returns the AIS targets collection/enumerator.
ISDKComponent
Base interface for all SDK interfaces.
Definition: sdk_component_interface.h:41
PastTrackFoid2AISTargetFoid
AISTargetFOID PastTrackFoid2AISTargetFoid(const AISTargetFOID &past_track_foid)
Converts AIS target past track FOID to appropriate AIS target FOID.
Definition: ais_targets_interface.h:97
IAISTargetsWorkspace::GetManager
virtual SDKResult SDK_CALLTYPE GetManager(IAISTargetsManagerSP &manager) const =0
Returns current instance of AIS targets manager.
AttributeClassCode
ClassCode AttributeClassCode
Attribute class code type.
Definition: gdb_const.h:247
IAISTargetsDataset::ResetTargetsPastTrack
virtual SDKResult SDK_CALLTYPE ResetTargetsPastTrack()=0
Resets past track for all of AIS targets.
IAISTargetsDataset
AIS targets dataset.
Definition: ais_targets_interface.h:229
IAISTargetsWorkspace::GetTargetsDataset
virtual SDKResult SDK_CALLTYPE GetTargetsDataset(const DatasetID &dsid, IAISTargetsDatasetSP &targets_dataset)=0
Returns appropriate AIS targets dataset instance.
IAISTargetsWorkspace::RemoveTarget
virtual SDKResult SDK_CALLTYPE RemoveTarget(const AISTargetFOID &foid)=0
Removes one target entry from dataset by target's FOID.
AISTargetFeatureClassCode
AISTargetFeatureClassCode
AIS target feature class codes.
Definition: ais_targets_const.h:166
IAISTargetsWorkspace
AIS targets workspace.
Definition: ais_targets_interface.h:181
IAISTargetsWorkspace::GetTarget
virtual SDKResult SDK_CALLTYPE GetTarget(const AISTargetFOID &foid, IAISTargetSP &target) const =0
Returns the AIS target record by it's FOID.
FWD_DECL_INTERFACE
FWD_DECL_INTERFACE(ILWEParserWrapper)
Provides a wrapper around the message parser to get, add or remove the.
IAISTargetsDataset::GetOwnShip
virtual SDKResult SDK_CALLTYPE GetOwnShip(SDK_VESSELS_NAMESPACE::IOwnShipDatasetSP &own_ship_ds) const =0
Returns current own ship dataset instance.
AISTargetFOID
TargetFOID AISTargetFOID
AIS target FOID definition.
Definition: ais_targets_const.h:31
IAISTargetsDataset::SelectTarget
virtual SDKResult SDK_CALLTYPE SelectTarget(const AISTargetFOID &target_foid)=0
Selects AIS target in dataset Implementation depends of currently used AIS targets manager.