25#ifndef _AIS_TARGET_DATA_H__
26#define _AIS_TARGET_DATA_H__
31#include <unordered_map>
33#include <wx/datetime.h>
37#include "model/meteo_points.h"
38#include "model/navutil_base.h"
40#define SHIP_NAME_LEN 35
41#define DESTINATION_LEN 21
42#define CALL_SIGN_LEN 8
45#define AIS_TARGETDATA_MAX_CANVAS 6
47void make_hash_ERI(
int key,
const wxString& description);
48void clear_hash_ERI(
void);
50typedef enum ais_nav_status {
51 UNDERWAY_USING_ENGINE = 0,
54 RESTRICTED_MANOEUVRABILITY,
68 ATON_VIRTUAL_ONPOSITION,
69 ATON_VIRTUAL_OFFPOSITION,
77typedef enum ais_transponder_class {
89} _ais_transponder_class;
92typedef enum ais_alert_type {
95 AIS_ALERT_NO_DIALOG_SET
106enum Ais8_001_22_AreaShapeEnum {
107 AIS8_001_22_SHAPE_ERROR = -1,
108 AIS8_001_22_SHAPE_CIRCLE = 0,
109 AIS8_001_22_SHAPE_RECT = 1,
110 AIS8_001_22_SHAPE_SECTOR = 2,
111 AIS8_001_22_SHAPE_POLYLINE = 3,
112 AIS8_001_22_SHAPE_POLYGON = 4,
113 AIS8_001_22_SHAPE_TEXT = 5,
114 AIS8_001_22_SHAPE_RESERVED_6 = 6,
115 AIS8_001_22_SHAPE_RESERVED_7 = 7
120 float longitude, latitude;
132typedef std::vector<Ais8_001_22_SubArea> Ais8_001_22_SubAreaList;
141 int duration_minutes;
142 wxDateTime start_time;
143 wxDateTime expiry_time;
144 Ais8_001_22_SubAreaList sub_areas;
148 std::function<double(
double)> get_mag;
159 wxString BuildQueryResult(
void);
160 wxString GetRolloverString(
void);
161 wxString Get_vessel_type_string(
bool b_short =
false);
162 wxString Get_class_string(
bool b_short =
false);
163 wxString GetFullName(
void);
164 wxString GetCountryCode(
bool b_CntryLongStr);
165 wxString GetNatureofDistress(
int dscnature);
166 void Toggle_AIS_CPA(
void);
167 void ToggleShowTrack(
void);
169 bool IsValidMID(
int);
173 ais_transponder_class Class;
184 char CallSign[CALL_SIGN_LEN];
185 char ShipName[SHIP_NAME_LEN];
186 char ShipNameExtension[15];
187 unsigned char ShipType;
198 char Euro_VIN[EURO_VIN_LEN];
212 char Destination[DESTINATION_LEN];
214 time_t PositionReportTicks;
215 time_t LastPositionReportTicks;
216 time_t StaticReportTicks;
222 ais_alert_type n_alert_state;
223 bool b_suppress_audio;
224 bool b_positionDoubtful;
225 bool b_positionOnceValid;
231 long dsc_NatureOfDistress;
237 bool b_mPropPersistTrack;
242 wxString m_date_string;
244 wxDateTime m_ack_time;
245 bool b_in_ack_timeout;
250 wxString MSG_14_text;
260 std::vector<AISTargetTrackPoint> m_ptrack;
262 std::unordered_map<int, Ais8_001_22> area_notices;
263 bool b_SarAircraftPosnReport;
265 bool b_nameFromCache;
267 short last_scale[AIS_TARGETDATA_MAX_CANVAS];
290 std::shared_ptr<AisTargetData> GetTargetData() {
291 return std::make_shared<AisTargetData>(m_callbacks);
300wxString trimAISField(
char* data);
301wxString ais_get_status(
int index);
303wxString ais_get_type(
int index);
304wxString ais_get_short_type(
int index);
Meteo points are Meteorological and Hydrographic data received by NMEA0183 (AIS) VDM message 8 dac:00...