cat004.h
Go to the documentation of this file.
1 /*
2  * libasterix
3  * Copyright [2020] SinoATC (http://www.sinoatc.com/).
4  * Copyright [2013-2020] Aerosys Corporation (http://www.aerosys.cn/).
5  * All Rights Reserved.
6  *
7  * NOTICE: All information contained herein is, and remains
8  * the property of SinoATC and its suppliers, if any.
9  * The intellectual and technical concepts contained herein
10  * are proprietary to Aerosys Corporation and its suppliers and may be
11  * covered by U.S. and Foreign Patents, patents in process,
12  * and are protected by trade secret or copyright law.
13  * Dissemination of this information or reproduction of this material
14  * is strictly forbidden unless prior written permission is obtained
15  * from SinoATC.
16  */
17 
25 #ifndef LIBASTERIX_CAT004_H
26 #define LIBASTERIX_CAT004_H
27 
28 #include "dataitem.h"
29 #include "datarecord.h"
30 #include "subfield.h"
31 #include "cat_generic.h"
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 // Data Item
38 
41 
47 typedef enum _ast_snet_message_type_t
49 {
90 
91  //Customized types not defined in standard
93 
95 
97 #define AST_MAX_SNET_MESSAGE_TYPES 64
98 
101 
104 
107 
109 #define ast_dataitem_004_000_get_size ast_dataitem_message_type_get_size
110 
112 #define ast_dataitem_004_000_decode ast_dataitem_message_type_decode
113 
115 #define ast_dataitem_004_000_encode ast_dataitem_message_type_encode
116 
118 AST_API void ast_dataitem_004_000_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
119 
121 AST_API void ast_dataitem_004_000_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di);
122 
132 #define ast_dataitem_004_010_get_size ast_dataitem_data_source_identifier_get_size
133 #define ast_dataitem_004_010_decode ast_dataitem_data_source_identifier_decode
134 #define ast_dataitem_004_010_encode ast_dataitem_data_source_identifier_encode
135 #define ast_dataitem_004_010_get_summary ast_dataitem_data_source_identifier_get_summary
136 #define ast_dataitem_004_010_get_detail_html ast_dataitem_data_source_identifier_get_detail_html
137 
148 
150 #define ast_dataitem_004_020_get_size ast_dataitem_time_of_day_get_size
151 
153 #define ast_dataitem_004_020_decode ast_dataitem_time_of_day_decode
154 
156 #define ast_dataitem_004_020_encode ast_dataitem_time_of_day_encode
157 
159 #define ast_dataitem_004_020_get_summary ast_dataitem_time_of_day_get_summary
160 
162 #define ast_dataitem_004_020_get_detail_html ast_dataitem_time_of_day_get_detail_html
163 
174 
176 #define ast_dataitem_004_030_get_size ast_dataitem_track_number_get_size
177 
179 #define ast_dataitem_004_030_decode ast_dataitem_track_number_decode
180 
182 #define ast_dataitem_004_030_encode ast_dataitem_track_number_encode
183 
185 #define ast_dataitem_004_030_get_summary ast_dataitem_track_number_get_summary
186 
188 #define ast_dataitem_004_030_get_detail_html ast_dataitem_track_number_get_detail_html
189 
200 
202 #define ast_dataitem_004_035_get_size ast_dataitem_track_number_get_size
203 
205 #define ast_dataitem_004_035_decode ast_dataitem_track_number_decode
206 
208 #define ast_dataitem_004_035_encode ast_dataitem_track_number_encode
209 
211 #define ast_dataitem_004_035_get_summary ast_dataitem_track_number_get_summary
212 
214 #define ast_dataitem_004_035_get_detail_html ast_dataitem_track_number_get_detail_html
215 
224 typedef struct _ast_dataitem_004_040_t
226 {
227  bool valid;
228 
229  unsigned int alert_id;
231 
233 #define ast_dataitem_004_040_get_size ast_dataitem_get_size_fixed_2_byte
234 
237 
239 AST_API ast_dataitem_t ast_dataitem_004_040_encode(unsigned char* const buffer, const size_t buf_size, const ast_dataitem_ex_t xdi);
240 
242 AST_API void ast_dataitem_004_040_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
243 
245 #define ast_dataitem_004_040_get_detail_html ast_dataitem_get_detail_html_dummy;
246 
255 typedef struct _ast_dataitem_004_060_t
257 {
258  bool valid;
259 
260  size_t n_functions;
264 
266 #define ast_dataitem_004_060_get_size ast_dataitem_get_size_var_6_byte
267 
270 
272 AST_API void ast_dataitem_004_060_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
273 
275 AST_API void ast_dataitem_004_060_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di);
276 
285 typedef struct _ast_dataitem_004_100_t
287 {
288  bool valid;
289 
291  size_t n_subfields;
292 
293  //subfield #1
295  char an_name[9];
296 
298 
300 size_t ast_dataitem_004_100_get_size(const unsigned char *buffer, const size_t bufsize);
301 
304 
306 #define ast_dataitem_004_100_get_summary ast_dataitem_subfields_get_summary
307 
309 #define ast_dataitem_004_100_get_detail_html ast_dataitem_subfields_get_detail_html
310 
312 AST_API size_t ast_subfield_004_100_get_size(const unsigned char* buffer, const size_t bufsize, const ast_subfield_type_t type);
313 
316 
319 
321 AST_API void ast_subfield_004_100_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di, const ast_subfield_type_t type);
322 
324 AST_API void ast_subfield_004_100_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di, const ast_subfield_type_t type);
325 
334 typedef struct _ast_dataitem_004_120_t
336 {
337  bool valid;
338 
340  size_t n_subfields;
341 
342  //subfield #2
344  unsigned int cc_table_id;
345  unsigned int cc_conflict_property;
346  unsigned int cc_conflict_severity;
348 
350 size_t ast_dataitem_004_120_get_size(const unsigned char *buffer, const size_t bufsize);
351 
354 
356 #define ast_dataitem_004_120_get_summary ast_dataitem_subfields_get_summary
357 
359 #define ast_dataitem_004_120_get_detail_html ast_dataitem_subfields_get_detail_html
360 
362 AST_API size_t ast_subfield_004_120_get_size(const unsigned char* buffer, const size_t bufsize, const ast_subfield_type_t type);
363 
366 
369 
371 AST_API void ast_subfield_004_120_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di, const ast_subfield_type_t type);
372 
374 AST_API void ast_subfield_004_120_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di, const ast_subfield_type_t type);
375 
384 typedef struct _ast_dataitem_004_170_t
386 {
387  bool valid;
388 
390  size_t n_subfields;
391 
392  //subfield #2
394  int m3_code;
396 
398 size_t ast_dataitem_004_170_get_size(const unsigned char *buffer, const size_t bufsize);
399 
402 
404 #define ast_dataitem_004_170_get_summary ast_dataitem_subfields_get_summary
405 
407 #define ast_dataitem_004_170_get_detail_html ast_dataitem_subfields_get_detail_html
408 
410 AST_API size_t ast_subfield_004_170_get_size(const unsigned char* buffer, const size_t bufsize, const ast_subfield_type_t type);
411 
414 
417 
419 AST_API void ast_subfield_004_170_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di, const ast_subfield_type_t type);
420 
422 AST_API void ast_subfield_004_170_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di, const ast_subfield_type_t type);
423 
434 
436 size_t ast_dataitem_004_171_get_size(const unsigned char *buffer, const size_t bufsize);
437 
439 #define ast_dataitem_004_171_decode ast_dataitem_004_170_decode
440 
442 #define ast_dataitem_004_171_get_summary ast_dataitem_subfields_get_summary
443 
445 #define ast_dataitem_004_171_get_detail_html ast_dataitem_subfields_get_detail_html
446 
448 AST_API size_t ast_subfield_004_171_get_size(const unsigned char* buffer, const size_t bufsize, const ast_subfield_type_t type);
449 
452 
455 
457 #define ast_subfield_004_171_get_summary ast_subfield_004_170_get_summary
458 
460 #define ast_subfield_004_171_get_detail_html ast_subfield_004_170_get_detail_html
461 
465 // Data Record
466 
472 typedef struct _ast_datarecord_004_t
474 {
475  bool valid;
476 
488 
490 
493 
495 //AST_API ast_datarecord_t ast_datarecord_004_assemble(unsigned char* const buffer, const size_t bufsize, const ast_datarecord_004_t dr, const ast_uap_t uap);
496 
497 
501 #ifdef __cplusplus
502  }
503 #endif // extern "C"
504 
505 #endif //LIBASTERIX_CAT004_H
506 
507 // vim:set ft=c.doxygen sw=2 sts=2 fenc=utf8:
void ast_subfield_004_170_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di, const ast_subfield_type_t type)
Get detail HTML snippet of subfield.
bool valid
Definition: cat004.h:475
void ast_dataitem_004_000_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di)
Get detail function.
size_t ast_dataitem_004_170_get_size(const unsigned char *buffer, const size_t bufsize)
Get size of dataitem.
ast_dataitem_004_060_t dataitem_004_060
Definition: cat004.h:483
Definition: cat004.h:83
Data Item - Message Type.
Definition: cat_generic.h:52
size_t n_subfields
Definition: cat004.h:390
Definition: cat004.h:54
Definition: cat004.h:79
void ast_dataitem_004_040_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di)
Get summary function.
bool cc_existing
Definition: cat004.h:343
Definition: cat004.h:84
Extracted dataitem.
Definition: dataitem.h:432
Definition: cat004.h:55
Definition: cat004.h:85
ast_dataitem_004_020_t dataitem_004_020
Definition: cat004.h:479
ast_subfield_type_t
Definition of subfield id in each dataitem.
Definition: subfield.h:53
Implementation of Datarecord concept defined by ASTERIX.
size_t n_subfields
Definition: cat004.h:291
ast_dataitem_004_170_t ast_dataitem_004_171_t
Data Item I004/171 - Aircraft Identification & Characteristics 2.
Definition: cat004.h:433
ast_dataitem_004_100_t dataitem_004_100
Definition: cat004.h:484
Data Item Itrack_number - Track Number.
Definition: cat_generic.h:719
ast_dataitem_message_type_t ast_dataitem_004_000_t
Data Item I004/000 - Message Type.
Definition: cat004.h:106
size_t n_subfields
Definition: cat004.h:340
ast_dataitem_004_030_t dataitem_004_030
Definition: cat004.h:480
bool valid
Definition: cat004.h:387
unsigned int cc_conflict_property
Definition: cat004.h:345
const char * ast_subfield_004_171_get_id(const ast_subfield_type_t type)
Get id string of subfield.
Data Item I004/120 - Conflict Characteristics.
Definition: cat004.h:335
bool an_existing
Definition: cat004.h:294
Definition: cat004.h:71
#define AST_API
Definition: platform.h:63
Data Item - Data Source Identifier.
Definition: cat_generic.h:94
unsigned int cc_conflict_severity
0 - Low, 1 - Hight
Definition: cat004.h:346
const char * ast_dataitem_004_get_name(const ast_dataitem_type_t type)
Get name function.
Definition: cat004.h:78
Data Item - Time of Day.
Definition: cat_generic.h:217
Definition: cat004.h:70
Definition: cat004.h:86
void ast_dataitem_004_000_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di)
Get summary function.
Definition: cat004.h:51
void ast_subfield_004_100_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di, const ast_subfield_type_t type)
Get detail HTML snippet of subfield.
const char * ast_subfield_004_170_get_id(const ast_subfield_type_t type)
Get id string of subfield.
Definition: cat004.h:80
Definition: cat004.h:72
void ast_dataitem_004_060_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di)
Get summary function.
Definition: cat004.h:65
Data Item I048/040 - Alert Identifier.
Definition: cat004.h:225
This file includes the common used data items shares by different categories.
Definition: cat004.h:69
ast_dataitem_004_060_t ast_dataitem_004_060_decode(const ast_dataitem_t di)
Decode function.
size_t ast_subfield_004_170_get_size(const unsigned char *buffer, const size_t bufsize, const ast_subfield_type_t type)
Get size of subfield.
ast_dataitem_004_010_t dataitem_004_010
Definition: cat004.h:478
Definition: cat004.h:76
Definition: cat004.h:64
bool valid
Definition: cat004.h:227
size_t ast_dataitem_004_120_get_size(const unsigned char *buffer, const size_t bufsize)
Get size of dataitem.
Subfield struct.
Definition: subfield.h:293
bool valid
Definition: cat004.h:337
int m3_code
Definition: cat004.h:394
ast_dataitem_004_120_t ast_dataitem_004_120_decode(const ast_dataitem_t di)
Decode function of dataitem.
Definition: cat004.h:52
size_t ast_dataitem_004_100_get_size(const unsigned char *buffer, const size_t bufsize)
Get size of dataitem.
Definition: cat004.h:88
Definition: cat004.h:57
ast_snet_message_type_t
SNET message type.
Definition: cat004.h:48
Definition: cat004.h:61
Definition: cat004.h:75
unsigned int alert_id
Definition: cat004.h:229
Definition: cat004.h:92
Definition: cat004.h:63
void ast_dataitem_004_060_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di)
Get detail function.
size_t ast_subfield_004_171_get_size(const unsigned char *buffer, const size_t bufsize, const ast_subfield_type_t type)
Get size of subfield.
size_t ast_subfield_004_120_get_size(const unsigned char *buffer, const size_t bufsize, const ast_subfield_type_t type)
Get size of subfield.
const char * ast_subfield_004_170_get_name(const ast_subfield_type_t type)
Get name of subfield.
Data Record I004 - Safety Net Messages.
Definition: cat004.h:473
const char * ast_subfield_004_171_get_name(const ast_subfield_type_t type)
Get name of subfield.
void ast_subfield_004_120_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di, const ast_subfield_type_t type)
Get summary of subfield.
bool valid
Definition: cat004.h:258
Implementation of Dataitem concept defined by ASTERIX.
const char * ast_subfield_004_100_get_id(const ast_subfield_type_t type)
Get id string of subfield.
ast_dataitem_time_of_day_t ast_dataitem_004_020_t
Data Item I048/020 - Time of Message.
Definition: cat004.h:147
Definition: cat004.h:89
Data Item I004/100 - Area Definition.
Definition: cat004.h:286
Definition: cat004.h:81
ast_dataitem_004_035_t dataitem_004_035
Definition: cat004.h:481
ast_dataitem_004_040_t ast_dataitem_004_040_decode(const ast_dataitem_t di)
Decode function.
Definition: cat004.h:77
ast_dataitem_004_170_t ast_dataitem_004_170_decode(const ast_dataitem_t di)
Decode function of dataitem.
Definition: cat004.h:62
Definition: cat004.h:82
const char * ast_snet_message_type_get_name(const ast_snet_message_type_t type)
Get name of SNET message type.
ast_dataitem_004_170_t dataitem_004_170
Definition: cat004.h:486
Dataitem.
Definition: dataitem.h:421
ast_dataitem_004_040_t dataitem_004_040
Definition: cat004.h:482
ast_dataitem_004_100_t ast_dataitem_004_100_decode(const ast_dataitem_t di)
Decode function of dataitem.
Definition: cat004.h:50
Definition: cat004.h:73
#define AST_MAX_SNET_MESSAGE_TYPES
Max SNET message types.
Definition: cat004.h:97
const char * ast_subfield_004_120_get_name(const ast_subfield_type_t type)
Get name of subfield.
size_t n_functions
Definition: cat004.h:260
ast_dataitem_type_t
Definition of data item id in each category.
Definition: dataitem.h:67
Definition: cat004.h:60
ast_dataitem_track_number_t ast_dataitem_004_035_t
Data Item I048/035 - Track Number 2.
Definition: cat004.h:199
ast_dataitem_track_number_t ast_dataitem_004_030_t
Data Item I048/030 - Track Number 1.
Definition: cat004.h:173
Definition: cat004.h:67
#define AST_MAX_SUBFIELDS
Definition: subfield.h:363
Definition: cat004.h:53
Definition: cat004.h:58
ast_dataitem_004_120_t dataitem_004_120
Definition: cat004.h:485
bool m3_existing
Definition: cat004.h:393
void ast_subfield_004_100_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di, const ast_subfield_type_t type)
Get summary of subfield.
const char * ast_subfield_004_100_get_name(const ast_subfield_type_t type)
Get name of subfield.
void ast_subfield_004_170_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di, const ast_subfield_type_t type)
Get summary of subfield.
Datarecord.
Definition: datarecord.h:41
Definition: cat004.h:59
ast_dataitem_004_171_t dataitem_004_171
Definition: cat004.h:487
Data Item I048/060 - Safety Net Function & System Status.
Definition: cat004.h:256
Definition: cat004.h:74
ast_dataitem_t ast_dataitem_004_040_encode(unsigned char *const buffer, const size_t buf_size, const ast_dataitem_ex_t xdi)
Encode function.
const char * ast_subfield_004_120_get_id(const ast_subfield_type_t type)
Get id string of subfield.
Definition: cat004.h:66
Definition: cat004.h:87
bool valid
Definition: cat004.h:288
Definition: cat004.h:56
ast_dataitem_data_source_identifier_t ast_dataitem_004_010_t
Definition: cat004.h:131
Data Item I004/170 - Aircraft Identification & Characteristics 1.
Definition: cat004.h:385
unsigned int cc_table_id
Definition: cat004.h:344
const char * ast_snet_message_type_get_id(const ast_snet_message_type_t type)
Get id of SNET message type.
size_t ast_subfield_004_100_get_size(const unsigned char *buffer, const size_t bufsize, const ast_subfield_type_t type)
Get size of subfield.
ast_datarecord_004_t ast_datarecord_004_disassemble(const ast_datarecord_t dr)
Disassemble function.
void ast_subfield_004_120_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di, const ast_subfield_type_t type)
Get detail HTML snippet of subfield.
ast_dataitem_004_000_t dataitem_004_000
Definition: cat004.h:477
Implementation of Subfield concept defined by ASTERIX.
size_t ast_dataitem_004_171_get_size(const unsigned char *buffer, const size_t bufsize)
Get size function.
Definition: cat004.h:68