subfield.h
Go to the documentation of this file.
1/*
2 * $COPYRIGHT-BEGIN$
3 * libasterix
4 * Copyright [2013-2026] SinoATC <http://www.sinoatc.com>.
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 SinoATC 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 * $COPYRIGHT-END$
17 */
18
28
29#ifndef LIBASTERIX_SUBFIELD_H
30#define LIBASTERIX_SUBFIELD_H
31
32#include "fspec.h"
33#include "dataitem.h"
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
50
60#define AST_MAP_SUBFIELD_TYPE_EX(category_name, category_value, dataitem, subfield) \
61 I ## category_name ## _ ## dataitem ## _ ## S ## subfield = category_value ## dataitem ## 0 ## subfield,
62
66typedef enum _ast_subfield_type_t
67{
69
70 //For CAT001~CAT009
71#define AST_MAP_SUBFIELD_TYPE(category, dataitem, subfield) AST_MAP_SUBFIELD_TYPE_EX(00 ## category, category, dataitem, subfield)
72
73 //Dataitem I004/100
80
81 //Dataitem I004/120
86
87 //Dataitem I004/170
98
99 //Dataitem I004/171
110
111 //For CAT010~CAT099
112#undef AST_MAP_SUBFIELD_TYPE
113#define AST_MAP_SUBFIELD_TYPE(category, dataitem, subfield) AST_MAP_SUBFIELD_TYPE_EX(0 ## category, category, dataitem, subfield)
114
115 //Dataitem I015/600
119
120 //Dataitem I015/601
129
130 //Dataitem I015/602
135
136 //Dataitem I015/604
143
144 //Dataitem I015/625
153
154 //Dataitem I015/626
165
166 //Dataitem I015/627
173
174 //Dataitem I021/110
177
178 //Dataitem I021/220
183
184 //Dataitem I021/295
208
209 //Dataitem I034/050
217
218 //Dataitem I034/060
226
227 //Dataitem I048/120
230
231 //Dataitem I048/130
239
240 //Dataitem I062/110
248
249 //Dataitem I062/290
260
261 //Dataitem I062/295
293
294 //Dataitem I062/340
301
302 //Dataitem I062/380
331
332 //Dataitem I062/390
351
352 //Dataitem I062/500
361
363
365typedef struct _ast_subfield_t
366{
367 bool existing;
368
369 const unsigned char* data;
370 size_t size;
371
373
374 bool valid;
376
378#define AST_MAX_SUBFIELD_SIZE 32
379
381AST_API size_t ast_subfield_get_size(const unsigned char* buffer, const size_t bufsize, const ast_subfield_type_t type);
382
385
388
390#define AST_SUBFIELD_SUMMARY_PREFERED_CHARS summary_size
391
393AST_API void ast_subfield_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di, const ast_subfield_type_t type);
394
396AST_API void ast_subfield_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di, const ast_subfield_type_t type);
397
399#define AST_SUBFIELD_BIN_HTML_PREFERED_CHARS (AST_MAX_SUBFIELD_SIZE * 128 + 64)
400
407AST_API void ast_subfield_get_bin_html(char* html, const size_t html_size, const ast_subfield_t sf);
408 /* end of group sf_subfield */
410
411
438
440#define AST_MAX_SUBFIELDS 35
441
443typedef struct _ast_dataitem_subfields_t
444{
445 bool valid;
446
449 size_t n_subfields;
451
453AST_API size_t ast_dataitem_subfields_get_size(const unsigned char* buffer, const size_t bufsize, const ast_dataitem_type_t dataitem);
454
457
460
462AST_API void ast_dataitem_subfields_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
463
465AST_API void ast_dataitem_subfields_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di);
466 /* end of group di_subfields */
468
469
470#ifdef __cplusplus
471 }
472#endif // extern "C"
473
474#endif //LIBASTERIX_SUBFIELD_H
475
476// vim:set ft=c.doxygen sw=2 sts=2 fenc=utf8:
ASTERIX data item.
ASTERIX Field Specification (FSPEC).
ast_dataitem_type_t
Definition of data item type in each category.
Definition dataitem.h:86
size_t ast_dataitem_subfields_get_size(const unsigned char *buffer, const size_t bufsize, const ast_dataitem_type_t dataitem)
Get size function.
void ast_dataitem_subfields_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di)
Get detail function.
void ast_dataitem_subfields_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di)
Get summary function.
size_t ast_dataitem_subfields_get_number(const ast_dataitem_type_t type)
Get number of subfields function.
ast_dataitem_subfields_t ast_dataitem_subfields_decode(const ast_dataitem_t di)
Decode function.
#define AST_MAX_SUBFIELDS
Maximum number of subfields in a data item.
Definition subfield.h:440
ast_subfield_type_t
Definition of subfield type in each data item.
Definition subfield.h:67
size_t ast_subfield_get_size(const unsigned char *buffer, const size_t bufsize, const ast_subfield_type_t type)
Get size of subfield.
void ast_subfield_get_bin_html(char *html, const size_t html_size, const ast_subfield_t sf)
Get binary HTML snippet of subfield.
const char * ast_subfield_get_id(const ast_subfield_type_t type)
Get ID string of subfield.
const char * ast_subfield_get_name(const ast_subfield_type_t type)
Get name of subfield.
void ast_subfield_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di, const ast_subfield_type_t type)
Get summary of subfield.
void ast_subfield_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di, const ast_subfield_type_t type)
Get detail of subfield, in html format.
@ INULLFIELD
Null subfield.
Definition subfield.h:68
#define AST_API
Definition platform.h:63
Data Item - Subfields.
Definition subfield.h:444
ast_subfield_t subfields[35]
Subfields.
Definition subfield.h:448
size_t n_subfields
Number of subfields.
Definition subfield.h:449
bool valid
True, if data item is correctly decoded.
Definition subfield.h:445
ast_fspec_t fspec
Field specification.
Definition subfield.h:447
Dataitem.
Definition dataitem.h:515
Field Specification (FSPEC).
Definition fspec.h:56
Subfield struct.
Definition subfield.h:366
size_t size
Size of subfield.
Definition subfield.h:370
bool valid
True, if subfield is correctly decoded.
Definition subfield.h:374
ast_subfield_type_t type
Type of subfield.
Definition subfield.h:372
const unsigned char * data
Address of subfield.
Definition subfield.h:369
bool existing
True, if the subfield is present.
Definition subfield.h:367
#define AST_MAP_SUBFIELD_TYPE(category, dataitem, subfield)
Definition subfield.h:71