OpenV2G
EXITypes.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2007-2018 Siemens AG
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published
6  * by the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 /*******************************************************************
19  *
20  * @author Daniel.Peintner.EXT@siemens.com
21  * @version 2017-03-02
22  * @contact Richard.Kuntschke@siemens.com
23  *
24  * <p>Code generated by EXIdizer</p>
25  * <p>Schema: V2G_CI_MsgDef.xsd</p>
26  *
27  *
28  ********************************************************************/
29 
30 
31 
38 #ifndef EXI_TYPES_H
39 #define EXI_TYPES_H
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 #include <stdint.h>
46 #include <stdio.h>
47 #include "EXIConfig.h"
48 #if EXI_STREAM == FILE_STREAM
49 #include <stdio.h>
50 #endif
51 
52 
54 #define BITS_IN_BYTE 8
55 
57 #define DATETIME_YEAR_OFFSET 2000
58 
59 #define DATETIME_NUMBER_BITS_MONTHDAY 9
60 
61 #define DATETIME_NUMBER_BITS_TIME 17
62 
63 #define DATETIME_NUMBER_BITS_TIMEZONE 11
64 
65 #define DATETIME_MONTH_MULTIPLICATOR 32
66 
67 #define DATETIME_TIMEZONE_OFFSET_IN_MINUTES 896
68 
70 #define UINT_MAX_VALUE 65535
71 
72 
74 #define FLOAT_EXPONENT_SPECIAL_VALUES -16384
75 
76 #define FLOAT_MANTISSA_INFINITY 1
77 
78 #define FLOAT_MANTISSA_MINUS_INFINITY -1
79 
80 #define FLOAT_MANTISSA_NOT_A_NUMBER 0
81 
83 typedef enum {
122  /* error state */
124 } exi_event_t;
125 
126 
158 typedef struct {
159 #if EXI_STREAM == BYTE_ARRAY
160 
161  size_t size;
163  uint8_t* data;
165  size_t* pos;
166 #endif
167 #if EXI_STREAM == FILE_STREAM
168 
169  FILE *file;
170 #endif
171 
172  uint8_t buffer;
174  uint8_t capacity;
175 } bitstream_t;
176 
177 
179 typedef enum {
211 
212 
214 typedef enum {
232 
233 
235 typedef enum {
253 
254 
256 typedef enum {
264 
266 /* Note: define whether you wan't to support ASCII only or UCS */
267 #if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII
268 typedef char exi_string_character_t;
269 #endif /* STRING_REPRESENTATION_ASCII */
270 #if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS
271 typedef uint32_t exi_string_character_t;
272 #endif /* STRING_REPRESENTATION_UCS */
273 
274 
275 
277 typedef struct {
279  size_t size;
281  exi_string_character_t* characters;
283  size_t len;
284 } exi_string_t;
285 
286 
288 typedef struct {
290  exi_string_value_type_t type;
294  size_t localID;
296  size_t globalID;
298 
299 
301 typedef struct {
303  size_t size;
305  exi_string_character_t* characters;
307  uint8_t codingLength;
308 } exi_rcs_t;
309 
310 
312 typedef struct {
314  size_t size;
316  uint8_t* data;
318  size_t len;
319 } exi_bytes_t;
320 
321 
323 typedef struct {
325  exi_integer_type_t type;
326  union {
327  /* (signed) values */
329  int8_t int8;
331  int16_t int16;
333  int32_t int32;
335  int64_t int64;
336  /* unsigned values */
338  uint8_t uint8;
340  uint16_t uint16;
342  uint32_t uint32;
344  uint64_t uint64;
345  } val;
346 } exi_integer_t;
347 
348 
350 typedef struct {
352  int64_t mantissa;
354  int16_t exponent; /* base-10 */
356 
357 
359 typedef struct {
361  int negative;
366 } exi_decimal_t;
367 
368 
370 typedef struct {
372  exi_datetime_type_t type;
374  int32_t year;
376  uint32_t monthDay;
378  uint32_t time;
382  uint32_t fractionalSecs;
386  uint32_t timezone;
388 
389 
391 typedef struct {
393  exi_datatype_t type;
395  size_t len;
396  /* Special datatype: integer */
397  /* exi_integer_type_t intType;*/
399  exi_datetime_type_t datetimeType;
400 } exi_list_t;
401 
402 
404 typedef struct {
406  size_t namespaceURI;
408  size_t localPart;
409 } exi_eqname_t;
410 
411 
413 typedef enum {
419 
420 
422 typedef struct {
424  exi_name_entry_type_t type;
426  size_t id;
430 
431 
433 typedef struct {
438 } exi_qname_t;
439 
440 
441 /*TODO Doxygen Documentation */
442 
443 
444 
445 
446 
447 
448 /* ==================================== */
449 /* URI and LocalName Entries */
450 typedef struct exiNameTablePrepopulated {
451  /* number of namespaces AND length name-partitions array */
452  size_t len;
453  /* number of localName entries divided by URI */
454  size_t* localNames;
456 
457 #define EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES 25
458 
459 typedef enum {
462 
463 typedef struct {
464  char* uri;
465  size_t uriID;
467 
468 typedef struct {
469  char* localName;
470  size_t localNameID;
471  size_t uriID;
473 
474 typedef struct {
475  exi_name_partition_type_t namePartitionType;
476  struct {
479  } entry;
481 
482 typedef struct exiNameTableRuntime {
483  /* maximum number of characters in the name partitions entries PLUS null terminators */
484  /* char characters[EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_CHARACTERS + EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES]; */
485  /* uint16_t numberOfUsedCharacters; *//* initially zero <= EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_CHARACTERS */
486  /* maximum number of name partitions entries. Name partitions entries consist in all uri, and local-name partition entries */
489  /* uint16_t numberOfUsedNamePartitions; *//* initially zero */
490  /* added entries */
491  size_t addedUriEntries; /* initially zero */
492  size_t addedLocalNameEntries; /* initially zero */
494 
495 
496 /* StartTagContent grammar initially empty */
497 /* ElementContent grammar has EE per default */
498 typedef struct {
500  size_t localNameID;
502  int hasXsiType; /* StartTagContent only */
503  int hasEE; /* ElementContentper default TRUE */
505 
506 /* Note: We do have twice as many runtime grammars (StartTagContent and ElementContent)*/
507 #define MAX_NUMBER_OF_RUNTIME_ELEMENTS 80
508 
509 
510 
511 /* ==================================== */
512 /* Value string table */
513 typedef struct exiValueStringTableEntry {
517  size_t localNameID;
519  size_t localValueID;
523 
524 typedef struct exiValueStringTable {
526  size_t size;
530  size_t len;
532 
533 /* typedef struct { */
535  /* uint16_t numberOfGlobalStrings; */
537  /* uint16_t sizeLocalStrings; */
539  /* uint16_t* numberOfLocalStrings; */
541 /* exi_value_string_table_t* valueStringTable;
542 } exi_value_table_t;*/
543 
544 typedef struct {
546  int16_t grammarStack[EXI_ELEMENT_STACK_SIZE];
550  size_t stackIndex;
551 
553  uint32_t eventCode;
554 
559 
561  size_t nextQNameID;
562 
565 
570 } exi_state_t;
571 
572 typedef struct {
573  /* type of value */
574  exi_datatype_t type;
575 
576  /* base types */
577  int boolean;
578  uint32_t enumeration;
579 
580  /* complex types: Integers, Bytes, Strings and Lists are not native types anymore */
589 } exi_value_t;
590 
591 
592 #ifdef __cplusplus
593 }
594 #endif
595 
596 #endif
Definition: EXITypes.h:216
Definition: EXITypes.h:115
exi_eqname_t eqname
Definition: EXITypes.h:588
Definition: EXITypes.h:209
exi_integer_t integral
Definition: EXITypes.h:363
Definition: EXITypes.h:87
Definition: EXITypes.h:189
size_t len
Definition: EXITypes.h:395
size_t len
Definition: EXITypes.h:452
uint32_t monthDay
Definition: EXITypes.h:376
exi_list_t list
Definition: EXITypes.h:587
exi_bytes_t binary
Definition: EXITypes.h:582
Integer value container.
Definition: EXITypes.h:323
exi_name_entry_type_t type
Definition: EXITypes.h:424
exi_name_table_runtime_t * nameTableRuntime
Definition: EXITypes.h:558
Definition: EXITypes.h:201
int16_t exponent
Definition: EXITypes.h:354
size_t size
Definition: EXITypes.h:161
uint8_t uint8
Definition: EXITypes.h:338
Definition: EXITypes.h:181
exi_float_me_t float_me
Definition: EXITypes.h:584
#define MAX_NUMBER_OF_RUNTIME_ELEMENTS
Definition: EXITypes.h:507
Float value container.
Definition: EXITypes.h:350
Definition: EXITypes.h:205
Definition: EXITypes.h:468
int presenceTimezone
Definition: EXITypes.h:384
Definition: EXITypes.h:243
Definition: EXITypes.h:226
Definition: EXITypes.h:207
exi_name_entry_type_t
Name entry type.
Definition: EXITypes.h:413
#define EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES
Definition: EXITypes.h:457
exi_value_string_table_t * stringTable
Definition: EXITypes.h:564
Definition: EXITypes.h:450
exi_string_character_t * characters
Definition: EXITypes.h:305
Definition: EXITypes.h:109
Definition: EXITypes.h:262
exi_name_partition_type_t
Definition: EXITypes.h:459
EXI Configurations for the EXI Codec.
int32_t year
Definition: EXITypes.h:374
Definition: EXITypes.h:218
Definition: EXITypes.h:199
Definition: EXITypes.h:239
exi_name_partition_type_t namePartitionType
Definition: EXITypes.h:475
exi_string_t miss
Definition: EXITypes.h:292
Definition: EXITypes.h:224
uint64_t uint64
Definition: EXITypes.h:344
size_t uriID
Definition: EXITypes.h:465
exi_decimal_t decimal
Definition: EXITypes.h:585
Definition: EXITypes.h:572
size_t uriID
Definition: EXITypes.h:471
exi_name_entry_t uri
Definition: EXITypes.h:435
int boolean
Definition: EXITypes.h:577
Bit stream container.
Definition: EXITypes.h:158
Definition: EXITypes.h:107
exi_datatype_t type
Definition: EXITypes.h:574
size_t stackIndex
Definition: EXITypes.h:550
size_t globalID
Definition: EXITypes.h:296
uint32_t time
Definition: EXITypes.h:378
uint8_t * data
Definition: EXITypes.h:163
exi_uri_partition_t uriPartition
Definition: EXITypes.h:477
Definition: EXITypes.h:251
size_t * pos
Definition: EXITypes.h:165
Decimal value container.
Definition: EXITypes.h:359
Restricted Characeter Set.
Definition: EXITypes.h:301
exi_datetime_type_t
EXI Datetime types.
Definition: EXITypes.h:235
exi_name_table_prepopulated_t * nameTablePrepopulated
Definition: EXITypes.h:556
size_t numberOfProductions
Definition: EXITypes.h:501
Definition: EXITypes.h:524
Definition: EXITypes.h:119
Definition: EXITypes.h:85
size_t nextQNameID
Definition: EXITypes.h:561
uint32_t exi_string_character_t
EXI string character.
Definition: EXITypes.h:271
uint8_t buffer
Definition: EXITypes.h:172
uint32_t enumeration
Definition: EXITypes.h:578
Definition: EXITypes.h:89
exi_name_entry_t localName
Definition: EXITypes.h:437
Definition: EXITypes.h:197
Definition: EXITypes.h:460
Definition: EXITypes.h:258
size_t numberOfRuntimeGrammars
Definition: EXITypes.h:567
Definition: EXITypes.h:183
Definition: EXITypes.h:498
exi_datatype_t type
Definition: EXITypes.h:393
exi_event_t
EXI Events.
Definition: EXITypes.h:83
char * localName
Definition: EXITypes.h:469
int negative
Definition: EXITypes.h:361
int hasEE
Definition: EXITypes.h:503
Definition: EXITypes.h:513
exi_integer_t integer
Definition: EXITypes.h:581
Definition: EXITypes.h:99
size_t len
Definition: EXITypes.h:318
Definition: EXITypes.h:103
Definition: EXITypes.h:228
int32_t int32
Definition: EXITypes.h:333
size_t namespaceURI
Definition: EXITypes.h:406
exi_string_t str
Definition: EXITypes.h:428
exi_datatype_t
EXI Value Datatypes.
Definition: EXITypes.h:179
int hasXsiType
Definition: EXITypes.h:502
Definition: EXITypes.h:123
struct exiNameTablePrepopulated exi_name_table_prepopulated_t
struct exiValueStringTable exi_value_string_table_t
exi_integer_t reverseFraction
Definition: EXITypes.h:365
Definition: EXITypes.h:121
Definition: EXITypes.h:117
size_t id
Definition: EXITypes.h:426
Definition: EXITypes.h:230
Definition: EXITypes.h:91
int8_t int8
Definition: EXITypes.h:329
uint8_t codingLength
Definition: EXITypes.h:307
Definition: EXITypes.h:237
struct exiNameTableRuntime exi_name_table_runtime_t
Definition: EXITypes.h:544
exi_integer_type_t type
Definition: EXITypes.h:325
uint32_t timezone
Definition: EXITypes.h:386
Definition: EXITypes.h:415
#define EXI_ELEMENT_STACK_SIZE
Definition: EXIConfig.h:98
List value container.
Definition: EXITypes.h:391
Definition: EXITypes.h:185
size_t len
Definition: EXITypes.h:530
exi_datetime_type_t type
Definition: EXITypes.h:372
int64_t int64
Definition: EXITypes.h:335
uint32_t eventCode
Definition: EXITypes.h:553
size_t localNameID
Definition: EXITypes.h:500
Definition: EXITypes.h:482
exi_datetime_t datetime
Definition: EXITypes.h:586
size_t size
Definition: EXITypes.h:303
exi_string_character_t * characters
Definition: EXITypes.h:281
Definition: EXITypes.h:193
Definition: EXITypes.h:417
size_t localID
Definition: EXITypes.h:294
int16_t int16
Definition: EXITypes.h:331
Definition: EXITypes.h:260
size_t len
Definition: EXITypes.h:283
exi_value_string_table_entry_t * strs
Definition: EXITypes.h:528
size_t size
Definition: EXITypes.h:314
Definition: EXITypes.h:222
size_t addedUriEntries
Definition: EXITypes.h:491
Definition: EXITypes.h:191
size_t localValueID
Definition: EXITypes.h:519
size_t namespaceUriID
Definition: EXITypes.h:499
Definition: EXITypes.h:241
size_t size
Definition: EXITypes.h:526
struct exiValueStringTableEntry exi_value_string_table_entry_t
Definition: EXITypes.h:97
size_t size
Definition: EXITypes.h:279
Definition: EXITypes.h:247
Definition: EXITypes.h:203
size_t * localNames
Definition: EXITypes.h:454
size_t localPart
Definition: EXITypes.h:408
Name entry.
Definition: EXITypes.h:422
Definition: EXITypes.h:113
exi_localname_partition_t localNamePartition
Definition: EXITypes.h:478
exi_string_t str
Definition: EXITypes.h:521
size_t namespaceUriID
Definition: EXITypes.h:515
exi_string_value_type_t
String value type.
Definition: EXITypes.h:256
size_t localNameID
Definition: EXITypes.h:517
exi_datetime_type_t datetimeType
Definition: EXITypes.h:399
size_t localNameID
Definition: EXITypes.h:470
Definition: EXITypes.h:220
Definition: EXITypes.h:111
char * uri
Definition: EXITypes.h:464
Definition: EXITypes.h:460
Definition: EXITypes.h:105
Universal Character Set (UCS) strings.
Definition: EXITypes.h:277
uint32_t uint32
Definition: EXITypes.h:342
size_t addedLocalNameEntries
Definition: EXITypes.h:492
int64_t mantissa
Definition: EXITypes.h:352
exi_string_value_t str
Definition: EXITypes.h:583
Byte value container.
Definition: EXITypes.h:312
Definition: EXITypes.h:195
exi_string_value_type_t type
Definition: EXITypes.h:290
uint8_t * data
Definition: EXITypes.h:316
Datetime value container.
Definition: EXITypes.h:370
String value.
Definition: EXITypes.h:288
Definition: EXITypes.h:474
uint8_t capacity
Definition: EXITypes.h:174
Definition: EXITypes.h:101
Definition: EXITypes.h:249
uint16_t uint16
Definition: EXITypes.h:340
Qualified name.
Definition: EXITypes.h:433
Definition: EXITypes.h:187
exi_integer_type_t
EXI Integer Value types.
Definition: EXITypes.h:214
int presenceFractionalSecs
Definition: EXITypes.h:380
uint32_t fractionalSecs
Definition: EXITypes.h:382
Definition: EXITypes.h:245
Definition: EXITypes.h:463
Efficient qname.
Definition: EXITypes.h:404
Definition: EXITypes.h:93