NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
s63_cell_permits_interface.h
Go to the documentation of this file.
1 #ifndef SDK_S63_CELL_PERMITS_INTERFACE_H_
11 #define SDK_S63_CELL_PERMITS_INTERFACE_H_
12 
13 #include <base/inc/platform.h>
14 #include <base/inc/base_types.h>
17 #include <base/inc/sdk_ref_ptr.h>
18 
19 namespace sdk {
20 namespace s63 {
21 
24 typedef SDKUInt8 CellKey[5];
25 typedef SDKUInt8 CellName[8];
27 typedef SDKInt8 CellServiceLevelIndicator;
28 typedef SDKUInt32 CellEditionNumber;
29 typedef SDKUInt8 DataServerID[2];
30 typedef SDKString CellPermitComment;
31 
36 
39 static const DataServerID kUndefinedDataserverID = {'?', '?'};
40 static const SDKUInt16 kPackedUndefinedDataserverID = 0x3f3f;
41 
44 static inline void InitDataServerID(DataServerID& dataserverid) {
45  dataserverid[0] = kUndefinedDataserverID[0];
46  dataserverid[1] = kUndefinedDataserverID[1];
47 }
48 static inline void AssignDataServerID(DataServerID& dataserverid1,
49  const DataServerID& dataserverid2) {
50  dataserverid1[0] = dataserverid2[0]; dataserverid1[1] = dataserverid2[1];
51 }
52 static inline bool CompareDataServerID(
53  const DataServerID& dataserverid1, const DataServerID& dataserverid2) {
54  return dataserverid1[0] == dataserverid2[0]
55  && dataserverid1[1] == dataserverid2[1];
56 }
57 static inline void UnpackDataServerID(SDKUInt16 packed_dataserverid,
58  DataServerID& dataserverid) {
59  dataserverid[0] = static_cast<SDKUInt8>(packed_dataserverid >> 8);
60  dataserverid[1] = static_cast<SDKUInt8>(packed_dataserverid & 0xFF);
61 }
62 static inline SDKUInt16 PackDataServerID(const DataServerID& dataserverid) {
63  SDKUInt16 packed_dataserver_id = dataserverid[1] | dataserverid[0] << 8;
64  return packed_dataserver_id;
65 }
66 static inline bool IsUndefinedDataServerID(const DataServerID& dataserverid) {
67  return (dataserverid[0] == kUndefinedDataserverID[0] &&
68  dataserverid[1] == kUndefinedDataserverID[1]);
69 }
70 static inline void InitCellKey(CellKey& key) {
71  key[0] = 0; key[1] = 0; key[2] = 0; key[3] = 0; key[4] = 0;
72 }
73 static inline void AssignCellKey(CellKey& to, const CellKey& from) {
74  to[0] = from[0]; to[1] = from[1]; to[2] = from[2]; to[3] = from[3];
75  to[4] = from[4];
76 }
77 
78 FWD_DECL_INTERFACE(IS63CellPermit)
79 FWD_DECL_INTERFACE(IS63CellPermitsStorage)
80 FWD_DECL_INTERFACE(IS63CellPermitsIterator)
81 
82 typedef sdk::SDKRefPtr<IS63CellPermitsIterator> S63CellPermitsIteratorSP;
83 typedef sdk::SDKRefPtr<IS63CellPermitsStorage> S63CellPermitsStorageSP;
84 typedef sdk::SDKRefPtr<IS63CellPermit> S63CellPermitSP;
85 
89 {
94 
98 {
109 
112 class IS63CellPermit : public sdk::ISDKComponent
113 {
114  public:
116  virtual SDKResult SDK_CALLTYPE GetCellName(
117  CellName& cell_name) const throw() = 0;
119  virtual SDKResult SDK_CALLTYPE GetCellKey1(
120  CellKey& cell_key) const throw() = 0;
122  virtual SDKResult SDK_CALLTYPE GetCellKey2(
123  CellKey& cell_key) const throw() = 0;
125  virtual SDKResult SDK_CALLTYPE GetExpirationDate(
126  CellPermitExpirationDate& exp_date) const throw() = 0;
128  virtual SDKResult SDK_CALLTYPE GetServiceLevelIndicator(
129  CellServiceLevelIndicator& service_level_ind) const throw() = 0;
131  virtual SDKResult SDK_CALLTYPE GetCellEditionNumber(
132  CellEditionNumber& edition_number) const throw() = 0;
134  virtual SDKResult SDK_CALLTYPE GetDataServerID(
135  DataServerID& dataserver_id) const throw() = 0;
137  virtual SDKResult SDK_CALLTYPE GetComment(
138  CellPermitComment& cell_permit_comment) const throw() = 0;
140  virtual SDKResult SDK_CALLTYPE IsForOfficialCell(
141  bool& is_for_official_cell) const throw() = 0;
142 
143  // IID() method implementation
144  SDK_IMPLEMENT_IID(IS63CellPermit)
145  SDK_END_INTERFACE(IS63CellPermit)
146 };
147 SDK_DECLARE_IID(IS63CellPermit)
148 
149 class IS63CellPermitsIterator : public sdk::ISDKComponent
152 {
153 public:
155  virtual SDKResult SDK_CALLTYPE Reset() throw() = 0;
157  virtual SDKResult SDK_CALLTYPE Next(S63CellPermitSP& cell_permit) throw() = 0;
158 
160  SDK_IMPLEMENT_IID(IS63CellPermitsIterator)
161  SDK_END_INTERFACE(IS63CellPermitsIterator)
162 };
163 SDK_DECLARE_IID(IS63CellPermitsIterator)
164 
168 {
169 public:
171  virtual SDKResult SDK_CALLTYPE GetIterator(
172  S63CellPermitsIteratorSP& iterator) const throw() = 0;
173 
183  virtual SDKResult SDK_CALLTYPE GetCellPermits(
184  const CellName& cell_name, const DataServerID& dataserver_id,
185  S63CellPermitsIteratorSP& iterator) const throw() = 0;
186 
192  virtual SDKResult SDK_CALLTYPE FindPermits(
193  const CellName& cell_name, const DataServerID& dataserver_id) const throw() = 0;
194 
196 
198  SDK_IMPLEMENT_IID(IS63CellPermitsStorage)
199  SDK_END_INTERFACE(IS63CellPermitsStorage)
200 };
201 SDK_DECLARE_IID(IS63CellPermitsStorage)
202 
203 } // namespace s63
204 } // namespace sdk
205 
206 #endif // SDK_S63_CELL_PERMITS_INTERFACE_H_
sdk::s63::IS63CellPermit::GetCellKey2
virtual SDKResult SDK_CALLTYPE GetCellKey2(CellKey &cell_key) const =0
Returns the second cell key to decrypt cell data.
sdk::s63::IS63CellPermit::IsForOfficialCell
virtual SDKResult SDK_CALLTYPE IsForOfficialCell(bool &is_for_official_cell) const =0
Returns the flag indicating if the cell permit is for an official cell or not.
sdk::s63::kS63CellPermitsStorageProp_NonOfficialPermitsStringsIterator
@ kS63CellPermitsStorageProp_NonOfficialPermitsStringsIterator
Definition: s63_cell_permits_interface.h:105
sdk::s63::S63CellPermitsStorageProp
S63CellPermitsStorageProp
Set of available properties for the S-63 cell permits storage.
Definition: s63_cell_permits_interface.h:97
base_types.h
SDK base types.
sdk::s63::IS63CellPermit::GetCellKey1
virtual SDKResult SDK_CALLTYPE GetCellKey1(CellKey &cell_key) const =0
Returns the first cell key to decrypt cell data.
sdk::s63::DataServerID
SDKUInt8 DataServerID[2]
Dataserver ID.
Definition: s63_cell_permits_interface.h:29
sdk::s63::InitDataServerID
static void InitDataServerID(DataServerID &dataserverid)
Initialize data server id.
Definition: s63_cell_permits_interface.h:44
sdk::s63::kS63CellPermitsFileFormat_Version2
@ kS63CellPermitsFileFormat_Version2
S-63 permit file format version 2.
Definition: s63_cell_permits_interface.h:92
sdk::s63::IS63CellPermit::GetServiceLevelIndicator
virtual SDKResult SDK_CALLTYPE GetServiceLevelIndicator(CellServiceLevelIndicator &service_level_ind) const =0
Returns the level indicator of the cell permit service.
sdk::s63::IS63CellPermitsIterator::Next
virtual SDKResult SDK_CALLTYPE Next(S63CellPermitSP &cell_permit)=0
Returns the next cell permit instance.
sdk_ref_ptr.h
Interfaces wrapper with reference count control.
sdk::s63::IS63CellPermit::GetComment
virtual SDKResult SDK_CALLTYPE GetComment(CellPermitComment &cell_permit_comment) const =0
Returns the cell permit comment.
sdk::s63::IS63CellPermit::GetCellName
virtual SDKResult SDK_CALLTYPE GetCellName(CellName &cell_name) const =0
Returns the name of the cell for which the given permit is produced.
sdk::s63::S63CellPermitsFileFormat
S63CellPermitsFileFormat
Available S-63 cell permit file formats.
Definition: s63_cell_permits_interface.h:88
sdk::s63::kS63CellPermitsStorageProp_PermitsFileVersion
@ kS63CellPermitsStorageProp_PermitsFileVersion
Source PERMIT.TXT file version.
Definition: s63_cell_permits_interface.h:101
sdk::s63::IS63CellPermit::GetExpirationDate
virtual SDKResult SDK_CALLTYPE GetExpirationDate(CellPermitExpirationDate &exp_date) const =0
Returns the expiration date of the cell permit.
sdk_string_handler.h
Wrappers and helper functions for SDKString.
sdk::s63::IS63CellPermitsIterator
S-63 cell permits iterator.
Definition: s63_cell_permits_interface.h:151
SDKResult
SDKInt32 SDKResult
Type of all error or return codes which SDK functions can end with.
Definition: sdk_results.h:17
sdk::s63::CellPermitComment
SDKString CellPermitComment
Cell permit comment.
Definition: s63_cell_permits_interface.h:30
sdk::s63::CellName
SDKUInt8 CellName[8]
Cell name.
Definition: s63_cell_permits_interface.h:25
sdk_component_interface.h
Common base SDK interfaces.
sdk::s63::kS63CellPermitsFileFormat_Version1
@ kS63CellPermitsFileFormat_Version1
S-63 permit file format version 1.
Definition: s63_cell_permits_interface.h:91
platform.h
Describes the platform constants.
sdk::s63::kUndefinedDataserverID
static const DataServerID kUndefinedDataserverID
Undefined DataserverID value.
Definition: s63_cell_permits_interface.h:39
sdk::s63::kS63CellPermitsFileFormat_Unknown
@ kS63CellPermitsFileFormat_Unknown
Unknown version of the permit file format.
Definition: s63_cell_permits_interface.h:90
ISDKComponent
Base interface for all SDK interfaces.
Definition: sdk_component_interface.h:41
sdk::s63::CellPermitExpirationDate
SDKTime CellPermitExpirationDate
Cell permit expiration date.
Definition: s63_cell_permits_interface.h:26
sdk::s63::CellKey
SDKUInt8 CellKey[5]
Cell key to decrypt the cell.
Definition: s63_cell_permits_interface.h:24
sdk::s63::IS63CellPermit::GetDataServerID
virtual SDKResult SDK_CALLTYPE GetDataServerID(DataServerID &dataserver_id) const =0
Returns the data server ID.
sdk::s63::CellEditionNumber
SDKUInt32 CellEditionNumber
Cell service level indicator.
Definition: s63_cell_permits_interface.h:28
sdk::s63::kS63CellPermitsStorageProp_PermitsDateTime
@ kS63CellPermitsStorageProp_PermitsDateTime
Date/Time of the source PERMIT.TXT file.
Definition: s63_cell_permits_interface.h:100
SDKTime
SDK_END_NAMESPACE typedef SDKInt64 SDKTime
Milliseconds from Unix epoch.
Definition: base_types.h:56
sdk::s63::kS63CellPermitsStorageProp_OfficialPermitsStringsIterator
@ kS63CellPermitsStorageProp_OfficialPermitsStringsIterator
Definition: s63_cell_permits_interface.h:102
sdk::s63::IS63CellPermit
Interface describing a single S-63 cell permit instance.
Definition: s63_cell_permits_interface.h:112
sdk::s63::CellServiceLevelIndicator
SDKInt8 CellServiceLevelIndicator
Cell service level indicator.
Definition: s63_cell_permits_interface.h:27
sdk::s63::kUndefinedServiceLevelIndicator
static const CellServiceLevelIndicator kUndefinedServiceLevelIndicator
Undefined service level indicator value.
Definition: s63_cell_permits_interface.h:35
sdk::s63::IS63CellPermit::GetCellEditionNumber
virtual SDKResult SDK_CALLTYPE GetCellEditionNumber(CellEditionNumber &edition_number) const =0
Returns the S-63 cell edition number.
FWD_DECL_INTERFACE
FWD_DECL_INTERFACE(ILWEParserWrapper)
Provides a wrapper around the message parser to get, add or remove the.
sdk::s63::IS63CellPermitsIterator::Reset
virtual SDKResult SDK_CALLTYPE Reset()=0
Resets the iterator state.
sdk::s63::IS63CellPermitsStorage
S-63 cell permits storage.
Definition: s63_cell_permits_interface.h:167
sdk::s63::kS63CellPermitsStorageProp_CellPermitsCount
@ kS63CellPermitsStorageProp_CellPermitsCount
Total number of cell permits.
Definition: s63_cell_permits_interface.h:99