subfield.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 
24 #ifndef LIBASTERIX_SUBFIELD_H
25 #define LIBASTERIX_SUBFIELD_H
26 
27 #include "fspec.h"
28 #include "dataitem.h"
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
47 #define AST_MAP_SUBFIELD_TYPE_EX(category_name, category_value, dataitem, subfield) \
48  I ## category_name ## _ ## dataitem ## _ ## S ## subfield = category_value ## dataitem ## 0 ## subfield,
49 
53 typedef enum _ast_subfield_type_t
54 {
55  INULLFIELD = 0,
56 
57  //For CAT001~CAT009
58 #define AST_MAP_SUBFIELD_TYPE(category, dataitem, subfield) AST_MAP_SUBFIELD_TYPE_EX(00 ## category, category, dataitem, subfield)
59 
60  //Dataitem I004/100
67 
68  //Dataitem I004/120
73 
74  //Dataitem I004/170
85 
86  //Dataitem I004/171
97 
98  //For CAT010~CAT099
99 #undef AST_MAP_SUBFIELD_TYPE
100 #define AST_MAP_SUBFIELD_TYPE(category, dataitem, subfield) AST_MAP_SUBFIELD_TYPE_EX(0 ## category, category, dataitem, subfield)
101 
102  //Dataitem I021/110
105 
106  //Dataitem I021/220
111 
112  //Dataitem I021/295
136 
137  //Dataitem I034/050
145 
146  //Dataitem I034/060
154 
155  //Dataitem I048/120
158 
159  //Dataitem I048/130
167 
168  //Dataitem I062/110
176 
177  //Dataitem I062/290
188 
189  //Dataitem I062/295
221 
222  //Dataitem I062/340
229 
230  //Dataitem I062/380
259 
260  //Dataitem I062/390
279 
280  //Dataitem I062/500
289 
291 
293 typedef struct _ast_subfield_t
294 {
295  bool existing;
296 
297  const unsigned char* data;
298  size_t size;
299 
301 
302  bool valid;
304 
306 #define AST_MAX_SUBFIELD_SIZE 32
307 
309 AST_API size_t ast_subfield_get_size(const unsigned char* buffer, const size_t bufsize, const ast_subfield_type_t type);
310 
312 AST_API const char* ast_subfield_get_id(const ast_subfield_type_t type);
313 
315 AST_API const char* ast_subfield_get_name(const ast_subfield_type_t type);
316 
318 #define AST_SUBFIELD_SUMMARY_PREFERED_CHARS summary_size
319 
321 AST_API void ast_subfield_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_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di, const ast_subfield_type_t type);
325 
327 #define AST_SUBFIELD_BIN_HTML_PREFERED_CHARS (AST_MAX_SUBFIELD_SIZE * 128 + 64)
328 
334 AST_API void ast_subfield_get_bin_html(char* html, const size_t html_size, const ast_subfield_t sf);
335 
363 #define AST_MAX_SUBFIELDS 35
364 
366 typedef struct _ast_dataitem_subfields_t
367 {
368  bool valid;
369 
372  size_t n_subfields;
374 
376 AST_API size_t ast_dataitem_subfields_get_size(const unsigned char* buffer, const size_t bufsize, const ast_dataitem_type_t dataitem);
377 
380 
383 
385 AST_API void ast_dataitem_subfields_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
386 
388 AST_API void ast_dataitem_subfields_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di);
389 
393 #ifdef __cplusplus
394  }
395 #endif // extern "C"
396 
397 #endif //LIBASTERIX_SUBFIELD_H
398 
399 // vim:set ft=c sw=2 sts=2 fenc=utf8:
ast_subfield_type_t
Definition of subfield id in each dataitem.
Definition: subfield.h:53
bool existing
Definition: subfield.h:295
bool valid
True if subfield is correctlly decoded.
Definition: subfield.h:302
const char * ast_subfield_get_id(const ast_subfield_type_t type)
Get ID string of subfield.
bool valid
Definition: subfield.h:368
#define AST_API
Definition: platform.h:63
ast_dataitem_subfields_t ast_dataitem_subfields_decode(const ast_dataitem_t di)
Decode function.
Null subfield.
Definition: subfield.h:55
void ast_subfield_get_bin_html(char *html, const size_t html_size, const ast_subfield_t sf)
Function to get a html snippet of the raw subfield data in binary format.
ast_subfield_type_t type
Type of subfield.
Definition: subfield.h:300
size_t ast_subfield_get_size(const unsigned char *buffer, const size_t bufsize, const ast_subfield_type_t type)
Get size of subfield.
Implementation of Field SPECification (FSPEC) concept defined by ASTERIX.
size_t n_subfields
Definition: subfield.h:372
#define AST_MAP_SUBFIELD_TYPE(category, dataitem, subfield)
Definition: subfield.h:100
Subfield struct.
Definition: subfield.h:293
Definition: fspec.h:36
Implementation of Dataitem concept defined by ASTERIX.
size_t ast_dataitem_subfields_get_size(const unsigned char *buffer, const size_t bufsize, const ast_dataitem_type_t dataitem)
Get size function.
const char * ast_subfield_get_name(const ast_subfield_type_t type)
Get name of subfield.
ast_fspec_t fspec
Definition: subfield.h:370
void ast_dataitem_subfields_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di)
Get detail function.
const unsigned char * data
Address of subfield.
Definition: subfield.h:297
Dataitem.
Definition: dataitem.h:421
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.
size_t size
Size of subfield.
Definition: subfield.h:298
ast_dataitem_type_t
Definition of data item id in each category.
Definition: dataitem.h:67
#define AST_MAX_SUBFIELDS
Definition: subfield.h:363
size_t ast_dataitem_subfields_get_number(const ast_dataitem_type_t type)
Get number of subfields function.
void ast_dataitem_subfields_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di)
Get summary funciton.
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.
Data Item - Subfields.
Definition: subfield.h:366