mirror of
https://github.com/Martin-P/OpenV2G.git
synced 2025-04-28 00:49:55 +00:00
Compare commits
No commits in common. "release_0.2.2" and "master" have entirely different histories.
release_0.
...
master
118 changed files with 247217 additions and 16607 deletions
.cproject.project
Debug
README.txtRelease
data
src
appHandshake
appHandEXIDatatypes.cappHandEXIDatatypes.happHandEXIDatatypesDecoder.cappHandEXIDatatypesDecoder.happHandEXIDatatypesEncoder.cappHandEXIDatatypesEncoder.h
codec
BitDecoderChannel.cBitDecoderChannel.hBitEncoderChannel.cBitEncoderChannel.hBitInputStream.cBitInputStream.hBitOutputStream.cBitOutputStream.hByteStream.cByteStream.hDecoderChannel.cDecoderChannel.hEXICoder.cEXIConfig.hEXIDecoder.cEXIEncoder.cEXIHeaderDecoder.cEXIHeaderDecoder.hEXIHeaderEncoder.cEXIHeaderEncoder.hEXIOptions.hEXITypes.hEncoderChannel.cEncoderChannel.hErrorCodes.hMethodsBag.cMethodsBag.hStringTable.cStringTableEntries.cStringTableEntries.hUCSString.cUCSString.h
din
dinEXIDatatypes.cdinEXIDatatypes.hdinEXIDatatypesDecoder.cdinEXIDatatypesDecoder.hdinEXIDatatypesEncoder.cdinEXIDatatypesEncoder.h
iso1
iso1EXIDatatypes.ciso1EXIDatatypes.hiso1EXIDatatypesDecoder.ciso1EXIDatatypesDecoder.hiso1EXIDatatypesEncoder.ciso1EXIDatatypesEncoder.h
iso2
iso2EXIDatatypes.ciso2EXIDatatypes.hiso2EXIDatatypesDecoder.ciso2EXIDatatypesDecoder.hiso2EXIDatatypesEncoder.ciso2EXIDatatypesEncoder.h
service
14
.project
14
.project
|
@ -17,6 +17,10 @@
|
|||
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||
<value></value>
|
||||
|
@ -27,7 +31,11 @@
|
|||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildLocation</key>
|
||||
<value>${workspace_loc:/OpenV2G/Debug}</value>
|
||||
<value>./OpenV2G/Debug</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||
<value>clean</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.contents</key>
|
||||
|
@ -45,6 +53,10 @@
|
|||
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||
<value>true</value>
|
||||
|
|
51
Debug/makefile
Normal file
51
Debug/makefile
Normal file
|
@ -0,0 +1,51 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
-include ../makefile.init
|
||||
|
||||
RM := rm -rf
|
||||
|
||||
# All of the sources participating in the build are defined here
|
||||
-include sources.mk
|
||||
-include src/xmldsig/subdir.mk
|
||||
-include src/transport/subdir.mk
|
||||
-include src/test/subdir.mk
|
||||
-include src/iso2/subdir.mk
|
||||
-include src/iso1/subdir.mk
|
||||
-include src/din/subdir.mk
|
||||
-include src/codec/subdir.mk
|
||||
-include src/appHandshake/subdir.mk
|
||||
-include subdir.mk
|
||||
-include objects.mk
|
||||
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
ifneq ($(strip $(C_DEPS)),)
|
||||
-include $(C_DEPS)
|
||||
endif
|
||||
endif
|
||||
|
||||
-include ../makefile.defs
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
|
||||
# All Target
|
||||
all: OpenV2G.exe
|
||||
|
||||
# Tool invocations
|
||||
OpenV2G.exe: $(OBJS) $(USER_OBJS)
|
||||
@echo 'Building target: $@'
|
||||
@echo 'Invoking: MinGW C Linker'
|
||||
gcc -o "OpenV2G.exe" $(OBJS) $(USER_OBJS) $(LIBS)
|
||||
@echo 'Finished building target: $@'
|
||||
@echo ' '
|
||||
|
||||
# Other Targets
|
||||
clean:
|
||||
-$(RM) $(EXECUTABLES)$(OBJS)$(C_DEPS) OpenV2G.exe
|
||||
-@echo ' '
|
||||
|
||||
.PHONY: all clean dependents
|
||||
.SECONDARY:
|
||||
|
||||
-include ../makefile.targets
|
8
Debug/objects.mk
Normal file
8
Debug/objects.mk
Normal file
|
@ -0,0 +1,8 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
USER_OBJS :=
|
||||
|
||||
LIBS :=
|
||||
|
24
Debug/sources.mk
Normal file
24
Debug/sources.mk
Normal file
|
@ -0,0 +1,24 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
OBJ_SRCS :=
|
||||
ASM_SRCS :=
|
||||
C_SRCS :=
|
||||
S_UPPER_SRCS :=
|
||||
O_SRCS :=
|
||||
EXECUTABLES :=
|
||||
OBJS :=
|
||||
C_DEPS :=
|
||||
|
||||
# Every subdirectory with source files must be described here
|
||||
SUBDIRS := \
|
||||
src/xmldsig \
|
||||
src/transport \
|
||||
src/test \
|
||||
src/iso2 \
|
||||
src/iso1 \
|
||||
src/din \
|
||||
src/codec \
|
||||
src/appHandshake \
|
||||
|
30
Debug/src/appHandshake/subdir.mk
Normal file
30
Debug/src/appHandshake/subdir.mk
Normal file
|
@ -0,0 +1,30 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/appHandshake/appHandEXIDatatypes.c \
|
||||
../src/appHandshake/appHandEXIDatatypesDecoder.c \
|
||||
../src/appHandshake/appHandEXIDatatypesEncoder.c
|
||||
|
||||
OBJS += \
|
||||
./src/appHandshake/appHandEXIDatatypes.o \
|
||||
./src/appHandshake/appHandEXIDatatypesDecoder.o \
|
||||
./src/appHandshake/appHandEXIDatatypesEncoder.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/appHandshake/appHandEXIDatatypes.d \
|
||||
./src/appHandshake/appHandEXIDatatypesDecoder.d \
|
||||
./src/appHandshake/appHandEXIDatatypesEncoder.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/appHandshake/%.o: ../src/appHandshake/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
45
Debug/src/codec/subdir.mk
Normal file
45
Debug/src/codec/subdir.mk
Normal file
|
@ -0,0 +1,45 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/codec/BitInputStream.c \
|
||||
../src/codec/BitOutputStream.c \
|
||||
../src/codec/ByteStream.c \
|
||||
../src/codec/DecoderChannel.c \
|
||||
../src/codec/EXIHeaderDecoder.c \
|
||||
../src/codec/EXIHeaderEncoder.c \
|
||||
../src/codec/EncoderChannel.c \
|
||||
../src/codec/MethodsBag.c
|
||||
|
||||
OBJS += \
|
||||
./src/codec/BitInputStream.o \
|
||||
./src/codec/BitOutputStream.o \
|
||||
./src/codec/ByteStream.o \
|
||||
./src/codec/DecoderChannel.o \
|
||||
./src/codec/EXIHeaderDecoder.o \
|
||||
./src/codec/EXIHeaderEncoder.o \
|
||||
./src/codec/EncoderChannel.o \
|
||||
./src/codec/MethodsBag.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/codec/BitInputStream.d \
|
||||
./src/codec/BitOutputStream.d \
|
||||
./src/codec/ByteStream.d \
|
||||
./src/codec/DecoderChannel.d \
|
||||
./src/codec/EXIHeaderDecoder.d \
|
||||
./src/codec/EXIHeaderEncoder.d \
|
||||
./src/codec/EncoderChannel.d \
|
||||
./src/codec/MethodsBag.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/codec/%.o: ../src/codec/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
30
Debug/src/din/subdir.mk
Normal file
30
Debug/src/din/subdir.mk
Normal file
|
@ -0,0 +1,30 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/din/dinEXIDatatypes.c \
|
||||
../src/din/dinEXIDatatypesDecoder.c \
|
||||
../src/din/dinEXIDatatypesEncoder.c
|
||||
|
||||
OBJS += \
|
||||
./src/din/dinEXIDatatypes.o \
|
||||
./src/din/dinEXIDatatypesDecoder.o \
|
||||
./src/din/dinEXIDatatypesEncoder.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/din/dinEXIDatatypes.d \
|
||||
./src/din/dinEXIDatatypesDecoder.d \
|
||||
./src/din/dinEXIDatatypesEncoder.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/din/%.o: ../src/din/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
30
Debug/src/iso1/subdir.mk
Normal file
30
Debug/src/iso1/subdir.mk
Normal file
|
@ -0,0 +1,30 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/iso1/iso1EXIDatatypes.c \
|
||||
../src/iso1/iso1EXIDatatypesDecoder.c \
|
||||
../src/iso1/iso1EXIDatatypesEncoder.c
|
||||
|
||||
OBJS += \
|
||||
./src/iso1/iso1EXIDatatypes.o \
|
||||
./src/iso1/iso1EXIDatatypesDecoder.o \
|
||||
./src/iso1/iso1EXIDatatypesEncoder.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/iso1/iso1EXIDatatypes.d \
|
||||
./src/iso1/iso1EXIDatatypesDecoder.d \
|
||||
./src/iso1/iso1EXIDatatypesEncoder.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/iso1/%.o: ../src/iso1/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
30
Debug/src/iso2/subdir.mk
Normal file
30
Debug/src/iso2/subdir.mk
Normal file
|
@ -0,0 +1,30 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/iso2/iso2EXIDatatypes.c \
|
||||
../src/iso2/iso2EXIDatatypesDecoder.c \
|
||||
../src/iso2/iso2EXIDatatypesEncoder.c
|
||||
|
||||
OBJS += \
|
||||
./src/iso2/iso2EXIDatatypes.o \
|
||||
./src/iso2/iso2EXIDatatypesDecoder.o \
|
||||
./src/iso2/iso2EXIDatatypesEncoder.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/iso2/iso2EXIDatatypes.d \
|
||||
./src/iso2/iso2EXIDatatypesDecoder.d \
|
||||
./src/iso2/iso2EXIDatatypesEncoder.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/iso2/%.o: ../src/iso2/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
30
Debug/src/test/subdir.mk
Normal file
30
Debug/src/test/subdir.mk
Normal file
|
@ -0,0 +1,30 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/test/main.c \
|
||||
../src/test/main_databinder.c \
|
||||
../src/test/main_example.c
|
||||
|
||||
OBJS += \
|
||||
./src/test/main.o \
|
||||
./src/test/main_databinder.o \
|
||||
./src/test/main_example.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/test/main.d \
|
||||
./src/test/main_databinder.d \
|
||||
./src/test/main_example.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/test/%.o: ../src/test/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
24
Debug/src/transport/subdir.mk
Normal file
24
Debug/src/transport/subdir.mk
Normal file
|
@ -0,0 +1,24 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/transport/v2gtp.c
|
||||
|
||||
OBJS += \
|
||||
./src/transport/v2gtp.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/transport/v2gtp.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/transport/%.o: ../src/transport/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
30
Debug/src/xmldsig/subdir.mk
Normal file
30
Debug/src/xmldsig/subdir.mk
Normal file
|
@ -0,0 +1,30 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/xmldsig/xmldsigEXIDatatypes.c \
|
||||
../src/xmldsig/xmldsigEXIDatatypesDecoder.c \
|
||||
../src/xmldsig/xmldsigEXIDatatypesEncoder.c
|
||||
|
||||
OBJS += \
|
||||
./src/xmldsig/xmldsigEXIDatatypes.o \
|
||||
./src/xmldsig/xmldsigEXIDatatypesDecoder.o \
|
||||
./src/xmldsig/xmldsigEXIDatatypesEncoder.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/xmldsig/xmldsigEXIDatatypes.d \
|
||||
./src/xmldsig/xmldsigEXIDatatypesDecoder.d \
|
||||
./src/xmldsig/xmldsigEXIDatatypesEncoder.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/xmldsig/%.o: ../src/xmldsig/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
129
README.txt
129
README.txt
|
@ -1,13 +1,12 @@
|
|||
-------------------------------------------------------------------------
|
||||
OpenV2G - an open source project implementing the basic functionality of the ISO IEC 15118 vehicle to grid (V2G) communication interface
|
||||
Version 0.2.2, released October 20, 2010
|
||||
Version 0.9.5, released March 11, 2022
|
||||
http://openv2g.sourceforge.net/
|
||||
|
||||
Please report bugs via the SourceForge bug tracking system at http://sourceforge.net/tracker/?group_id=350113.
|
||||
Thank you.
|
||||
|
||||
|
||||
Copyright (C) 2007-2010 Siemens AG
|
||||
Copyright (C) 2007-2022 Siemens AG
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published
|
||||
|
@ -22,6 +21,130 @@ GNU Lesser General Public License for more details.
|
|||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.9.4:
|
||||
-------------------------------------------------------------------------
|
||||
* fix possible memory corruption bug
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.9.3:
|
||||
-------------------------------------------------------------------------
|
||||
* Support for 15118-2-2016 (ISO2) started besides 15118-2-2013 (ISO1) and DIN
|
||||
* fix eMAID fragment encoding/decoding support
|
||||
* internal coding updates
|
||||
* bug-fixes
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.9.2:
|
||||
-------------------------------------------------------------------------
|
||||
* resolves XML signature interoperability issue
|
||||
Note: To make use of xmldsig the following defines have to be set.
|
||||
in "xmldsigEXIDatatypes.h"
|
||||
#define DEPLOY_XMLDSIG_CODEC SUPPORT_YES
|
||||
#define DEPLOY_XMLDSIG_CODEC_FRAGMENT SUPPORT_YES
|
||||
in "v2gEXIDatatypes.h"
|
||||
#define DEPLOY_ISO_CODEC_FRAGMENT SUPPORT_YES
|
||||
Otherwise the code is turned off.
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.9.1:
|
||||
-------------------------------------------------------------------------
|
||||
* resolves bug with name clashes w.r.t. iso and din track
|
||||
* fixes issue with test code for init handshake
|
||||
* Note: OpenV2G 0.9.2 is essentially just a bug fixed version of OpenV2G 0.9.1
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.9:
|
||||
-------------------------------------------------------------------------
|
||||
* includes support for DIN and hence interoperability with OpenV2G 0.7
|
||||
(needs to be switched on though by #define DEPLOY_DIN_CODEC)
|
||||
* fixes bugs and warnings for Visual Studio
|
||||
* Note: OpenV2G 0.9.1 is a superset of previous versions
|
||||
v2g...c/h files support ISO track
|
||||
din...c/h files support DIN track
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.8:
|
||||
-------------------------------------------------------------------------
|
||||
* large code footprint reduction which resulted in a new API
|
||||
(please take a look at the example in src/test folder)
|
||||
* datatype differences w.r.t. arrays, strings, bytes, isUsed, and enum-naming
|
||||
* bug-fixes
|
||||
* Note: OpenV2G 0.8 and 0.9 are interoperable, meaning that one can generate
|
||||
streams with one and decode with the other or vice-versa
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.7:
|
||||
-------------------------------------------------------------------------
|
||||
* adaption of V2G schema changes (reflects the ISO/IEC 15118-2 FDIS status)
|
||||
* bug-fixes
|
||||
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.7:
|
||||
-------------------------------------------------------------------------
|
||||
* adaption of V2G schema changes (reflects the ISO/IEC 15118-2 FDIS status)
|
||||
* bug-fixes
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.6:
|
||||
-------------------------------------------------------------------------
|
||||
* adaption of V2G schema changes (reflects the ISO/IEC 15118-2 DIS status and DIN 70121)
|
||||
* reduced memory usage
|
||||
* EXI decoder skips schema deviations according to EXI Profile
|
||||
* bug-fixes
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.5:
|
||||
-------------------------------------------------------------------------
|
||||
* adaption of V2G schema changes
|
||||
* application handshake protocol implementation
|
||||
* asynchronised communication
|
||||
* reduced memory usage
|
||||
* changed V2GTP byte order from little endian to big endian
|
||||
* bug-fixes
|
||||
* updated AC demo interaction between EV and EVSE, and
|
||||
* updated DC demo interaction between EV and EVSE
|
||||
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.4:
|
||||
-------------------------------------------------------------------------
|
||||
* adaption of V2G schema changes
|
||||
* V2GTP implementation (replaces the DoIP implementation)
|
||||
* EXI default coder for the 15118 schema (replaces the strict mode of EXI)
|
||||
* AC demo interaction between PEV and EVSE, and
|
||||
* DC demo interaction between PEV and EVSE
|
||||
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.3.1:
|
||||
-------------------------------------------------------------------------
|
||||
* adaption of V2G schema changes
|
||||
* supporting of DC messages
|
||||
* example program showing the message sequence of AC charging and
|
||||
DC charging
|
||||
* bug-fixes
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.3:
|
||||
-------------------------------------------------------------------------
|
||||
* Bug-fixes
|
||||
* reduced memory usage
|
||||
* some type changes in the EXI codec and V2G service:
|
||||
** struct v2gService->struct EXIService in v2g_service.h
|
||||
** size_t->uint16_t in v2g_serviceClientDataTransmitter.h and doIP.h
|
||||
* renaming of some enumeration values in v2g_serviceDataTypes.h
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.2.2:
|
||||
-------------------------------------------------------------------------
|
||||
* Bug-fixes
|
||||
* first DoIP implementation
|
||||
* V2G message error handling
|
||||
* adaption of V2G schema changes
|
||||
* code optimizations
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
CHANGES from version 0.2.1:
|
||||
-------------------------------------------------------------------------
|
||||
|
|
51
Release/makefile
Normal file
51
Release/makefile
Normal file
|
@ -0,0 +1,51 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
-include ../makefile.init
|
||||
|
||||
RM := rm -rf
|
||||
|
||||
# All of the sources participating in the build are defined here
|
||||
-include sources.mk
|
||||
-include src/xmldsig/subdir.mk
|
||||
-include src/transport/subdir.mk
|
||||
-include src/test/subdir.mk
|
||||
-include src/iso2/subdir.mk
|
||||
-include src/iso1/subdir.mk
|
||||
-include src/din/subdir.mk
|
||||
-include src/codec/subdir.mk
|
||||
-include src/appHandshake/subdir.mk
|
||||
-include subdir.mk
|
||||
-include objects.mk
|
||||
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
ifneq ($(strip $(C_DEPS)),)
|
||||
-include $(C_DEPS)
|
||||
endif
|
||||
endif
|
||||
|
||||
-include ../makefile.defs
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
|
||||
# All Target
|
||||
all: OpenV2G.exe
|
||||
|
||||
# Tool invocations
|
||||
OpenV2G.exe: $(OBJS) $(USER_OBJS)
|
||||
@echo 'Building target: $@'
|
||||
@echo 'Invoking: MinGW C Linker'
|
||||
gcc -o "OpenV2G.exe" $(OBJS) $(USER_OBJS) $(LIBS)
|
||||
@echo 'Finished building target: $@'
|
||||
@echo ' '
|
||||
|
||||
# Other Targets
|
||||
clean:
|
||||
-$(RM) $(EXECUTABLES)$(OBJS)$(C_DEPS) OpenV2G.exe
|
||||
-@echo ' '
|
||||
|
||||
.PHONY: all clean dependents
|
||||
.SECONDARY:
|
||||
|
||||
-include ../makefile.targets
|
8
Release/objects.mk
Normal file
8
Release/objects.mk
Normal file
|
@ -0,0 +1,8 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
USER_OBJS :=
|
||||
|
||||
LIBS :=
|
||||
|
24
Release/sources.mk
Normal file
24
Release/sources.mk
Normal file
|
@ -0,0 +1,24 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
OBJ_SRCS :=
|
||||
ASM_SRCS :=
|
||||
C_SRCS :=
|
||||
S_UPPER_SRCS :=
|
||||
O_SRCS :=
|
||||
EXECUTABLES :=
|
||||
OBJS :=
|
||||
C_DEPS :=
|
||||
|
||||
# Every subdirectory with source files must be described here
|
||||
SUBDIRS := \
|
||||
src/xmldsig \
|
||||
src/transport \
|
||||
src/test \
|
||||
src/iso2 \
|
||||
src/iso1 \
|
||||
src/din \
|
||||
src/codec \
|
||||
src/appHandshake \
|
||||
|
30
Release/src/appHandshake/subdir.mk
Normal file
30
Release/src/appHandshake/subdir.mk
Normal file
|
@ -0,0 +1,30 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/appHandshake/appHandEXIDatatypes.c \
|
||||
../src/appHandshake/appHandEXIDatatypesDecoder.c \
|
||||
../src/appHandshake/appHandEXIDatatypesEncoder.c
|
||||
|
||||
OBJS += \
|
||||
./src/appHandshake/appHandEXIDatatypes.o \
|
||||
./src/appHandshake/appHandEXIDatatypesDecoder.o \
|
||||
./src/appHandshake/appHandEXIDatatypesEncoder.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/appHandshake/appHandEXIDatatypes.d \
|
||||
./src/appHandshake/appHandEXIDatatypesDecoder.d \
|
||||
./src/appHandshake/appHandEXIDatatypesEncoder.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/appHandshake/%.o: ../src/appHandshake/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
45
Release/src/codec/subdir.mk
Normal file
45
Release/src/codec/subdir.mk
Normal file
|
@ -0,0 +1,45 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/codec/BitInputStream.c \
|
||||
../src/codec/BitOutputStream.c \
|
||||
../src/codec/ByteStream.c \
|
||||
../src/codec/DecoderChannel.c \
|
||||
../src/codec/EXIHeaderDecoder.c \
|
||||
../src/codec/EXIHeaderEncoder.c \
|
||||
../src/codec/EncoderChannel.c \
|
||||
../src/codec/MethodsBag.c
|
||||
|
||||
OBJS += \
|
||||
./src/codec/BitInputStream.o \
|
||||
./src/codec/BitOutputStream.o \
|
||||
./src/codec/ByteStream.o \
|
||||
./src/codec/DecoderChannel.o \
|
||||
./src/codec/EXIHeaderDecoder.o \
|
||||
./src/codec/EXIHeaderEncoder.o \
|
||||
./src/codec/EncoderChannel.o \
|
||||
./src/codec/MethodsBag.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/codec/BitInputStream.d \
|
||||
./src/codec/BitOutputStream.d \
|
||||
./src/codec/ByteStream.d \
|
||||
./src/codec/DecoderChannel.d \
|
||||
./src/codec/EXIHeaderDecoder.d \
|
||||
./src/codec/EXIHeaderEncoder.d \
|
||||
./src/codec/EncoderChannel.d \
|
||||
./src/codec/MethodsBag.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/codec/%.o: ../src/codec/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
30
Release/src/din/subdir.mk
Normal file
30
Release/src/din/subdir.mk
Normal file
|
@ -0,0 +1,30 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/din/dinEXIDatatypes.c \
|
||||
../src/din/dinEXIDatatypesDecoder.c \
|
||||
../src/din/dinEXIDatatypesEncoder.c
|
||||
|
||||
OBJS += \
|
||||
./src/din/dinEXIDatatypes.o \
|
||||
./src/din/dinEXIDatatypesDecoder.o \
|
||||
./src/din/dinEXIDatatypesEncoder.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/din/dinEXIDatatypes.d \
|
||||
./src/din/dinEXIDatatypesDecoder.d \
|
||||
./src/din/dinEXIDatatypesEncoder.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/din/%.o: ../src/din/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
30
Release/src/iso1/subdir.mk
Normal file
30
Release/src/iso1/subdir.mk
Normal file
|
@ -0,0 +1,30 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/iso1/iso1EXIDatatypes.c \
|
||||
../src/iso1/iso1EXIDatatypesDecoder.c \
|
||||
../src/iso1/iso1EXIDatatypesEncoder.c
|
||||
|
||||
OBJS += \
|
||||
./src/iso1/iso1EXIDatatypes.o \
|
||||
./src/iso1/iso1EXIDatatypesDecoder.o \
|
||||
./src/iso1/iso1EXIDatatypesEncoder.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/iso1/iso1EXIDatatypes.d \
|
||||
./src/iso1/iso1EXIDatatypesDecoder.d \
|
||||
./src/iso1/iso1EXIDatatypesEncoder.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/iso1/%.o: ../src/iso1/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
30
Release/src/iso2/subdir.mk
Normal file
30
Release/src/iso2/subdir.mk
Normal file
|
@ -0,0 +1,30 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/iso2/iso2EXIDatatypes.c \
|
||||
../src/iso2/iso2EXIDatatypesDecoder.c \
|
||||
../src/iso2/iso2EXIDatatypesEncoder.c
|
||||
|
||||
OBJS += \
|
||||
./src/iso2/iso2EXIDatatypes.o \
|
||||
./src/iso2/iso2EXIDatatypesDecoder.o \
|
||||
./src/iso2/iso2EXIDatatypesEncoder.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/iso2/iso2EXIDatatypes.d \
|
||||
./src/iso2/iso2EXIDatatypesDecoder.d \
|
||||
./src/iso2/iso2EXIDatatypesEncoder.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/iso2/%.o: ../src/iso2/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
30
Release/src/test/subdir.mk
Normal file
30
Release/src/test/subdir.mk
Normal file
|
@ -0,0 +1,30 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/test/main.c \
|
||||
../src/test/main_databinder.c \
|
||||
../src/test/main_example.c
|
||||
|
||||
OBJS += \
|
||||
./src/test/main.o \
|
||||
./src/test/main_databinder.o \
|
||||
./src/test/main_example.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/test/main.d \
|
||||
./src/test/main_databinder.d \
|
||||
./src/test/main_example.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/test/%.o: ../src/test/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
24
Release/src/transport/subdir.mk
Normal file
24
Release/src/transport/subdir.mk
Normal file
|
@ -0,0 +1,24 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/transport/v2gtp.c
|
||||
|
||||
OBJS += \
|
||||
./src/transport/v2gtp.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/transport/v2gtp.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/transport/%.o: ../src/transport/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
30
Release/src/xmldsig/subdir.mk
Normal file
30
Release/src/xmldsig/subdir.mk
Normal file
|
@ -0,0 +1,30 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../src/xmldsig/xmldsigEXIDatatypes.c \
|
||||
../src/xmldsig/xmldsigEXIDatatypesDecoder.c \
|
||||
../src/xmldsig/xmldsigEXIDatatypesEncoder.c
|
||||
|
||||
OBJS += \
|
||||
./src/xmldsig/xmldsigEXIDatatypes.o \
|
||||
./src/xmldsig/xmldsigEXIDatatypesDecoder.o \
|
||||
./src/xmldsig/xmldsigEXIDatatypesEncoder.o
|
||||
|
||||
C_DEPS += \
|
||||
./src/xmldsig/xmldsigEXIDatatypes.d \
|
||||
./src/xmldsig/xmldsigEXIDatatypesDecoder.d \
|
||||
./src/xmldsig/xmldsigEXIDatatypesEncoder.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
src/xmldsig/%.o: ../src/xmldsig/%.c
|
||||
@echo 'Building file: $<'
|
||||
@echo 'Invoking: GCC C Compiler'
|
||||
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
@echo 'Finished building: $<'
|
||||
@echo ' '
|
||||
|
||||
|
15
data/sessionSetupReq.xml
Normal file
15
data/sessionSetupReq.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<v2gci_d:V2G_Message xmlns:v2gci_b="urn:iso:15118:2:2016:MsgBody"
|
||||
xmlns:ns2="urn:iso:15118:2:2016:MsgDataTypes"
|
||||
xmlns:v2gci_h="urn:iso:15118:2:2016:MsgHeader"
|
||||
xmlns:xmlsig="http://www.w3.org/2000/09/xmldsig#"
|
||||
xmlns:v2gci_d="urn:iso:15118:2:2016:MsgDef">
|
||||
<v2gci_d:Header>
|
||||
<v2gci_h:SessionID>0000000000000000</v2gci_h:SessionID>
|
||||
</v2gci_d:Header>
|
||||
<v2gci_d:Body>
|
||||
<v2gci_b:SessionSetupReq>
|
||||
<v2gci_b:EVCCID>01</v2gci_b:EVCCID>
|
||||
</v2gci_b:SessionSetupReq>
|
||||
</v2gci_d:Body>
|
||||
</v2gci_d:V2G_Message>
|
BIN
data/sessionSetupReq.xml.exi
Normal file
BIN
data/sessionSetupReq.xml.exi
Normal file
Binary file not shown.
17
data/sessionSetupRes.xml
Normal file
17
data/sessionSetupRes.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<v2gci_d:V2G_Message xmlns:v2gci_b="urn:iso:15118:2:2016:MsgBody"
|
||||
xmlns:ns2="urn:iso:15118:2:2016:MsgDataTypes"
|
||||
xmlns:v2gci_h="urn:iso:15118:2:2016:MsgHeader"
|
||||
xmlns:xmlsig="http://www.w3.org/2000/09/xmldsig#"
|
||||
xmlns:v2gci_d="urn:iso:15118:2:2016:MsgDef">
|
||||
<v2gci_d:Header>
|
||||
<v2gci_h:SessionID>0000000000000010</v2gci_h:SessionID>
|
||||
</v2gci_d:Header>
|
||||
<v2gci_d:Body>
|
||||
<v2gci_b:SessionSetupRes>
|
||||
<v2gci_b:ResponseCode>OK</v2gci_b:ResponseCode>
|
||||
<v2gci_b:EVSEID>1234567</v2gci_b:EVSEID>
|
||||
<v2gci_b:EVSETimeStamp>123456789</v2gci_b:EVSETimeStamp>
|
||||
</v2gci_b:SessionSetupRes>
|
||||
</v2gci_d:Body>
|
||||
</v2gci_d:V2G_Message>
|
BIN
data/sessionSetupRes.xml.exi
Normal file
BIN
data/sessionSetupRes.xml.exi
Normal file
Binary file not shown.
|
@ -1,21 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ns3:V2G_Message xmlns:ns1="urn:iso:15118:2:2010:MsgBody"
|
||||
xmlns:ns2="urn:iso:15118:2:2010:MsgDataTypes"
|
||||
xmlns:ns3="urn:iso:15118:2:2010:MsgDef"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="urn:iso:15118:2:2010:MsgDef V2G_CI_MsgDef.xsd">
|
||||
<ns3:Header>
|
||||
<ns3:SessionInformation>
|
||||
<ns2:SessionID>3031323334353637</ns2:SessionID>
|
||||
<ns2:ProtocolVersion>1</ns2:ProtocolVersion>
|
||||
</ns3:SessionInformation>
|
||||
</ns3:Header>
|
||||
<ns3:Body>
|
||||
<ns1:SessionSetupReq>
|
||||
<ns1:PEVStatus>
|
||||
<ns2:ConnectorLocked>0</ns2:ConnectorLocked>
|
||||
<ns2:ChargerStandby>1</ns2:ChargerStandby>
|
||||
</ns1:PEVStatus>
|
||||
</ns1:SessionSetupReq>
|
||||
</ns3:Body>
|
||||
</ns3:V2G_Message>
|
|
@ -1 +0,0 @@
|
|||
<EFBFBD>˜A<EFBFBD>‰‘™¡©±ºc<>
|
|
@ -1,28 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<v2gci_d:V2G_Message xmlns:v2gci_d="urn:iso:15118:2:2010:MsgDef"
|
||||
xmlns:v2gci_t="urn:iso:15118:2:2010:MsgDataTypes"
|
||||
xmlns:ns0="urn:iso:15118:2:2010:MsgBody"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="urn:iso:15118:2:2010:MsgDef V2G_CI_MsgDef.xsd">
|
||||
<v2gci_d:Header>
|
||||
<v2gci_d:SessionInformation>
|
||||
<v2gci_t:SessionID>0Fb80Fb80Fb80Fb8</v2gci_t:SessionID>
|
||||
<v2gci_t:ProtocolVersion>1</v2gci_t:ProtocolVersion>
|
||||
</v2gci_d:SessionInformation>
|
||||
</v2gci_d:Header>
|
||||
<v2gci_d:Body>
|
||||
<ns0:SessionSetupRes>
|
||||
<ns0:ResponseCode>OK_SessionSetup</ns0:ResponseCode>
|
||||
<ns0:EVSEID>54</ns0:EVSEID>
|
||||
<ns0:EVSEStatus>
|
||||
<v2gci_t:FatalError>0</v2gci_t:FatalError>
|
||||
<v2gci_t:EVSEStandby>1</v2gci_t:EVSEStandby>
|
||||
<v2gci_t:ConnectorLocked>1</v2gci_t:ConnectorLocked>
|
||||
<v2gci_t:PowerSwitchClosed>0</v2gci_t:PowerSwitchClosed>
|
||||
<v2gci_t:RCD>1</v2gci_t:RCD>
|
||||
<v2gci_t:ShutDownTime>123456789</v2gci_t:ShutDownTime>
|
||||
</ns0:EVSEStatus>
|
||||
<ns0:TCurrent>123456789</ns0:TCurrent>
|
||||
</ns0:SessionSetupRes>
|
||||
</v2gci_d:Body>
|
||||
</v2gci_d:V2G_Message>
|
|
@ -1 +0,0 @@
|
|||
<EFBFBD>˜@}À}À}À}Âc<>TjVk¼é+5Þt
|
64
src/appHandshake/appHandEXIDatatypes.c
Normal file
64
src/appHandshake/appHandEXIDatatypes.c
Normal file
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_AppProtocol.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "appHandEXIDatatypes.h"
|
||||
#include "EXITypes.h"
|
||||
|
||||
|
||||
#ifndef EXI_appHand_DATATYPES_C
|
||||
#define EXI_appHand_DATATYPES_C
|
||||
|
||||
|
||||
|
||||
void init_appHandEXIDocument(struct appHandEXIDocument* exiDoc) {
|
||||
exiDoc->supportedAppProtocolReq_isUsed = 0u;
|
||||
exiDoc->supportedAppProtocolRes_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_appHandAppProtocolType(struct appHandAppProtocolType* appHandAppProtocolType) {
|
||||
}
|
||||
|
||||
void init_appHandAnonType_supportedAppProtocolReq(struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq) {
|
||||
appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_appHandAnonType_supportedAppProtocolRes(struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) {
|
||||
appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed = 0u;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
133
src/appHandshake/appHandEXIDatatypes.h
Normal file
133
src/appHandshake/appHandEXIDatatypes.h
Normal file
|
@ -0,0 +1,133 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_AppProtocol.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EXIDatatypes.h
|
||||
* \brief Datatype definitions and structs for given XML Schema definitions and initialization methods
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXI_appHand_DATATYPES_H
|
||||
#define EXI_appHand_DATATYPES_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
|
||||
/* Datatype definitions and structs for given XML Schema definitions */
|
||||
|
||||
#define UNION_YES 1
|
||||
#define UNION_NO 2
|
||||
#define SAVE_MEMORY_WITH_UNNAMED_UNION UNION_YES
|
||||
|
||||
/* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)', derivedBy='RESTRICTION'. */
|
||||
#define appHandAppProtocolType_ProtocolNamespace_CHARACTERS_SIZE 100 /* XML schema facet maxLength for urn:iso:15118:2:2010:AppProtocol,protocolNamespaceType is 100 */
|
||||
struct appHandAppProtocolType {
|
||||
/* element: ProtocolNamespace, urn:iso:15118:2:2010:AppProtocol,protocolNamespaceType */
|
||||
struct {
|
||||
exi_string_character_t characters[appHandAppProtocolType_ProtocolNamespace_CHARACTERS_SIZE];
|
||||
uint16_t charactersLen;
|
||||
} ProtocolNamespace ;
|
||||
/* element: VersionNumberMajor, http://www.w3.org/2001/XMLSchema,unsignedInt */
|
||||
uint32_t VersionNumberMajor ;
|
||||
/* element: VersionNumberMinor, http://www.w3.org/2001/XMLSchema,unsignedInt */
|
||||
uint32_t VersionNumberMinor ;
|
||||
/* element: SchemaID, urn:iso:15118:2:2010:AppProtocol,idType */
|
||||
uint8_t SchemaID ;
|
||||
/* element: Priority, urn:iso:15118:2:2010:AppProtocol,priorityType */
|
||||
uint8_t Priority ;
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
appHandresponseCodeType_OK_SuccessfulNegotiation = 0,
|
||||
appHandresponseCodeType_OK_SuccessfulNegotiationWithMinorDeviation = 1,
|
||||
appHandresponseCodeType_Failed_NoNegotiation = 2
|
||||
} appHandresponseCodeType;
|
||||
|
||||
/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ResponseCode,SchemaID{0-1})', derivedBy='RESTRICTION'. */
|
||||
struct appHandAnonType_supportedAppProtocolRes {
|
||||
/* element: ResponseCode, urn:iso:15118:2:2010:AppProtocol,responseCodeType */
|
||||
appHandresponseCodeType ResponseCode ;
|
||||
/* element: SchemaID, urn:iso:15118:2:2010:AppProtocol,idType */
|
||||
uint8_t SchemaID ;
|
||||
unsigned int SchemaID_isUsed:1;
|
||||
};
|
||||
|
||||
/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolReq', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(AppProtocol{1-20})', derivedBy='RESTRICTION'. */
|
||||
#define appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE 5
|
||||
struct appHandAnonType_supportedAppProtocolReq {
|
||||
/* element: AppProtocol, Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)', derivedBy='RESTRICTION'. */
|
||||
struct {
|
||||
struct appHandAppProtocolType array[appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE];
|
||||
uint16_t arrayLen;
|
||||
} AppProtocol;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Possible root elements of EXI Document */
|
||||
struct appHandEXIDocument {
|
||||
#if SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES
|
||||
union {
|
||||
#endif /* SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES */
|
||||
struct appHandAnonType_supportedAppProtocolReq supportedAppProtocolReq ;
|
||||
struct appHandAnonType_supportedAppProtocolRes supportedAppProtocolRes ;
|
||||
#if SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES
|
||||
};
|
||||
#endif /* SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES */
|
||||
unsigned int supportedAppProtocolReq_isUsed:1;
|
||||
unsigned int supportedAppProtocolRes_isUsed:1;
|
||||
|
||||
|
||||
int _warning_;
|
||||
};
|
||||
|
||||
/* Initialization methods for structs */
|
||||
|
||||
void init_appHandEXIDocument(struct appHandEXIDocument* exiDoc);
|
||||
void init_appHandAppProtocolType(struct appHandAppProtocolType* appHandAppProtocolType);
|
||||
void init_appHandAnonType_supportedAppProtocolReq(struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq);
|
||||
void init_appHandAnonType_supportedAppProtocolRes(struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
896
src/appHandshake/appHandEXIDatatypesDecoder.c
Normal file
896
src/appHandshake/appHandEXIDatatypesDecoder.c
Normal file
|
@ -0,0 +1,896 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_AppProtocol.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
#include "appHandEXIDatatypesDecoder.h"
|
||||
|
||||
#include "DecoderChannel.h"
|
||||
#include "EXIHeaderDecoder.h"
|
||||
|
||||
#include "appHandEXIDatatypes.h"
|
||||
#include "ErrorCodes.h"
|
||||
|
||||
#ifndef EXI_appHand_DATATYPES_DECODER_C
|
||||
#define EXI_appHand_DATATYPES_DECODER_C
|
||||
|
||||
/** event-code */
|
||||
static uint32_t eventCode;
|
||||
static int errn;
|
||||
static uint32_t uint32;
|
||||
|
||||
|
||||
/* Forward Declarations */
|
||||
static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType);
|
||||
static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq);
|
||||
static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes);
|
||||
|
||||
/* Deviant data decoding (skip functions) */
|
||||
|
||||
|
||||
/* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)', derivedBy='RESTRICTION'. */
|
||||
static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType) {
|
||||
int grammarID = 0;
|
||||
int done = 0;
|
||||
|
||||
init_appHandAppProtocolType(appHandAppProtocolType);
|
||||
|
||||
while(!done) {
|
||||
switch(grammarID) {
|
||||
case 0:
|
||||
/* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
/* FirstStartTag[CHARACTERS[STRING]] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(errn == 0) {
|
||||
if(eventCode == 0) {
|
||||
errn = decodeUnsignedInteger16(stream, &appHandAppProtocolType->ProtocolNamespace.charactersLen);
|
||||
if (errn == 0) {
|
||||
if (appHandAppProtocolType->ProtocolNamespace.charactersLen >= 2) {
|
||||
appHandAppProtocolType->ProtocolNamespace.charactersLen = (uint16_t)(appHandAppProtocolType->ProtocolNamespace.charactersLen - 2); /* string table miss */
|
||||
errn = decodeCharacters(stream, appHandAppProtocolType->ProtocolNamespace.charactersLen, appHandAppProtocolType->ProtocolNamespace.characters, appHandAppProtocolType_ProtocolNamespace_CHARACTERS_SIZE);
|
||||
} else {
|
||||
/* string table hit */
|
||||
errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* Second level event (e.g., xsi:type, xsi:nil, ...) */
|
||||
errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
|
||||
}
|
||||
}
|
||||
if(errn == 0) {
|
||||
/* valid EE for simple element START_ELEMENT(ProtocolNamespace) ? */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(eventCode == 0) {
|
||||
grammarID = 1;
|
||||
} else {
|
||||
errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
/* Element[START_ELEMENT(VersionNumberMajor)] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(errn == 0) {
|
||||
if(eventCode == 0) {
|
||||
errn = decodeUnsignedInteger32(stream, &appHandAppProtocolType->VersionNumberMajor);
|
||||
} else {
|
||||
/* Second level event (e.g., xsi:type, xsi:nil, ...) */
|
||||
errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
|
||||
}
|
||||
}
|
||||
if(errn == 0) {
|
||||
/* valid EE for simple element START_ELEMENT(VersionNumberMajor) ? */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(eventCode == 0) {
|
||||
grammarID = 2;
|
||||
} else {
|
||||
errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
/* Element[START_ELEMENT(VersionNumberMinor)] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(errn == 0) {
|
||||
if(eventCode == 0) {
|
||||
errn = decodeUnsignedInteger32(stream, &appHandAppProtocolType->VersionNumberMinor);
|
||||
} else {
|
||||
/* Second level event (e.g., xsi:type, xsi:nil, ...) */
|
||||
errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
|
||||
}
|
||||
}
|
||||
if(errn == 0) {
|
||||
/* valid EE for simple element START_ELEMENT(VersionNumberMinor) ? */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(eventCode == 0) {
|
||||
grammarID = 3;
|
||||
} else {
|
||||
errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
/* Element[START_ELEMENT(SchemaID)] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(errn == 0) {
|
||||
if(eventCode == 0) {
|
||||
errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
|
||||
appHandAppProtocolType->SchemaID = (uint8_t)(uint32 + 0);
|
||||
} else {
|
||||
/* Second level event (e.g., xsi:type, xsi:nil, ...) */
|
||||
errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
|
||||
}
|
||||
}
|
||||
if(errn == 0) {
|
||||
/* valid EE for simple element START_ELEMENT(SchemaID) ? */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(eventCode == 0) {
|
||||
grammarID = 4;
|
||||
} else {
|
||||
errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
/* Element[START_ELEMENT(Priority)] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(errn == 0) {
|
||||
if(eventCode == 0) {
|
||||
errn = decodeNBitUnsignedInteger(stream, 5, &(uint32));
|
||||
appHandAppProtocolType->Priority = (uint8_t)(uint32 + 1);
|
||||
} else {
|
||||
/* Second level event (e.g., xsi:type, xsi:nil, ...) */
|
||||
errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
|
||||
}
|
||||
}
|
||||
if(errn == 0) {
|
||||
/* valid EE for simple element START_ELEMENT(Priority) ? */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(eventCode == 0) {
|
||||
grammarID = 5;
|
||||
} else {
|
||||
errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
/* Element[END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
|
||||
break;
|
||||
}
|
||||
if(errn) {
|
||||
done = 1;
|
||||
}
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolReq', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(AppProtocol{1-20})', derivedBy='RESTRICTION'. */
|
||||
static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq) {
|
||||
int grammarID = 7;
|
||||
int done = 0;
|
||||
|
||||
init_appHandAnonType_supportedAppProtocolReq(appHandAnonType_supportedAppProtocolReq);
|
||||
|
||||
while(!done) {
|
||||
switch(grammarID) {
|
||||
case 7:
|
||||
/* FirstStartTag[START_ELEMENT(AppProtocol)] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 8;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 9;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 10;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 11;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 12;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 13;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 14;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 15;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 16;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 17;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 17:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 18;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 18:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 19;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 19:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 20;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 21;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 21:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 22;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 22:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 23;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 23:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 24;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 24:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 25;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 25:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 26;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 26:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
|
||||
errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
|
||||
} else {
|
||||
errn = EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
grammarID = 5;
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
/* Element[END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
|
||||
break;
|
||||
}
|
||||
if(errn) {
|
||||
done = 1;
|
||||
}
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ResponseCode,SchemaID{0-1})', derivedBy='RESTRICTION'. */
|
||||
static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) {
|
||||
int grammarID = 27;
|
||||
int done = 0;
|
||||
|
||||
init_appHandAnonType_supportedAppProtocolRes(appHandAnonType_supportedAppProtocolRes);
|
||||
|
||||
while(!done) {
|
||||
switch(grammarID) {
|
||||
case 27:
|
||||
/* FirstStartTag[START_ELEMENT(ResponseCode)] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
/* FirstStartTag[CHARACTERS[ENUMERATION]] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(errn == 0) {
|
||||
if(eventCode == 0) {
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
|
||||
appHandAnonType_supportedAppProtocolRes->ResponseCode = (appHandresponseCodeType) uint32;
|
||||
} else {
|
||||
/* Second level event (e.g., xsi:type, xsi:nil, ...) */
|
||||
errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
|
||||
}
|
||||
}
|
||||
if(errn == 0) {
|
||||
/* valid EE for simple element START_ELEMENT(ResponseCode) ? */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(eventCode == 0) {
|
||||
grammarID = 28;
|
||||
} else {
|
||||
errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 28:
|
||||
/* Element[START_ELEMENT(SchemaID), END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(errn == 0) {
|
||||
if(eventCode == 0) {
|
||||
errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
|
||||
appHandAnonType_supportedAppProtocolRes->SchemaID = (uint8_t)(uint32 + 0);
|
||||
appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed = 1u;
|
||||
} else {
|
||||
/* Second level event (e.g., xsi:type, xsi:nil, ...) */
|
||||
errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
|
||||
}
|
||||
}
|
||||
if(errn == 0) {
|
||||
/* valid EE for simple element START_ELEMENT(SchemaID) ? */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if(eventCode == 0) {
|
||||
grammarID = 5;
|
||||
} else {
|
||||
errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
/* Element[END_ELEMENT] */
|
||||
errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
|
||||
if (errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
done = 1;
|
||||
grammarID = 6;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_EVENT_CODE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
|
||||
break;
|
||||
}
|
||||
if(errn) {
|
||||
done = 1;
|
||||
}
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int decode_appHandExiDocument(bitstream_t* stream, struct appHandEXIDocument* exiDoc) {
|
||||
errn = readEXIHeader(stream);
|
||||
|
||||
if(errn == 0) {
|
||||
/* DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] */
|
||||
init_appHandEXIDocument(exiDoc);
|
||||
errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
|
||||
if(errn == 0) {
|
||||
switch(eventCode) {
|
||||
case 0:
|
||||
/* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq) */
|
||||
errn = decode_appHandAnonType_supportedAppProtocolReq(stream, &exiDoc->supportedAppProtocolReq);
|
||||
exiDoc->supportedAppProtocolReq_isUsed = 1u;
|
||||
break;
|
||||
case 1:
|
||||
/* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes) */
|
||||
errn = decode_appHandAnonType_supportedAppProtocolRes(stream, &exiDoc->supportedAppProtocolRes);
|
||||
exiDoc->supportedAppProtocolRes_isUsed = 1u;
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
|
@ -18,34 +18,40 @@
|
|||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_AppProtocol.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef EXI_CODER_H
|
||||
#define EXI_CODER_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
|
||||
/* size_t exiGetCurrentState(struct exiState* state); */
|
||||
|
||||
int exiPushStack(exi_state_t* state, size_t newState, eqname_t* eqn);
|
||||
|
||||
int exiPopStack(exi_state_t* state);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EXIDatatypesDecoder.h
|
||||
* \brief Decoder for datatype definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXI_appHand_DATATYPES_DECODER_H
|
||||
#define EXI_appHand_DATATYPES_DECODER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
#include "appHandEXIDatatypes.h"
|
||||
|
||||
int decode_appHandExiDocument(bitstream_t* stream, struct appHandEXIDocument* exiDoc);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
671
src/appHandshake/appHandEXIDatatypesEncoder.c
Normal file
671
src/appHandshake/appHandEXIDatatypesEncoder.c
Normal file
|
@ -0,0 +1,671 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_AppProtocol.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
#include "appHandEXIDatatypesEncoder.h"
|
||||
|
||||
#include "EncoderChannel.h"
|
||||
#include "EXIHeaderEncoder.h"
|
||||
|
||||
#include "appHandEXIDatatypes.h"
|
||||
#include "ErrorCodes.h"
|
||||
|
||||
#ifndef EXI_appHand_DATATYPES_ENCODER_C
|
||||
#define EXI_appHand_DATATYPES_ENCODER_C
|
||||
|
||||
static int errn;
|
||||
|
||||
/* Forward Declarations */
|
||||
static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType);
|
||||
static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq);
|
||||
static int encode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes);
|
||||
|
||||
|
||||
/* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)', derivedBy='RESTRICTION'. */
|
||||
static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType) {
|
||||
int grammarID = 0;
|
||||
int done = 0;
|
||||
|
||||
|
||||
while(!done) {
|
||||
switch(grammarID) {
|
||||
case 0:
|
||||
/* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */
|
||||
if ( 1 == 1 ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
/* FirstStartTag[CHARACTERS[STRING]] */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
/* encode string as string table miss (+2 len)*/
|
||||
errn = encodeUnsignedInteger16(stream, (uint16_t)(appHandAppProtocolType->ProtocolNamespace.charactersLen + 2));
|
||||
if (errn == 0) {
|
||||
errn = encodeCharacters(stream, appHandAppProtocolType->ProtocolNamespace.characters, appHandAppProtocolType->ProtocolNamespace.charactersLen);
|
||||
}
|
||||
/* valid EE */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
}
|
||||
}
|
||||
grammarID = 1;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
/* Element[START_ELEMENT(VersionNumberMajor)] */
|
||||
if ( 1 == 1 ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
errn = encodeUnsignedInteger32(stream, appHandAppProtocolType->VersionNumberMajor);
|
||||
/* valid EE */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
}
|
||||
}
|
||||
grammarID = 2;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
/* Element[START_ELEMENT(VersionNumberMinor)] */
|
||||
if ( 1 == 1 ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
errn = encodeUnsignedInteger32(stream, appHandAppProtocolType->VersionNumberMinor);
|
||||
/* valid EE */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
}
|
||||
}
|
||||
grammarID = 3;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
/* Element[START_ELEMENT(SchemaID)] */
|
||||
if ( 1 == 1 ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(appHandAppProtocolType->SchemaID - 0));
|
||||
/* valid EE */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
}
|
||||
}
|
||||
grammarID = 4;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
/* Element[START_ELEMENT(Priority)] */
|
||||
if ( 1 == 1 ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 5, (uint32_t)(appHandAppProtocolType->Priority - 1));
|
||||
/* valid EE */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
}
|
||||
}
|
||||
grammarID = 5;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
/* Element[END_ELEMENT] */
|
||||
if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
|
||||
break;
|
||||
}
|
||||
if(errn) {
|
||||
done = 1;
|
||||
}
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolReq', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(AppProtocol{1-20})', derivedBy='RESTRICTION'. */
|
||||
static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq) {
|
||||
int grammarID = 7;
|
||||
int done = 0;
|
||||
|
||||
unsigned int appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex = 0;
|
||||
|
||||
while(!done) {
|
||||
switch(grammarID) {
|
||||
case 7:
|
||||
/* FirstStartTag[START_ELEMENT(AppProtocol)] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 8;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 9;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 10;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 11;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 12;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 13;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 14;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 15;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 16;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 17;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 17:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 18;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 18:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 19;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 19:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 20;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 21;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 21:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 22;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 22:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 23;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 23:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 24;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 24:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 25;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 25:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 26;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 26:
|
||||
/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
|
||||
if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
|
||||
}
|
||||
grammarID = 5;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
/* Element[END_ELEMENT] */
|
||||
if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
|
||||
break;
|
||||
}
|
||||
if(errn) {
|
||||
done = 1;
|
||||
}
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ResponseCode,SchemaID{0-1})', derivedBy='RESTRICTION'. */
|
||||
static int encode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) {
|
||||
int grammarID = 27;
|
||||
int done = 0;
|
||||
|
||||
|
||||
while(!done) {
|
||||
switch(grammarID) {
|
||||
case 27:
|
||||
/* FirstStartTag[START_ELEMENT(ResponseCode)] */
|
||||
if ( 1 == 1 ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
/* FirstStartTag[CHARACTERS[ENUMERATION]] */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, appHandAnonType_supportedAppProtocolRes->ResponseCode);
|
||||
/* valid EE */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
}
|
||||
}
|
||||
grammarID = 28;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 28:
|
||||
/* Element[START_ELEMENT(SchemaID), END_ELEMENT] */
|
||||
if ( appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed == 1u ) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(appHandAnonType_supportedAppProtocolRes->SchemaID - 0));
|
||||
/* valid EE */
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
}
|
||||
}
|
||||
grammarID = 5;
|
||||
} else if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
/* Element[END_ELEMENT] */
|
||||
if (1==1) {
|
||||
errn = encodeNBitUnsignedInteger(stream, 1, 0);
|
||||
if(errn == 0) {
|
||||
done = 1;
|
||||
}
|
||||
grammarID = 6;
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
|
||||
break;
|
||||
}
|
||||
if(errn) {
|
||||
done = 1;
|
||||
}
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int encode_appHandExiDocument(bitstream_t* stream, struct appHandEXIDocument* exiDoc) {
|
||||
errn = writeEXIHeader(stream);
|
||||
|
||||
if(errn == 0) {
|
||||
/* DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] */
|
||||
if ( exiDoc->supportedAppProtocolReq_isUsed == 1u ) {
|
||||
/* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq) */
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 0);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAnonType_supportedAppProtocolReq(stream, &exiDoc->supportedAppProtocolReq );
|
||||
}
|
||||
} else if ( exiDoc->supportedAppProtocolRes_isUsed == 1u ) {
|
||||
/* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes) */
|
||||
errn = encodeNBitUnsignedInteger(stream, 2, 1);
|
||||
if(errn == 0) {
|
||||
errn = encode_appHandAnonType_supportedAppProtocolRes(stream, &exiDoc->supportedAppProtocolRes );
|
||||
}
|
||||
} else {
|
||||
errn = EXI_ERROR_UNKOWN_EVENT;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(errn == 0) {
|
||||
/* flush any pending bits */
|
||||
errn = encodeFinish(stream);
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
|
@ -18,36 +18,41 @@
|
|||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_AppProtocol.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef STRING_TABLE_H
|
||||
#define STRING_TABLE_H
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
int exiGetUri(size_t uriID, const char** uri);
|
||||
|
||||
int exiGetUriLength(size_t* uriLength);
|
||||
|
||||
int exiGetUriID(const char* uri, size_t* uriID);
|
||||
|
||||
int exiGetLocalName(size_t uriID, size_t localNameID, const char** localName);
|
||||
|
||||
int exiGetLocalNameLength(size_t uriID, size_t* localNameLength);
|
||||
|
||||
int exiGetLocalNameID(size_t uriID, const char* localName, size_t* localNameID);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EXIDatatypesEncoder.h
|
||||
* \brief Encoder for datatype definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXI_appHand_DATATYPES_ENCODER_H
|
||||
#define EXI_appHand_DATATYPES_ENCODER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
#include "appHandEXIDatatypes.h"
|
||||
|
||||
|
||||
int encode_appHandExiDocument(bitstream_t* stream, struct appHandEXIDocument* exiDoc);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,257 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
* Bit decoding functionalities
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "BitDecoderChannel.h"
|
||||
#include "BitInputStream.h"
|
||||
#include "EXITypes.h"
|
||||
|
||||
#ifndef BIT_DECODER_CHANNEL_C
|
||||
#define BIT_DECODER_CHANNEL_C
|
||||
|
||||
int decode(bitstream_t* stream, uint8_t* b) {
|
||||
return readBits(stream, 8, b);
|
||||
}
|
||||
|
||||
int decodeBoolean(bitstream_t* stream, int* b) {
|
||||
uint8_t ub;
|
||||
int errn = readBits(stream, 1, &ub);
|
||||
*b = (ub == 0) ? 0 : 1;
|
||||
return errn;
|
||||
}
|
||||
|
||||
int decodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint8_t* uint8) {
|
||||
if (nbits == 0) {
|
||||
*uint8 = 0;
|
||||
return 0;
|
||||
} else {
|
||||
return readBits(stream, nbits, uint8);
|
||||
}
|
||||
}
|
||||
|
||||
int decodeUnsignedInteger32(bitstream_t* stream, uint32_t* uint32) {
|
||||
/* 0XXXXXXX ... 1XXXXXXX 1XXXXXXX */
|
||||
unsigned int mShift = 0;
|
||||
int errn = 0;
|
||||
uint8_t b;
|
||||
*uint32 = 0;
|
||||
|
||||
do {
|
||||
/* 1. Read the next octet */
|
||||
errn = decode(stream, &b);
|
||||
/* 2. Multiply the value of the unsigned number represented by the 7
|
||||
* least significant
|
||||
* bits of the octet by the current multiplier and add the result to
|
||||
* the current value */
|
||||
*uint32 += (b & 127) << mShift;
|
||||
/* 3. Multiply the multiplier by 128 */
|
||||
mShift += 7;
|
||||
/* 4. If the most significant bit of the octet was 1, go back to step 1 */
|
||||
} while (errn >= 0 && (b >> 7) == 1);
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode an arbitrary precision non negative integer using a sequence of
|
||||
* octets. The most significant bit of the last octet is set to zero to
|
||||
* indicate sequence termination. Only seven bits per octet are used to
|
||||
* store the integer's value.
|
||||
*/
|
||||
int decodeUnsignedInteger64(bitstream_t* stream, uint64_t* uint64) {
|
||||
unsigned int mShift = 0;
|
||||
int errn = 0;
|
||||
uint8_t b;
|
||||
*uint64 = 0L;
|
||||
|
||||
do {
|
||||
errn = decode(stream, &b);
|
||||
*uint64 += ((uint64_t) (b & 127)) << mShift;
|
||||
mShift += 7;
|
||||
} while (errn >= 0 && (b >> 7) == 1);
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode an arbitrary precision integer using a sign bit followed by a
|
||||
* sequence of octets. The most significant bit of the last octet is set to
|
||||
* zero to indicate sequence termination. Only seven bits per octet are used
|
||||
* to store the integer's value.
|
||||
*/
|
||||
int decodeInteger32(bitstream_t* stream, int32_t* int32) {
|
||||
int b;
|
||||
uint32_t uint32;
|
||||
int errn = decodeBoolean(stream, &b);
|
||||
|
||||
if (errn < 0) {
|
||||
return errn;
|
||||
}
|
||||
|
||||
if (b) {
|
||||
/* For negative values, the Unsigned Integer holds the
|
||||
* magnitude of the value minus 1 */
|
||||
errn = decodeUnsignedInteger32(stream, &uint32);
|
||||
*int32 = -(uint32 + 1);
|
||||
} else {
|
||||
/* positive */
|
||||
errn = decodeUnsignedInteger32(stream, &uint32);
|
||||
*int32 = (int32_t)(uint32);
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode an arbitrary precision integer using a sign bit followed by a
|
||||
* sequence of octets. The most significant bit of the last octet is set to
|
||||
* zero to indicate sequence termination. Only seven bits per octet are used
|
||||
* to store the integer's value.
|
||||
*/
|
||||
int decodeInteger64(bitstream_t* stream, int64_t* int64) {
|
||||
int b;
|
||||
uint64_t uint64;
|
||||
int errn = decodeBoolean(stream, &b);
|
||||
|
||||
if (errn < 0) {
|
||||
return errn;
|
||||
}
|
||||
|
||||
if (b) {
|
||||
/* For negative values, the Unsigned Integer holds the
|
||||
* magnitude of the value minus 1 */
|
||||
errn = decodeUnsignedInteger64(stream, &uint64);
|
||||
*int64 = -(uint64 + 1);
|
||||
} else {
|
||||
/* positive */
|
||||
errn = decodeUnsignedInteger64(stream, &uint64);
|
||||
*int64 = (int64_t)(uint64);
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode a Float datatype as two consecutive Integers.
|
||||
* The first Integer represents the mantissa of the floating point
|
||||
* number and the second Integer represents the base-10 exponent
|
||||
* of the floating point number.
|
||||
*/
|
||||
int decodeFloat(bitstream_t* stream, float_me_t* f) {
|
||||
int errn = decodeInteger64(stream, &f->mantissa);
|
||||
if (errn < 0) {
|
||||
return errn;
|
||||
}
|
||||
return decodeInteger32(stream, &f->exponent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode a sequence of characters for a given length.
|
||||
*/
|
||||
int decodeStringOnly(bitstream_t* stream, size_t len, string_ucs_t* s) {
|
||||
decodeCharacters(stream, len, s->codepoints);
|
||||
s->len = len;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode a length prefixed sequence of characters.
|
||||
*/
|
||||
int decodeString(bitstream_t* stream, string_ucs_t* s) {
|
||||
int errn = decodeUnsignedInteger32(stream, &s->len);
|
||||
if (errn < 0) {
|
||||
return errn;
|
||||
}
|
||||
return decodeStringOnly(stream, s->len, s);
|
||||
}
|
||||
|
||||
int decodeStringValue(bitstream_t* stream, string_ucs_t* s) {
|
||||
int errn = decodeUnsignedInteger32(stream, &s->len);
|
||||
if (errn < 0) {
|
||||
return errn;
|
||||
}
|
||||
|
||||
switch (s->len) {
|
||||
case 0:
|
||||
/* local value partition */
|
||||
printf("[ERROR] String local value partition hit not supported \n");
|
||||
return -2;
|
||||
case 1:
|
||||
/* found in global value partition */
|
||||
printf("[ERROR] String global value partition hit not supported \n");
|
||||
return -3;
|
||||
default:
|
||||
/* not found in global value (and local value) partition
|
||||
* ==> string literal is encoded as a String with the length
|
||||
* incremented by two */
|
||||
return decodeStringOnly(stream, ((s->len) - 2), s);
|
||||
/* After encoding the string value, it is added to both the
|
||||
* associated "local" value string table partition and the global
|
||||
* value string table partition */
|
||||
/* addValue(context, value); */
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode a sequence of characters according to a given length.
|
||||
* Each character is represented by its UCS [ISO/IEC 10646]
|
||||
* code point encoded as an Unsigned Integer
|
||||
*/
|
||||
int decodeCharacters(bitstream_t* stream, size_t len, uint32_t* chars) {
|
||||
unsigned int i;
|
||||
int errn = 0;
|
||||
for (i = 0; i < len && errn >= 0; i++) {
|
||||
errn = decodeUnsignedInteger32(stream, &chars[i]);
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode a binary value as a length-prefixed sequence of octets.
|
||||
*/
|
||||
int decodeBinary(bitstream_t* stream, bytes_t* bytes) {
|
||||
unsigned int i;
|
||||
int errn = decodeUnsignedInteger32(stream, &bytes->len);
|
||||
if (errn < 0) {
|
||||
return errn;
|
||||
}
|
||||
|
||||
for (i = 0; i < bytes->len && errn >= 0; i++) {
|
||||
errn = decode(stream, &bytes->data[i]);
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -1,117 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
#ifndef BIT_DECODER_CHANNEL_H
|
||||
#define BIT_DECODER_CHANNEL_H
|
||||
|
||||
/**
|
||||
* Decode a single boolean value. The value false is represented by the bit
|
||||
* 0, and the value true is represented by the bit 1.
|
||||
*/
|
||||
int decodeBoolean(bitstream_t* stream, int* b);
|
||||
|
||||
/**
|
||||
* Decodes and returns an n-bit unsigned integer.
|
||||
*/
|
||||
int decodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint8_t* uint8);
|
||||
|
||||
/**
|
||||
* Decode an arbitrary precision non negative integer using a sequence of
|
||||
* octets. The most significant bit of the last octet is set to zero to
|
||||
* indicate sequence termination. Only seven bits per octet are used to
|
||||
* store the integer's value.
|
||||
*/
|
||||
int decodeUnsignedInteger32(bitstream_t* stream, uint32_t* uint32);
|
||||
|
||||
/**
|
||||
* Decode an arbitrary precision non negative integer using a sequence of
|
||||
* octets. The most significant bit of the last octet is set to zero to
|
||||
* indicate sequence termination. Only seven bits per octet are used to
|
||||
* store the integer's value.
|
||||
*/
|
||||
int decodeUnsignedInteger64(bitstream_t* stream, uint64_t* uint64);
|
||||
|
||||
/**
|
||||
* Decode an arbitrary precision integer using a sign bit followed by a
|
||||
* sequence of octets. The most significant bit of the last octet is set to
|
||||
* zero to indicate sequence termination. Only seven bits per octet are used
|
||||
* to store the integer's value.
|
||||
*/
|
||||
int decodeInteger32(bitstream_t* stream, int32_t* int32);
|
||||
|
||||
/**
|
||||
* Decode an arbitrary precision integer using a sign bit followed by a
|
||||
* sequence of octets. The most significant bit of the last octet is set to
|
||||
* zero to indicate sequence termination. Only seven bits per octet are used
|
||||
* to store the integer's value.
|
||||
*/
|
||||
int decodeInteger64(bitstream_t* stream, int64_t* int64);
|
||||
|
||||
/**
|
||||
* Decode a Float datatype as two consecutive Integers.
|
||||
* The first Integer represents the mantissa of the floating point
|
||||
* number and the second Integer represents the base-10 exponent
|
||||
* of the floating point number.
|
||||
*/
|
||||
int decodeFloat(bitstream_t* stream, float_me_t* f);
|
||||
|
||||
/**
|
||||
* Decode a length prefixed sequence of characters.
|
||||
*/
|
||||
int decodeString(bitstream_t* stream, string_ucs_t* s);
|
||||
|
||||
/**
|
||||
* Decode a length prefixed sequence of characters in the sense of string tables.
|
||||
* length == 0, local value partition hit
|
||||
* length == 1, global value partition hit
|
||||
* --> string literal is encoded as a String with the length incremented by two
|
||||
*/
|
||||
int decodeStringValue(bitstream_t* stream, string_ucs_t* s);
|
||||
|
||||
|
||||
/**
|
||||
* Decode a sequence of characters according to a given length.
|
||||
*/
|
||||
int decodeCharacters(bitstream_t* stream, size_t len, uint32_t* chars);
|
||||
|
||||
/**
|
||||
* Decode a binary value as a length-prefixed sequence of octets.
|
||||
*/
|
||||
int decodeBinary(bitstream_t* stream, bytes_t* bytes);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
@ -1,298 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "BitEncoderChannel.h"
|
||||
#include "BitOutputStream.h"
|
||||
#include "EXITypes.h"
|
||||
|
||||
#ifndef BIT_ENCODER_CHANNEL_C
|
||||
#define BIT_ENCODER_CHANNEL_C
|
||||
|
||||
/**
|
||||
* Returns the least number of 7 bit-blocks that is needed to represent the
|
||||
* int <param>n</param>. Returns 1 if <param>n</param> is 0.
|
||||
*
|
||||
* @param n
|
||||
* integer value
|
||||
*
|
||||
*/
|
||||
uint8_t numberOf7BitBlocksToRepresent(int n) {
|
||||
/* assert (n >= 0); */
|
||||
|
||||
/* 7 bits */
|
||||
if (n < 128) {
|
||||
return 1;
|
||||
}
|
||||
/* 14 bits */
|
||||
else if (n < 16384) {
|
||||
return 2;
|
||||
}
|
||||
/* 21 bits */
|
||||
else if (n < 2097152) {
|
||||
return 3;
|
||||
}
|
||||
/* 28 bits */
|
||||
else if (n < 268435456) {
|
||||
return 4;
|
||||
}
|
||||
/* 35 bits */
|
||||
else {
|
||||
/* int, 32 bits */
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int encode(bitstream_t* stream, uint8_t b) {
|
||||
return writeBits(stream, 8, b);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a single boolean value. A false value is encoded as bit 0 and true
|
||||
* value is encode as bit 1.
|
||||
*/
|
||||
int encodeBoolean(bitstream_t* stream, int b) {
|
||||
uint8_t val = b ? 1 : 0;
|
||||
return writeBits(stream, 1, val);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Encode n-bit unsigned integer. The n least significant bits of parameter
|
||||
* b starting with the most significant, i.e. from left to right.
|
||||
*/
|
||||
int encodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint8_t val) {
|
||||
return writeBits(stream, nbits, val);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision non negative integer using a sequence of
|
||||
* octets. The most significant bit of the last octet is set to zero to
|
||||
* indicate sequence termination. Only seven bits per octet are used to
|
||||
* store the integer's value.
|
||||
*/
|
||||
int encodeUnsignedInteger32(bitstream_t* stream, uint32_t n) {
|
||||
int errn = 0;
|
||||
if (n < 128) {
|
||||
/* write byte as is */
|
||||
errn = encode(stream, (uint8_t)n);
|
||||
} else {
|
||||
uint8_t n7BitBlocks = numberOf7BitBlocksToRepresent(n);
|
||||
|
||||
switch (n7BitBlocks) {
|
||||
case 5:
|
||||
errn = encode(stream, (uint8_t)(128 | n));
|
||||
n = n >> 7;
|
||||
if (errn < 0) {
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
errn = encode(stream, (uint8_t)(128 | n));
|
||||
n = n >> 7;
|
||||
if (errn < 0) {
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
errn = encode(stream, (uint8_t)(128 | n));
|
||||
n = n >> 7;
|
||||
if (errn < 0) {
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
errn = encode(stream, (uint8_t)(128 | n));
|
||||
n = n >> 7;
|
||||
if (errn < 0) {
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
/* 0 .. 7 (last byte) */
|
||||
errn = encode(stream, (uint8_t)(0 | n));
|
||||
}
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision non negative integer using a sequence of
|
||||
* octets. The most significant bit of the last octet is set to zero to
|
||||
* indicate sequence termination. Only seven bits per octet are used to
|
||||
* store the integer's value.
|
||||
*/
|
||||
int encodeUnsignedInteger64(bitstream_t* stream, uint64_t n) {
|
||||
int errn = 0;
|
||||
uint8_t lastEncode = (uint8_t) n;
|
||||
n >>= 7;
|
||||
|
||||
while (n != 0) {
|
||||
errn = encode(stream, lastEncode | 128);
|
||||
if (errn < 0) {
|
||||
return errn;
|
||||
}
|
||||
lastEncode = (uint8_t) n;
|
||||
n >>= 7;
|
||||
}
|
||||
|
||||
return encode(stream, lastEncode);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision integer using a sign bit followed by a
|
||||
* sequence of octets. The most significant bit of the last octet is set to
|
||||
* zero to indicate sequence termination. Only seven bits per octet are used
|
||||
* to store the integer's value.
|
||||
*/
|
||||
int encodeInteger32(bitstream_t* stream, int32_t n) {
|
||||
int errn;
|
||||
/* signalize sign */
|
||||
if (n < 0) {
|
||||
errn = encodeBoolean(stream, 1);
|
||||
/* For negative values, the Unsigned Integer holds the
|
||||
* magnitude of the value minus 1 */
|
||||
n = (-n) - 1;
|
||||
} else {
|
||||
errn = encodeBoolean(stream, 0);
|
||||
}
|
||||
if (errn < 0) {
|
||||
return errn;
|
||||
}
|
||||
return encodeUnsignedInteger32(stream, n);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision integer using a sign bit followed by a
|
||||
* sequence of octets. The most significant bit of the last octet is set to
|
||||
* zero to indicate sequence termination. Only seven bits per octet are used
|
||||
* to store the integer's value.
|
||||
*/
|
||||
int encodeInteger64(bitstream_t* stream, int64_t n) {
|
||||
int errn;
|
||||
/* signalize sign */
|
||||
if (n < 0) {
|
||||
errn = encodeBoolean(stream, 1);
|
||||
/* For negative values, the Unsigned Integer holds the
|
||||
* magnitude of the value minus 1 */
|
||||
n = (-n) - 1;
|
||||
} else {
|
||||
errn = encodeBoolean(stream, 0);
|
||||
}
|
||||
if (errn < 0) {
|
||||
return errn;
|
||||
}
|
||||
return encodeUnsignedInteger64(stream, n);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* The Float datatype representation is two consecutive Integers.
|
||||
* The first Integer represents the mantissa of the floating point
|
||||
* number and the second Integer represents the base-10 exponent
|
||||
* of the floating point number.
|
||||
*/
|
||||
int encodeFloat(bitstream_t* stream, float_me_t* f) {
|
||||
int errn = encodeInteger64(stream, f->mantissa);
|
||||
if (errn >= 0) {
|
||||
errn = encodeInteger32(stream, f->exponent);
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Encode a length prefixed sequence of characters.
|
||||
*/
|
||||
int encodeString(bitstream_t* stream, string_ucs_t* string) {
|
||||
int errn = encodeUnsignedInteger32(stream, string->len);
|
||||
if (errn >= 0) {
|
||||
errn = encodeCharacters(stream, string->codepoints, string->len);
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
int encodeStringValue(bitstream_t* stream, string_ucs_t* string) {
|
||||
/* encode string as string table miss */
|
||||
int errn = encodeUnsignedInteger32(stream, string->len+2);
|
||||
if (errn >= 0) {
|
||||
errn = encodeCharacters(stream, string->codepoints, string->len);
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a sequence of characters according to a given length.
|
||||
* Each character is represented by its UCS [ISO/IEC 10646]
|
||||
* code point encoded as an Unsigned Integer
|
||||
*/
|
||||
int encodeCharacters(bitstream_t* stream, uint32_t* chars, size_t len) {
|
||||
unsigned int i;
|
||||
int errn = 0;
|
||||
for(i=0; i<len && errn>=0; i++) {
|
||||
errn = encodeUnsignedInteger32(stream, chars[i]);
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Encode a binary value as a length-prefixed sequence of octets.
|
||||
*/
|
||||
int encodeBinary(bitstream_t* stream, bytes_t* bytes) {
|
||||
unsigned int i;
|
||||
int errn = encodeUnsignedInteger32(stream, bytes->len);
|
||||
|
||||
for(i=0; i<bytes->len && errn>=0; i++) {
|
||||
errn = encode(stream, bytes->data[i]);
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Flush underlying bit output stream.
|
||||
*/
|
||||
int encodeFinish(bitstream_t* stream) {
|
||||
return flush(stream);
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,133 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
#ifndef BIT_ENCODER_CHANNEL_H
|
||||
#define BIT_ENCODER_CHANNEL_H
|
||||
|
||||
/**
|
||||
* Encode a single boolean value. A false value is encoded as bit 0 and true
|
||||
* value is encode as bit 1.
|
||||
*/
|
||||
int encodeBoolean(bitstream_t* stream, int b);
|
||||
|
||||
|
||||
/**
|
||||
* Encode n-bit unsigned integer. The n least significant bits of parameter
|
||||
* b starting with the most significant, i.e. from left to right.
|
||||
*/
|
||||
int encodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint8_t val);
|
||||
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision non negative integer using a sequence of
|
||||
* octets. The most significant bit of the last octet is set to zero to
|
||||
* indicate sequence termination. Only seven bits per octet are used to
|
||||
* store the integer's value.
|
||||
*/
|
||||
int encodeUnsignedInteger32(bitstream_t* stream, uint32_t n);
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision non negative integer using a sequence of
|
||||
* octets. The most significant bit of the last octet is set to zero to
|
||||
* indicate sequence termination. Only seven bits per octet are used to
|
||||
* store the integer's value.
|
||||
*/
|
||||
int encodeUnsignedInteger64(bitstream_t* stream, uint64_t n);
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision integer using a sign bit followed by a
|
||||
* sequence of octets. The most significant bit of the last octet is set to
|
||||
* zero to indicate sequence termination. Only seven bits per octet are used
|
||||
* to store the integer's value.
|
||||
*/
|
||||
int encodeInteger32(bitstream_t* stream, int32_t n);
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision integer using a sign bit followed by a
|
||||
* sequence of octets. The most significant bit of the last octet is set to
|
||||
* zero to indicate sequence termination. Only seven bits per octet are used
|
||||
* to store the integer's value.
|
||||
*/
|
||||
int encodeInteger64(bitstream_t* stream, int64_t n);
|
||||
|
||||
/**
|
||||
* Encode a Float datatype as two consecutive Integers.
|
||||
* The first Integer represents the mantissa of the floating point
|
||||
* number and the second Integer represents the base-10 exponent
|
||||
* of the floating point number.
|
||||
*/
|
||||
int encodeFloat(bitstream_t* stream, float_me_t* f);
|
||||
|
||||
|
||||
/**
|
||||
* Encode a length prefixed sequence of characters.
|
||||
*/
|
||||
int encodeString(bitstream_t* stream, string_ucs_t* string);
|
||||
|
||||
/**
|
||||
* Encode a length prefixed sequence of characters in the sense of string tables
|
||||
*/
|
||||
int encodeStringValue(bitstream_t* stream, string_ucs_t* string);
|
||||
|
||||
/**
|
||||
* Encode a sequence of characters according to a given length.
|
||||
* Each character is represented by its UCS [ISO/IEC 10646]
|
||||
* code point encoded as an Unsigned Integer
|
||||
*/
|
||||
int encodeCharacters(bitstream_t* stream, uint32_t* chars, size_t len);
|
||||
|
||||
/**
|
||||
* Encode a binary value as a length-prefixed sequence of octets.
|
||||
*/
|
||||
int encodeBinary(bitstream_t* stream, bytes_t* bytes);
|
||||
|
||||
/**
|
||||
* Flush underlying bit output stream
|
||||
*/
|
||||
int encodeFinish(bitstream_t* stream);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
|
@ -18,83 +18,88 @@
|
|||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
#include "BitInputStream.h"
|
||||
|
||||
#ifndef BIT_INPUT_STREAM_C
|
||||
#define BIT_INPUT_STREAM_C
|
||||
|
||||
/* internal method to (re)fill buffer */
|
||||
int readBuffer(bitstream_t* stream)
|
||||
{
|
||||
int errn = 0;
|
||||
if(stream->capacity==0)
|
||||
{
|
||||
if ( (*stream->pos) < stream->size ) {
|
||||
stream->buffer = stream->data[(*stream->pos)++];
|
||||
stream->capacity = BITS_IN_BYTE;
|
||||
} else {
|
||||
errn = -1;
|
||||
}
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
int readBits(bitstream_t* stream, size_t num_bits, uint8_t* b)
|
||||
{
|
||||
int errn = readBuffer(stream);
|
||||
if (errn < 0) {
|
||||
return errn;
|
||||
}
|
||||
|
||||
/* read the bits in one step */
|
||||
if(num_bits <= stream->capacity)
|
||||
{
|
||||
stream->capacity -= num_bits;
|
||||
*b = (stream->buffer >> stream->capacity) & (0xff >> (BITS_IN_BYTE - num_bits));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* read bits as much as possible */
|
||||
*b = stream->buffer & (0xff >> (BITS_IN_BYTE - stream->capacity));
|
||||
num_bits -= stream->capacity;
|
||||
stream->capacity = 0;
|
||||
|
||||
/* read whole bytes */
|
||||
while(num_bits >= 8)
|
||||
{
|
||||
errn = readBuffer(stream);
|
||||
if (errn < 0) {
|
||||
return errn;
|
||||
}
|
||||
*b = ((*b) << BITS_IN_BYTE) | stream->buffer;
|
||||
num_bits -= BITS_IN_BYTE;
|
||||
stream->capacity = 0;
|
||||
}
|
||||
|
||||
/* read the spare bits in the buffer */
|
||||
if(num_bits>0)
|
||||
{
|
||||
errn = readBuffer(stream);
|
||||
if (errn < 0) {
|
||||
return errn;
|
||||
}
|
||||
*b = ((*b) << num_bits) | (stream->buffer >> (BITS_IN_BYTE - num_bits));
|
||||
stream->capacity = BITS_IN_BYTE - num_bits;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#include "BitInputStream.h"
|
||||
#include "EXIConfig.h"
|
||||
#include "EXITypes.h"
|
||||
#include "ErrorCodes.h"
|
||||
|
||||
#ifndef BIT_INPUT_STREAM_C
|
||||
#define BIT_INPUT_STREAM_C
|
||||
|
||||
/* internal method to (re)fill buffer */
|
||||
static int readBuffer(bitstream_t* stream)
|
||||
{
|
||||
int errn = 0;
|
||||
if(stream->capacity==0)
|
||||
{
|
||||
#if EXI_STREAM == BYTE_ARRAY
|
||||
if ( (*stream->pos) < stream->size ) {
|
||||
stream->buffer = stream->data[(*stream->pos)++];
|
||||
stream->capacity = BITS_IN_BYTE;
|
||||
} else {
|
||||
errn = EXI_ERROR_INPUT_STREAM_EOF;
|
||||
}
|
||||
#endif
|
||||
#if EXI_STREAM == FILE_STREAM
|
||||
stream->buffer = (uint8_t)(getc(stream->file));
|
||||
/* EOF cannot be used, 0xFF valid value */
|
||||
if ( feof(stream->file) || ferror(stream->file) ) {
|
||||
errn = EXI_ERROR_INPUT_STREAM_EOF;
|
||||
} else {
|
||||
stream->capacity = BITS_IN_BYTE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
int readBits(bitstream_t* stream, size_t num_bits, uint32_t* b)
|
||||
{
|
||||
int errn = readBuffer(stream);
|
||||
if (errn == 0) {
|
||||
/* read the bits in one step */
|
||||
if(num_bits <= stream->capacity) {
|
||||
stream->capacity = (uint8_t)(stream->capacity - num_bits);
|
||||
*b = (uint32_t)((stream->buffer >> stream->capacity) & (0xff >> (BITS_IN_BYTE - num_bits)));
|
||||
} else {
|
||||
/* read bits as much as possible */
|
||||
*b = (uint32_t)(stream->buffer & (0xff >> (BITS_IN_BYTE - stream->capacity)));
|
||||
num_bits = (num_bits - stream->capacity);
|
||||
stream->capacity = 0;
|
||||
|
||||
/* read whole bytes */
|
||||
while(errn == 0 && num_bits >= 8)
|
||||
{
|
||||
errn = readBuffer(stream);
|
||||
*b = ((*b) << BITS_IN_BYTE) | stream->buffer;
|
||||
num_bits = (num_bits - BITS_IN_BYTE);
|
||||
stream->capacity = 0;
|
||||
}
|
||||
|
||||
/* read the spare bits in the buffer */
|
||||
if(errn == 0 && num_bits > 0)
|
||||
{
|
||||
errn = readBuffer(stream);
|
||||
if (errn == 0) {
|
||||
*b = ( (*b) << num_bits) | (uint8_t)(stream->buffer >> (BITS_IN_BYTE - num_bits)) ;
|
||||
stream->capacity = (uint8_t)(BITS_IN_BYTE - num_bits);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
|
@ -18,27 +18,50 @@
|
|||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
#ifndef BIT_INPUT_STREAM_H
|
||||
#define BIT_INPUT_STREAM_H
|
||||
|
||||
int readBits(bitstream_t* stream, size_t num_bits, uint8_t* b);
|
||||
|
||||
int flush();
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* \file BitInputStream.h
|
||||
* \brief Bit Input Stream
|
||||
*
|
||||
* Read bits and bytes from an underlying input stream.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef BIT_INPUT_STREAM_H
|
||||
#define BIT_INPUT_STREAM_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
/**
|
||||
* \brief Read bits
|
||||
*
|
||||
* Read the next num_bits bits and returns result an integer.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param num_bits Number of bits
|
||||
* \param b Integer value (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int readBits(bitstream_t* stream, size_t num_bits, uint32_t* b);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
|
@ -18,78 +18,107 @@
|
|||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
#include "BitOutputStream.h"
|
||||
|
||||
#ifndef BIT_OUTPUT_STREAM_C
|
||||
#define BIT_OUTPUT_STREAM_C
|
||||
|
||||
/* NOTE: nbits <= 8 */
|
||||
int writeBits(bitstream_t* stream, size_t nbits, uint8_t val) {
|
||||
/* is there enough space in the buffer */
|
||||
if (nbits <= stream->capacity) {
|
||||
/* all bits fit into the current buffer */
|
||||
stream->buffer = (stream->buffer << (nbits)) | (val & (0xff
|
||||
>> (BITS_IN_BYTE - nbits)));
|
||||
stream->capacity -= nbits;
|
||||
/* if the buffer is full write it into the data */
|
||||
if (stream->capacity == 0) {
|
||||
if ((*stream->pos) >= stream->size) {
|
||||
return -1;
|
||||
}
|
||||
stream->data[(*stream->pos)++] = 0xFF & stream->buffer;
|
||||
stream->capacity = BITS_IN_BYTE;
|
||||
stream->buffer = 0;
|
||||
}
|
||||
} else {
|
||||
/* the buffer is not enough
|
||||
* fill the buffer */
|
||||
stream->buffer = (stream->buffer << stream->capacity) | ((val >> (nbits
|
||||
- stream->capacity)) & (0xff >> (BITS_IN_BYTE
|
||||
- stream->capacity)));
|
||||
|
||||
nbits -= stream->capacity;
|
||||
if ((*stream->pos) >= stream->size) {
|
||||
return -1;
|
||||
}
|
||||
stream->data[(*stream->pos)++] = 0xFF & stream->buffer;
|
||||
stream->buffer = 0;
|
||||
|
||||
/* write whole bytes */
|
||||
while (nbits >= BITS_IN_BYTE) {
|
||||
nbits -= BITS_IN_BYTE;
|
||||
if ((*stream->pos) >= stream->size) {
|
||||
return -1;
|
||||
}
|
||||
stream->data[(*stream->pos)++] = 0xFF & (val >> (nbits));
|
||||
}
|
||||
|
||||
/* spared bits are kept in the buffer */
|
||||
stream->buffer = val; /* Note: the high bits will be shifted out during further filling */
|
||||
stream->capacity = BITS_IN_BYTE - (nbits);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Flush output
|
||||
*/
|
||||
int flush(bitstream_t* stream) {
|
||||
if (stream->capacity == BITS_IN_BYTE) {
|
||||
/* nothing to do, no bits in buffer */
|
||||
return 0;
|
||||
} else {
|
||||
return writeBits(stream, stream->capacity, 0);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#include "BitOutputStream.h"
|
||||
#include "EXIConfig.h"
|
||||
#include "EXITypes.h"
|
||||
#include "ErrorCodes.h"
|
||||
|
||||
#ifndef BIT_OUTPUT_STREAM_C
|
||||
#define BIT_OUTPUT_STREAM_C
|
||||
|
||||
int writeBits(bitstream_t* stream, size_t nbits, uint32_t val) {
|
||||
int errn = 0;
|
||||
/* is there enough space in the buffer */
|
||||
if (nbits <= stream->capacity) {
|
||||
/* all bits fit into the current buffer */
|
||||
stream->buffer = (uint8_t)(stream->buffer << (nbits)) | (uint8_t)(val & (uint32_t)(0xff >> (uint32_t)(BITS_IN_BYTE - nbits)));
|
||||
stream->capacity = (uint8_t)(stream->capacity - nbits);
|
||||
/* if the buffer is full write byte */
|
||||
if (stream->capacity == 0) {
|
||||
#if EXI_STREAM == BYTE_ARRAY
|
||||
if ((*stream->pos) >= stream->size) {
|
||||
errn = EXI_ERROR_OUTPUT_STREAM_EOF;
|
||||
} else {
|
||||
stream->data[(*stream->pos)++] = stream->buffer;
|
||||
}
|
||||
#endif
|
||||
#if EXI_STREAM == FILE_STREAM
|
||||
if ( putc(stream->buffer, stream->file) == EOF ) {
|
||||
errn = EXI_ERROR_OUTPUT_STREAM_EOF;
|
||||
}
|
||||
#endif
|
||||
stream->capacity = BITS_IN_BYTE;
|
||||
stream->buffer = 0;
|
||||
}
|
||||
} else {
|
||||
/* the buffer is not enough
|
||||
* fill the buffer */
|
||||
stream->buffer = (uint8_t)(stream->buffer << stream->capacity) |
|
||||
( (uint8_t)(val >> (nbits - stream->capacity)) & (uint8_t)(0xff >> (BITS_IN_BYTE - stream->capacity)) );
|
||||
|
||||
nbits = (nbits - stream->capacity);
|
||||
#if EXI_STREAM == BYTE_ARRAY
|
||||
if ((*stream->pos) >= stream->size) {
|
||||
errn = EXI_ERROR_OUTPUT_STREAM_EOF;
|
||||
} else {
|
||||
stream->data[(*stream->pos)++] = stream->buffer;
|
||||
}
|
||||
#endif
|
||||
#if EXI_STREAM == FILE_STREAM
|
||||
if ( putc(stream->buffer, stream->file) == EOF ) {
|
||||
errn = EXI_ERROR_OUTPUT_STREAM_EOF;
|
||||
}
|
||||
#endif
|
||||
stream->buffer = 0;
|
||||
|
||||
/* write whole bytes */
|
||||
while (errn == 0 && nbits >= BITS_IN_BYTE) {
|
||||
nbits = (nbits - BITS_IN_BYTE);
|
||||
#if EXI_STREAM == BYTE_ARRAY
|
||||
if ((*stream->pos) >= stream->size) {
|
||||
errn = EXI_ERROR_OUTPUT_STREAM_EOF;
|
||||
} else {
|
||||
stream->data[(*stream->pos)++] = (uint8_t)(val >> (nbits));
|
||||
}
|
||||
#endif
|
||||
#if EXI_STREAM == FILE_STREAM
|
||||
if ( putc((int)(val >> (nbits)), stream->file) == EOF ) {
|
||||
errn = EXI_ERROR_OUTPUT_STREAM_EOF;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* spared bits are kept in the buffer */
|
||||
stream->buffer = (uint8_t)val; /* Note: the high bits will be shifted out during further filling */
|
||||
stream->capacity = (uint8_t)(BITS_IN_BYTE - (nbits));
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Flush output
|
||||
*/
|
||||
int flush(bitstream_t* stream) {
|
||||
int errn = 0;
|
||||
if (stream->capacity == BITS_IN_BYTE) {
|
||||
/* nothing to do, no bits in buffer */
|
||||
} else {
|
||||
errn = writeBits(stream, stream->capacity, 0);
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
|
@ -18,31 +18,68 @@
|
|||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
#ifndef BIT_OUTPUT_STREAM_H
|
||||
#define BIT_OUTPUT_STREAM_H
|
||||
|
||||
int writeBits(bitstream_t* stream, size_t nbits, uint8_t bits);
|
||||
|
||||
/* flush output */
|
||||
int flush(bitstream_t* stream);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file BitOutputStream.h
|
||||
* \brief Bit Output Stream
|
||||
*
|
||||
* Write bits and bytes to an underlying output stream.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef BIT_OUTPUT_STREAM_H
|
||||
#define BIT_OUTPUT_STREAM_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
/**
|
||||
* \brief Write bits
|
||||
*
|
||||
* Write the n least significant bits of parameter b starting
|
||||
* with the most significant, i.e. from left to right.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param nbits Number of bits
|
||||
* \param bits value
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int writeBits(bitstream_t* stream, size_t nbits, uint32_t bits);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Flush output
|
||||
*
|
||||
* If there are some unwritten bits, pad them if necessary and
|
||||
* write them out. Note that this method does flush the
|
||||
* underlying stream.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int flush(bitstream_t* stream);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,78 +1,68 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#define _CRT_SECURE_NO_DEPRECATE 1
|
||||
/* Avoid VS warning, put before your included header files */
|
||||
/* warning C4996: ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. */
|
||||
#define _CRT_SECURE_NO_DEPRECATE
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
#include "ErrorCodes.h"
|
||||
|
||||
#ifndef BIT_STREAM_C
|
||||
#define BIT_STREAM_C
|
||||
#ifndef BYTE_STREAM_C
|
||||
#define BYTE_STREAM_C
|
||||
|
||||
int toBitstream(const char * filename, bitstream_t* bitstream) {
|
||||
int readBytesFromFile(const char * filename, uint8_t* data, size_t size, size_t* pos) {
|
||||
FILE* f;
|
||||
int character;
|
||||
size_t len = 0, pos = 0, i;
|
||||
int errn = 0;
|
||||
|
||||
f = fopen(filename, "rb");
|
||||
|
||||
if (f == NULL) {
|
||||
printf("\n[Error] no valid file handle !\n");
|
||||
return -1;
|
||||
errn = EXI_ERROR_INPUT_FILE_HANDLE;
|
||||
} else {
|
||||
/* detect file size */
|
||||
while ((character = getc(f)) != EOF) {
|
||||
/* printf("%u \n", character); */
|
||||
len++;
|
||||
}
|
||||
fclose(f);
|
||||
/* printf("%u Zeichen", len); */
|
||||
|
||||
/* setup stream */
|
||||
bitstream->data = malloc(sizeof(uint8_t) * len);
|
||||
bitstream->size = len;
|
||||
bitstream->pos = &pos;
|
||||
bitstream->buffer = 0;
|
||||
bitstream->capacity = 8;
|
||||
|
||||
/* read file byte per byte */
|
||||
f = fopen(filename, "rb");
|
||||
i = 0;
|
||||
while ((character = getc(f)) != EOF) {
|
||||
bitstream->data[i] = (uint8_t) character;
|
||||
i++;
|
||||
/* read bytes */
|
||||
while (errn == 0 && (character = getc(f)) != EOF) {
|
||||
if (*pos >= size) {
|
||||
errn = EXI_ERROR_OUT_OF_BYTE_BUFFER;
|
||||
} else {
|
||||
data[(*pos)++] = (uint8_t) character;
|
||||
}
|
||||
}
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return errn;
|
||||
}
|
||||
|
||||
int writeBytesToFile(uint8_t* data, size_t len, const char * filename) {
|
||||
|
@ -88,16 +78,11 @@ int writeBytesToFile(uint8_t* data, size_t len, const char * filename) {
|
|||
if(rlen == len) {
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
return EXI_ERROR_OUTPUT_FILE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int writeBitstreamToFile(bitstream_t* bitsream, const char * filename) {
|
||||
return writeBytesToFile(bitsream->data, bitsream->size, filename);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
#endif /* BYTE_STREAM_C */
|
||||
|
75
src/codec/ByteStream.h
Normal file
75
src/codec/ByteStream.h
Normal file
|
@ -0,0 +1,75 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file ByteStream.h
|
||||
* \brief Byte Stream utilities
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef BYTE_STREAM_H
|
||||
#define BYTE_STREAM_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
/**
|
||||
* \brief Write bytes to file
|
||||
*
|
||||
* \param data byte array
|
||||
* \param len length
|
||||
* \param filename File name
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int writeBytesToFile(uint8_t* data, size_t len, const char * filename);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Read bytes from file
|
||||
*
|
||||
* \param filename File name
|
||||
* \param data byte array
|
||||
* \param size byte array size
|
||||
* \param pos byte array position
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int readBytesFromFile(const char * filename, uint8_t* data, size_t size, size_t* pos);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* BYTE_STREAM_H */
|
1068
src/codec/DecoderChannel.c
Normal file
1068
src/codec/DecoderChannel.c
Normal file
File diff suppressed because it is too large
Load diff
441
src/codec/DecoderChannel.h
Normal file
441
src/codec/DecoderChannel.h
Normal file
|
@ -0,0 +1,441 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file DecoderChannel.h
|
||||
* \brief EXI Decoder Channel
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef DECODER_CHANNEL_H
|
||||
#define DECODER_CHANNEL_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "EXIOptions.h"
|
||||
#include "EXITypes.h"
|
||||
|
||||
/**
|
||||
* \brief Decode byte value
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param b byte (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decode(bitstream_t* stream, uint8_t* b);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode boolean
|
||||
*
|
||||
* Decode a single boolean value. The value false is
|
||||
* represented by 0, and the value true is represented by 1.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param b boolean (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeBoolean(bitstream_t* stream, int* b);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode n-bit unsigned integer
|
||||
*
|
||||
* Decodes and returns an n-bit unsigned integer.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param nbits Number of bits
|
||||
* \param uint32 Value (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint32_t* uint32);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode unsigned integer
|
||||
*
|
||||
* Decode an arbitrary precision non negative integer using
|
||||
* a sequence of octets. The most significant bit of the last
|
||||
* octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param iv Unsigned Integer Value (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode unsigned integer
|
||||
*
|
||||
* Decode an arbitrary precision non negative integer using
|
||||
* a sequence of octets. The most significant bit of the last
|
||||
* octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param uint16 Unsigned Integer Value 16 bits (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeUnsignedInteger16(bitstream_t* stream, uint16_t* uint16);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode unsigned integer
|
||||
*
|
||||
* Decode an arbitrary precision non negative integer using
|
||||
* a sequence of octets. The most significant bit of the last
|
||||
* octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param uint32 Unsigned Integer Value 32 bits (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeUnsignedInteger32(bitstream_t* stream, uint32_t* uint32);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode unsigned integer
|
||||
*
|
||||
* Decode an arbitrary precision non negative integer using
|
||||
* a sequence of octets. The most significant bit of the last
|
||||
* octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param sizeT Unsigned Integer Value (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeUnsignedIntegerSizeT(bitstream_t* stream, size_t* sizeT);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode unsigned integer
|
||||
*
|
||||
* Decode an arbitrary precision non negative integer using
|
||||
* a sequence of octets. The most significant bit of the last
|
||||
* octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param uint64 Unsigned Integer Value 64 bits (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeUnsignedInteger64(bitstream_t* stream, uint64_t* uint64);
|
||||
|
||||
/**
|
||||
* \brief Decode unsigned integer
|
||||
*
|
||||
* Decode an arbitrary precision non negative integer using
|
||||
* a sequence of octets. The most significant bit of the last
|
||||
* octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param size size array
|
||||
* \param data data array
|
||||
* \param len length array
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeUnsignedIntegerBig(bitstream_t* stream, size_t size, uint8_t* data, size_t* len);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode integer
|
||||
*
|
||||
* Decode an arbitrary precision integer using a sign bit
|
||||
* followed by a sequence of octets. The most significant bit
|
||||
* of the last octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param iv Integer Value 64 bits (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeInteger(bitstream_t* stream, exi_integer_t* iv);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode integer
|
||||
*
|
||||
* Decode an arbitrary precision integer using a sign bit
|
||||
* followed by a sequence of octets. The most significant bit
|
||||
* of the last octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param int16 Integer Value 16 bits (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeInteger16(bitstream_t* stream, int16_t* int16);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode integer
|
||||
*
|
||||
* Decode an arbitrary precision integer using a sign bit
|
||||
* followed by a sequence of octets. The most significant bit
|
||||
* of the last octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param int32 Integer Value 32 bits (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeInteger32(bitstream_t* stream, int32_t* int32);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode integer
|
||||
*
|
||||
* Decode an arbitrary precision integer using a sign bit
|
||||
* followed by a sequence of octets. The most significant bit
|
||||
* of the last octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param int64 Integer Value 64 bits (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeInteger64(bitstream_t* stream, int64_t* int64);
|
||||
|
||||
/**
|
||||
* \brief Decode integer
|
||||
*
|
||||
* Decode an arbitrary precision integer using a sign bit
|
||||
* followed by a sequence of octets. The most significant bit
|
||||
* of the last octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param negative negative integer
|
||||
* \param size size array
|
||||
* \param data data array
|
||||
* \param len length array
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeIntegerBig(bitstream_t* stream, int* negative, size_t size, uint8_t* data, size_t* len);
|
||||
|
||||
/**
|
||||
* \brief Decode float
|
||||
*
|
||||
* Decode a Float datatype as two consecutive Integers. The
|
||||
* first Integer represents the mantissa of the floating point
|
||||
* number and the second Integer represents the base-10 exponent
|
||||
* of the floating point number.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param f Float Value (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeFloat(bitstream_t* stream, exi_float_me_t* f);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode decimal
|
||||
*
|
||||
* Decode a decimal represented as a Boolean sign followed by two
|
||||
* Unsigned Integers. A sign value of zero (0) is used to represent
|
||||
* positive Decimal values and a sign value of one (1) is used to
|
||||
* represent negative Decimal values The first Integer represents
|
||||
* the integral portion of the Decimal value. The second positive
|
||||
* integer represents the fractional portion of the decimal with
|
||||
* the digits in reverse order to preserve leading zeros.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param d Decimal Value (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeDecimal(bitstream_t* stream, exi_decimal_t* d);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode String (no length prefix)
|
||||
*
|
||||
* Decode a sequence of characters for a given length.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param len Characters length
|
||||
* \param s String Value (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeStringOnly(bitstream_t* stream, size_t len, exi_string_t* s);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode String
|
||||
*
|
||||
* Decode a length prefixed sequence of characters.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param s String Value (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeString(bitstream_t* stream, exi_string_t* s);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode String value
|
||||
*
|
||||
* Decode a length prefixed sequence of characters in the sense of string tables.
|
||||
* length == 0: local value partition hit.
|
||||
* length == 1: global value partition hit.
|
||||
* length > 1: string literal is encoded as a String with the length incremented by two
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param stringTable String Table
|
||||
* \param qnameID Qualified Name ID
|
||||
* \param namespaceUriID Qualified Namespace ID
|
||||
* \param localNameID Qualified LocalName ID
|
||||
* \param s String Value (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeStringValue(bitstream_t* stream, exi_value_string_table_t* stringTable, size_t namespaceUriID, size_t localNameID, exi_string_value_t* s);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode Restricted characters set string value
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param stringTable StringTable
|
||||
* \param namespaceUriID qualified namespace ID
|
||||
* \param localNameID qualified localName ID
|
||||
* \param rcs Restricted character set
|
||||
* \param s String Value (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeRCSStringValue(bitstream_t* stream, exi_value_string_table_t* stringTable, size_t namespaceUriID, size_t localNameID, exi_rcs_t* rcs, exi_string_value_t* s);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode characters
|
||||
*
|
||||
* Decode a sequence of characters according to a given length.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param len Length
|
||||
* \param chars Characters (out)
|
||||
* \param charsSize Size of possible characters
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeCharacters(bitstream_t* stream, size_t len, exi_string_character_t* chars, size_t charsSize);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode restricted character set characters
|
||||
*
|
||||
* Decode a sequence of characters according to a given length and rcs code-length, size and set.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param len Length
|
||||
* \param chars Characters (out)
|
||||
* \param charsSize Size of possible characters
|
||||
* \param rcsCodeLength RCS code-length
|
||||
* \param rcsCodeLength RCS size
|
||||
* \param rcsCodeLength RCS set
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeRCSCharacters(bitstream_t* stream, size_t len, exi_string_character_t* chars, size_t charsSize, size_t rcsCodeLength, size_t rcsSize, const exi_string_character_t rcsSet[]);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode Binary
|
||||
*
|
||||
* Decode a binary value as a length-prefixed sequence of octets.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param bytes Bytes (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeBinary(bitstream_t* stream, exi_bytes_t* bytes);
|
||||
|
||||
/**
|
||||
* \brief Decode Binary data
|
||||
*
|
||||
* Decode a sequence of octets.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param len Length
|
||||
* \param data Bytes (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeBytes(bitstream_t* stream, size_t len, uint8_t* data);
|
||||
|
||||
/**
|
||||
* \brief Decode DateTime
|
||||
*
|
||||
* Decode Date-Time as sequence of values representing the
|
||||
* individual components of the Date-Time.
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \param type Datetime type
|
||||
* \param datetime Datetime (out)
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int decodeDateTime(bitstream_t* stream, exi_datetime_type_t type, exi_datetime_t* datetime);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,70 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifndef EXI_CODER_C
|
||||
#define EXI_CODER_C
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
#include "BitInputStream.h"
|
||||
#include "BitDecoderChannel.h"
|
||||
|
||||
#include "assert.h"
|
||||
#include "EXICoder.h"
|
||||
|
||||
/*
|
||||
size_t exiGetCurrentState(struct exiState* state) {
|
||||
return state->grammarStates[state->currentStack];
|
||||
// return 0;
|
||||
}
|
||||
*/
|
||||
|
||||
int exiPushStack(exi_state_t* state, size_t newState, eqname_t* eqn) {
|
||||
if ((state->stackIndex + 1) < EXI_ELEMENT_STACK_SIZE) {
|
||||
state->grammarStack[++state->stackIndex] = newState;
|
||||
/* copy qname */
|
||||
state->elementStack[state->stackIndex].localPart = eqn->localPart;
|
||||
state->elementStack[state->stackIndex].namespaceURI = eqn->namespaceURI;
|
||||
return 0;
|
||||
} else {
|
||||
return EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
}
|
||||
|
||||
int exiPopStack(exi_state_t* state) {
|
||||
if (state->stackIndex >= 1) {
|
||||
state->stackIndex--;
|
||||
return 0;
|
||||
} else {
|
||||
return EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
106
src/codec/EXIConfig.h
Normal file
106
src/codec/EXIConfig.h
Normal file
|
@ -0,0 +1,106 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-23
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EXIConfig.h
|
||||
* \brief EXI Configurations for the EXI Codec
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXI_CONFIG_H
|
||||
#define EXI_CONFIG_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/** EXI stream - Option Byte Array */
|
||||
#define BYTE_ARRAY 1
|
||||
/** EXI stream - Option File */
|
||||
#define FILE_STREAM 2
|
||||
/** \brief EXI stream
|
||||
*
|
||||
* Byte array or file
|
||||
* */
|
||||
#define EXI_STREAM BYTE_ARRAY
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/** Memory allocation - static */
|
||||
#define STATIC_ALLOCATION 1
|
||||
/** Memory allocation - dynamic */
|
||||
#define DYNAMIC_ALLOCATION 2
|
||||
/** */
|
||||
/** \brief Memory allocation mode
|
||||
*
|
||||
* static or dynamic memory allocation
|
||||
* */
|
||||
#define MEMORY_ALLOCATION STATIC_ALLOCATION
|
||||
|
||||
|
||||
|
||||
/** String representation ASCII */
|
||||
#define STRING_REPRESENTATION_ASCII 1
|
||||
/** String representation Universal Character Set (UCS) */
|
||||
#define STRING_REPRESENTATION_UCS 2
|
||||
/** */
|
||||
/** \brief String representation mode
|
||||
*
|
||||
* ASCII or UCS
|
||||
* */
|
||||
#define STRING_REPRESENTATION STRING_REPRESENTATION_UCS
|
||||
|
||||
|
||||
/* in the case of ASCII an extra char (null terminator) for printf and other functions is useful */
|
||||
#if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII
|
||||
#define EXTRA_CHAR 1
|
||||
#endif /* STRING_REPRESENTATION_ASCII */
|
||||
#if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS
|
||||
#define EXTRA_CHAR 0
|
||||
#endif /* STRING_REPRESENTATION_UCS */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/** Maximum number of cascading elements, XML tree depth */
|
||||
#define EXI_ELEMENT_STACK_SIZE 24
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* EXI_CONFIG_H */
|
||||
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,54 +1,64 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "EXIHeaderDecoder.h"
|
||||
#include "BitInputStream.h"
|
||||
#include "BitDecoderChannel.h"
|
||||
#include "DecoderChannel.h"
|
||||
#include "ErrorCodes.h"
|
||||
|
||||
#ifndef EXI_HEADER_DECODER_C
|
||||
#define EXI_HEADER_DECODER_C
|
||||
|
||||
int readEXIHeader(bitstream_t* stream) {
|
||||
uint8_t header;
|
||||
int errn = readBits(stream, 8, &header);
|
||||
if (errn < 0) {
|
||||
return errn;
|
||||
}
|
||||
if(header == '$') {
|
||||
/* we do not support "EXI Cookie" */
|
||||
errn = -1;
|
||||
} else if ( header & 0x20 ) {
|
||||
/* we do not support "Presence Bit for EXI Options" */
|
||||
errn = -2;
|
||||
} else {
|
||||
/* Yes, a *simple* header */
|
||||
errn = 0;
|
||||
int errn;
|
||||
uint32_t header = 0;
|
||||
|
||||
/* init stream */
|
||||
stream->buffer = 0;
|
||||
stream->capacity = 0;
|
||||
|
||||
errn = readBits(stream, 8, &header);
|
||||
if (errn == 0) {
|
||||
if(header == '$') {
|
||||
/* we do not support "EXI Cookie" */
|
||||
errn = EXI_UNSUPPORTED_HEADER_COOKIE;
|
||||
} else if ( header & 0x20 ) {
|
||||
/* we do not support "Presence Bit for EXI Options" */
|
||||
errn = EXI_UNSUPPORTED_HEADER_OPTIONS;
|
||||
} else {
|
||||
/* Yes, a *simple* header */
|
||||
errn = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,44 +1,60 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EXIHeaderDecoder.h
|
||||
* \brief EXI Header Decoder
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
#ifndef EXI_HEADER_DECODER_H
|
||||
#define EXI_HEADER_DECODER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
#ifndef EXI_HEADER_DECODER_H
|
||||
#define EXI_HEADER_DECODER_H
|
||||
|
||||
/**
|
||||
* \brief Reads EXI header
|
||||
*
|
||||
* \param stream Input Stream
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int readEXIHeader(bitstream_t* stream);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,40 +1,47 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "EXIHeaderEncoder.h"
|
||||
#include "BitOutputStream.h"
|
||||
#include "BitEncoderChannel.h"
|
||||
#include "EncoderChannel.h"
|
||||
|
||||
#ifndef EXI_HEADER_ENCODER_C
|
||||
#define EXI_HEADER_ENCODER_C
|
||||
|
||||
int writeEXIHeader(bitstream_t* stream) {
|
||||
return writeBits(stream, 8, 144);
|
||||
/* init stream */
|
||||
stream->buffer = 0;
|
||||
stream->capacity = 8;
|
||||
|
||||
return writeBits(stream, 8, 128);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,44 +1,61 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EXIHeaderEncoder.h
|
||||
* \brief EXI Header Encoder
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
#ifndef EXI_HEADER_ENCODER_H
|
||||
#define EXI_HEADER_ENCODER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
#ifndef EXI_HEADER_ENCODER_H
|
||||
#define EXI_HEADER_ENCODER_H
|
||||
|
||||
/**
|
||||
* \brief Writes EXI header
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int writeEXIHeader(bitstream_t* stream);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
93
src/codec/EXIOptions.h
Normal file
93
src/codec/EXIOptions.h
Normal file
|
@ -0,0 +1,93 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EXIOptions.h
|
||||
* \brief EXI Options for the EXI Codec
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXI_OPTIONS_H
|
||||
#define EXI_OPTIONS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/** EXI alignment - Option bit-packed */
|
||||
#define BIT_PACKED 1
|
||||
/** EXI alignment - Option byte-packed */
|
||||
#define BYTE_ALIGNMENT 2
|
||||
/** EXI alignment */
|
||||
/**
|
||||
* \brief EXI Option 'alignment'
|
||||
*
|
||||
* The alignment option is used to control the alignment of event codes and content items.
|
||||
* Default Value: bit-packed
|
||||
*/
|
||||
#define EXI_OPTION_ALIGNMENT BIT_PACKED
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \brief EXI Option 'strict'
|
||||
*
|
||||
* Strict interpretation of schemas is used to achieve better compactness.
|
||||
* Default Value: false
|
||||
*/
|
||||
#define EXI_OPTION_STRICT 0
|
||||
|
||||
|
||||
/**
|
||||
* \brief EXI Option 'valueMaxLength'
|
||||
*
|
||||
* Specifies the maximum string length of value content items to be
|
||||
* considered for addition to the string table.
|
||||
* Default Value: unbounded (-1)
|
||||
*/
|
||||
#define EXI_OPTION_VALUE_MAX_LENGTH -1
|
||||
|
||||
|
||||
/**
|
||||
* \brief EXI Option 'valuePartitionCapacity'
|
||||
*
|
||||
* Specifies the total capacity of value partitions in a string table.
|
||||
* Default Value: unbounded (-1)
|
||||
*/
|
||||
#define EXI_OPTION_VALUE_PARTITION_CAPACITY 0
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* EXI_OPTIONS_H */
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
|
@ -18,168 +18,574 @@
|
|||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* \file EXITypes.h
|
||||
* \brief Basic type definitions and structs
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXI_TYPES_H
|
||||
#define EXI_TYPES_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include "EXIConfig.h"
|
||||
#if EXI_STREAM == FILE_STREAM
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
|
||||
|
||||
/** Number of bits for each byte */
|
||||
#define BITS_IN_BYTE 8
|
||||
|
||||
/** EXI Date-Time offset for year */
|
||||
#define DATETIME_YEAR_OFFSET 2000
|
||||
/** EXI Date-Time number of bits for monthDay */
|
||||
#define DATETIME_NUMBER_BITS_MONTHDAY 9
|
||||
/** EXI Date-Time number of bits for time */
|
||||
#define DATETIME_NUMBER_BITS_TIME 17
|
||||
/** EXI Date-Time number of bits for timezone */
|
||||
#define DATETIME_NUMBER_BITS_TIMEZONE 11
|
||||
/** EXI Date-Time month multiplicator */
|
||||
#define DATETIME_MONTH_MULTIPLICATOR 32
|
||||
/** EXI Date-Time offset for timzone minutes */
|
||||
#define DATETIME_TIMEZONE_OFFSET_IN_MINUTES 896
|
||||
|
||||
/** Maximum integer value for uint */
|
||||
#define UINT_MAX_VALUE 65535
|
||||
|
||||
|
||||
/** EXI Float exponent special values */
|
||||
#define FLOAT_EXPONENT_SPECIAL_VALUES -16384
|
||||
/** EXI Float mantissa infinity */
|
||||
#define FLOAT_MANTISSA_INFINITY 1
|
||||
/** EXI Float minus mantissa infinity */
|
||||
#define FLOAT_MANTISSA_MINUS_INFINITY -1
|
||||
/** EXI Float not a number */
|
||||
#define FLOAT_MANTISSA_NOT_A_NUMBER 0
|
||||
|
||||
/** \brief EXI Events */
|
||||
typedef enum {
|
||||
/** Start Document SD */
|
||||
EXI_EVENT_START_DOCUMENT,
|
||||
/** End Document ED */
|
||||
EXI_EVENT_END_DOCUMENT,
|
||||
/** Start Element SE(qname) */
|
||||
EXI_EVENT_START_ELEMENT,
|
||||
/** Start Element SE(uri:*) */
|
||||
EXI_EVENT_START_ELEMENT_NS,
|
||||
/** Start Element SE(*) generic */
|
||||
EXI_EVENT_START_ELEMENT_GENERIC,
|
||||
/** Start Element SE(*) generic undeclared */
|
||||
EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED,
|
||||
/** End Element EE */
|
||||
EXI_EVENT_END_ELEMENT,
|
||||
/** End Element EE undeclared*/
|
||||
EXI_EVENT_END_ELEMENT_UNDECLARED,
|
||||
/** Characters CH */
|
||||
EXI_EVENT_CHARACTERS,
|
||||
/** Characters CH generic */
|
||||
EXI_EVENT_CHARACTERS_GENERIC,
|
||||
/** Characters CH generic undeclared */
|
||||
EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED,
|
||||
/** Attribute AT(xsi:type) */
|
||||
EXI_EVENT_ATTRIBUTE_XSI_TYPE,
|
||||
/** Attribute AT(xsi:nil) */
|
||||
EXI_EVENT_ATTRIBUTE_XSI_NIL,
|
||||
/** Attribute AT(qname) */
|
||||
EXI_EVENT_ATTRIBUTE,
|
||||
/** Attribute AT(uri:*) */
|
||||
EXI_EVENT_ATTRIBUTE_NS,
|
||||
/** Attribute AT(*) generic */
|
||||
EXI_EVENT_ATTRIBUTE_GENERIC,
|
||||
/** Attribute AT(*) invalid value */
|
||||
EXI_EVENT_ATTRIBUTE_INVALID_VALUE,
|
||||
/** Attribute AT(*) any invalid value */
|
||||
EXI_EVENT_ATTRIBUTE_ANY_INVALID_VALUE,
|
||||
/** Attribute AT(*) generic undeclared */
|
||||
EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED,
|
||||
/* error state */
|
||||
EXI_EVENT_ERROR
|
||||
} exi_event_t;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Bit stream container
|
||||
*
|
||||
* Structure for byteArray/file stream.
|
||||
*
|
||||
* # General
|
||||
* .size defines the maximum size of the byte array (see .data)
|
||||
*
|
||||
* .data points to the input/output array of bytes (unsigned char*).
|
||||
*
|
||||
* .pos has to be set to an pointer to an 32 bit long unsigned integer (uint32_t *)
|
||||
* as this variable is read/write.
|
||||
* Therefore it is best practice to declare the variable itself and use the &-operator
|
||||
* to assign the address. The value of that variable points to the position inside the
|
||||
* buffer where the stream begins. Which is usually the first (0th) byte but can also be
|
||||
* another value if there more information transferred in that stream.
|
||||
* After processing .pos points to the next "available" byte (if any left).
|
||||
*
|
||||
* .buffer has to be set to 0 for internal use only (single byte buffer)
|
||||
*
|
||||
* # Receiving data (input)
|
||||
* .capacity is used for addressing single bits in the actual byte (see .buffer)
|
||||
* and has to be set to 0, which means there are 0 bits read so far and a new
|
||||
* byte needs to be read from the input stream/data-array to the current byte buffer.
|
||||
*
|
||||
* # Sending data (output)
|
||||
* .capacity is used for addressing single bits in the actual byte (see .buffer)
|
||||
* and has to be set to 8, which means there are still 8 bits left to fill up
|
||||
* the current byte buffer before writing the final byte to the output stream/data-array.
|
||||
*
|
||||
*/
|
||||
typedef struct {
|
||||
#if EXI_STREAM == BYTE_ARRAY
|
||||
/** byte array size */
|
||||
size_t size;
|
||||
/** byte array data */
|
||||
uint8_t* data;
|
||||
/** byte array next position in array */
|
||||
size_t* pos;
|
||||
#endif
|
||||
#if EXI_STREAM == FILE_STREAM
|
||||
/** file pointer */
|
||||
FILE *file;
|
||||
#endif
|
||||
/** Current byte buffer*/
|
||||
uint8_t buffer;
|
||||
/** Remaining bit capacity in current byte buffer*/
|
||||
uint8_t capacity;
|
||||
} bitstream_t;
|
||||
|
||||
|
||||
/** \brief EXI Value Datatypes */
|
||||
typedef enum {
|
||||
/** Binary Base64 */
|
||||
EXI_DATATYPE_BINARY_BASE64,
|
||||
/** Binary Hex */
|
||||
EXI_DATATYPE_BINARY_HEX,
|
||||
/** Boolean */
|
||||
EXI_DATATYPE_BOOLEAN,
|
||||
/** Boolean with Facets */
|
||||
EXI_DATATYPE_BOOLEAN_FACET,
|
||||
/** Decimal */
|
||||
EXI_DATATYPE_DECIMAL,
|
||||
/** Float & Double */
|
||||
EXI_DATATYPE_FLOAT,
|
||||
/** N-Bit Unsigned Integer */
|
||||
EXI_DATATYPE_NBIT_UNSIGNED_INTEGER,
|
||||
/** Unsigned Integer */
|
||||
EXI_DATATYPE_UNSIGNED_INTEGER,
|
||||
/** (Signed) Integer */
|
||||
EXI_DATATYPE_INTEGER,
|
||||
/** Datetime */
|
||||
EXI_DATATYPE_DATETIME,
|
||||
/** String */
|
||||
EXI_DATATYPE_STRING,
|
||||
/** Restricted Character Set String */
|
||||
EXI_DATATYPE_RCS_STRING,
|
||||
/** Enumeration */
|
||||
EXI_DATATYPE_ENUMERATION,
|
||||
/** List */
|
||||
EXI_DATATYPE_LIST,
|
||||
/** QName (e.g. xsi:type) */
|
||||
EXI_DATATYPE_QNAME
|
||||
} exi_datatype_t;
|
||||
|
||||
|
||||
/** \brief EXI Integer Value types */
|
||||
typedef enum {
|
||||
/** Unsigned Integer 8 bits */
|
||||
EXI_UNSIGNED_INTEGER_8,
|
||||
/** Unsigned Integer 16 bits */
|
||||
EXI_UNSIGNED_INTEGER_16,
|
||||
/** Unsigned Integer 32 bits */
|
||||
EXI_UNSIGNED_INTEGER_32,
|
||||
/** Unsigned Integer 64 bits */
|
||||
EXI_UNSIGNED_INTEGER_64,
|
||||
/** (Signed) Integer 8 bits */
|
||||
EXI_INTEGER_8,
|
||||
/** (Signed) Integer 16 bits */
|
||||
EXI_INTEGER_16,
|
||||
/** (Signed) Integer 32 bits */
|
||||
EXI_INTEGER_32,
|
||||
/** (Signed) Integer 64 bits */
|
||||
EXI_INTEGER_64
|
||||
} exi_integer_type_t;
|
||||
|
||||
|
||||
/** \brief EXI Datetime types */
|
||||
typedef enum {
|
||||
/** gYear */
|
||||
EXI_DATETIME_GYEAR,
|
||||
/** gYearMonth */
|
||||
EXI_DATETIME_GYEARMONTH,
|
||||
/** date */
|
||||
EXI_DATETIME_DATE,
|
||||
/** datetime */
|
||||
EXI_DATETIME_DATETIME,
|
||||
/** gMonth */
|
||||
EXI_DATETIME_GMONTH,
|
||||
/** gMonthDay */
|
||||
EXI_DATETIME_GMONTHDAY,
|
||||
/** gDay */
|
||||
EXI_DATETIME_GDAY,
|
||||
/** time */
|
||||
EXI_DATETIME_TIME
|
||||
} exi_datetime_type_t;
|
||||
|
||||
|
||||
/** \brief String value type */
|
||||
typedef enum {
|
||||
/** value miss */
|
||||
EXI_STRING_VALUE_MISS,
|
||||
/** value local-hit */
|
||||
EXI_STRING_VALUE_LOCAL_HIT,
|
||||
/** value global-hit */
|
||||
EXI_STRING_VALUE_GLOBAL_HIT
|
||||
} exi_string_value_type_t;
|
||||
|
||||
/** \brief EXI string character */
|
||||
/* Note: define whether you wan't to support ASCII only or UCS */
|
||||
#if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII
|
||||
typedef char exi_string_character_t;
|
||||
#endif /* STRING_REPRESENTATION_ASCII */
|
||||
#if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS
|
||||
typedef uint32_t exi_string_character_t;
|
||||
#endif /* STRING_REPRESENTATION_UCS */
|
||||
|
||||
|
||||
|
||||
/** \brief Universal Character Set (UCS) strings */
|
||||
typedef struct {
|
||||
/** container size */
|
||||
size_t size;
|
||||
/** string character container */
|
||||
exi_string_character_t* characters;
|
||||
/** current string length == number of code-points, (len <= size) */
|
||||
size_t len;
|
||||
} exi_string_t;
|
||||
|
||||
|
||||
/** \brief String value */
|
||||
typedef struct {
|
||||
/** value type (e.g., miss, local-hit, global-hit) */
|
||||
exi_string_value_type_t type;
|
||||
/** miss entry */
|
||||
exi_string_t miss;
|
||||
/** (local) hit entry */
|
||||
size_t localID;
|
||||
/** (global) hit entry */
|
||||
size_t globalID;
|
||||
} exi_string_value_t;
|
||||
|
||||
|
||||
/** \brief Restricted Characeter Set */
|
||||
typedef struct {
|
||||
/** size */
|
||||
size_t size;
|
||||
/** rcs codepoints */
|
||||
exi_string_character_t* characters;
|
||||
/** character coding length (less than 256 characters) */
|
||||
uint8_t codingLength;
|
||||
} exi_rcs_t;
|
||||
|
||||
|
||||
/** \brief Byte value container */
|
||||
typedef struct {
|
||||
/** bytes array size */
|
||||
size_t size;
|
||||
/** bytes array data container */
|
||||
uint8_t* data;
|
||||
/** bytes array length (len <= size) */
|
||||
size_t len;
|
||||
} exi_bytes_t;
|
||||
|
||||
|
||||
/** \brief Integer value container */
|
||||
typedef struct {
|
||||
/** type */
|
||||
exi_integer_type_t type;
|
||||
union {
|
||||
/* (signed) values */
|
||||
/** (signed) int 8 bits */
|
||||
int8_t int8;
|
||||
/** (signed) int 16 bits */
|
||||
int16_t int16;
|
||||
/** (signed) int 32 bits */
|
||||
int32_t int32;
|
||||
/** (signed) int 64 bits */
|
||||
int64_t int64;
|
||||
/* unsigned values */
|
||||
/** unsigned int 8 bits */
|
||||
uint8_t uint8;
|
||||
/** unsigned int 16 bits */
|
||||
uint16_t uint16;
|
||||
/** unsigned int 32 bits */
|
||||
uint32_t uint32;
|
||||
/** unsigned int 64 bits */
|
||||
uint64_t uint64;
|
||||
} val;
|
||||
} exi_integer_t;
|
||||
|
||||
|
||||
/** \brief Float value container */
|
||||
typedef struct {
|
||||
/** range of the mantissa is -(2^63) to 2^63-1 */
|
||||
int64_t mantissa;
|
||||
/** range of the exponent is - (2^14-1) to 2^14-1 */
|
||||
int16_t exponent; /* base-10 */
|
||||
} exi_float_me_t;
|
||||
|
||||
|
||||
/** \brief Decimal value container */
|
||||
typedef struct {
|
||||
/** a sign value */
|
||||
int negative;
|
||||
/** represents the integral portion of the Decimal */
|
||||
exi_integer_t integral;
|
||||
/** represents the fractional portion of the Decimal with the digits in reverse order to preserve leading zeros */
|
||||
exi_integer_t reverseFraction;
|
||||
} exi_decimal_t;
|
||||
|
||||
|
||||
/** \brief Datetime value container */
|
||||
typedef struct {
|
||||
/** datetime type */
|
||||
exi_datetime_type_t type;
|
||||
/** Datetime value for year */
|
||||
int32_t year;
|
||||
/** Datetime value for monthDay */
|
||||
uint32_t monthDay;
|
||||
/** Datetime value for time */
|
||||
uint32_t time;
|
||||
/** Datetime value for presenceFractionalSecs */
|
||||
int presenceFractionalSecs;
|
||||
/** Datetime value for fractionalSecs */
|
||||
uint32_t fractionalSecs;
|
||||
/** Datetime value for presenceTimezone */
|
||||
int presenceTimezone;
|
||||
/** Datetime value for timezone */
|
||||
uint32_t timezone;
|
||||
} exi_datetime_t;
|
||||
|
||||
|
||||
/** \brief List value container */
|
||||
typedef struct {
|
||||
/** list item type */
|
||||
exi_datatype_t type;
|
||||
/** number of items */
|
||||
size_t len;
|
||||
/* Special datatype: integer */
|
||||
/* exi_integer_type_t intType;*/
|
||||
/** Special datatype: datetime */
|
||||
exi_datetime_type_t datetimeType;
|
||||
} exi_list_t;
|
||||
|
||||
|
||||
/** \brief Efficient qname */
|
||||
typedef struct {
|
||||
/** namespace URI ID*/
|
||||
size_t namespaceURI;
|
||||
/** local name ID*/
|
||||
size_t localPart;
|
||||
} exi_eqname_t;
|
||||
|
||||
|
||||
/** \brief Name entry type */
|
||||
typedef enum {
|
||||
/** As known IDs */
|
||||
EXI_NAME_ENTRY_TYPE_ID,
|
||||
/** As String */
|
||||
EXI_NAME_ENTRY_TYPE_STRING_AND_ID
|
||||
} exi_name_entry_type_t;
|
||||
|
||||
|
||||
/** \brief Name entry */
|
||||
typedef struct {
|
||||
/** type */
|
||||
exi_name_entry_type_t type;
|
||||
/** entry ID */
|
||||
size_t id;
|
||||
/** entry string */
|
||||
exi_string_t str;
|
||||
} exi_name_entry_t;
|
||||
|
||||
|
||||
/** \brief Qualified name */
|
||||
typedef struct {
|
||||
/** Uri */
|
||||
exi_name_entry_t uri;
|
||||
/** LocalName */
|
||||
exi_name_entry_t localName;
|
||||
} exi_qname_t;
|
||||
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#ifndef EXI_TYPES_H
|
||||
#define EXI_TYPES_H
|
||||
|
||||
#define BITS_IN_BYTE 8
|
||||
|
||||
#define EXI_ELEMENT_STACK_SIZE 16
|
||||
|
||||
/* EXI automaton methods prefixes such as "inline" etc. */
|
||||
#ifndef EXI_MPFX
|
||||
#define EXI_MPFX
|
||||
#endif
|
||||
|
||||
#define FLOAT_EXPONENT_SPECIAL_VALUES -16384
|
||||
#define FLOAT_MANTISSA_INFINITY 1
|
||||
#define FLOAT_MANTISSA_MINUS_INFINITY -1
|
||||
#define FLOAT_MANTISSA_NOT_A_NUMBER 0
|
||||
|
||||
typedef struct {
|
||||
/* Integer Array */
|
||||
size_t size; /* array size */
|
||||
uint8_t* data; /* int data array */
|
||||
size_t* pos; /* next position in array */
|
||||
/* Current byte buffer & its remaining bit capacity */
|
||||
uint8_t buffer;
|
||||
size_t capacity;
|
||||
} bitstream_t;
|
||||
|
||||
typedef struct {
|
||||
/* Bytes Size and array container */
|
||||
size_t size;
|
||||
uint8_t* data;
|
||||
/* current length (len <= size) */
|
||||
size_t len;
|
||||
} bytes_t;
|
||||
|
||||
/* Universal Character Set (UCS) strings */
|
||||
typedef struct {
|
||||
/* UCS size and UCS character container*/
|
||||
size_t size;
|
||||
uint32_t* codepoints;
|
||||
/* current length == number of code-points, (len <= size) */
|
||||
size_t len;
|
||||
} string_ucs_t;
|
||||
|
||||
typedef struct {
|
||||
/* range of the mantissa is -(2^63) to 2^63-1 */
|
||||
int64_t mantissa;
|
||||
/* range of the exponent is - (2^14-1) to 2^14-1 */
|
||||
int32_t exponent; /* base-10 */
|
||||
} float_me_t;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
/* Binary */
|
||||
BINARY_BASE64, BINARY_HEX,
|
||||
/* Boolean */
|
||||
BOOLEAN,
|
||||
/* Decimal */
|
||||
DECIMAL,
|
||||
/* Float */
|
||||
FLOAT, DOUBLE,
|
||||
/* N-Bit Integer */
|
||||
NBIT_INTEGER_32, NBIT_INTEGER_64, NBIT_INTEGER_BIG,
|
||||
/* Unsigned Integer */
|
||||
UNSIGNED_INTEGER_16, UNSIGNED_INTEGER_32, UNSIGNED_INTEGER_64, UNSIGNED_INTEGER_BIG,
|
||||
/* (Signed) Integer */
|
||||
INTEGER_16, INTEGER_32, INTEGER_64, INTEGER_BIG,
|
||||
/* Datetime */
|
||||
DATETIME,
|
||||
/* String */
|
||||
STRING,
|
||||
/* Enumeration */
|
||||
ENUMERATION,
|
||||
/* List */
|
||||
LIST
|
||||
} exi_datatype_t;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
START_DOCUMENT,
|
||||
END_DOCUMENT,
|
||||
START_ELEMENT,
|
||||
START_ELEMENT_GENERIC, /* not supported yet */
|
||||
END_ELEMENT,
|
||||
CHARACTERS,
|
||||
CHARACTERS_GENERIC, /* not supported yet */
|
||||
ATTRIBUTE,
|
||||
ATTRIBUTE_GENERIC, /* not supported yet */
|
||||
/* error state */
|
||||
ERROR
|
||||
} exi_event_t;
|
||||
|
||||
/* TODO list support */
|
||||
typedef struct {
|
||||
/* List container with memory size */
|
||||
size_t size;
|
||||
uint8_t* data;
|
||||
/* list item type */
|
||||
exi_datatype_t type;
|
||||
/* number of items */
|
||||
size_t len;
|
||||
} list_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
unsigned int namespaceURI;
|
||||
unsigned int localPart;
|
||||
} eqname_t;
|
||||
|
||||
typedef struct {
|
||||
/* stack of grammar states and elements */
|
||||
size_t grammarStack [EXI_ELEMENT_STACK_SIZE];
|
||||
eqname_t elementStack [EXI_ELEMENT_STACK_SIZE];
|
||||
size_t stackIndex;
|
||||
/* event-code */
|
||||
uint8_t eventCode;
|
||||
} exi_state_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
/* type of value */
|
||||
exi_datatype_t type;
|
||||
|
||||
/* base types */
|
||||
int boolean;
|
||||
int8_t int8;
|
||||
uint8_t uint8;
|
||||
uint32_t uint32;
|
||||
int32_t int32;
|
||||
int64_t int64;
|
||||
uint8_t enumeration;
|
||||
|
||||
/* Bytes, Strings and Lists are not native types anymore */
|
||||
bytes_t binary;
|
||||
string_ucs_t string;
|
||||
list_t list;
|
||||
} exi_value_t;
|
||||
|
||||
|
||||
/*
|
||||
* ERROR-Codes
|
||||
*/
|
||||
# define EXI_ERROR_OUT_OF_BOUNDS -100
|
||||
|
||||
# define EXI_ERROR_UNKOWN_EVENT_CODE -110
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
/*TODO Doxygen Documentation */
|
||||
|
||||
|
||||
/* ==================================== */
|
||||
/* URI and LocalName Entries */
|
||||
typedef struct exiNameTablePrepopulated {
|
||||
/* number of namespaces AND length name-partitions array */
|
||||
size_t len;
|
||||
/* number of localName entries divided by URI */
|
||||
size_t* localNames;
|
||||
} exi_name_table_prepopulated_t;
|
||||
|
||||
#define EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES 25
|
||||
|
||||
typedef enum {
|
||||
EXI_NAME_PARTITION_URI, EXI_NAME_PARTITION_LOCALNAME
|
||||
} exi_name_partition_type_t;
|
||||
|
||||
typedef struct {
|
||||
char* uri;
|
||||
size_t uriID;
|
||||
} exi_uri_partition_t;
|
||||
|
||||
typedef struct {
|
||||
char* localName;
|
||||
size_t localNameID;
|
||||
size_t uriID;
|
||||
} exi_localname_partition_t;
|
||||
|
||||
typedef struct {
|
||||
exi_name_partition_type_t namePartitionType;
|
||||
struct {
|
||||
exi_uri_partition_t uriPartition;
|
||||
exi_localname_partition_t localNamePartition;
|
||||
} entry;
|
||||
} exi_name_partition_t;
|
||||
|
||||
typedef struct exiNameTableRuntime {
|
||||
/* maximum number of characters in the name partitions entries PLUS null terminators */
|
||||
/* char characters[EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_CHARACTERS + EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES]; */
|
||||
/* uint16_t numberOfUsedCharacters; *//* initially zero <= EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_CHARACTERS */
|
||||
/* maximum number of name partitions entries. Name partitions entries consist in all uri, and local-name partition entries */
|
||||
exi_name_partition_t
|
||||
namePartitionsEntries[EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES];
|
||||
/* uint16_t numberOfUsedNamePartitions; *//* initially zero */
|
||||
/* added entries */
|
||||
size_t addedUriEntries; /* initially zero */
|
||||
size_t addedLocalNameEntries; /* initially zero */
|
||||
} exi_name_table_runtime_t;
|
||||
|
||||
|
||||
/* StartTagContent grammar initially empty */
|
||||
/* ElementContent grammar has EE per default */
|
||||
typedef struct {
|
||||
size_t namespaceUriID;
|
||||
size_t localNameID;
|
||||
size_t numberOfProductions;
|
||||
int hasXsiType; /* StartTagContent only */
|
||||
int hasEE; /* ElementContentper default TRUE */
|
||||
} exi_runtime_element_t;
|
||||
|
||||
/* Note: We do have twice as many runtime grammars (StartTagContent and ElementContent)*/
|
||||
#define MAX_NUMBER_OF_RUNTIME_ELEMENTS 80
|
||||
|
||||
|
||||
|
||||
/* ==================================== */
|
||||
/* Value string table */
|
||||
typedef struct exiValueStringTableEntry {
|
||||
/** Qualified namespace URI */
|
||||
size_t namespaceUriID;
|
||||
/** Qualified localName */
|
||||
size_t localNameID;
|
||||
/** Local Value ID */
|
||||
size_t localValueID;
|
||||
/** String */
|
||||
exi_string_t str;
|
||||
} exi_value_string_table_entry_t;
|
||||
|
||||
typedef struct exiValueStringTable {
|
||||
/** maximum number of global string table entry size */
|
||||
size_t size;
|
||||
/** string table entry array container */
|
||||
exi_value_string_table_entry_t* strs;
|
||||
/** current number of string table entries (len <= size) */
|
||||
size_t len;
|
||||
} exi_value_string_table_t;
|
||||
|
||||
/* typedef struct { */
|
||||
/** number of global strings */
|
||||
/* uint16_t numberOfGlobalStrings; */
|
||||
/** size of local-names container */
|
||||
/* uint16_t sizeLocalStrings; */
|
||||
/** number of local strings container */
|
||||
/* uint16_t* numberOfLocalStrings; */
|
||||
/** string values */
|
||||
/* exi_value_string_table_t* valueStringTable;
|
||||
} exi_value_table_t;*/
|
||||
|
||||
typedef struct {
|
||||
/** stack of grammar states */
|
||||
int16_t grammarStack[EXI_ELEMENT_STACK_SIZE];
|
||||
/** stack of grammar elements / qnameIDs */
|
||||
exi_eqname_t elementStack[EXI_ELEMENT_STACK_SIZE];
|
||||
/** stack index for both stacks */
|
||||
size_t stackIndex;
|
||||
|
||||
/** event-code */
|
||||
uint32_t eventCode;
|
||||
|
||||
/** name table entries, pre-populated */
|
||||
exi_name_table_prepopulated_t* nameTablePrepopulated;
|
||||
/** name table entries, at runtime */
|
||||
exi_name_table_runtime_t* nameTableRuntime;
|
||||
|
||||
/** next qname ID */
|
||||
size_t nextQNameID;
|
||||
|
||||
/** string table entries */
|
||||
exi_value_string_table_t* stringTable;
|
||||
|
||||
/** runtime built-in element grammars - numbers */
|
||||
size_t numberOfRuntimeGrammars;
|
||||
/** runtime built-in element grammars */
|
||||
exi_runtime_element_t runtimeGrammars[MAX_NUMBER_OF_RUNTIME_ELEMENTS * 2];
|
||||
} exi_state_t;
|
||||
|
||||
typedef struct {
|
||||
/* type of value */
|
||||
exi_datatype_t type;
|
||||
|
||||
/* base types */
|
||||
int boolean;
|
||||
uint32_t enumeration;
|
||||
|
||||
/* complex types: Integers, Bytes, Strings and Lists are not native types anymore */
|
||||
exi_integer_t integer;
|
||||
exi_bytes_t binary;
|
||||
exi_string_value_t str;
|
||||
exi_float_me_t float_me;
|
||||
exi_decimal_t decimal;
|
||||
exi_datetime_t datetime;
|
||||
exi_list_t list;
|
||||
exi_eqname_t eqname;
|
||||
} exi_value_t;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
704
src/codec/EncoderChannel.c
Normal file
704
src/codec/EncoderChannel.c
Normal file
|
@ -0,0 +1,704 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
#include "EncoderChannel.h"
|
||||
#include "EXIOptions.h"
|
||||
#include "BitOutputStream.h"
|
||||
#include "EXITypes.h"
|
||||
#include "ErrorCodes.h"
|
||||
#include "MethodsBag.h"
|
||||
/*#include "v2gEXICoder.h"*/
|
||||
|
||||
#ifndef ENCODER_CHANNEL_C
|
||||
#define ENCODER_CHANNEL_C
|
||||
|
||||
int encodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv) {
|
||||
int errn = 0;
|
||||
switch (iv->type) {
|
||||
/* Unsigned Integer */
|
||||
case EXI_UNSIGNED_INTEGER_8:
|
||||
errn = encodeUnsignedInteger32(stream, iv->val.uint8);
|
||||
break;
|
||||
case EXI_UNSIGNED_INTEGER_16:
|
||||
errn = encodeUnsignedInteger32(stream, iv->val.uint16);
|
||||
break;
|
||||
case EXI_UNSIGNED_INTEGER_32:
|
||||
errn = encodeUnsignedInteger32(stream, iv->val.uint32);
|
||||
break;
|
||||
case EXI_UNSIGNED_INTEGER_64:
|
||||
errn = encodeUnsignedInteger64(stream, iv->val.uint64);
|
||||
break;
|
||||
/* (Signed) Integer */
|
||||
case EXI_INTEGER_8:
|
||||
if (iv->val.int8 < 0) {
|
||||
return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE;
|
||||
}
|
||||
errn = encodeUnsignedInteger32(stream, (uint32_t)(iv->val.int8));
|
||||
break;
|
||||
case EXI_INTEGER_16:
|
||||
if (iv->val.int16 < 0) {
|
||||
return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE;
|
||||
}
|
||||
errn = encodeUnsignedInteger32(stream, (uint32_t)(iv->val.int16));
|
||||
break;
|
||||
case EXI_INTEGER_32:
|
||||
if (iv->val.int32 < 0) {
|
||||
return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE;
|
||||
}
|
||||
errn = encodeUnsignedInteger32(stream, (uint32_t)(iv->val.int32));
|
||||
break;
|
||||
case EXI_INTEGER_64:
|
||||
if (iv->val.int64 < 0) {
|
||||
return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE;
|
||||
}
|
||||
errn = encodeUnsignedInteger64(stream, (uint64_t)(iv->val.int64));
|
||||
break;
|
||||
default:
|
||||
errn = EXI_UNSUPPORTED_INTEGER_VALUE_TYPE;
|
||||
break;
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision non negative integer using a sequence of
|
||||
* octets. The most significant bit of the last octet is set to zero to
|
||||
* indicate sequence termination. Only seven bits per octet are used to
|
||||
* store the integer's value.
|
||||
*/
|
||||
int encodeUnsignedInteger16(bitstream_t* stream, uint16_t n) {
|
||||
int errn = 0;
|
||||
if (n < 128) {
|
||||
/* write byte as is */
|
||||
errn = encode(stream, (uint8_t) n);
|
||||
} else {
|
||||
uint8_t n7BitBlocks = numberOf7BitBlocksToRepresent(n);
|
||||
|
||||
switch (n7BitBlocks) {
|
||||
case 3:
|
||||
errn = encode(stream, (uint8_t) (128 | n));
|
||||
n = n >> 7;
|
||||
if (errn != 0) {
|
||||
break;
|
||||
}
|
||||
/* no break */
|
||||
case 2:
|
||||
errn = encode(stream, (uint8_t) (128 | n));
|
||||
n = n >> 7;
|
||||
if (errn != 0) {
|
||||
break;
|
||||
}
|
||||
/* no break */
|
||||
case 1:
|
||||
/* 0 .. 7 (last byte) */
|
||||
errn = encode(stream, (uint8_t) (0 | n));
|
||||
/* no break */
|
||||
}
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision non negative integer using a sequence of
|
||||
* octets. The most significant bit of the last octet is set to zero to
|
||||
* indicate sequence termination. Only seven bits per octet are used to
|
||||
* store the integer's value.
|
||||
*/
|
||||
int encodeUnsignedInteger32(bitstream_t* stream, uint32_t n) {
|
||||
int errn = 0;
|
||||
if (n < 128) {
|
||||
/* write byte as is */
|
||||
errn = encode(stream, (uint8_t) n);
|
||||
} else {
|
||||
uint8_t n7BitBlocks = numberOf7BitBlocksToRepresent(n);
|
||||
|
||||
switch (n7BitBlocks) {
|
||||
case 5:
|
||||
errn = encode(stream, (uint8_t) (128 | n));
|
||||
n = n >> 7;
|
||||
if (errn != 0) {
|
||||
break;
|
||||
}
|
||||
/* no break */
|
||||
case 4:
|
||||
errn = encode(stream, (uint8_t) (128 | n));
|
||||
n = n >> 7;
|
||||
if (errn != 0) {
|
||||
break;
|
||||
}
|
||||
/* no break */
|
||||
case 3:
|
||||
errn = encode(stream, (uint8_t) (128 | n));
|
||||
n = n >> 7;
|
||||
if (errn != 0) {
|
||||
break;
|
||||
}
|
||||
/* no break */
|
||||
case 2:
|
||||
errn = encode(stream, (uint8_t) (128 | n));
|
||||
n = n >> 7;
|
||||
if (errn != 0) {
|
||||
break;
|
||||
}
|
||||
/* no break */
|
||||
case 1:
|
||||
/* 0 .. 7 (last byte) */
|
||||
errn = encode(stream, (uint8_t) (0 | n));
|
||||
/* no break */
|
||||
}
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision non negative integer using a sequence of
|
||||
* octets. The most significant bit of the last octet is set to zero to
|
||||
* indicate sequence termination. Only seven bits per octet are used to
|
||||
* store the integer's value.
|
||||
*/
|
||||
int encodeUnsignedInteger64(bitstream_t* stream, uint64_t n) {
|
||||
int errn = 0;
|
||||
uint8_t lastEncode = (uint8_t) n;
|
||||
n >>= 7;
|
||||
|
||||
while (n != 0 && errn == 0) {
|
||||
errn = encode(stream, lastEncode | 128);
|
||||
lastEncode = (uint8_t) n;
|
||||
n >>= 7;
|
||||
}
|
||||
|
||||
if (errn == 0) {
|
||||
errn = encode(stream, lastEncode);
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
void _shiftRight7(uint8_t* buf, int len) {
|
||||
const int shift = 7;
|
||||
unsigned char tmp = 0x00, tmp2 = 0x00;
|
||||
for (int k = 0; k <= len; k++) {
|
||||
if (k == 0) {
|
||||
tmp = buf[k];
|
||||
buf[k] >>= shift;
|
||||
} else {
|
||||
tmp2 = buf[k];
|
||||
buf[k] >>= shift;
|
||||
buf[k] |= ((tmp & 0x7F) << (8 - shift));
|
||||
|
||||
if (k != len) {
|
||||
tmp = tmp2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision non negative integer using a sequence of
|
||||
* octets. The most significant bit of the last octet is set to zero to
|
||||
* indicate sequence termination. Only seven bits per octet are used to
|
||||
* store the integer's value.
|
||||
*/
|
||||
int encodeUnsignedIntegerBig(bitstream_t* stream, size_t size, uint8_t* data, size_t len) {
|
||||
int errn = 0;
|
||||
int i;
|
||||
int lenM1 = len - 1;
|
||||
const int MAX_BIGINT_ARRAY = 25;
|
||||
uint8_t lastEncode = 0;
|
||||
uint8_t bytesToShift[MAX_BIGINT_ARRAY]; // MAXIMUM
|
||||
size_t bitsToEncode = len * 8;
|
||||
|
||||
if(MAX_BIGINT_ARRAY <= len) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* init */
|
||||
for(i=0; i<MAX_BIGINT_ARRAY; i++) {
|
||||
bytesToShift[i] = 0;
|
||||
}
|
||||
|
||||
/* copy bytes first in same order for shifting */
|
||||
for(i=0; i < len; i++) {
|
||||
bytesToShift[i] = data[i];
|
||||
}
|
||||
|
||||
while(bitsToEncode > 7) {
|
||||
lastEncode = bytesToShift[lenM1];
|
||||
lastEncode = lastEncode | 128;
|
||||
errn = encode(stream, lastEncode);
|
||||
_shiftRight7(bytesToShift, len);
|
||||
bitsToEncode -= 7;
|
||||
}
|
||||
|
||||
if (errn == 0) {
|
||||
errn = encode(stream, bytesToShift[lenM1]);
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
int encodeInteger(bitstream_t* stream, exi_integer_t* iv) {
|
||||
int errn = 0;
|
||||
switch (iv->type) {
|
||||
/* Unsigned Integer */
|
||||
case EXI_UNSIGNED_INTEGER_8:
|
||||
errn = encodeInteger32(stream, iv->val.uint8);
|
||||
break;
|
||||
case EXI_UNSIGNED_INTEGER_16:
|
||||
errn = encodeInteger32(stream, iv->val.uint16);
|
||||
break;
|
||||
case EXI_UNSIGNED_INTEGER_32:
|
||||
errn = encodeInteger64(stream, iv->val.uint32);
|
||||
break;
|
||||
case EXI_UNSIGNED_INTEGER_64:
|
||||
errn = encodeInteger64(stream, (int64_t)(iv->val.uint64));
|
||||
break;
|
||||
/* (Signed) Integer */
|
||||
case EXI_INTEGER_8:
|
||||
errn = encodeInteger32(stream, iv->val.int8);
|
||||
break;
|
||||
case EXI_INTEGER_16:
|
||||
errn = encodeInteger32(stream, iv->val.int16);
|
||||
break;
|
||||
case EXI_INTEGER_32:
|
||||
errn = encodeInteger32(stream, iv->val.int32);
|
||||
break;
|
||||
case EXI_INTEGER_64:
|
||||
errn = encodeInteger64(stream, iv->val.int64);
|
||||
break;
|
||||
default:
|
||||
errn = EXI_UNSUPPORTED_INTEGER_VALUE_TYPE;
|
||||
break;
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision integer using a sign bit followed by a
|
||||
* sequence of octets. The most significant bit of the last octet is set to
|
||||
* zero to indicate sequence termination. Only seven bits per octet are used
|
||||
* to store the integer's value.
|
||||
*/
|
||||
int encodeInteger16(bitstream_t* stream, int16_t n) {
|
||||
int errn;
|
||||
/* signalize sign */
|
||||
if (n < 0) {
|
||||
errn = encodeBoolean(stream, 1);
|
||||
/* For negative values, the Unsigned Integer holds the
|
||||
* magnitude of the value minus 1 */
|
||||
n = (int16_t)((-n) - 1);
|
||||
} else {
|
||||
errn = encodeBoolean(stream, 0);
|
||||
}
|
||||
if (errn == 0) {
|
||||
errn = encodeUnsignedInteger16(stream, (uint16_t)n);
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision integer using a sign bit followed by a
|
||||
* sequence of octets. The most significant bit of the last octet is set to
|
||||
* zero to indicate sequence termination. Only seven bits per octet are used
|
||||
* to store the integer's value.
|
||||
*/
|
||||
int encodeInteger32(bitstream_t* stream, int32_t n) {
|
||||
int errn;
|
||||
/* signalize sign */
|
||||
if (n < 0) {
|
||||
errn = encodeBoolean(stream, 1);
|
||||
/* For negative values, the Unsigned Integer holds the
|
||||
* magnitude of the value minus 1 */
|
||||
n = (-n) - 1;
|
||||
} else {
|
||||
errn = encodeBoolean(stream, 0);
|
||||
}
|
||||
if (errn == 0) {
|
||||
errn = encodeUnsignedInteger32(stream, (uint32_t)n);
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision integer using a sign bit followed by a
|
||||
* sequence of octets. The most significant bit of the last octet is set to
|
||||
* zero to indicate sequence termination. Only seven bits per octet are used
|
||||
* to store the integer's value.
|
||||
*/
|
||||
int encodeInteger64(bitstream_t* stream, int64_t n) {
|
||||
int errn;
|
||||
/* signalize sign */
|
||||
if (n < 0) {
|
||||
errn = encodeBoolean(stream, 1);
|
||||
/* For negative values, the Unsigned Integer holds the
|
||||
* magnitude of the value minus 1 */
|
||||
n = (-n) - 1;
|
||||
} else {
|
||||
errn = encodeBoolean(stream, 0);
|
||||
}
|
||||
if (errn == 0) {
|
||||
errn = encodeUnsignedInteger64(stream, (uint64_t)n);
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Encode an arbitrary precision integer using a sign bit followed by a
|
||||
* sequence of octets. The most significant bit of the last octet is set to
|
||||
* zero to indicate sequence termination. Only seven bits per octet are used
|
||||
* to store the integer's value.
|
||||
*/
|
||||
int encodeIntegerBig(bitstream_t* stream, int negative, size_t size, uint8_t* data, size_t len) {
|
||||
int errn;
|
||||
/* signalize sign */
|
||||
if (negative) {
|
||||
errn = encodeBoolean(stream, 1);
|
||||
/* For negative values, the Unsigned Integer holds the
|
||||
* magnitude of the value minus 1 */
|
||||
/* n = (-n) - 1; */
|
||||
} else {
|
||||
errn = encodeBoolean(stream, 0);
|
||||
}
|
||||
if (errn == 0) {
|
||||
errn = encodeUnsignedIntegerBig(stream, size, data, len);
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* The Float datatype representation is two consecutive Integers.
|
||||
* The first Integer represents the mantissa of the floating point
|
||||
* number and the second Integer represents the base-10 exponent
|
||||
* of the floating point number.
|
||||
*/
|
||||
int encodeFloat(bitstream_t* stream, exi_float_me_t* f) {
|
||||
int errn = encodeInteger64(stream, f->mantissa);
|
||||
if (errn == 0) {
|
||||
errn = encodeInteger32(stream, f->exponent);
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a decimal represented as a Boolean sign followed by two Unsigned
|
||||
* Integers. A sign value of zero (0) is used to represent positive Decimal
|
||||
* values and a sign value of one (1) is used to represent negative Decimal
|
||||
* values The first Integer represents the integral portion of the Decimal
|
||||
* value. The second positive integer represents the fractional portion of
|
||||
* the decimal with the digits in reverse order to preserve leading zeros.
|
||||
*/
|
||||
int encodeDecimal(bitstream_t* stream, exi_decimal_t* d) {
|
||||
/* sign, integral, reverse fractional */
|
||||
int errn = encodeBoolean(stream, d->negative);
|
||||
if (errn == 0) {
|
||||
errn = encodeUnsignedInteger(stream, &d->integral);
|
||||
if (errn == 0) {
|
||||
errn = encodeUnsignedInteger(stream, &d->reverseFraction);
|
||||
}
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a length prefixed sequence of characters.
|
||||
*/
|
||||
int encodeString(bitstream_t* stream, exi_string_t* string) {
|
||||
int errn = encodeUnsignedInteger32(stream, string->len);
|
||||
if (errn == 0) {
|
||||
errn = encodeCharacters(stream, string->characters, string->len);
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a sequence of characters according to a given length.
|
||||
* Each character is represented by its UCS [ISO/IEC 10646]
|
||||
* code point encoded as an Unsigned Integer
|
||||
*/
|
||||
int encodeCharacters(bitstream_t* stream, exi_string_character_t* chars, size_t len) {
|
||||
unsigned int i;
|
||||
int errn = 0;
|
||||
for (i = 0; i < len && errn == 0; i++) {
|
||||
#if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII
|
||||
errn = encode(stream, (uint8_t)chars[i]);
|
||||
#endif /* STRING_REPRESENTATION_ASCII */
|
||||
#if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS
|
||||
errn = encodeUnsignedInteger32(stream, chars[i]);
|
||||
#endif /* STRING_REPRESENTATION_UCS */
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
|
||||
int encodeRCSCharacters(bitstream_t* stream, exi_string_character_t* chars, size_t len, size_t rcsCodeLength, size_t rcsSize, const exi_string_character_t rcsSet[]) {
|
||||
unsigned int i;
|
||||
unsigned int k;
|
||||
int errn = 0;
|
||||
size_t rcsCode = SIZE_MAX;
|
||||
|
||||
for (i = 0; i < len && errn == 0; i++) {
|
||||
/* try to find short code */
|
||||
rcsCode = SIZE_MAX;
|
||||
for(k=0; k<rcsSize && rcsCode == SIZE_MAX; k++) {
|
||||
if(rcsSet[k] == chars[i]) {
|
||||
rcsCode = k;
|
||||
}
|
||||
}
|
||||
|
||||
if( rcsCode == SIZE_MAX) {
|
||||
/* RCS mis-match */
|
||||
errn = encodeNBitUnsignedInteger(stream, rcsCodeLength, rcsSize);
|
||||
#if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII
|
||||
errn = encode(stream, (uint8_t)chars[i]);
|
||||
#endif /* STRING_REPRESENTATION_ASCII */
|
||||
#if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS
|
||||
errn = encodeUnsignedInteger32(stream, chars[i]);
|
||||
#endif /* STRING_REPRESENTATION_UCS */
|
||||
|
||||
} else {
|
||||
/* RCS match */
|
||||
errn = encodeNBitUnsignedInteger(stream, rcsCodeLength, (uint32_t)rcsCode);
|
||||
}
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a binary value as a length-prefixed sequence of octets.
|
||||
*/
|
||||
int encodeBinary(bitstream_t* stream, exi_bytes_t* bytes) {
|
||||
int errn = encodeUnsignedInteger32(stream, bytes->len);
|
||||
|
||||
if(errn == 0) {
|
||||
errn = encodeBytes(stream, bytes->data, bytes->len);
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
int encodeBytes(bitstream_t* stream, uint8_t* data, size_t len) {
|
||||
unsigned int i;
|
||||
int errn = 0;
|
||||
|
||||
for (i = 0; i < len && errn == 0; i++) {
|
||||
errn = encode(stream, data[i]);
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a datetime representation which is a sequence of values
|
||||
* representing the individual components of the Date-Time
|
||||
*/
|
||||
int encodeDateTime(bitstream_t* stream, exi_datetime_t* datetime) {
|
||||
int errn = 0;
|
||||
switch (datetime->type) {
|
||||
case EXI_DATETIME_GYEAR: /* Year, [Time-Zone] */
|
||||
errn = encodeInteger32(stream, datetime->year - DATETIME_YEAR_OFFSET);
|
||||
break;
|
||||
case EXI_DATETIME_GYEARMONTH: /* Year, MonthDay, [TimeZone] */
|
||||
case EXI_DATETIME_DATE: /* Year, MonthDay, [TimeZone] */
|
||||
errn = encodeInteger32(stream, datetime->year - DATETIME_YEAR_OFFSET);
|
||||
if (errn == 0) {
|
||||
errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY,
|
||||
datetime->monthDay);
|
||||
}
|
||||
break;
|
||||
case EXI_DATETIME_DATETIME: /* Year, MonthDay, Time, [FractionalSecs], [TimeZone] */
|
||||
errn = encodeInteger32(stream, datetime->year - DATETIME_YEAR_OFFSET);
|
||||
if (errn == 0) {
|
||||
errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY,
|
||||
datetime->monthDay);
|
||||
if (errn != 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* no break */
|
||||
case EXI_DATETIME_TIME: /* Time, [FractionalSecs], [TimeZone] */
|
||||
errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIME,
|
||||
datetime->time);
|
||||
if (errn == 0) {
|
||||
if (datetime->presenceFractionalSecs) {
|
||||
errn = encodeBoolean(stream, 1);
|
||||
if (errn == 0) {
|
||||
errn = encodeUnsignedInteger32(stream, datetime->fractionalSecs);
|
||||
}
|
||||
} else {
|
||||
errn = encodeBoolean(stream, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EXI_DATETIME_GMONTH: /* MonthDay, [TimeZone] */
|
||||
case EXI_DATETIME_GMONTHDAY: /* MonthDay, [TimeZone] */
|
||||
case EXI_DATETIME_GDAY: /* MonthDay, [TimeZone] */
|
||||
errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY,
|
||||
datetime->monthDay);
|
||||
break;
|
||||
default:
|
||||
errn = EXI_UNSUPPORTED_DATETIME_TYPE;
|
||||
break;
|
||||
}
|
||||
if (errn == 0) {
|
||||
/* [TimeZone] */
|
||||
if (datetime->presenceTimezone) {
|
||||
errn = encodeBoolean(stream, 1);
|
||||
if (errn == 0) {
|
||||
errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIMEZONE,
|
||||
datetime->timezone + DATETIME_TIMEZONE_OFFSET_IN_MINUTES);
|
||||
}
|
||||
} else {
|
||||
errn = encodeBoolean(stream, 0);
|
||||
}
|
||||
}
|
||||
|
||||
return errn;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int encode(bitstream_t* stream, uint8_t b) {
|
||||
#if EXI_OPTION_ALIGNMENT == BIT_PACKED
|
||||
return writeBits(stream, 8, b);
|
||||
#endif /* EXI_OPTION_ALIGNMENT == BIT_PACKED */
|
||||
#if EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT
|
||||
int errn = 0;
|
||||
#if EXI_STREAM == BYTE_ARRAY
|
||||
if ( (*stream->pos) < stream->size ) {
|
||||
stream->data[(*stream->pos)++] = b;
|
||||
} else {
|
||||
errn = EXI_ERROR_OUTPUT_STREAM_EOF;
|
||||
}
|
||||
#endif /* EXI_STREAM == BYTE_ARRAY */
|
||||
#if EXI_STREAM == FILE_STREAM
|
||||
if ( putc(b, stream->file) == EOF ) {
|
||||
errn = EXI_ERROR_OUTPUT_STREAM_EOF;
|
||||
}
|
||||
#endif /* EXI_STREAM == FILE_STREAM */
|
||||
return errn;
|
||||
#endif /* EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT */
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a single boolean value. A false value is encoded as bit 0 and true
|
||||
* value is encode as bit 1.
|
||||
*/
|
||||
int encodeBoolean(bitstream_t* stream, int b) {
|
||||
#if EXI_OPTION_ALIGNMENT == BIT_PACKED
|
||||
uint8_t val = b ? 1 : 0;
|
||||
return writeBits(stream, 1, val);
|
||||
#endif /* EXI_OPTION_ALIGNMENT == BIT_PACKED */
|
||||
#if EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT
|
||||
uint8_t val = b ? 1 : 0;
|
||||
return encode(stream, val);
|
||||
#endif /* EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT */
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Encode n-bit unsigned integer. The n least significant bits of parameter
|
||||
* b starting with the most significant, i.e. from left to right.
|
||||
*/
|
||||
int encodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint32_t val) {
|
||||
#if EXI_OPTION_ALIGNMENT == BIT_PACKED
|
||||
int errn = 0;
|
||||
if (nbits > 0) {
|
||||
errn = writeBits(stream, nbits, val);
|
||||
}
|
||||
return errn;
|
||||
#endif /* EXI_OPTION_ALIGNMENT == BIT_PACKED */
|
||||
#if EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT
|
||||
int errn = 0;
|
||||
if (nbits > 0) {
|
||||
if (nbits < 9) {
|
||||
/* 1 byte */
|
||||
errn = encode(stream, val & 0xff);
|
||||
} else if (nbits < 17) {
|
||||
/* 2 bytes */
|
||||
errn = encode(stream, val & 0x00ff);
|
||||
if(errn == 0) {
|
||||
errn = encode(stream, (uint8_t)((val & 0xff00) >> 8));
|
||||
}
|
||||
} else if (nbits < 25) {
|
||||
/* 3 bytes */
|
||||
errn = encode(stream, val & 0x0000ff);
|
||||
if(errn == 0) {
|
||||
errn = encode(stream, (uint8_t)((val & 0x00ff00) >> 8));
|
||||
if(errn == 0) {
|
||||
errn = encode(stream, (uint8_t)((val & 0xff0000) >> 16));
|
||||
}
|
||||
}
|
||||
} else if (nbits < 33) {
|
||||
/* 4 bytes */
|
||||
errn = encode(stream, val & 0x000000ff);
|
||||
if(errn == 0) {
|
||||
errn = encode(stream, (uint8_t)((val & 0x0000ff00) >> 8));
|
||||
if(errn == 0) {
|
||||
errn = encode(stream, (uint8_t)((val & 0x00ff0000) >> 16));
|
||||
if(errn == 0) {
|
||||
errn = encode(stream, (uint8_t)((val & 0xff000000) >> 24));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* TODO Currently not more than 4 Bytes allowed for NBitUnsignedInteger */
|
||||
errn = EXI_UNSUPPORTED_NBIT_INTEGER_LENGTH;
|
||||
}
|
||||
}
|
||||
return errn;
|
||||
#endif /* EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT */
|
||||
}
|
||||
|
||||
/**
|
||||
* Flush underlying output stream.
|
||||
*/
|
||||
int encodeFinish(bitstream_t* stream) {
|
||||
#if EXI_OPTION_ALIGNMENT == BIT_PACKED
|
||||
#endif /* EXI_OPTION_ALIGNMENT == BIT_PACKED */
|
||||
return flush(stream);
|
||||
#if EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT
|
||||
/* no pending bits in byte-aligned mode */
|
||||
return 0;
|
||||
#endif /* EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT */
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
423
src/codec/EncoderChannel.h
Normal file
423
src/codec/EncoderChannel.h
Normal file
|
@ -0,0 +1,423 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EncoderChannel.h
|
||||
* \brief EXI Encoder Channel
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef ENCODER_CHANNEL_H
|
||||
#define ENCODER_CHANNEL_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode byte value
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param b byte
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encode(bitstream_t* stream, uint8_t b);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode a single boolean value
|
||||
*
|
||||
* A false value is encoded as 0 and true value is encode as 1.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param b boolean
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeBoolean(bitstream_t* stream, int b);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode n-bit unsigned integer
|
||||
*
|
||||
* The n least significant bits of parameter b starting with the
|
||||
* most significant, i.e. from left to right.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param nbits number of bits
|
||||
* \param val value
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint32_t val);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode unsigned integer
|
||||
*
|
||||
* Encode an arbitrary precision non negative integer using
|
||||
* a sequence of octets. The most significant bit of the last
|
||||
* octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param iv Unsigned integer value
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode unsigned integer
|
||||
*
|
||||
* Encode an arbitrary precision non negative integer using
|
||||
* a sequence of octets. The most significant bit of the last
|
||||
* octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param n Unsigned integer value 16 bits
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeUnsignedInteger16(bitstream_t* stream, uint16_t n);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode unsigned integer
|
||||
*
|
||||
* Encode an arbitrary precision non negative integer using
|
||||
* a sequence of octets. The most significant bit of the last
|
||||
* octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param n Unsigned integer value 32 bits
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeUnsignedInteger32(bitstream_t* stream, uint32_t n);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode unsigned integer
|
||||
*
|
||||
* Encode an arbitrary precision non negative integer using
|
||||
* a sequence of octets. The most significant bit of the last
|
||||
* octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param n Unsigned integer value 64 bits
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeUnsignedInteger64(bitstream_t* stream, uint64_t n);
|
||||
|
||||
/**
|
||||
* \brief Encode unsigned integer
|
||||
*
|
||||
* Encode an arbitrary precision non negative integer using
|
||||
* a sequence of octets. The most significant bit of the last
|
||||
* octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param size size array
|
||||
* \param data data array
|
||||
* \param len length array
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeUnsignedIntegerBig(bitstream_t* stream, size_t size, uint8_t* data, size_t len);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode integer
|
||||
*
|
||||
* Encode an arbitrary precision integer using a sign boolean
|
||||
* followed by a sequence of octets. The most significant bit
|
||||
* of the last octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param iv Integer value
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeInteger(bitstream_t* stream, exi_integer_t* iv);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode integer
|
||||
*
|
||||
* Encode an arbitrary precision integer using a sign boolean
|
||||
* followed by a sequence of octets. The most significant bit
|
||||
* of the last octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param n Integer value 16 bits
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeInteger16(bitstream_t* stream, int16_t n);
|
||||
|
||||
/**
|
||||
* \brief Encode integer
|
||||
*
|
||||
* Encode an arbitrary precision integer using a sign boolean
|
||||
* followed by a sequence of octets. The most significant bit
|
||||
* of the last octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param n Integer value 32 bits
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeInteger32(bitstream_t* stream, int32_t n);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode integer
|
||||
*
|
||||
* Encode an arbitrary precision integer using a sign boolean
|
||||
* followed by a sequence of octets. The most significant bit
|
||||
* of the last octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param n Integer value 64 bits
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeInteger64(bitstream_t* stream, int64_t n);
|
||||
|
||||
/**
|
||||
* \brief Encode integer
|
||||
*
|
||||
* Encode an arbitrary precision integer using a sign boolean
|
||||
* followed by a sequence of octets. The most significant bit
|
||||
* of the last octet is set to zero to indicate sequence termination.
|
||||
* Only seven bits per octet are used to store the integer's value.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param negative negative integer
|
||||
* \param size size array
|
||||
* \param data data array
|
||||
* \param len length array
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeIntegerBig(bitstream_t* stream, int negative, size_t size, uint8_t* data, size_t len);
|
||||
|
||||
/**
|
||||
* \brief Encode float
|
||||
*
|
||||
* Encode a Float datatype as two consecutive Integers. The first
|
||||
* Integer represents the mantissa of the floating point number
|
||||
* and the second Integer represents the base-10 exponent of the
|
||||
* floating point number.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param f Float value
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeFloat(bitstream_t* stream, exi_float_me_t* f);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode decimal
|
||||
*
|
||||
* Encode a decimal represented as a Boolean sign followed by two
|
||||
* Unsigned Integers. A sign value of zero (0) is used to represent
|
||||
* positive Decimal values and a sign value of one (1) is used to
|
||||
* represent negative Decimal values The first Integer represents
|
||||
* the integral portion of the Decimal value. The second positive
|
||||
* integer represents the fractional portion of the decimal with
|
||||
* the digits in reverse order to preserve leading zeros.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param d Decimal value
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeDecimal(bitstream_t* stream, exi_decimal_t* d);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode string
|
||||
*
|
||||
* Encode a length prefixed sequence of characters.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param string String
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeString(bitstream_t* stream, exi_string_t* string);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode string value
|
||||
*
|
||||
* Encode a length prefixed sequence of characters
|
||||
* in the sense of string tables
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param stringTable String Table
|
||||
* \param namespaceUriID Qualified Namespace ID
|
||||
* \param localNameID Qualified LocalName ID
|
||||
* \param string String value
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeStringValue(bitstream_t* stream, exi_value_string_table_t* stringTable, size_t namespaceUriID, size_t localNameID,
|
||||
exi_string_value_t* string);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode restricted character set value
|
||||
*
|
||||
* Encode a length prefixed sequence of characters
|
||||
* in the sense of string tables
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param StringTable StringTable
|
||||
* \param namespaceUriID Qualified Namespace ID
|
||||
* \param localNameID Qualified LocalName ID
|
||||
* \param rcs Restricted character set
|
||||
* \param string String value
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeRCSStringValue(bitstream_t* stream, exi_value_string_table_t* stringTable,
|
||||
size_t namespaceUriID, size_t localNameID, exi_rcs_t* rcs, exi_string_value_t* string);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode characters
|
||||
*
|
||||
* Encode a sequence of characters according to a given length.
|
||||
* Each character is represented by its UCS [ISO/IEC 10646]
|
||||
* code point encoded as an Unsigned Integer.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param chars Characters
|
||||
* \param len Numbr of characters
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeCharacters(bitstream_t* stream, exi_string_character_t* chars, size_t len);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode characters
|
||||
*
|
||||
* Encode a sequence of characters according to a given length.
|
||||
* Each character is represented by its UCS [ISO/IEC 10646]
|
||||
* code point encoded as an Unsigned Integer.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param chars Characters
|
||||
* \param len Numbr of characters
|
||||
* \param rcsCodeLength RCS code-length
|
||||
* \param rcsCodeLength RCS size
|
||||
* \param rcsCodeLength RCS set
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeRCSCharacters(bitstream_t* stream, exi_string_character_t* chars, size_t len, size_t rcsCodeLength, size_t rcsSize, const exi_string_character_t rcsSet[]);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode binary
|
||||
*
|
||||
* Encode a binary value as a length-prefixed sequence of octets.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param bytes Byte values
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeBinary(bitstream_t* stream, exi_bytes_t* bytes);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode binary data
|
||||
*
|
||||
* Encode a sequence of octets.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param data Byte values
|
||||
* \param len Length
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeBytes(bitstream_t* stream, uint8_t* data, size_t len);
|
||||
|
||||
/**
|
||||
* \brief Encode datetime
|
||||
*
|
||||
* Encode a datetime representation which is a sequence of values
|
||||
* representing the individual components of the Date-Time.
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \param datetime Datetime values
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeDateTime(bitstream_t* stream, exi_datetime_t* datetime);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Flush underlying bit output stream
|
||||
*
|
||||
* \param stream Output Stream
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int encodeFinish(bitstream_t* stream);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
120
src/codec/ErrorCodes.h
Normal file
120
src/codec/ErrorCodes.h
Normal file
|
@ -0,0 +1,120 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file ErrorCodes.h
|
||||
* \brief Error Codes descriptions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXI_ERROR_CODES_H
|
||||
#define EXI_ERROR_CODES_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define EXI_ERROR_INPUT_STREAM_EOF -10
|
||||
#define EXI_ERROR_OUTPUT_STREAM_EOF -11
|
||||
#define EXI_ERROR_INPUT_FILE_HANDLE -12
|
||||
#define EXI_ERROR_OUTPUT_FILE -13
|
||||
|
||||
#define EXI_ERROR_OUT_OF_BOUNDS -100
|
||||
#define EXI_ERROR_OUT_OF_STRING_BUFFER -101
|
||||
/*#define EXI_ERROR_OUT_OF_ASCII_BUFFER -102 */
|
||||
#define EXI_ERROR_OUT_OF_BYTE_BUFFER -103
|
||||
#define EXI_ERROR_OUT_OF_GRAMMAR_STACK -104
|
||||
#define EXI_ERROR_OUT_OF_RUNTIME_GRAMMAR_STACK -105
|
||||
#define EXI_ERROR_OUT_OF_QNAMES -106
|
||||
|
||||
#define EXI_ERROR_UNKOWN_GRAMMAR_ID -108
|
||||
#define EXI_ERROR_UNKOWN_EVENT -109
|
||||
#define EXI_ERROR_UNKOWN_EVENT_CODE -110
|
||||
#define EXI_ERROR_UNEXPECTED_EVENT_LEVEL1 -111
|
||||
#define EXI_ERROR_UNEXPECTED_EVENT_LEVEL2 -112
|
||||
|
||||
#define EXI_ERROR_UNEXPECTED_START_DOCUMENT -113
|
||||
#define EXI_ERROR_UNEXPECTED_END_DOCUMENT -114
|
||||
#define EXI_ERROR_UNEXPECTED_START_ELEMENT -115
|
||||
#define EXI_ERROR_UNEXPECTED_START_ELEMENT_NS -116
|
||||
#define EXI_ERROR_UNEXPECTED_START_ELEMENT_GENERIC -117
|
||||
#define EXI_ERROR_UNEXPECTED_START_ELEMENT_GENERIC_UNDECLARED -118
|
||||
#define EXI_ERROR_UNEXPECTED_END_ELEMENT -119
|
||||
#define EXI_ERROR_UNEXPECTED_CHARACTERS -120
|
||||
#define EXI_ERROR_UNEXPECTED_ATTRIBUTE -121
|
||||
#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_NS -122
|
||||
#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_GENERIC -123
|
||||
#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_GENERIC_UNDECLARED -124
|
||||
#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_XSI_TYPE -125
|
||||
#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_XSI_NIL -126
|
||||
#define EXI_ERROR_UNEXPECTED_GRAMMAR_ID -127
|
||||
#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_MOVE_TO_CONTENT_RULE -128
|
||||
|
||||
#define EXI_UNSUPPORTED_NBIT_INTEGER_LENGTH -132
|
||||
#define EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS -133
|
||||
#define EXI_UNSUPPORTED_INTEGER_VALUE -134
|
||||
#define EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE -135
|
||||
#define EXI_UNSUPPORTED_LIST_VALUE_TYPE -136
|
||||
#define EXI_UNSUPPORTED_HEADER_COOKIE -137
|
||||
#define EXI_UNSUPPORTED_HEADER_OPTIONS -138
|
||||
|
||||
#define EXI_UNSUPPORTED_GLOBAL_ATTRIBUTE_VALUE_TYPE -139
|
||||
#define EXI_UNSUPPORTED_DATATYPE -140
|
||||
#define EXI_UNSUPPORTED_STRING_VALUE_TYPE -141
|
||||
#define EXI_UNSUPPORTED_INTEGER_VALUE_TYPE -142
|
||||
#define EXI_UNSUPPORTED_DATETIME_TYPE -143
|
||||
#define EXI_UNSUPPORTED_FRAGMENT_ELEMENT -144
|
||||
|
||||
#define EXI_UNSUPPORTED_GRAMMAR_LEARNING_CH -150
|
||||
|
||||
/* string values */
|
||||
#define EXI_ERROR_STRINGVALUES_NOT_SUPPORTED -160
|
||||
#define EXI_ERROR_STRINGVALUES_OUT_OF_ENTRIES -161
|
||||
#define EXI_ERROR_STRINGVALUES_OUT_OF_MEMORY -162
|
||||
#define EXI_ERROR_STRINGVALUES_OUT_OF_BOUND -163
|
||||
#define EXI_ERROR_STRINGVALUES_CHARACTER -164
|
||||
|
||||
#define EXI_ERROR_UNEXPECTED_BYTE_VALUE -200
|
||||
|
||||
|
||||
#define EXI_ERROR_CONVERSION_NO_ASCII_CHARACTERS -300
|
||||
#define EXI_ERROR_CONVERSION_TYPE_TO_STRING -301
|
||||
|
||||
|
||||
#define EXI_DEVIANT_SUPPORT_NOT_DEPLOYED -500
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* EXI_ERROR_CODES_H */
|
||||
|
117
src/codec/MethodsBag.c
Normal file
117
src/codec/MethodsBag.c
Normal file
|
@ -0,0 +1,117 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
#ifndef METHODS_BAG_C
|
||||
#define METHODS_BAG_C
|
||||
|
||||
#include "MethodsBag.h"
|
||||
#include "ErrorCodes.h"
|
||||
|
||||
static const uint16_t smallLengths[] = { 0, 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4,
|
||||
4, 4, 4 };
|
||||
|
||||
int exiGetCodingLength(size_t characteristics, size_t* codingLength) {
|
||||
/* Note: we could use range expressions in switch statements but those are non-standard */
|
||||
/* e.g., case 1 ... 5: */
|
||||
int errn = 0;
|
||||
if (characteristics < 17) {
|
||||
*codingLength = smallLengths[characteristics];
|
||||
} else if (characteristics < 33) {
|
||||
/* 17 .. 32 */
|
||||
*codingLength = 5;
|
||||
} else if (characteristics < 65) {
|
||||
/* 33 .. 64 */
|
||||
*codingLength = 6;
|
||||
} else if (characteristics < 129) {
|
||||
/* 65 .. 128 */
|
||||
*codingLength = 7;
|
||||
} else if (characteristics < 257) {
|
||||
/* 129 .. 256 */
|
||||
*codingLength = 8;
|
||||
} else if (characteristics < 513) {
|
||||
/* 257 .. 512 */
|
||||
*codingLength = 9;
|
||||
} else if (characteristics < 1025) {
|
||||
/* 513 .. 1024 */
|
||||
*codingLength = 10;
|
||||
} else if (characteristics < 2049) {
|
||||
/* 1025 .. 2048 */
|
||||
*codingLength = 11;
|
||||
} else if (characteristics < 4097) {
|
||||
/* 2049 .. 4096 */
|
||||
*codingLength = 12;
|
||||
} else if (characteristics < 8193) {
|
||||
/* 4097 .. 8192 */
|
||||
*codingLength = 13;
|
||||
} else if (characteristics < 16385) {
|
||||
/* 8193 .. 16384 */
|
||||
*codingLength = 14;
|
||||
} else if (characteristics < 32769) {
|
||||
/* 16385 .. 32768 */
|
||||
*codingLength = 15;
|
||||
} else {
|
||||
/* 32769 .. 65536 */
|
||||
*codingLength = 16;
|
||||
}
|
||||
return errn;
|
||||
}
|
||||
|
||||
|
||||
uint8_t numberOf7BitBlocksToRepresent(uint32_t n) {
|
||||
/* assert (n >= 0); */
|
||||
|
||||
/* 7 bits */
|
||||
if (n < 128) {
|
||||
return 1;
|
||||
}
|
||||
/* 14 bits */
|
||||
else if (n < 16384) {
|
||||
return 2;
|
||||
}
|
||||
/* 21 bits */
|
||||
else if (n < 2097152) {
|
||||
return 3;
|
||||
}
|
||||
/* 28 bits */
|
||||
else if (n < 268435456) {
|
||||
return 4;
|
||||
}
|
||||
/* 35 bits */
|
||||
else {
|
||||
/* int, 32 bits */
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
70
src/codec/MethodsBag.h
Normal file
70
src/codec/MethodsBag.h
Normal file
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 2017-03-02
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file MethodsBag.h
|
||||
* \brief Method bag for bit and octet functions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef METHODS_BAG_H
|
||||
#define METHODS_BAG_H
|
||||
|
||||
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
/**
|
||||
* \brief Returns the number of bits to identify the characteristics.
|
||||
*
|
||||
* \param characteristics number of characteristics
|
||||
* \param codingLength number of bits
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
int exiGetCodingLength(size_t characteristics, size_t* codingLength);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Returns the least number of 7 bit-blocks that is needed to represent the passed integer value
|
||||
*
|
||||
* Note: Returns 1 if passed parameter is 0.
|
||||
*
|
||||
* \param n integer value
|
||||
* \return Error-Code <> 0
|
||||
*
|
||||
*/
|
||||
uint8_t numberOf7BitBlocksToRepresent(uint32_t n);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -1,112 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifndef STRING_TABLE_C
|
||||
#define STRING_TABLE_C
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "StringTable.h"
|
||||
#include "EXITypes.h"
|
||||
#include "BitInputStream.h"
|
||||
#include "BitDecoderChannel.h"
|
||||
|
||||
#include "StringTableEntries.h"
|
||||
|
||||
#include "assert.h"
|
||||
|
||||
int exiGetUri(size_t uriID, const char** uri) {
|
||||
if ( uriID < stringTable.len ) {
|
||||
*uri = stringTable.uris[uriID];
|
||||
} else {
|
||||
return EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int exiGetUriLength(size_t* uriLength) {
|
||||
*uriLength = stringTable.len;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int exiGetUriID(const char* uri, size_t* uriID) {
|
||||
unsigned int i;
|
||||
for(i=0; i<stringTable.len; i++) {
|
||||
if ( strcmp ( uri, stringTable.uris[i] ) == 0 ) {
|
||||
*uriID = i;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
int exiGetLocalName(size_t uriID, size_t localNameID, const char** localName) {
|
||||
if ( uriID < stringTable.len ) {
|
||||
if ( localNameID < stringTable.localNames[uriID].len ) {
|
||||
*localName = stringTable.localNames[uriID].entries[localNameID];
|
||||
} else {
|
||||
return EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
} else {
|
||||
return EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int exiGetLocalNameLength(size_t uriID, size_t* localNameLength) {
|
||||
if ( uriID < stringTable.len ) {
|
||||
*localNameLength = stringTable.localNames[uriID].len;
|
||||
} else {
|
||||
return EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int exiGetLocalNameID(size_t uriID, const char* localName, size_t* localNameID) {
|
||||
unsigned int i;
|
||||
if ( uriID < stringTable.len ) {
|
||||
/* TODO binary search */
|
||||
for(i=0; i<stringTable.localNames[uriID].len; i++) {
|
||||
if ( strcmp ( localName, stringTable.localNames[uriID].entries[i] ) == 0 ) {
|
||||
*localNameID = i;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return EXI_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -1,122 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifndef STRING_TABLE_ENTRIES_C
|
||||
#define STRING_TABLE_ENTRIES_C
|
||||
|
||||
#include "StringTableEntries.h"
|
||||
|
||||
|
||||
/* ==================================== */
|
||||
/* String Table Population */
|
||||
|
||||
/* localName entries for URI id = 0 */
|
||||
const char * localNames0[] = {
|
||||
NULL
|
||||
};
|
||||
/* localName entries for URI id = 1 */
|
||||
const char * localNames1[] = {
|
||||
"base", "id", "lang", "space"
|
||||
};
|
||||
/* localName entries for URI id = 2 */
|
||||
const char * localNames2[] = {
|
||||
"nil", "type"
|
||||
};
|
||||
/* localName entries for URI id = 3 */
|
||||
const char * localNames3[] = {
|
||||
"ENTITIES", "ENTITY", "ID", "IDREF", "IDREFS",
|
||||
"NCName", "NMTOKEN", "NMTOKENS", "NOTATION", "Name",
|
||||
"QName", "anySimpleType", "anyType", "anyURI", "base64Binary",
|
||||
"boolean", "byte", "date", "dateTime", "decimal",
|
||||
"double", "duration", "float", "gDay", "gMonth",
|
||||
"gMonthDay", "gYear", "gYearMonth", "hexBinary", "int",
|
||||
"integer", "language", "long", "negativeInteger", "nonNegativeInteger",
|
||||
"nonPositiveInteger", "normalizedString", "positiveInteger", "short", "string",
|
||||
"time", "token", "unsignedByte", "unsignedInt", "unsignedLong",
|
||||
"unsignedShort"
|
||||
};
|
||||
/* localName entries for URI id = 4 */
|
||||
const char * localNames4[] = {
|
||||
"ChargingProfile", "ContractID", "EAmount", "EVSEID", "EVSEIMax",
|
||||
"EVSEMaxPhases", "EVSEMaxPower", "EVSEStatus", "EVSEVoltage", "EnergyProvider",
|
||||
"EoC", "LineLockReq", "LineLockReqType", "LineLockRes", "LineLockResType",
|
||||
"MeterInfo", "MeteringAuthPubKey", "MeteringReceiptReq", "MeteringReceiptReqType", "MeteringReceiptRes",
|
||||
"MeteringReceiptResType", "MeteringStatusReq", "MeteringStatusReqType", "MeteringStatusRes", "MeteringStatusResType",
|
||||
"PCurrent", "PEVID", "PEVMaxPhases", "PEVMaxPower", "PEVMaxVoltage",
|
||||
"PEVMinVoltage", "PEVPubKey", "PEVStatus", "PaymentDetailsReq", "PaymentDetailsReqType",
|
||||
"PaymentDetailsRes", "PaymentDetailsResType", "PowerDeliveryReq", "PowerDeliveryReqType", "PowerDeliveryRes",
|
||||
"PowerDeliveryResType", "PowerDiscoveryReq", "PowerDiscoveryReqType", "PowerDiscoveryRes", "PowerDiscoveryResType",
|
||||
"ReqLockStatus", "ReqSwitchStatus", "ResponseCode", "ServiceDiscoveryReq", "ServiceDiscoveryReqType",
|
||||
"ServiceDiscoveryRes", "ServiceDiscoveryResType", "ServiceList", "ServicePaymentSelectionReq", "ServicePaymentSelectionReqType",
|
||||
"ServicePaymentSelectionRes", "ServicePaymentSelectionResType", "ServiceScope", "ServiceType", "SessionSetupReq",
|
||||
"SessionSetupReqType", "SessionSetupRes", "SessionSetupResType", "TCurrent", "Tariff",
|
||||
"TariffTable"
|
||||
};
|
||||
/* localName entries for URI id = 5 */
|
||||
const char * localNames5[] = {
|
||||
"ChargerStandby", "ChargingProfileEntryMaxPower", "ChargingProfileEntryStart", "ChargingProfileType", "ConnectorLocked",
|
||||
"Currency", "EPrice", "EVSEStandby", "EVSEStatusType", "Event",
|
||||
"EventList", "EventListType", "FatalError", "FaultCode", "FaultMsg",
|
||||
"FloatingValueType", "MeterID", "MeterInfoType", "MeterPubKey", "MeterReading",
|
||||
"MeterStatus", "Multiplier", "NotificationType", "PEVStatusType", "PowerSwitchClosed",
|
||||
"ProtocolVersion", "RCD", "Service", "ServiceDescriptionType", "ServiceID",
|
||||
"ServiceListType", "ServiceName", "ServiceScope", "ServiceSessionID", "ServiceType",
|
||||
"SessionID", "SessionInformationType", "ShutDownTime", "TMeter", "Tariff",
|
||||
"TariffDescrType", "TariffDescription", "TariffEntries", "TariffEntriesType", "TariffEntry",
|
||||
"TariffEntryType", "TariffID", "TariffPMax", "TariffStart", "TariffTableType",
|
||||
"Unit", "Value", "contractIDType", "currencyType", "energyProviderType",
|
||||
"eventEntryType", "evseIDType", "fatalErrorType", "faultCodeType", "lockStatusType",
|
||||
"maxPhasesType", "meterIDType", "meterStatusType", "paymentOptionListType", "paymentOptionType",
|
||||
"pevIDType", "protocolVersionType", "pubKeyType", "rcdType", "responseCode_LineLockType",
|
||||
"responseCode_MeteringReceiptType", "responseCode_MeteringStatusType", "responseCode_PaymentDetailsType", "responseCode_PowerDeliveryType", "responseCode_PowerDiscoveryType",
|
||||
"responseCode_ServiceDiscoveryType", "responseCode_ServicePaymentSelectionType", "responseCode_SessionSetupType", "serviceDetailsType", "serviceIDType",
|
||||
"serviceNameType", "serviceScopeType", "serviceTypeType", "sessionIDType", "standbyType",
|
||||
"switchStatusType", "tariffDescriptionType", "tariffIDType", "tariffStartType", "timeType",
|
||||
"unitMultiplierType", "unitSymbolType"
|
||||
};
|
||||
/* localName entries for URI id = 6 */
|
||||
const char * localNames6[] = {
|
||||
"Body", "BodyBaseType", "BodyElement", "BodyType", "Header",
|
||||
"HeaderType", "Notification", "SessionInformation", "V2G_Message"
|
||||
};
|
||||
struct exiPartition localNamePartitions[7] = {
|
||||
{ 0, localNames0 },
|
||||
{ 4, localNames1 },
|
||||
{ 2, localNames2 },
|
||||
{ 46, localNames3 },
|
||||
{ 66, localNames4 },
|
||||
{ 92, localNames5 },
|
||||
{ 9, localNames6 }
|
||||
};
|
||||
const char * uris[] = {
|
||||
"", "http://www.w3.org/XML/1998/namespace", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/2001/XMLSchema", "urn:iso:15118:2:2010:MsgBody", "urn:iso:15118:2:2010:MsgDataTypes", "urn:iso:15118:2:2010:MsgDef"
|
||||
};
|
||||
struct exiStringTable stringTable = { 7, uris, localNamePartitions };
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifndef STRING_TABLE_ENTRIES_H
|
||||
#define STRING_TABLE_ENTRIES_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/* ==================================== */
|
||||
/* String Table Structures */
|
||||
|
||||
struct exiPartition {
|
||||
/* length of array */
|
||||
size_t len;
|
||||
/* array of string entries */
|
||||
const char** entries;
|
||||
};
|
||||
|
||||
struct exiStringTable {
|
||||
/* length of both arrays (uris & localNames) */
|
||||
size_t len;
|
||||
/* URI entries*/
|
||||
const char** uris;
|
||||
/* localName entries divided by URI */
|
||||
struct exiPartition * localNames;
|
||||
};
|
||||
|
||||
|
||||
/* ==================================== */
|
||||
/* String Table Population */
|
||||
|
||||
extern struct exiStringTable stringTable;
|
||||
|
||||
#endif
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "BitDecoderChannel.h"
|
||||
#include "BitInputStream.h"
|
||||
#include "EXITypes.h"
|
||||
|
||||
#ifndef UCS_STRING_C
|
||||
#define UCS_STRING_C
|
||||
|
||||
int toUCSString(char* chars, string_ucs_t* s) {
|
||||
unsigned int i;
|
||||
s->len = strlen(chars);
|
||||
|
||||
if (s->len <= s->size) {
|
||||
for(i=0; i<s->len; i++) {
|
||||
s->codepoints[i] = chars[i];
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Note: fails if string contains non ASCII characters */
|
||||
int toASCIIString(string_ucs_t* string, char* outASCII) {
|
||||
unsigned int i;
|
||||
for(i=0; i<string->len; i++) {
|
||||
outASCII[i] = (char)string->codepoints[i];
|
||||
}
|
||||
outASCII[string->len] = '\0';
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
/* TODO utf8/cstring//wchar_t/char16_t/char32_t methods */
|
||||
|
||||
|
||||
#ifndef UCS_STRING_H
|
||||
#define UCS_STRING_H
|
||||
|
||||
int toUCSString(char* chars, string_ucs_t* s);
|
||||
|
||||
/* Note: fails if string contains non ASCII characters */
|
||||
int toASCIIString(string_ucs_t* string, char* outASCII);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
969
src/din/dinEXIDatatypes.c
Normal file
969
src/din/dinEXIDatatypes.c
Normal file
|
@ -0,0 +1,969 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "dinEXIDatatypes.h"
|
||||
#include "EXITypes.h"
|
||||
|
||||
|
||||
#ifndef EXI_din_DATATYPES_C
|
||||
#define EXI_din_DATATYPES_C
|
||||
|
||||
#if DEPLOY_DIN_CODEC == SUPPORT_YES
|
||||
|
||||
|
||||
void init_dinEXIDocument(struct dinEXIDocument* exiDoc) {
|
||||
exiDoc->BodyElement_isUsed = 0u;
|
||||
exiDoc->V2G_Message_isUsed = 0u;
|
||||
exiDoc->SignatureProperty_isUsed = 0u;
|
||||
exiDoc->DSAKeyValue_isUsed = 0u;
|
||||
exiDoc->SignatureProperties_isUsed = 0u;
|
||||
exiDoc->KeyValue_isUsed = 0u;
|
||||
exiDoc->Transforms_isUsed = 0u;
|
||||
exiDoc->DigestMethod_isUsed = 0u;
|
||||
exiDoc->Signature_isUsed = 0u;
|
||||
exiDoc->RetrievalMethod_isUsed = 0u;
|
||||
exiDoc->Manifest_isUsed = 0u;
|
||||
exiDoc->Reference_isUsed = 0u;
|
||||
exiDoc->CanonicalizationMethod_isUsed = 0u;
|
||||
exiDoc->RSAKeyValue_isUsed = 0u;
|
||||
exiDoc->Transform_isUsed = 0u;
|
||||
exiDoc->PGPData_isUsed = 0u;
|
||||
exiDoc->MgmtData_isUsed = 0u;
|
||||
exiDoc->SignatureMethod_isUsed = 0u;
|
||||
exiDoc->KeyInfo_isUsed = 0u;
|
||||
exiDoc->SPKIData_isUsed = 0u;
|
||||
exiDoc->X509Data_isUsed = 0u;
|
||||
exiDoc->SignatureValue_isUsed = 0u;
|
||||
exiDoc->KeyName_isUsed = 0u;
|
||||
exiDoc->DigestValue_isUsed = 0u;
|
||||
exiDoc->SignedInfo_isUsed = 0u;
|
||||
exiDoc->Object_isUsed = 0u;
|
||||
exiDoc->DC_EVSEStatus_isUsed = 0u;
|
||||
exiDoc->RelativeTimeInterval_isUsed = 0u;
|
||||
exiDoc->SalesTariffEntry_isUsed = 0u;
|
||||
exiDoc->DC_EVPowerDeliveryParameter_isUsed = 0u;
|
||||
exiDoc->SASchedules_isUsed = 0u;
|
||||
exiDoc->AC_EVChargeParameter_isUsed = 0u;
|
||||
exiDoc->SAScheduleList_isUsed = 0u;
|
||||
exiDoc->DC_EVStatus_isUsed = 0u;
|
||||
exiDoc->ServiceCharge_isUsed = 0u;
|
||||
exiDoc->EVStatus_isUsed = 0u;
|
||||
exiDoc->DC_EVChargeParameter_isUsed = 0u;
|
||||
exiDoc->DC_EVSEChargeParameter_isUsed = 0u;
|
||||
exiDoc->EVSEStatus_isUsed = 0u;
|
||||
exiDoc->TimeInterval_isUsed = 0u;
|
||||
exiDoc->EVPowerDeliveryParameter_isUsed = 0u;
|
||||
exiDoc->EVSEChargeParameter_isUsed = 0u;
|
||||
exiDoc->AC_EVSEStatus_isUsed = 0u;
|
||||
exiDoc->Entry_isUsed = 0u;
|
||||
exiDoc->AC_EVSEChargeParameter_isUsed = 0u;
|
||||
exiDoc->PMaxScheduleEntry_isUsed = 0u;
|
||||
exiDoc->EVChargeParameter_isUsed = 0u;
|
||||
exiDoc->ServiceDiscoveryReq_isUsed = 0u;
|
||||
exiDoc->ServiceDiscoveryRes_isUsed = 0u;
|
||||
exiDoc->MeteringReceiptReq_isUsed = 0u;
|
||||
exiDoc->PaymentDetailsReq_isUsed = 0u;
|
||||
exiDoc->MeteringReceiptRes_isUsed = 0u;
|
||||
exiDoc->PaymentDetailsRes_isUsed = 0u;
|
||||
exiDoc->SessionSetupReq_isUsed = 0u;
|
||||
exiDoc->SessionSetupRes_isUsed = 0u;
|
||||
exiDoc->CableCheckReq_isUsed = 0u;
|
||||
exiDoc->CableCheckRes_isUsed = 0u;
|
||||
exiDoc->ContractAuthenticationReq_isUsed = 0u;
|
||||
exiDoc->CertificateInstallationReq_isUsed = 0u;
|
||||
exiDoc->ContractAuthenticationRes_isUsed = 0u;
|
||||
exiDoc->CertificateInstallationRes_isUsed = 0u;
|
||||
exiDoc->WeldingDetectionReq_isUsed = 0u;
|
||||
exiDoc->WeldingDetectionRes_isUsed = 0u;
|
||||
exiDoc->CertificateUpdateReq_isUsed = 0u;
|
||||
exiDoc->CertificateUpdateRes_isUsed = 0u;
|
||||
exiDoc->PowerDeliveryReq_isUsed = 0u;
|
||||
exiDoc->PowerDeliveryRes_isUsed = 0u;
|
||||
exiDoc->ChargingStatusReq_isUsed = 0u;
|
||||
exiDoc->ChargingStatusRes_isUsed = 0u;
|
||||
exiDoc->CurrentDemandReq_isUsed = 0u;
|
||||
exiDoc->PreChargeReq_isUsed = 0u;
|
||||
exiDoc->CurrentDemandRes_isUsed = 0u;
|
||||
exiDoc->PreChargeRes_isUsed = 0u;
|
||||
exiDoc->ServicePaymentSelectionReq_isUsed = 0u;
|
||||
exiDoc->SessionStopReq_isUsed = 0u;
|
||||
exiDoc->ServicePaymentSelectionRes_isUsed = 0u;
|
||||
exiDoc->SessionStopRes_isUsed = 0u;
|
||||
exiDoc->ChargeParameterDiscoveryReq_isUsed = 0u;
|
||||
exiDoc->ChargeParameterDiscoveryRes_isUsed = 0u;
|
||||
exiDoc->ServiceDetailReq_isUsed = 0u;
|
||||
exiDoc->ServiceDetailRes_isUsed = 0u;
|
||||
}
|
||||
|
||||
|
||||
#if DEPLOY_DIN_CODEC_FRAGMENT == SUPPORT_YES
|
||||
void init_dinEXIFragment(struct dinEXIFragment* exiFrag) {
|
||||
exiFrag->Unit_isUsed = 0u;
|
||||
exiFrag->EVSEMaximumCurrentLimit_isUsed = 0u;
|
||||
exiFrag->EVPowerDeliveryParameter_isUsed = 0u;
|
||||
exiFrag->ChargingProfileEntryMaxPower_isUsed = 0u;
|
||||
exiFrag->TMeter_isUsed = 0u;
|
||||
exiFrag->EVSEPowerLimitAchieved_isUsed = 0u;
|
||||
exiFrag->duration_isUsed = 0u;
|
||||
exiFrag->EVMaximumCurrentLimit_isUsed = 0u;
|
||||
exiFrag->Parameter_isUsed = 0u;
|
||||
exiFrag->EVSEProcessing_isUsed = 0u;
|
||||
exiFrag->AC_EVChargeParameter_isUsed = 0u;
|
||||
exiFrag->EVSEProcessing_isUsed = 0u;
|
||||
exiFrag->PMaxScheduleEntry_isUsed = 0u;
|
||||
exiFrag->EVSEProcessing_isUsed = 0u;
|
||||
exiFrag->EVSEMaximumVoltageLimit_isUsed = 0u;
|
||||
exiFrag->SelectedService_isUsed = 0u;
|
||||
exiFrag->Certificate_isUsed = 0u;
|
||||
exiFrag->Certificate_isUsed = 0u;
|
||||
exiFrag->EVSEMaximumPowerLimit_isUsed = 0u;
|
||||
exiFrag->EVReady_isUsed = 0u;
|
||||
exiFrag->X509SerialNumber_isUsed = 0u;
|
||||
exiFrag->RetrievalMethod_isUsed = 0u;
|
||||
exiFrag->RetryCounter_isUsed = 0u;
|
||||
exiFrag->DC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->MeteringReceiptReq_isUsed = 0u;
|
||||
exiFrag->ReadyToChargeState_isUsed = 0u;
|
||||
exiFrag->Multiplier_isUsed = 0u;
|
||||
exiFrag->EPriceLevel_isUsed = 0u;
|
||||
exiFrag->stringValue_isUsed = 0u;
|
||||
exiFrag->ServiceDiscoveryReq_isUsed = 0u;
|
||||
exiFrag->Transforms_isUsed = 0u;
|
||||
exiFrag->MeteringReceiptRes_isUsed = 0u;
|
||||
exiFrag->PreChargeReq_isUsed = 0u;
|
||||
exiFrag->OEMProvisioningCert_isUsed = 0u;
|
||||
exiFrag->ServiceDiscoveryRes_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ContractAuthenticationReq_isUsed = 0u;
|
||||
exiFrag->ContractSignatureCertChain_isUsed = 0u;
|
||||
exiFrag->ContractSignatureCertChain_isUsed = 0u;
|
||||
exiFrag->ContractSignatureCertChain_isUsed = 0u;
|
||||
exiFrag->ContractSignatureCertChain_isUsed = 0u;
|
||||
exiFrag->ContractAuthenticationRes_isUsed = 0u;
|
||||
exiFrag->HMACOutputLength_isUsed = 0u;
|
||||
exiFrag->BulkChargingComplete_isUsed = 0u;
|
||||
exiFrag->Exponent_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->SAScheduleTuple_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->DepartureTime_isUsed = 0u;
|
||||
exiFrag->X509IssuerSerial_isUsed = 0u;
|
||||
exiFrag->SAScheduleTupleID_isUsed = 0u;
|
||||
exiFrag->SAScheduleTupleID_isUsed = 0u;
|
||||
exiFrag->SPKIData_isUsed = 0u;
|
||||
exiFrag->RelativeTimeInterval_isUsed = 0u;
|
||||
exiFrag->EVEnergyRequest_isUsed = 0u;
|
||||
exiFrag->PreChargeRes_isUsed = 0u;
|
||||
exiFrag->SessionID_isUsed = 0u;
|
||||
exiFrag->PMaxSchedule_isUsed = 0u;
|
||||
exiFrag->ServiceCharge_isUsed = 0u;
|
||||
exiFrag->PgenCounter_isUsed = 0u;
|
||||
exiFrag->ChargingStatusReq_isUsed = 0u;
|
||||
exiFrag->X509Data_isUsed = 0u;
|
||||
exiFrag->SalesTariffEntry_isUsed = 0u;
|
||||
exiFrag->KeyValue_isUsed = 0u;
|
||||
exiFrag->ChargingStatusRes_isUsed = 0u;
|
||||
exiFrag->V2G_Message_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->ServicePaymentSelectionReq_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->EVSEIsolationStatus_isUsed = 0u;
|
||||
exiFrag->ServicePaymentSelectionRes_isUsed = 0u;
|
||||
exiFrag->EVSEPresentVoltage_isUsed = 0u;
|
||||
exiFrag->EVSEPresentVoltage_isUsed = 0u;
|
||||
exiFrag->EVSEPresentVoltage_isUsed = 0u;
|
||||
exiFrag->BodyElement_isUsed = 0u;
|
||||
exiFrag->EVCCID_isUsed = 0u;
|
||||
exiFrag->PGPData_isUsed = 0u;
|
||||
exiFrag->RootCertificateID_isUsed = 0u;
|
||||
exiFrag->FaultCode_isUsed = 0u;
|
||||
exiFrag->CableCheckReq_isUsed = 0u;
|
||||
exiFrag->EVSEVoltageLimitAchieved_isUsed = 0u;
|
||||
exiFrag->EVRESSConditioning_isUsed = 0u;
|
||||
exiFrag->MeterInfo_isUsed = 0u;
|
||||
exiFrag->MeterInfo_isUsed = 0u;
|
||||
exiFrag->CableCheckRes_isUsed = 0u;
|
||||
exiFrag->ChargingProfileEntryStart_isUsed = 0u;
|
||||
exiFrag->SignatureProperty_isUsed = 0u;
|
||||
exiFrag->EVMaxCurrent_isUsed = 0u;
|
||||
exiFrag->PGPKeyPacket_isUsed = 0u;
|
||||
exiFrag->PGPKeyPacket_isUsed = 0u;
|
||||
exiFrag->Seed_isUsed = 0u;
|
||||
exiFrag->RSAKeyValue_isUsed = 0u;
|
||||
exiFrag->costKind_isUsed = 0u;
|
||||
exiFrag->EAmount_isUsed = 0u;
|
||||
exiFrag->EVSEPresentCurrent_isUsed = 0u;
|
||||
exiFrag->PowerDeliveryRes_isUsed = 0u;
|
||||
exiFrag->NumEPriceLevels_isUsed = 0u;
|
||||
exiFrag->SessionStopRes_isUsed = 0u;
|
||||
exiFrag->PowerDeliveryReq_isUsed = 0u;
|
||||
exiFrag->SessionStopReq_isUsed = 0u;
|
||||
exiFrag->XPath_isUsed = 0u;
|
||||
exiFrag->BulkSOC_isUsed = 0u;
|
||||
exiFrag->PMax_isUsed = 0u;
|
||||
exiFrag->ParameterSetID_isUsed = 0u;
|
||||
exiFrag->ParameterSetID_isUsed = 0u;
|
||||
exiFrag->ContractID_isUsed = 0u;
|
||||
exiFrag->ContractID_isUsed = 0u;
|
||||
exiFrag->ContractID_isUsed = 0u;
|
||||
exiFrag->ContractID_isUsed = 0u;
|
||||
exiFrag->Signature_isUsed = 0u;
|
||||
exiFrag->EVMaxVoltage_isUsed = 0u;
|
||||
exiFrag->ReceiptRequired_isUsed = 0u;
|
||||
exiFrag->ChargingComplete_isUsed = 0u;
|
||||
exiFrag->ChargingProfile_isUsed = 0u;
|
||||
exiFrag->PaymentOptions_isUsed = 0u;
|
||||
exiFrag->SessionSetupRes_isUsed = 0u;
|
||||
exiFrag->EVSEMaximumVoltageLimit_isUsed = 0u;
|
||||
exiFrag->ServiceDetailRes_isUsed = 0u;
|
||||
exiFrag->DC_EVPowerDeliveryParameter_isUsed = 0u;
|
||||
exiFrag->PaymentDetailsRes_isUsed = 0u;
|
||||
exiFrag->PaymentDetailsReq_isUsed = 0u;
|
||||
exiFrag->MgmtData_isUsed = 0u;
|
||||
exiFrag->Value_isUsed = 0u;
|
||||
exiFrag->EVSENotification_isUsed = 0u;
|
||||
exiFrag->EVSENotification_isUsed = 0u;
|
||||
exiFrag->EVSEMaximumPowerLimit_isUsed = 0u;
|
||||
exiFrag->EVTargetCurrent_isUsed = 0u;
|
||||
exiFrag->RemainingTimeToBulkSoC_isUsed = 0u;
|
||||
exiFrag->EVTargetCurrent_isUsed = 0u;
|
||||
exiFrag->SessionSetupReq_isUsed = 0u;
|
||||
exiFrag->EVSECurrentLimitAchieved_isUsed = 0u;
|
||||
exiFrag->ServiceDetailReq_isUsed = 0u;
|
||||
exiFrag->byteValue_isUsed = 0u;
|
||||
exiFrag->EVMaximumPowerLimit_isUsed = 0u;
|
||||
exiFrag->PowerSwitchClosed_isUsed = 0u;
|
||||
exiFrag->Manifest_isUsed = 0u;
|
||||
exiFrag->P_isUsed = 0u;
|
||||
exiFrag->SAScheduleList_isUsed = 0u;
|
||||
exiFrag->Q_isUsed = 0u;
|
||||
exiFrag->X509SubjectName_isUsed = 0u;
|
||||
exiFrag->G_isUsed = 0u;
|
||||
exiFrag->SessionID_isUsed = 0u;
|
||||
exiFrag->J_isUsed = 0u;
|
||||
exiFrag->CertificateInstallationRes_isUsed = 0u;
|
||||
exiFrag->CertificateInstallationReq_isUsed = 0u;
|
||||
exiFrag->SalesTariff_isUsed = 0u;
|
||||
exiFrag->Header_isUsed = 0u;
|
||||
exiFrag->EVSEMinimumCurrentLimit_isUsed = 0u;
|
||||
exiFrag->X509CRL_isUsed = 0u;
|
||||
exiFrag->EVMaximumCurrentLimit_isUsed = 0u;
|
||||
exiFrag->Y_isUsed = 0u;
|
||||
exiFrag->DigestValue_isUsed = 0u;
|
||||
exiFrag->DC_EVChargeParameter_isUsed = 0u;
|
||||
exiFrag->ContractSignatureEncryptedPrivateKey_isUsed = 0u;
|
||||
exiFrag->ContractSignatureEncryptedPrivateKey_isUsed = 0u;
|
||||
exiFrag->DigestMethod_isUsed = 0u;
|
||||
exiFrag->SPKISexp_isUsed = 0u;
|
||||
exiFrag->ChargeService_isUsed = 0u;
|
||||
exiFrag->EVSEEnergyToBeDelivered_isUsed = 0u;
|
||||
exiFrag->SignatureProperties_isUsed = 0u;
|
||||
exiFrag->EVSEMaxCurrent_isUsed = 0u;
|
||||
exiFrag->EVMaximumPowerLimit_isUsed = 0u;
|
||||
exiFrag->EVSEStatus_isUsed = 0u;
|
||||
exiFrag->Service_isUsed = 0u;
|
||||
exiFrag->DHParams_isUsed = 0u;
|
||||
exiFrag->DHParams_isUsed = 0u;
|
||||
exiFrag->DHParams_isUsed = 0u;
|
||||
exiFrag->DHParams_isUsed = 0u;
|
||||
exiFrag->PGPKeyID_isUsed = 0u;
|
||||
exiFrag->DSAKeyValue_isUsed = 0u;
|
||||
exiFrag->EnergyTransferType_isUsed = 0u;
|
||||
exiFrag->WeldingDetectionRes_isUsed = 0u;
|
||||
exiFrag->FreeService_isUsed = 0u;
|
||||
exiFrag->SelectedServiceList_isUsed = 0u;
|
||||
exiFrag->WeldingDetectionReq_isUsed = 0u;
|
||||
exiFrag->EVTargetVoltage_isUsed = 0u;
|
||||
exiFrag->EVTargetVoltage_isUsed = 0u;
|
||||
exiFrag->CanonicalizationMethod_isUsed = 0u;
|
||||
exiFrag->X509Certificate_isUsed = 0u;
|
||||
exiFrag->CertificateUpdateRes_isUsed = 0u;
|
||||
exiFrag->CertificateUpdateReq_isUsed = 0u;
|
||||
exiFrag->EVSEMaxVoltage_isUsed = 0u;
|
||||
exiFrag->SignedInfo_isUsed = 0u;
|
||||
exiFrag->AC_EVSEChargeParameter_isUsed = 0u;
|
||||
exiFrag->EVEnergyCapacity_isUsed = 0u;
|
||||
exiFrag->ServiceID_isUsed = 0u;
|
||||
exiFrag->ServiceID_isUsed = 0u;
|
||||
exiFrag->EVSECurrentRegulationTolerance_isUsed = 0u;
|
||||
exiFrag->ServiceParameterList_isUsed = 0u;
|
||||
exiFrag->ListOfRootCertificateIDs_isUsed = 0u;
|
||||
exiFrag->ListOfRootCertificateIDs_isUsed = 0u;
|
||||
exiFrag->ProfileEntry_isUsed = 0u;
|
||||
exiFrag->EVSEMinimumVoltageLimit_isUsed = 0u;
|
||||
exiFrag->CurrentDemandRes_isUsed = 0u;
|
||||
exiFrag->EVRESSSOC_isUsed = 0u;
|
||||
exiFrag->MeterReading_isUsed = 0u;
|
||||
exiFrag->CurrentDemandReq_isUsed = 0u;
|
||||
exiFrag->physicalValue_isUsed = 0u;
|
||||
exiFrag->ChargingComplete_isUsed = 0u;
|
||||
exiFrag->TimeInterval_isUsed = 0u;
|
||||
exiFrag->AC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->AC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->EVMaximumVoltageLimit_isUsed = 0u;
|
||||
exiFrag->SignatureValue_isUsed = 0u;
|
||||
exiFrag->DateTimeNow_isUsed = 0u;
|
||||
exiFrag->DateTimeNow_isUsed = 0u;
|
||||
exiFrag->ServiceTag_isUsed = 0u;
|
||||
exiFrag->intValue_isUsed = 0u;
|
||||
exiFrag->SelectedPaymentOption_isUsed = 0u;
|
||||
exiFrag->ServiceName_isUsed = 0u;
|
||||
exiFrag->EVCabinConditioning_isUsed = 0u;
|
||||
exiFrag->EVSEID_isUsed = 0u;
|
||||
exiFrag->ServiceScope_isUsed = 0u;
|
||||
exiFrag->EVSEID_isUsed = 0u;
|
||||
exiFrag->MeterStatus_isUsed = 0u;
|
||||
exiFrag->EVRequestedEnergyTransferType_isUsed = 0u;
|
||||
exiFrag->ServiceCategory_isUsed = 0u;
|
||||
exiFrag->GenChallenge_isUsed = 0u;
|
||||
exiFrag->GenChallenge_isUsed = 0u;
|
||||
exiFrag->SalesTariffDescription_isUsed = 0u;
|
||||
exiFrag->NotificationMaxDelay_isUsed = 0u;
|
||||
exiFrag->NotificationMaxDelay_isUsed = 0u;
|
||||
exiFrag->boolValue_isUsed = 0u;
|
||||
exiFrag->EVSEStatusCode_isUsed = 0u;
|
||||
exiFrag->ServiceScope_isUsed = 0u;
|
||||
exiFrag->FaultMsg_isUsed = 0u;
|
||||
exiFrag->SAScheduleTupleID_isUsed = 0u;
|
||||
exiFrag->SAScheduleTupleID_isUsed = 0u;
|
||||
exiFrag->BulkChargingComplete_isUsed = 0u;
|
||||
exiFrag->KeyName_isUsed = 0u;
|
||||
exiFrag->ParameterSet_isUsed = 0u;
|
||||
exiFrag->SigMeterReading_isUsed = 0u;
|
||||
exiFrag->EVSEChargeParameter_isUsed = 0u;
|
||||
exiFrag->Body_isUsed = 0u;
|
||||
exiFrag->SASchedules_isUsed = 0u;
|
||||
exiFrag->ServiceCategory_isUsed = 0u;
|
||||
exiFrag->KeyInfo_isUsed = 0u;
|
||||
exiFrag->PMaxScheduleID_isUsed = 0u;
|
||||
exiFrag->RemainingTimeToFullSoC_isUsed = 0u;
|
||||
exiFrag->EVStatus_isUsed = 0u;
|
||||
exiFrag->SubCertificates_isUsed = 0u;
|
||||
exiFrag->PaymentOption_isUsed = 0u;
|
||||
exiFrag->X509SKI_isUsed = 0u;
|
||||
exiFrag->EVMaximumVoltageLimit_isUsed = 0u;
|
||||
exiFrag->ServiceList_isUsed = 0u;
|
||||
exiFrag->Cost_isUsed = 0u;
|
||||
exiFrag->AC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->AC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->SignatureMethod_isUsed = 0u;
|
||||
exiFrag->EVSEMinCurrent_isUsed = 0u;
|
||||
exiFrag->ConsumptionCost_isUsed = 0u;
|
||||
exiFrag->EVSEPeakCurrentRipple_isUsed = 0u;
|
||||
exiFrag->EVErrorCode_isUsed = 0u;
|
||||
exiFrag->EVChargeParameter_isUsed = 0u;
|
||||
exiFrag->start_isUsed = 0u;
|
||||
exiFrag->X509IssuerName_isUsed = 0u;
|
||||
exiFrag->Reference_isUsed = 0u;
|
||||
exiFrag->EVMinCurrent_isUsed = 0u;
|
||||
exiFrag->FullSOC_isUsed = 0u;
|
||||
exiFrag->amount_isUsed = 0u;
|
||||
exiFrag->DC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->shortValue_isUsed = 0u;
|
||||
exiFrag->DC_EVSEChargeParameter_isUsed = 0u;
|
||||
exiFrag->Entry_isUsed = 0u;
|
||||
exiFrag->ServiceID_isUsed = 0u;
|
||||
exiFrag->ServiceID_isUsed = 0u;
|
||||
exiFrag->SalesTariffID_isUsed = 0u;
|
||||
exiFrag->MeterID_isUsed = 0u;
|
||||
exiFrag->EVSEMaximumCurrentLimit_isUsed = 0u;
|
||||
exiFrag->ChargeParameterDiscoveryReq_isUsed = 0u;
|
||||
exiFrag->amountMultiplier_isUsed = 0u;
|
||||
exiFrag->ChargeParameterDiscoveryRes_isUsed = 0u;
|
||||
exiFrag->Transform_isUsed = 0u;
|
||||
exiFrag->Object_isUsed = 0u;
|
||||
exiFrag->RCD_isUsed = 0u;
|
||||
exiFrag->Notification_isUsed = 0u;
|
||||
exiFrag->startValue_isUsed = 0u;
|
||||
exiFrag->Modulus_isUsed = 0u;
|
||||
exiFrag->EVSEMaxCurrent_isUsed = 0u;
|
||||
}
|
||||
#endif /* DEPLOY_DIN_CODEC_FRAGMENT */
|
||||
|
||||
void init_dinMeteringReceiptReqType(struct dinMeteringReceiptReqType* dinMeteringReceiptReqType) {
|
||||
dinMeteringReceiptReqType->Id_isUsed = 0u;
|
||||
dinMeteringReceiptReqType->SAScheduleTupleID_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinBodyType(struct dinBodyType* dinBodyType) {
|
||||
dinBodyType->BodyElement_isUsed = 0u;
|
||||
dinBodyType->SessionSetupReq_isUsed = 0u;
|
||||
dinBodyType->SessionSetupRes_isUsed = 0u;
|
||||
dinBodyType->ServiceDiscoveryReq_isUsed = 0u;
|
||||
dinBodyType->ServiceDiscoveryRes_isUsed = 0u;
|
||||
dinBodyType->ServiceDetailReq_isUsed = 0u;
|
||||
dinBodyType->ServiceDetailRes_isUsed = 0u;
|
||||
dinBodyType->ServicePaymentSelectionReq_isUsed = 0u;
|
||||
dinBodyType->ServicePaymentSelectionRes_isUsed = 0u;
|
||||
dinBodyType->PaymentDetailsReq_isUsed = 0u;
|
||||
dinBodyType->PaymentDetailsRes_isUsed = 0u;
|
||||
dinBodyType->ContractAuthenticationReq_isUsed = 0u;
|
||||
dinBodyType->ContractAuthenticationRes_isUsed = 0u;
|
||||
dinBodyType->ChargeParameterDiscoveryReq_isUsed = 0u;
|
||||
dinBodyType->ChargeParameterDiscoveryRes_isUsed = 0u;
|
||||
dinBodyType->PowerDeliveryReq_isUsed = 0u;
|
||||
dinBodyType->PowerDeliveryRes_isUsed = 0u;
|
||||
dinBodyType->ChargingStatusReq_isUsed = 0u;
|
||||
dinBodyType->ChargingStatusRes_isUsed = 0u;
|
||||
dinBodyType->MeteringReceiptReq_isUsed = 0u;
|
||||
dinBodyType->MeteringReceiptRes_isUsed = 0u;
|
||||
dinBodyType->SessionStopReq_isUsed = 0u;
|
||||
dinBodyType->SessionStopRes_isUsed = 0u;
|
||||
dinBodyType->CertificateUpdateReq_isUsed = 0u;
|
||||
dinBodyType->CertificateUpdateRes_isUsed = 0u;
|
||||
dinBodyType->CertificateInstallationReq_isUsed = 0u;
|
||||
dinBodyType->CertificateInstallationRes_isUsed = 0u;
|
||||
dinBodyType->CableCheckReq_isUsed = 0u;
|
||||
dinBodyType->CableCheckRes_isUsed = 0u;
|
||||
dinBodyType->PreChargeReq_isUsed = 0u;
|
||||
dinBodyType->PreChargeRes_isUsed = 0u;
|
||||
dinBodyType->CurrentDemandReq_isUsed = 0u;
|
||||
dinBodyType->CurrentDemandRes_isUsed = 0u;
|
||||
dinBodyType->WeldingDetectionReq_isUsed = 0u;
|
||||
dinBodyType->WeldingDetectionRes_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinSessionSetupReqType(struct dinSessionSetupReqType* dinSessionSetupReqType) {
|
||||
(void)dinSessionSetupReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinPowerDeliveryResType(struct dinPowerDeliveryResType* dinPowerDeliveryResType) {
|
||||
dinPowerDeliveryResType->EVSEStatus_isUsed = 0u;
|
||||
dinPowerDeliveryResType->AC_EVSEStatus_isUsed = 0u;
|
||||
dinPowerDeliveryResType->DC_EVSEStatus_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinServiceDetailResType(struct dinServiceDetailResType* dinServiceDetailResType) {
|
||||
dinServiceDetailResType->ServiceParameterList_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinWeldingDetectionResType(struct dinWeldingDetectionResType* dinWeldingDetectionResType) {
|
||||
(void)dinWeldingDetectionResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinContractAuthenticationResType(struct dinContractAuthenticationResType* dinContractAuthenticationResType) {
|
||||
(void)dinContractAuthenticationResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinCanonicalizationMethodType(struct dinCanonicalizationMethodType* dinCanonicalizationMethodType) {
|
||||
dinCanonicalizationMethodType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinSPKIDataType(struct dinSPKIDataType* dinSPKIDataType) {
|
||||
dinSPKIDataType->SPKISexp.arrayLen = 0u;
|
||||
dinSPKIDataType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinListOfRootCertificateIDsType(struct dinListOfRootCertificateIDsType* dinListOfRootCertificateIDsType) {
|
||||
dinListOfRootCertificateIDsType->RootCertificateID.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinSelectedServiceListType(struct dinSelectedServiceListType* dinSelectedServiceListType) {
|
||||
dinSelectedServiceListType->SelectedService.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinCurrentDemandResType(struct dinCurrentDemandResType* dinCurrentDemandResType) {
|
||||
dinCurrentDemandResType->EVSEMaximumVoltageLimit_isUsed = 0u;
|
||||
dinCurrentDemandResType->EVSEMaximumCurrentLimit_isUsed = 0u;
|
||||
dinCurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinTransformType(struct dinTransformType* dinTransformType) {
|
||||
dinTransformType->ANY_isUsed = 0u;
|
||||
dinTransformType->XPath.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinAC_EVChargeParameterType(struct dinAC_EVChargeParameterType* dinAC_EVChargeParameterType) {
|
||||
(void)dinAC_EVChargeParameterType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinX509DataType(struct dinX509DataType* dinX509DataType) {
|
||||
dinX509DataType->X509IssuerSerial.arrayLen = 0u;
|
||||
dinX509DataType->X509SKI.arrayLen = 0u;
|
||||
dinX509DataType->X509SubjectName.arrayLen = 0u;
|
||||
dinX509DataType->X509Certificate.arrayLen = 0u;
|
||||
dinX509DataType->X509CRL.arrayLen = 0u;
|
||||
dinX509DataType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinChargingStatusResType(struct dinChargingStatusResType* dinChargingStatusResType) {
|
||||
dinChargingStatusResType->EVSEMaxCurrent_isUsed = 0u;
|
||||
dinChargingStatusResType->MeterInfo_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinWeldingDetectionReqType(struct dinWeldingDetectionReqType* dinWeldingDetectionReqType) {
|
||||
(void)dinWeldingDetectionReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinSignaturePropertiesType(struct dinSignaturePropertiesType* dinSignaturePropertiesType) {
|
||||
dinSignaturePropertiesType->Id_isUsed = 0u;
|
||||
dinSignaturePropertiesType->SignatureProperty.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinContractAuthenticationReqType(struct dinContractAuthenticationReqType* dinContractAuthenticationReqType) {
|
||||
dinContractAuthenticationReqType->Id_isUsed = 0u;
|
||||
dinContractAuthenticationReqType->GenChallenge_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinDC_EVPowerDeliveryParameterType(struct dinDC_EVPowerDeliveryParameterType* dinDC_EVPowerDeliveryParameterType) {
|
||||
dinDC_EVPowerDeliveryParameterType->BulkChargingComplete_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinEVSEChargeParameterType(struct dinEVSEChargeParameterType* dinEVSEChargeParameterType) {
|
||||
(void)dinEVSEChargeParameterType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinCableCheckReqType(struct dinCableCheckReqType* dinCableCheckReqType) {
|
||||
(void)dinCableCheckReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinDC_EVChargeParameterType(struct dinDC_EVChargeParameterType* dinDC_EVChargeParameterType) {
|
||||
dinDC_EVChargeParameterType->EVMaximumPowerLimit_isUsed = 0u;
|
||||
dinDC_EVChargeParameterType->EVEnergyCapacity_isUsed = 0u;
|
||||
dinDC_EVChargeParameterType->EVEnergyRequest_isUsed = 0u;
|
||||
dinDC_EVChargeParameterType->FullSOC_isUsed = 0u;
|
||||
dinDC_EVChargeParameterType->BulkSOC_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinSAScheduleListType(struct dinSAScheduleListType* dinSAScheduleListType) {
|
||||
dinSAScheduleListType->SAScheduleTuple.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinPMaxScheduleType(struct dinPMaxScheduleType* dinPMaxScheduleType) {
|
||||
dinPMaxScheduleType->PMaxScheduleEntry.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinServicePaymentSelectionReqType(struct dinServicePaymentSelectionReqType* dinServicePaymentSelectionReqType) {
|
||||
(void)dinServicePaymentSelectionReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinRelativeTimeIntervalType(struct dinRelativeTimeIntervalType* dinRelativeTimeIntervalType) {
|
||||
dinRelativeTimeIntervalType->duration_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinEVStatusType(struct dinEVStatusType* dinEVStatusType) {
|
||||
(void)dinEVStatusType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinPreChargeResType(struct dinPreChargeResType* dinPreChargeResType) {
|
||||
(void)dinPreChargeResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinDC_EVSEChargeParameterType(struct dinDC_EVSEChargeParameterType* dinDC_EVSEChargeParameterType) {
|
||||
dinDC_EVSEChargeParameterType->EVSEMaximumPowerLimit_isUsed = 0u;
|
||||
dinDC_EVSEChargeParameterType->EVSECurrentRegulationTolerance_isUsed = 0u;
|
||||
dinDC_EVSEChargeParameterType->EVSEEnergyToBeDelivered_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinPaymentDetailsResType(struct dinPaymentDetailsResType* dinPaymentDetailsResType) {
|
||||
(void)dinPaymentDetailsResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinDSAKeyValueType(struct dinDSAKeyValueType* dinDSAKeyValueType) {
|
||||
dinDSAKeyValueType->P_isUsed = 0u;
|
||||
dinDSAKeyValueType->Q_isUsed = 0u;
|
||||
dinDSAKeyValueType->G_isUsed = 0u;
|
||||
dinDSAKeyValueType->J_isUsed = 0u;
|
||||
dinDSAKeyValueType->Seed_isUsed = 0u;
|
||||
dinDSAKeyValueType->PgenCounter_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinSASchedulesType(struct dinSASchedulesType* dinSASchedulesType) {
|
||||
(void)dinSASchedulesType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinCertificateUpdateResType(struct dinCertificateUpdateResType* dinCertificateUpdateResType) {
|
||||
(void)dinCertificateUpdateResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinEVChargeParameterType(struct dinEVChargeParameterType* dinEVChargeParameterType) {
|
||||
(void)dinEVChargeParameterType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinMessageHeaderType(struct dinMessageHeaderType* dinMessageHeaderType) {
|
||||
dinMessageHeaderType->Notification_isUsed = 0u;
|
||||
dinMessageHeaderType->Signature_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinBodyBaseType(struct dinBodyBaseType* dinBodyBaseType) {
|
||||
(void)dinBodyBaseType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinKeyValueType(struct dinKeyValueType* dinKeyValueType) {
|
||||
dinKeyValueType->DSAKeyValue_isUsed = 0u;
|
||||
dinKeyValueType->RSAKeyValue_isUsed = 0u;
|
||||
dinKeyValueType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinIntervalType(struct dinIntervalType* dinIntervalType) {
|
||||
(void)dinIntervalType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinChargeParameterDiscoveryResType(struct dinChargeParameterDiscoveryResType* dinChargeParameterDiscoveryResType) {
|
||||
dinChargeParameterDiscoveryResType->SASchedules_isUsed = 0u;
|
||||
dinChargeParameterDiscoveryResType->SAScheduleList_isUsed = 0u;
|
||||
dinChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed = 0u;
|
||||
dinChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed = 0u;
|
||||
dinChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinPowerDeliveryReqType(struct dinPowerDeliveryReqType* dinPowerDeliveryReqType) {
|
||||
dinPowerDeliveryReqType->ChargingProfile_isUsed = 0u;
|
||||
dinPowerDeliveryReqType->EVPowerDeliveryParameter_isUsed = 0u;
|
||||
dinPowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinCertificateChainType(struct dinCertificateChainType* dinCertificateChainType) {
|
||||
dinCertificateChainType->SubCertificates_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinTransformsType(struct dinTransformsType* dinTransformsType) {
|
||||
dinTransformsType->Transform.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinEntryType(struct dinEntryType* dinEntryType) {
|
||||
dinEntryType->TimeInterval_isUsed = 0u;
|
||||
dinEntryType->RelativeTimeInterval_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinSessionStopType(struct dinSessionStopType* dinSessionStopType) {
|
||||
(void)dinSessionStopType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinServiceDetailReqType(struct dinServiceDetailReqType* dinServiceDetailReqType) {
|
||||
(void)dinServiceDetailReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinDigestMethodType(struct dinDigestMethodType* dinDigestMethodType) {
|
||||
dinDigestMethodType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinParameterType(struct dinParameterType* dinParameterType) {
|
||||
dinParameterType->boolValue_isUsed = 0u;
|
||||
dinParameterType->byteValue_isUsed = 0u;
|
||||
dinParameterType->shortValue_isUsed = 0u;
|
||||
dinParameterType->intValue_isUsed = 0u;
|
||||
dinParameterType->physicalValue_isUsed = 0u;
|
||||
dinParameterType->stringValue_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinChargingStatusReqType(struct dinChargingStatusReqType* dinChargingStatusReqType) {
|
||||
(void)dinChargingStatusReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinSignatureMethodType(struct dinSignatureMethodType* dinSignatureMethodType) {
|
||||
dinSignatureMethodType->HMACOutputLength_isUsed = 0u;
|
||||
dinSignatureMethodType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinCertificateInstallationReqType(struct dinCertificateInstallationReqType* dinCertificateInstallationReqType) {
|
||||
dinCertificateInstallationReqType->Id_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinSalesTariffEntryType(struct dinSalesTariffEntryType* dinSalesTariffEntryType) {
|
||||
dinSalesTariffEntryType->TimeInterval_isUsed = 0u;
|
||||
dinSalesTariffEntryType->RelativeTimeInterval_isUsed = 0u;
|
||||
dinSalesTariffEntryType->ConsumptionCost.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinServiceDiscoveryResType(struct dinServiceDiscoveryResType* dinServiceDiscoveryResType) {
|
||||
dinServiceDiscoveryResType->ServiceList_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinParameterSetType(struct dinParameterSetType* dinParameterSetType) {
|
||||
dinParameterSetType->Parameter.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinCurrentDemandReqType(struct dinCurrentDemandReqType* dinCurrentDemandReqType) {
|
||||
dinCurrentDemandReqType->EVMaximumVoltageLimit_isUsed = 0u;
|
||||
dinCurrentDemandReqType->EVMaximumCurrentLimit_isUsed = 0u;
|
||||
dinCurrentDemandReqType->EVMaximumPowerLimit_isUsed = 0u;
|
||||
dinCurrentDemandReqType->BulkChargingComplete_isUsed = 0u;
|
||||
dinCurrentDemandReqType->RemainingTimeToFullSoC_isUsed = 0u;
|
||||
dinCurrentDemandReqType->RemainingTimeToBulkSoC_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinPreChargeReqType(struct dinPreChargeReqType* dinPreChargeReqType) {
|
||||
(void)dinPreChargeReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinSignatureType(struct dinSignatureType* dinSignatureType) {
|
||||
dinSignatureType->Id_isUsed = 0u;
|
||||
dinSignatureType->KeyInfo_isUsed = 0u;
|
||||
dinSignatureType->Object.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinReferenceType(struct dinReferenceType* dinReferenceType) {
|
||||
dinReferenceType->Id_isUsed = 0u;
|
||||
dinReferenceType->URI_isUsed = 0u;
|
||||
dinReferenceType->Type_isUsed = 0u;
|
||||
dinReferenceType->Transforms_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinProfileEntryType(struct dinProfileEntryType* dinProfileEntryType) {
|
||||
(void)dinProfileEntryType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinAnonType_V2G_Message(struct dinAnonType_V2G_Message* dinAnonType_V2G_Message) {
|
||||
(void)dinAnonType_V2G_Message; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinChargeParameterDiscoveryReqType(struct dinChargeParameterDiscoveryReqType* dinChargeParameterDiscoveryReqType) {
|
||||
dinChargeParameterDiscoveryReqType->EVChargeParameter_isUsed = 0u;
|
||||
dinChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed = 0u;
|
||||
dinChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinConsumptionCostType(struct dinConsumptionCostType* dinConsumptionCostType) {
|
||||
dinConsumptionCostType->Cost.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinRSAKeyValueType(struct dinRSAKeyValueType* dinRSAKeyValueType) {
|
||||
(void)dinRSAKeyValueType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinServiceType(struct dinServiceType* dinServiceType) {
|
||||
(void)dinServiceType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinServiceTagListType(struct dinServiceTagListType* dinServiceTagListType) {
|
||||
dinServiceTagListType->Service.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinEVSEStatusType(struct dinEVSEStatusType* dinEVSEStatusType) {
|
||||
(void)dinEVSEStatusType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinSessionSetupResType(struct dinSessionSetupResType* dinSessionSetupResType) {
|
||||
dinSessionSetupResType->DateTimeNow_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinEVPowerDeliveryParameterType(struct dinEVPowerDeliveryParameterType* dinEVPowerDeliveryParameterType) {
|
||||
(void)dinEVPowerDeliveryParameterType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinX509IssuerSerialType(struct dinX509IssuerSerialType* dinX509IssuerSerialType) {
|
||||
(void)dinX509IssuerSerialType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinSelectedServiceType(struct dinSelectedServiceType* dinSelectedServiceType) {
|
||||
dinSelectedServiceType->ParameterSetID_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinMeteringReceiptResType(struct dinMeteringReceiptResType* dinMeteringReceiptResType) {
|
||||
(void)dinMeteringReceiptResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinDC_EVStatusType(struct dinDC_EVStatusType* dinDC_EVStatusType) {
|
||||
dinDC_EVStatusType->EVCabinConditioning_isUsed = 0u;
|
||||
dinDC_EVStatusType->EVRESSConditioning_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinPhysicalValueType(struct dinPhysicalValueType* dinPhysicalValueType) {
|
||||
dinPhysicalValueType->Unit_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinManifestType(struct dinManifestType* dinManifestType) {
|
||||
dinManifestType->Id_isUsed = 0u;
|
||||
dinManifestType->Reference.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinPMaxScheduleEntryType(struct dinPMaxScheduleEntryType* dinPMaxScheduleEntryType) {
|
||||
dinPMaxScheduleEntryType->TimeInterval_isUsed = 0u;
|
||||
dinPMaxScheduleEntryType->RelativeTimeInterval_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinServiceParameterListType(struct dinServiceParameterListType* dinServiceParameterListType) {
|
||||
dinServiceParameterListType->ParameterSet.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinSignatureValueType(struct dinSignatureValueType* dinSignatureValueType) {
|
||||
dinSignatureValueType->Id_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinPaymentOptionsType(struct dinPaymentOptionsType* dinPaymentOptionsType) {
|
||||
dinPaymentOptionsType->PaymentOption.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinServiceTagType(struct dinServiceTagType* dinServiceTagType) {
|
||||
dinServiceTagType->ServiceName_isUsed = 0u;
|
||||
dinServiceTagType->ServiceScope_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinAC_EVSEStatusType(struct dinAC_EVSEStatusType* dinAC_EVSEStatusType) {
|
||||
(void)dinAC_EVSEStatusType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinCertificateUpdateReqType(struct dinCertificateUpdateReqType* dinCertificateUpdateReqType) {
|
||||
dinCertificateUpdateReqType->Id_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinServicePaymentSelectionResType(struct dinServicePaymentSelectionResType* dinServicePaymentSelectionResType) {
|
||||
(void)dinServicePaymentSelectionResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinSAScheduleTupleType(struct dinSAScheduleTupleType* dinSAScheduleTupleType) {
|
||||
dinSAScheduleTupleType->SalesTariff_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinChargingProfileType(struct dinChargingProfileType* dinChargingProfileType) {
|
||||
dinChargingProfileType->ProfileEntry.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinServiceDiscoveryReqType(struct dinServiceDiscoveryReqType* dinServiceDiscoveryReqType) {
|
||||
dinServiceDiscoveryReqType->ServiceScope_isUsed = 0u;
|
||||
dinServiceDiscoveryReqType->ServiceCategory_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinAC_EVSEChargeParameterType(struct dinAC_EVSEChargeParameterType* dinAC_EVSEChargeParameterType) {
|
||||
(void)dinAC_EVSEChargeParameterType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinKeyInfoType(struct dinKeyInfoType* dinKeyInfoType) {
|
||||
dinKeyInfoType->Id_isUsed = 0u;
|
||||
dinKeyInfoType->KeyName.arrayLen = 0u;
|
||||
dinKeyInfoType->KeyValue.arrayLen = 0u;
|
||||
dinKeyInfoType->RetrievalMethod.arrayLen = 0u;
|
||||
dinKeyInfoType->X509Data.arrayLen = 0u;
|
||||
dinKeyInfoType->PGPData.arrayLen = 0u;
|
||||
dinKeyInfoType->SPKIData.arrayLen = 0u;
|
||||
dinKeyInfoType->MgmtData.arrayLen = 0u;
|
||||
dinKeyInfoType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinPaymentDetailsReqType(struct dinPaymentDetailsReqType* dinPaymentDetailsReqType) {
|
||||
(void)dinPaymentDetailsReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinCableCheckResType(struct dinCableCheckResType* dinCableCheckResType) {
|
||||
(void)dinCableCheckResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinObjectType(struct dinObjectType* dinObjectType) {
|
||||
dinObjectType->Id_isUsed = 0u;
|
||||
dinObjectType->MimeType_isUsed = 0u;
|
||||
dinObjectType->Encoding_isUsed = 0u;
|
||||
dinObjectType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinSessionStopResType(struct dinSessionStopResType* dinSessionStopResType) {
|
||||
(void)dinSessionStopResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinSignedInfoType(struct dinSignedInfoType* dinSignedInfoType) {
|
||||
dinSignedInfoType->Id_isUsed = 0u;
|
||||
dinSignedInfoType->Reference.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinSalesTariffType(struct dinSalesTariffType* dinSalesTariffType) {
|
||||
dinSalesTariffType->SalesTariffDescription_isUsed = 0u;
|
||||
dinSalesTariffType->SalesTariffEntry.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_dinCostType(struct dinCostType* dinCostType) {
|
||||
dinCostType->amountMultiplier_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinServiceChargeType(struct dinServiceChargeType* dinServiceChargeType) {
|
||||
(void)dinServiceChargeType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinDC_EVSEStatusType(struct dinDC_EVSEStatusType* dinDC_EVSEStatusType) {
|
||||
dinDC_EVSEStatusType->EVSEIsolationStatus_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinRetrievalMethodType(struct dinRetrievalMethodType* dinRetrievalMethodType) {
|
||||
dinRetrievalMethodType->URI_isUsed = 0u;
|
||||
dinRetrievalMethodType->Type_isUsed = 0u;
|
||||
dinRetrievalMethodType->Transforms_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinNotificationType(struct dinNotificationType* dinNotificationType) {
|
||||
dinNotificationType->FaultMsg_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinPGPDataType(struct dinPGPDataType* dinPGPDataType) {
|
||||
dinPGPDataType->PGPKeyID_isUsed = 0u;
|
||||
dinPGPDataType->PGPKeyPacket_isUsed = 0u;
|
||||
dinPGPDataType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinCertificateInstallationResType(struct dinCertificateInstallationResType* dinCertificateInstallationResType) {
|
||||
(void)dinCertificateInstallationResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_dinSignaturePropertyType(struct dinSignaturePropertyType* dinSignaturePropertyType) {
|
||||
dinSignaturePropertyType->Id_isUsed = 0u;
|
||||
dinSignaturePropertyType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinMeterInfoType(struct dinMeterInfoType* dinMeterInfoType) {
|
||||
dinMeterInfoType->MeterReading_isUsed = 0u;
|
||||
dinMeterInfoType->SigMeterReading_isUsed = 0u;
|
||||
dinMeterInfoType->MeterStatus_isUsed = 0u;
|
||||
dinMeterInfoType->TMeter_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_dinSubCertificatesType(struct dinSubCertificatesType* dinSubCertificatesType) {
|
||||
dinSubCertificatesType->Certificate.arrayLen = 0u;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif /* DEPLOY_DIN_CODEC */
|
||||
|
||||
#endif
|
||||
|
2934
src/din/dinEXIDatatypes.h
Normal file
2934
src/din/dinEXIDatatypes.h
Normal file
File diff suppressed because it is too large
Load diff
17065
src/din/dinEXIDatatypesDecoder.c
Normal file
17065
src/din/dinEXIDatatypesDecoder.c
Normal file
File diff suppressed because one or more lines are too long
65
src/din/dinEXIDatatypesDecoder.h
Normal file
65
src/din/dinEXIDatatypesDecoder.h
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EXIDatatypesDecoder.h
|
||||
* \brief Decoder for datatype definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXI_din_DATATYPES_DECODER_H
|
||||
#define EXI_din_DATATYPES_DECODER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "dinEXIDatatypes.h"
|
||||
|
||||
#if DEPLOY_DIN_CODEC == SUPPORT_YES
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
int decode_dinExiDocument(bitstream_t* stream, struct dinEXIDocument* exiDoc);
|
||||
|
||||
#if DEPLOY_DIN_CODEC_FRAGMENT == SUPPORT_YES
|
||||
int decode_dinExiFragment(bitstream_t* stream, struct dinEXIFragment* exiFrag);
|
||||
#endif /* DEPLOY_DIN_CODEC_FRAGMENT */
|
||||
|
||||
#endif /* DEPLOY_DIN_CODEC */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
12826
src/din/dinEXIDatatypesEncoder.c
Normal file
12826
src/din/dinEXIDatatypesEncoder.c
Normal file
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
|
@ -18,44 +18,51 @@
|
|||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef EXI_ENCODER_H
|
||||
#define EXI_ENCODER_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
int exiInitEncoder(bitstream_t* stream, exi_state_t* state);
|
||||
|
||||
int exiEncodeStartDocument(bitstream_t* stream, exi_state_t* state);
|
||||
|
||||
int exiEncodeEndDocument(bitstream_t* stream, exi_state_t* state);
|
||||
|
||||
int exiEncodeStartElement(bitstream_t* stream, exi_state_t* state,
|
||||
eqname_t* se);
|
||||
|
||||
int exiEncodeEndElement(bitstream_t* stream, exi_state_t* state, eqname_t* ee);
|
||||
|
||||
int exiEncodeCharacters(bitstream_t* stream, exi_state_t* state,
|
||||
exi_value_t* val);
|
||||
|
||||
int exiEncodeAttribute(bitstream_t* stream, exi_state_t* state, eqname_t* at,
|
||||
exi_value_t* val);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EXIDatatypesEncoder.h
|
||||
* \brief Encoder for datatype definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXI_din_DATATYPES_ENCODER_H
|
||||
#define EXI_din_DATATYPES_ENCODER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#include "dinEXIDatatypes.h"
|
||||
|
||||
#if DEPLOY_DIN_CODEC == SUPPORT_YES
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
|
||||
int encode_dinExiDocument(bitstream_t* stream, struct dinEXIDocument* exiDoc);
|
||||
|
||||
#if DEPLOY_DIN_CODEC_FRAGMENT == SUPPORT_YES
|
||||
int encode_dinExiFragment(bitstream_t* stream, struct dinEXIFragment* exiFrag);
|
||||
#endif /* DEPLOY_DIN_CODEC_FRAGMENT */
|
||||
|
||||
|
||||
#endif /* DEPLOY_DIN_CODEC */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
992
src/iso1/iso1EXIDatatypes.c
Normal file
992
src/iso1/iso1EXIDatatypes.c
Normal file
|
@ -0,0 +1,992 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "iso1EXIDatatypes.h"
|
||||
#include "EXITypes.h"
|
||||
|
||||
|
||||
#ifndef EXI_iso1_DATATYPES_C
|
||||
#define EXI_iso1_DATATYPES_C
|
||||
|
||||
#if DEPLOY_ISO1_CODEC == SUPPORT_YES
|
||||
|
||||
|
||||
void init_iso1EXIDocument(struct iso1EXIDocument* exiDoc) {
|
||||
exiDoc->V2G_Message_isUsed = 0u;
|
||||
exiDoc->ServiceDiscoveryReq_isUsed = 0u;
|
||||
exiDoc->ServiceDiscoveryRes_isUsed = 0u;
|
||||
exiDoc->MeteringReceiptReq_isUsed = 0u;
|
||||
exiDoc->PaymentDetailsReq_isUsed = 0u;
|
||||
exiDoc->MeteringReceiptRes_isUsed = 0u;
|
||||
exiDoc->PaymentDetailsRes_isUsed = 0u;
|
||||
exiDoc->SessionSetupReq_isUsed = 0u;
|
||||
exiDoc->SessionSetupRes_isUsed = 0u;
|
||||
exiDoc->CableCheckReq_isUsed = 0u;
|
||||
exiDoc->CableCheckRes_isUsed = 0u;
|
||||
exiDoc->CertificateInstallationReq_isUsed = 0u;
|
||||
exiDoc->CertificateInstallationRes_isUsed = 0u;
|
||||
exiDoc->WeldingDetectionReq_isUsed = 0u;
|
||||
exiDoc->WeldingDetectionRes_isUsed = 0u;
|
||||
exiDoc->CertificateUpdateReq_isUsed = 0u;
|
||||
exiDoc->CertificateUpdateRes_isUsed = 0u;
|
||||
exiDoc->PaymentServiceSelectionReq_isUsed = 0u;
|
||||
exiDoc->PowerDeliveryReq_isUsed = 0u;
|
||||
exiDoc->PaymentServiceSelectionRes_isUsed = 0u;
|
||||
exiDoc->PowerDeliveryRes_isUsed = 0u;
|
||||
exiDoc->ChargingStatusReq_isUsed = 0u;
|
||||
exiDoc->ChargingStatusRes_isUsed = 0u;
|
||||
exiDoc->BodyElement_isUsed = 0u;
|
||||
exiDoc->CurrentDemandReq_isUsed = 0u;
|
||||
exiDoc->PreChargeReq_isUsed = 0u;
|
||||
exiDoc->CurrentDemandRes_isUsed = 0u;
|
||||
exiDoc->PreChargeRes_isUsed = 0u;
|
||||
exiDoc->SessionStopReq_isUsed = 0u;
|
||||
exiDoc->AuthorizationReq_isUsed = 0u;
|
||||
exiDoc->SessionStopRes_isUsed = 0u;
|
||||
exiDoc->AuthorizationRes_isUsed = 0u;
|
||||
exiDoc->ChargeParameterDiscoveryReq_isUsed = 0u;
|
||||
exiDoc->ChargeParameterDiscoveryRes_isUsed = 0u;
|
||||
exiDoc->ServiceDetailReq_isUsed = 0u;
|
||||
exiDoc->ServiceDetailRes_isUsed = 0u;
|
||||
exiDoc->DC_EVSEStatus_isUsed = 0u;
|
||||
exiDoc->RelativeTimeInterval_isUsed = 0u;
|
||||
exiDoc->SalesTariffEntry_isUsed = 0u;
|
||||
exiDoc->DC_EVPowerDeliveryParameter_isUsed = 0u;
|
||||
exiDoc->SASchedules_isUsed = 0u;
|
||||
exiDoc->AC_EVChargeParameter_isUsed = 0u;
|
||||
exiDoc->SAScheduleList_isUsed = 0u;
|
||||
exiDoc->DC_EVStatus_isUsed = 0u;
|
||||
exiDoc->EVStatus_isUsed = 0u;
|
||||
exiDoc->DC_EVChargeParameter_isUsed = 0u;
|
||||
exiDoc->DC_EVSEChargeParameter_isUsed = 0u;
|
||||
exiDoc->EVSEStatus_isUsed = 0u;
|
||||
exiDoc->TimeInterval_isUsed = 0u;
|
||||
exiDoc->EVPowerDeliveryParameter_isUsed = 0u;
|
||||
exiDoc->EVSEChargeParameter_isUsed = 0u;
|
||||
exiDoc->AC_EVSEStatus_isUsed = 0u;
|
||||
exiDoc->Entry_isUsed = 0u;
|
||||
exiDoc->AC_EVSEChargeParameter_isUsed = 0u;
|
||||
exiDoc->PMaxScheduleEntry_isUsed = 0u;
|
||||
exiDoc->EVChargeParameter_isUsed = 0u;
|
||||
exiDoc->SignatureProperty_isUsed = 0u;
|
||||
exiDoc->DSAKeyValue_isUsed = 0u;
|
||||
exiDoc->SignatureProperties_isUsed = 0u;
|
||||
exiDoc->KeyValue_isUsed = 0u;
|
||||
exiDoc->Transforms_isUsed = 0u;
|
||||
exiDoc->DigestMethod_isUsed = 0u;
|
||||
exiDoc->Signature_isUsed = 0u;
|
||||
exiDoc->RetrievalMethod_isUsed = 0u;
|
||||
exiDoc->Manifest_isUsed = 0u;
|
||||
exiDoc->Reference_isUsed = 0u;
|
||||
exiDoc->CanonicalizationMethod_isUsed = 0u;
|
||||
exiDoc->RSAKeyValue_isUsed = 0u;
|
||||
exiDoc->Transform_isUsed = 0u;
|
||||
exiDoc->PGPData_isUsed = 0u;
|
||||
exiDoc->MgmtData_isUsed = 0u;
|
||||
exiDoc->SignatureMethod_isUsed = 0u;
|
||||
exiDoc->KeyInfo_isUsed = 0u;
|
||||
exiDoc->SPKIData_isUsed = 0u;
|
||||
exiDoc->X509Data_isUsed = 0u;
|
||||
exiDoc->SignatureValue_isUsed = 0u;
|
||||
exiDoc->KeyName_isUsed = 0u;
|
||||
exiDoc->DigestValue_isUsed = 0u;
|
||||
exiDoc->SignedInfo_isUsed = 0u;
|
||||
exiDoc->Object_isUsed = 0u;
|
||||
}
|
||||
|
||||
|
||||
#if DEPLOY_ISO1_CODEC_FRAGMENT == SUPPORT_YES
|
||||
void init_iso1EXIFragment(struct iso1EXIFragment* exiFrag) {
|
||||
exiFrag->ChargingComplete_isUsed = 0u;
|
||||
exiFrag->EVMaxVoltage_isUsed = 0u;
|
||||
exiFrag->ServiceID_isUsed = 0u;
|
||||
exiFrag->ServiceID_isUsed = 0u;
|
||||
exiFrag->EVRESSSOC_isUsed = 0u;
|
||||
exiFrag->MeterReading_isUsed = 0u;
|
||||
exiFrag->physicalValue_isUsed = 0u;
|
||||
exiFrag->TimeInterval_isUsed = 0u;
|
||||
exiFrag->AC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->AC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->EVMaxCurrent_isUsed = 0u;
|
||||
exiFrag->ChargingProfileEntryStart_isUsed = 0u;
|
||||
exiFrag->EVSEMaxCurrent_isUsed = 0u;
|
||||
exiFrag->costKind_isUsed = 0u;
|
||||
exiFrag->EAmount_isUsed = 0u;
|
||||
exiFrag->EnergyTransferMode_isUsed = 0u;
|
||||
exiFrag->X509SerialNumber_isUsed = 0u;
|
||||
exiFrag->NumEPriceLevels_isUsed = 0u;
|
||||
exiFrag->RetrievalMethod_isUsed = 0u;
|
||||
exiFrag->PMax_isUsed = 0u;
|
||||
exiFrag->ParameterSetID_isUsed = 0u;
|
||||
exiFrag->ParameterSetID_isUsed = 0u;
|
||||
exiFrag->BulkSOC_isUsed = 0u;
|
||||
exiFrag->EVSEMinimumCurrentLimit_isUsed = 0u;
|
||||
exiFrag->EVSEPowerLimitAchieved_isUsed = 0u;
|
||||
exiFrag->SalesTariffEntry_isUsed = 0u;
|
||||
exiFrag->Transforms_isUsed = 0u;
|
||||
exiFrag->EVSEProcessing_isUsed = 0u;
|
||||
exiFrag->EVSEProcessing_isUsed = 0u;
|
||||
exiFrag->EVSEProcessing_isUsed = 0u;
|
||||
exiFrag->EVSEIsolationStatus_isUsed = 0u;
|
||||
exiFrag->BulkChargingComplete_isUsed = 0u;
|
||||
exiFrag->SAScheduleTupleID_isUsed = 0u;
|
||||
exiFrag->SAScheduleTupleID_isUsed = 0u;
|
||||
exiFrag->SAScheduleTupleID_isUsed = 0u;
|
||||
exiFrag->SAScheduleTupleID_isUsed = 0u;
|
||||
exiFrag->FaultCode_isUsed = 0u;
|
||||
exiFrag->RootCertificateID_isUsed = 0u;
|
||||
exiFrag->HMACOutputLength_isUsed = 0u;
|
||||
exiFrag->Exponent_isUsed = 0u;
|
||||
exiFrag->X509IssuerSerial_isUsed = 0u;
|
||||
exiFrag->byteValue_isUsed = 0u;
|
||||
exiFrag->SPKIData_isUsed = 0u;
|
||||
exiFrag->SAScheduleList_isUsed = 0u;
|
||||
exiFrag->EVMaximumPowerLimit_isUsed = 0u;
|
||||
exiFrag->DC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->RetryCounter_isUsed = 0u;
|
||||
exiFrag->EVSEMaximumCurrentLimit_isUsed = 0u;
|
||||
exiFrag->SalesTariff_isUsed = 0u;
|
||||
exiFrag->PgenCounter_isUsed = 0u;
|
||||
exiFrag->X509Data_isUsed = 0u;
|
||||
exiFrag->EVSECurrentRegulationTolerance_isUsed = 0u;
|
||||
exiFrag->KeyValue_isUsed = 0u;
|
||||
exiFrag->V2G_Message_isUsed = 0u;
|
||||
exiFrag->EVSEMinimumVoltageLimit_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ProfileEntry_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->ResponseCode_isUsed = 0u;
|
||||
exiFrag->start_isUsed = 0u;
|
||||
exiFrag->EVErrorCode_isUsed = 0u;
|
||||
exiFrag->EVChargeParameter_isUsed = 0u;
|
||||
exiFrag->ContractSignatureCertChain_isUsed = 0u;
|
||||
exiFrag->ContractSignatureCertChain_isUsed = 0u;
|
||||
exiFrag->ContractSignatureCertChain_isUsed = 0u;
|
||||
exiFrag->ContractSignatureCertChain_isUsed = 0u;
|
||||
exiFrag->EVSEPresentCurrent_isUsed = 0u;
|
||||
exiFrag->PGPData_isUsed = 0u;
|
||||
exiFrag->EVMinCurrent_isUsed = 0u;
|
||||
exiFrag->FullSOC_isUsed = 0u;
|
||||
exiFrag->amount_isUsed = 0u;
|
||||
exiFrag->DC_EVSEChargeParameter_isUsed = 0u;
|
||||
exiFrag->Entry_isUsed = 0u;
|
||||
exiFrag->SessionStopRes_isUsed = 0u;
|
||||
exiFrag->DC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->shortValue_isUsed = 0u;
|
||||
exiFrag->SAProvisioningCertificateChain_isUsed = 0u;
|
||||
exiFrag->SAProvisioningCertificateChain_isUsed = 0u;
|
||||
exiFrag->PowerDeliveryReq_isUsed = 0u;
|
||||
exiFrag->PowerDeliveryRes_isUsed = 0u;
|
||||
exiFrag->SessionStopReq_isUsed = 0u;
|
||||
exiFrag->SignatureProperty_isUsed = 0u;
|
||||
exiFrag->SessionID_isUsed = 0u;
|
||||
exiFrag->PGPKeyPacket_isUsed = 0u;
|
||||
exiFrag->PGPKeyPacket_isUsed = 0u;
|
||||
exiFrag->Header_isUsed = 0u;
|
||||
exiFrag->Seed_isUsed = 0u;
|
||||
exiFrag->RSAKeyValue_isUsed = 0u;
|
||||
exiFrag->FreeService_isUsed = 0u;
|
||||
exiFrag->EVSENominalVoltage_isUsed = 0u;
|
||||
exiFrag->XPath_isUsed = 0u;
|
||||
exiFrag->MeteringReceiptRes_isUsed = 0u;
|
||||
exiFrag->ServiceDiscoveryReq_isUsed = 0u;
|
||||
exiFrag->MeteringReceiptReq_isUsed = 0u;
|
||||
exiFrag->PreChargeRes_isUsed = 0u;
|
||||
exiFrag->OEMProvisioningCert_isUsed = 0u;
|
||||
exiFrag->EVEnergyCapacity_isUsed = 0u;
|
||||
exiFrag->Signature_isUsed = 0u;
|
||||
exiFrag->AC_EVSEChargeParameter_isUsed = 0u;
|
||||
exiFrag->ServiceDiscoveryRes_isUsed = 0u;
|
||||
exiFrag->ServiceID_isUsed = 0u;
|
||||
exiFrag->PreChargeReq_isUsed = 0u;
|
||||
exiFrag->ServiceID_isUsed = 0u;
|
||||
exiFrag->NotificationMaxDelay_isUsed = 0u;
|
||||
exiFrag->CableCheckReq_isUsed = 0u;
|
||||
exiFrag->SalesTariffDescription_isUsed = 0u;
|
||||
exiFrag->EVSEVoltageLimitAchieved_isUsed = 0u;
|
||||
exiFrag->boolValue_isUsed = 0u;
|
||||
exiFrag->EVCCID_isUsed = 0u;
|
||||
exiFrag->DC_EVChargeParameter_isUsed = 0u;
|
||||
exiFrag->ChargingStatusReq_isUsed = 0u;
|
||||
exiFrag->CableCheckRes_isUsed = 0u;
|
||||
exiFrag->MgmtData_isUsed = 0u;
|
||||
exiFrag->MeterInfo_isUsed = 0u;
|
||||
exiFrag->MeterInfo_isUsed = 0u;
|
||||
exiFrag->MeterInfo_isUsed = 0u;
|
||||
exiFrag->EVSEEnergyToBeDelivered_isUsed = 0u;
|
||||
exiFrag->EVSEMaxCurrent_isUsed = 0u;
|
||||
exiFrag->EVSEStatus_isUsed = 0u;
|
||||
exiFrag->Service_isUsed = 0u;
|
||||
exiFrag->Manifest_isUsed = 0u;
|
||||
exiFrag->EVMaximumVoltageLimit_isUsed = 0u;
|
||||
exiFrag->P_isUsed = 0u;
|
||||
exiFrag->Q_isUsed = 0u;
|
||||
exiFrag->X509SubjectName_isUsed = 0u;
|
||||
exiFrag->intValue_isUsed = 0u;
|
||||
exiFrag->ChargingProfile_isUsed = 0u;
|
||||
exiFrag->G_isUsed = 0u;
|
||||
exiFrag->J_isUsed = 0u;
|
||||
exiFrag->ServiceScope_isUsed = 0u;
|
||||
exiFrag->ReceiptRequired_isUsed = 0u;
|
||||
exiFrag->ReceiptRequired_isUsed = 0u;
|
||||
exiFrag->ServiceName_isUsed = 0u;
|
||||
exiFrag->MeterStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->ChargingStatusRes_isUsed = 0u;
|
||||
exiFrag->ServiceCategory_isUsed = 0u;
|
||||
exiFrag->Notification_isUsed = 0u;
|
||||
exiFrag->X509CRL_isUsed = 0u;
|
||||
exiFrag->Y_isUsed = 0u;
|
||||
exiFrag->EVSEPresentVoltage_isUsed = 0u;
|
||||
exiFrag->EVSEPresentVoltage_isUsed = 0u;
|
||||
exiFrag->EVSEPresentVoltage_isUsed = 0u;
|
||||
exiFrag->DigestValue_isUsed = 0u;
|
||||
exiFrag->EVSEMaximumPowerLimit_isUsed = 0u;
|
||||
exiFrag->EVSETimeStamp_isUsed = 0u;
|
||||
exiFrag->EVSETimeStamp_isUsed = 0u;
|
||||
exiFrag->Cost_isUsed = 0u;
|
||||
exiFrag->EVSEPeakCurrentRipple_isUsed = 0u;
|
||||
exiFrag->ConsumptionCost_isUsed = 0u;
|
||||
exiFrag->DigestMethod_isUsed = 0u;
|
||||
exiFrag->SPKISexp_isUsed = 0u;
|
||||
exiFrag->SessionSetupRes_isUsed = 0u;
|
||||
exiFrag->EVSECurrentLimitAchieved_isUsed = 0u;
|
||||
exiFrag->ServiceDetailReq_isUsed = 0u;
|
||||
exiFrag->EVSEMaximumVoltageLimit_isUsed = 0u;
|
||||
exiFrag->ServiceDetailRes_isUsed = 0u;
|
||||
exiFrag->SignatureProperties_isUsed = 0u;
|
||||
exiFrag->EPriceLevel_isUsed = 0u;
|
||||
exiFrag->EVTargetCurrent_isUsed = 0u;
|
||||
exiFrag->RemainingTimeToBulkSoC_isUsed = 0u;
|
||||
exiFrag->EVTargetCurrent_isUsed = 0u;
|
||||
exiFrag->stringValue_isUsed = 0u;
|
||||
exiFrag->SessionSetupReq_isUsed = 0u;
|
||||
exiFrag->Multiplier_isUsed = 0u;
|
||||
exiFrag->CertificateUpdateRes_isUsed = 0u;
|
||||
exiFrag->PGPKeyID_isUsed = 0u;
|
||||
exiFrag->EVTargetVoltage_isUsed = 0u;
|
||||
exiFrag->EVTargetVoltage_isUsed = 0u;
|
||||
exiFrag->DSAKeyValue_isUsed = 0u;
|
||||
exiFrag->CertificateUpdateReq_isUsed = 0u;
|
||||
exiFrag->EVMaximumCurrentLimit_isUsed = 0u;
|
||||
exiFrag->CanonicalizationMethod_isUsed = 0u;
|
||||
exiFrag->X509Certificate_isUsed = 0u;
|
||||
exiFrag->CertificateInstallationReq_isUsed = 0u;
|
||||
exiFrag->CertificateInstallationRes_isUsed = 0u;
|
||||
exiFrag->EVStatus_isUsed = 0u;
|
||||
exiFrag->SupportedEnergyTransferMode_isUsed = 0u;
|
||||
exiFrag->SignedInfo_isUsed = 0u;
|
||||
exiFrag->eMAID_isUsed = 0u;
|
||||
exiFrag->eMAID_isUsed = 0u;
|
||||
exiFrag->eMAID_isUsed = 0u;
|
||||
exiFrag->eMAID_isUsed = 0u;
|
||||
exiFrag->MaxEntriesSAScheduleTuple_isUsed = 0u;
|
||||
exiFrag->PaymentOption_isUsed = 0u;
|
||||
exiFrag->SubCertificates_isUsed = 0u;
|
||||
exiFrag->PaymentDetailsReq_isUsed = 0u;
|
||||
exiFrag->AuthorizationReq_isUsed = 0u;
|
||||
exiFrag->PaymentDetailsRes_isUsed = 0u;
|
||||
exiFrag->AuthorizationRes_isUsed = 0u;
|
||||
exiFrag->EVSEStatusCode_isUsed = 0u;
|
||||
exiFrag->PaymentOptionList_isUsed = 0u;
|
||||
exiFrag->SelectedServiceList_isUsed = 0u;
|
||||
exiFrag->ContractSignatureEncryptedPrivateKey_isUsed = 0u;
|
||||
exiFrag->ContractSignatureEncryptedPrivateKey_isUsed = 0u;
|
||||
exiFrag->SAScheduleTupleID_isUsed = 0u;
|
||||
exiFrag->WeldingDetectionReq_isUsed = 0u;
|
||||
exiFrag->FaultMsg_isUsed = 0u;
|
||||
exiFrag->WeldingDetectionRes_isUsed = 0u;
|
||||
exiFrag->ChargeProgress_isUsed = 0u;
|
||||
exiFrag->SelectedPaymentOption_isUsed = 0u;
|
||||
exiFrag->BulkChargingComplete_isUsed = 0u;
|
||||
exiFrag->EVSEID_isUsed = 0u;
|
||||
exiFrag->EVSEID_isUsed = 0u;
|
||||
exiFrag->ParameterSet_isUsed = 0u;
|
||||
exiFrag->EVSEID_isUsed = 0u;
|
||||
exiFrag->EVSEChargeParameter_isUsed = 0u;
|
||||
exiFrag->SigMeterReading_isUsed = 0u;
|
||||
exiFrag->SignatureValue_isUsed = 0u;
|
||||
exiFrag->SASchedules_isUsed = 0u;
|
||||
exiFrag->SalesTariffID_isUsed = 0u;
|
||||
exiFrag->DHpublickey_isUsed = 0u;
|
||||
exiFrag->DHpublickey_isUsed = 0u;
|
||||
exiFrag->ServiceParameterList_isUsed = 0u;
|
||||
exiFrag->ListOfRootCertificateIDs_isUsed = 0u;
|
||||
exiFrag->ListOfRootCertificateIDs_isUsed = 0u;
|
||||
exiFrag->MeterID_isUsed = 0u;
|
||||
exiFrag->EVSEMaximumCurrentLimit_isUsed = 0u;
|
||||
exiFrag->ChargeService_isUsed = 0u;
|
||||
exiFrag->amountMultiplier_isUsed = 0u;
|
||||
exiFrag->RCD_isUsed = 0u;
|
||||
exiFrag->EVMaximumPowerLimit_isUsed = 0u;
|
||||
exiFrag->startValue_isUsed = 0u;
|
||||
exiFrag->CurrentDemandReq_isUsed = 0u;
|
||||
exiFrag->KeyName_isUsed = 0u;
|
||||
exiFrag->DC_EVPowerDeliveryParameter_isUsed = 0u;
|
||||
exiFrag->Body_isUsed = 0u;
|
||||
exiFrag->ChargingComplete_isUsed = 0u;
|
||||
exiFrag->EVSENotification_isUsed = 0u;
|
||||
exiFrag->Value_isUsed = 0u;
|
||||
exiFrag->KeyInfo_isUsed = 0u;
|
||||
exiFrag->GenChallenge_isUsed = 0u;
|
||||
exiFrag->GenChallenge_isUsed = 0u;
|
||||
exiFrag->AC_EVChargeParameter_isUsed = 0u;
|
||||
exiFrag->PMaxScheduleEntry_isUsed = 0u;
|
||||
exiFrag->Parameter_isUsed = 0u;
|
||||
exiFrag->X509SKI_isUsed = 0u;
|
||||
exiFrag->EVSEMaximumVoltageLimit_isUsed = 0u;
|
||||
exiFrag->SelectedService_isUsed = 0u;
|
||||
exiFrag->PaymentServiceSelectionReq_isUsed = 0u;
|
||||
exiFrag->PaymentServiceSelectionRes_isUsed = 0u;
|
||||
exiFrag->Certificate_isUsed = 0u;
|
||||
exiFrag->Certificate_isUsed = 0u;
|
||||
exiFrag->CurrentDemandRes_isUsed = 0u;
|
||||
exiFrag->EVReady_isUsed = 0u;
|
||||
exiFrag->EVSEMaximumPowerLimit_isUsed = 0u;
|
||||
exiFrag->SignatureMethod_isUsed = 0u;
|
||||
exiFrag->PMaxSchedule_isUsed = 0u;
|
||||
exiFrag->ServiceCategory_isUsed = 0u;
|
||||
exiFrag->Unit_isUsed = 0u;
|
||||
exiFrag->X509IssuerName_isUsed = 0u;
|
||||
exiFrag->Reference_isUsed = 0u;
|
||||
exiFrag->ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed = 0u;
|
||||
exiFrag->EVPowerDeliveryParameter_isUsed = 0u;
|
||||
exiFrag->ChargingProfileEntryMaxPower_isUsed = 0u;
|
||||
exiFrag->ChargeParameterDiscoveryReq_isUsed = 0u;
|
||||
exiFrag->duration_isUsed = 0u;
|
||||
exiFrag->TMeter_isUsed = 0u;
|
||||
exiFrag->ChargeParameterDiscoveryRes_isUsed = 0u;
|
||||
exiFrag->EVMaximumCurrentLimit_isUsed = 0u;
|
||||
exiFrag->ServiceList_isUsed = 0u;
|
||||
exiFrag->AC_EVSEStatus_isUsed = 0u;
|
||||
exiFrag->EVMaximumVoltageLimit_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->SAScheduleTuple_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->DC_EVStatus_isUsed = 0u;
|
||||
exiFrag->BodyElement_isUsed = 0u;
|
||||
exiFrag->RemainingTimeToFullSoC_isUsed = 0u;
|
||||
exiFrag->RelativeTimeInterval_isUsed = 0u;
|
||||
exiFrag->Transform_isUsed = 0u;
|
||||
exiFrag->DepartureTime_isUsed = 0u;
|
||||
exiFrag->Object_isUsed = 0u;
|
||||
exiFrag->EVEnergyRequest_isUsed = 0u;
|
||||
exiFrag->ServiceScope_isUsed = 0u;
|
||||
exiFrag->Modulus_isUsed = 0u;
|
||||
exiFrag->ChargingSession_isUsed = 0u;
|
||||
exiFrag->RequestedEnergyTransferMode_isUsed = 0u;
|
||||
exiFrag->SessionID_isUsed = 0u;
|
||||
}
|
||||
void init_iso1EXISchemaInformedElementFragmentGrammar(struct iso1EXISchemaInformedElementFragmentGrammar* exiFrag) {
|
||||
exiFrag->Id_isUsed = 0u;
|
||||
exiFrag->CHARACTERS_GENERIC_isUsed = 0u;
|
||||
}
|
||||
#endif /* DEPLOY_ISO1_CODEC_FRAGMENT */
|
||||
|
||||
void init_iso1MessageHeaderType(struct iso1MessageHeaderType* iso1MessageHeaderType) {
|
||||
iso1MessageHeaderType->Notification_isUsed = 0u;
|
||||
iso1MessageHeaderType->Signature_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1SignatureType(struct iso1SignatureType* iso1SignatureType) {
|
||||
iso1SignatureType->Id_isUsed = 0u;
|
||||
iso1SignatureType->KeyInfo_isUsed = 0u;
|
||||
iso1SignatureType->Object.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1PowerDeliveryReqType(struct iso1PowerDeliveryReqType* iso1PowerDeliveryReqType) {
|
||||
iso1PowerDeliveryReqType->ChargingProfile_isUsed = 0u;
|
||||
iso1PowerDeliveryReqType->EVPowerDeliveryParameter_isUsed = 0u;
|
||||
iso1PowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ParameterType(struct iso1ParameterType* iso1ParameterType) {
|
||||
iso1ParameterType->boolValue_isUsed = 0u;
|
||||
iso1ParameterType->byteValue_isUsed = 0u;
|
||||
iso1ParameterType->shortValue_isUsed = 0u;
|
||||
iso1ParameterType->intValue_isUsed = 0u;
|
||||
iso1ParameterType->physicalValue_isUsed = 0u;
|
||||
iso1ParameterType->stringValue_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1CertificateInstallationReqType(struct iso1CertificateInstallationReqType* iso1CertificateInstallationReqType) {
|
||||
(void)iso1CertificateInstallationReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1SessionSetupResType(struct iso1SessionSetupResType* iso1SessionSetupResType) {
|
||||
iso1SessionSetupResType->EVSETimeStamp_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1EVChargeParameterType(struct iso1EVChargeParameterType* iso1EVChargeParameterType) {
|
||||
iso1EVChargeParameterType->DepartureTime_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1DiffieHellmanPublickeyType(struct iso1DiffieHellmanPublickeyType* iso1DiffieHellmanPublickeyType) {
|
||||
(void)iso1DiffieHellmanPublickeyType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1ServiceDiscoveryResType(struct iso1ServiceDiscoveryResType* iso1ServiceDiscoveryResType) {
|
||||
iso1ServiceDiscoveryResType->ServiceList_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ServiceParameterListType(struct iso1ServiceParameterListType* iso1ServiceParameterListType) {
|
||||
iso1ServiceParameterListType->ParameterSet.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1CertificateChainType(struct iso1CertificateChainType* iso1CertificateChainType) {
|
||||
iso1CertificateChainType->Id_isUsed = 0u;
|
||||
iso1CertificateChainType->SubCertificates_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1SASchedulesType(struct iso1SASchedulesType* iso1SASchedulesType) {
|
||||
(void)iso1SASchedulesType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1DC_EVSEStatusType(struct iso1DC_EVSEStatusType* iso1DC_EVSEStatusType) {
|
||||
iso1DC_EVSEStatusType->EVSEIsolationStatus_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1PreChargeResType(struct iso1PreChargeResType* iso1PreChargeResType) {
|
||||
(void)iso1PreChargeResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1ParameterSetType(struct iso1ParameterSetType* iso1ParameterSetType) {
|
||||
iso1ParameterSetType->Parameter.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ServiceDetailReqType(struct iso1ServiceDetailReqType* iso1ServiceDetailReqType) {
|
||||
(void)iso1ServiceDetailReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1RelativeTimeIntervalType(struct iso1RelativeTimeIntervalType* iso1RelativeTimeIntervalType) {
|
||||
iso1RelativeTimeIntervalType->duration_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1SignedInfoType(struct iso1SignedInfoType* iso1SignedInfoType) {
|
||||
iso1SignedInfoType->Id_isUsed = 0u;
|
||||
iso1SignedInfoType->Reference.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1EMAIDType(struct iso1EMAIDType* iso1EMAIDType) {
|
||||
(void)iso1EMAIDType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1EVStatusType(struct iso1EVStatusType* iso1EVStatusType) {
|
||||
(void)iso1EVStatusType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1ServiceListType(struct iso1ServiceListType* iso1ServiceListType) {
|
||||
iso1ServiceListType->Service.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1EVSEChargeParameterType(struct iso1EVSEChargeParameterType* iso1EVSEChargeParameterType) {
|
||||
(void)iso1EVSEChargeParameterType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1EVPowerDeliveryParameterType(struct iso1EVPowerDeliveryParameterType* iso1EVPowerDeliveryParameterType) {
|
||||
(void)iso1EVPowerDeliveryParameterType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1ProfileEntryType(struct iso1ProfileEntryType* iso1ProfileEntryType) {
|
||||
iso1ProfileEntryType->ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1AuthorizationReqType(struct iso1AuthorizationReqType* iso1AuthorizationReqType) {
|
||||
iso1AuthorizationReqType->Id_isUsed = 0u;
|
||||
iso1AuthorizationReqType->GenChallenge_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1MeterInfoType(struct iso1MeterInfoType* iso1MeterInfoType) {
|
||||
iso1MeterInfoType->MeterReading_isUsed = 0u;
|
||||
iso1MeterInfoType->SigMeterReading_isUsed = 0u;
|
||||
iso1MeterInfoType->MeterStatus_isUsed = 0u;
|
||||
iso1MeterInfoType->TMeter_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ManifestType(struct iso1ManifestType* iso1ManifestType) {
|
||||
iso1ManifestType->Id_isUsed = 0u;
|
||||
iso1ManifestType->Reference.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ChargeParameterDiscoveryResType(struct iso1ChargeParameterDiscoveryResType* iso1ChargeParameterDiscoveryResType) {
|
||||
iso1ChargeParameterDiscoveryResType->SASchedules_isUsed = 0u;
|
||||
iso1ChargeParameterDiscoveryResType->SAScheduleList_isUsed = 0u;
|
||||
iso1ChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed = 0u;
|
||||
iso1ChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed = 0u;
|
||||
iso1ChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1PowerDeliveryResType(struct iso1PowerDeliveryResType* iso1PowerDeliveryResType) {
|
||||
iso1PowerDeliveryResType->EVSEStatus_isUsed = 0u;
|
||||
iso1PowerDeliveryResType->AC_EVSEStatus_isUsed = 0u;
|
||||
iso1PowerDeliveryResType->DC_EVSEStatus_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1DC_EVChargeParameterType(struct iso1DC_EVChargeParameterType* iso1DC_EVChargeParameterType) {
|
||||
iso1DC_EVChargeParameterType->DepartureTime_isUsed = 0u;
|
||||
iso1DC_EVChargeParameterType->EVMaximumPowerLimit_isUsed = 0u;
|
||||
iso1DC_EVChargeParameterType->EVEnergyCapacity_isUsed = 0u;
|
||||
iso1DC_EVChargeParameterType->EVEnergyRequest_isUsed = 0u;
|
||||
iso1DC_EVChargeParameterType->FullSOC_isUsed = 0u;
|
||||
iso1DC_EVChargeParameterType->BulkSOC_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ConsumptionCostType(struct iso1ConsumptionCostType* iso1ConsumptionCostType) {
|
||||
iso1ConsumptionCostType->Cost.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1PMaxScheduleType(struct iso1PMaxScheduleType* iso1PMaxScheduleType) {
|
||||
iso1PMaxScheduleType->PMaxScheduleEntry.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1PaymentOptionListType(struct iso1PaymentOptionListType* iso1PaymentOptionListType) {
|
||||
iso1PaymentOptionListType->PaymentOption.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ObjectType(struct iso1ObjectType* iso1ObjectType) {
|
||||
iso1ObjectType->Id_isUsed = 0u;
|
||||
iso1ObjectType->MimeType_isUsed = 0u;
|
||||
iso1ObjectType->Encoding_isUsed = 0u;
|
||||
iso1ObjectType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1PhysicalValueType(struct iso1PhysicalValueType* iso1PhysicalValueType) {
|
||||
(void)iso1PhysicalValueType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1RSAKeyValueType(struct iso1RSAKeyValueType* iso1RSAKeyValueType) {
|
||||
(void)iso1RSAKeyValueType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1SessionStopResType(struct iso1SessionStopResType* iso1SessionStopResType) {
|
||||
(void)iso1SessionStopResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1CertificateUpdateReqType(struct iso1CertificateUpdateReqType* iso1CertificateUpdateReqType) {
|
||||
(void)iso1CertificateUpdateReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1SignatureValueType(struct iso1SignatureValueType* iso1SignatureValueType) {
|
||||
iso1SignatureValueType->Id_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1PaymentDetailsReqType(struct iso1PaymentDetailsReqType* iso1PaymentDetailsReqType) {
|
||||
(void)iso1PaymentDetailsReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1AuthorizationResType(struct iso1AuthorizationResType* iso1AuthorizationResType) {
|
||||
(void)iso1AuthorizationResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1DC_EVSEChargeParameterType(struct iso1DC_EVSEChargeParameterType* iso1DC_EVSEChargeParameterType) {
|
||||
iso1DC_EVSEChargeParameterType->EVSECurrentRegulationTolerance_isUsed = 0u;
|
||||
iso1DC_EVSEChargeParameterType->EVSEEnergyToBeDelivered_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1SubCertificatesType(struct iso1SubCertificatesType* iso1SubCertificatesType) {
|
||||
iso1SubCertificatesType->Certificate.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ChargingStatusResType(struct iso1ChargingStatusResType* iso1ChargingStatusResType) {
|
||||
iso1ChargingStatusResType->EVSEMaxCurrent_isUsed = 0u;
|
||||
iso1ChargingStatusResType->MeterInfo_isUsed = 0u;
|
||||
iso1ChargingStatusResType->ReceiptRequired_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1DSAKeyValueType(struct iso1DSAKeyValueType* iso1DSAKeyValueType) {
|
||||
iso1DSAKeyValueType->P_isUsed = 0u;
|
||||
iso1DSAKeyValueType->Q_isUsed = 0u;
|
||||
iso1DSAKeyValueType->G_isUsed = 0u;
|
||||
iso1DSAKeyValueType->J_isUsed = 0u;
|
||||
iso1DSAKeyValueType->Seed_isUsed = 0u;
|
||||
iso1DSAKeyValueType->PgenCounter_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ListOfRootCertificateIDsType(struct iso1ListOfRootCertificateIDsType* iso1ListOfRootCertificateIDsType) {
|
||||
iso1ListOfRootCertificateIDsType->RootCertificateID.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ChargeServiceType(struct iso1ChargeServiceType* iso1ChargeServiceType) {
|
||||
iso1ChargeServiceType->ServiceName_isUsed = 0u;
|
||||
iso1ChargeServiceType->ServiceScope_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1IntervalType(struct iso1IntervalType* iso1IntervalType) {
|
||||
(void)iso1IntervalType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1MeteringReceiptReqType(struct iso1MeteringReceiptReqType* iso1MeteringReceiptReqType) {
|
||||
iso1MeteringReceiptReqType->Id_isUsed = 0u;
|
||||
iso1MeteringReceiptReqType->SAScheduleTupleID_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ServiceDetailResType(struct iso1ServiceDetailResType* iso1ServiceDetailResType) {
|
||||
iso1ServiceDetailResType->ServiceParameterList_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1KeyValueType(struct iso1KeyValueType* iso1KeyValueType) {
|
||||
iso1KeyValueType->DSAKeyValue_isUsed = 0u;
|
||||
iso1KeyValueType->RSAKeyValue_isUsed = 0u;
|
||||
iso1KeyValueType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1SelectedServiceListType(struct iso1SelectedServiceListType* iso1SelectedServiceListType) {
|
||||
iso1SelectedServiceListType->SelectedService.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1CableCheckResType(struct iso1CableCheckResType* iso1CableCheckResType) {
|
||||
(void)iso1CableCheckResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1X509IssuerSerialType(struct iso1X509IssuerSerialType* iso1X509IssuerSerialType) {
|
||||
(void)iso1X509IssuerSerialType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1KeyInfoType(struct iso1KeyInfoType* iso1KeyInfoType) {
|
||||
iso1KeyInfoType->Id_isUsed = 0u;
|
||||
iso1KeyInfoType->KeyName.arrayLen = 0u;
|
||||
iso1KeyInfoType->KeyValue.arrayLen = 0u;
|
||||
iso1KeyInfoType->RetrievalMethod.arrayLen = 0u;
|
||||
iso1KeyInfoType->X509Data.arrayLen = 0u;
|
||||
iso1KeyInfoType->PGPData.arrayLen = 0u;
|
||||
iso1KeyInfoType->SPKIData.arrayLen = 0u;
|
||||
iso1KeyInfoType->MgmtData.arrayLen = 0u;
|
||||
iso1KeyInfoType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1TransformsType(struct iso1TransformsType* iso1TransformsType) {
|
||||
iso1TransformsType->Transform.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ChargeParameterDiscoveryReqType(struct iso1ChargeParameterDiscoveryReqType* iso1ChargeParameterDiscoveryReqType) {
|
||||
iso1ChargeParameterDiscoveryReqType->MaxEntriesSAScheduleTuple_isUsed = 0u;
|
||||
iso1ChargeParameterDiscoveryReqType->EVChargeParameter_isUsed = 0u;
|
||||
iso1ChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed = 0u;
|
||||
iso1ChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1PreChargeReqType(struct iso1PreChargeReqType* iso1PreChargeReqType) {
|
||||
(void)iso1PreChargeReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1EVSEStatusType(struct iso1EVSEStatusType* iso1EVSEStatusType) {
|
||||
(void)iso1EVSEStatusType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1SignatureMethodType(struct iso1SignatureMethodType* iso1SignatureMethodType) {
|
||||
iso1SignatureMethodType->HMACOutputLength_isUsed = 0u;
|
||||
iso1SignatureMethodType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1X509DataType(struct iso1X509DataType* iso1X509DataType) {
|
||||
iso1X509DataType->X509IssuerSerial.arrayLen = 0u;
|
||||
iso1X509DataType->X509SKI.arrayLen = 0u;
|
||||
iso1X509DataType->X509SubjectName.arrayLen = 0u;
|
||||
iso1X509DataType->X509Certificate.arrayLen = 0u;
|
||||
iso1X509DataType->X509CRL.arrayLen = 0u;
|
||||
iso1X509DataType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1NotificationType(struct iso1NotificationType* iso1NotificationType) {
|
||||
iso1NotificationType->FaultMsg_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1SAScheduleListType(struct iso1SAScheduleListType* iso1SAScheduleListType) {
|
||||
iso1SAScheduleListType->SAScheduleTuple.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1BodyType(struct iso1BodyType* iso1BodyType) {
|
||||
iso1BodyType->BodyElement_isUsed = 0u;
|
||||
iso1BodyType->SessionSetupReq_isUsed = 0u;
|
||||
iso1BodyType->SessionSetupRes_isUsed = 0u;
|
||||
iso1BodyType->ServiceDiscoveryReq_isUsed = 0u;
|
||||
iso1BodyType->ServiceDiscoveryRes_isUsed = 0u;
|
||||
iso1BodyType->ServiceDetailReq_isUsed = 0u;
|
||||
iso1BodyType->ServiceDetailRes_isUsed = 0u;
|
||||
iso1BodyType->PaymentServiceSelectionReq_isUsed = 0u;
|
||||
iso1BodyType->PaymentServiceSelectionRes_isUsed = 0u;
|
||||
iso1BodyType->PaymentDetailsReq_isUsed = 0u;
|
||||
iso1BodyType->PaymentDetailsRes_isUsed = 0u;
|
||||
iso1BodyType->AuthorizationReq_isUsed = 0u;
|
||||
iso1BodyType->AuthorizationRes_isUsed = 0u;
|
||||
iso1BodyType->ChargeParameterDiscoveryReq_isUsed = 0u;
|
||||
iso1BodyType->ChargeParameterDiscoveryRes_isUsed = 0u;
|
||||
iso1BodyType->PowerDeliveryReq_isUsed = 0u;
|
||||
iso1BodyType->PowerDeliveryRes_isUsed = 0u;
|
||||
iso1BodyType->MeteringReceiptReq_isUsed = 0u;
|
||||
iso1BodyType->MeteringReceiptRes_isUsed = 0u;
|
||||
iso1BodyType->SessionStopReq_isUsed = 0u;
|
||||
iso1BodyType->SessionStopRes_isUsed = 0u;
|
||||
iso1BodyType->CertificateUpdateReq_isUsed = 0u;
|
||||
iso1BodyType->CertificateUpdateRes_isUsed = 0u;
|
||||
iso1BodyType->CertificateInstallationReq_isUsed = 0u;
|
||||
iso1BodyType->CertificateInstallationRes_isUsed = 0u;
|
||||
iso1BodyType->ChargingStatusReq_isUsed = 0u;
|
||||
iso1BodyType->ChargingStatusRes_isUsed = 0u;
|
||||
iso1BodyType->CableCheckReq_isUsed = 0u;
|
||||
iso1BodyType->CableCheckRes_isUsed = 0u;
|
||||
iso1BodyType->PreChargeReq_isUsed = 0u;
|
||||
iso1BodyType->PreChargeRes_isUsed = 0u;
|
||||
iso1BodyType->CurrentDemandReq_isUsed = 0u;
|
||||
iso1BodyType->CurrentDemandRes_isUsed = 0u;
|
||||
iso1BodyType->WeldingDetectionReq_isUsed = 0u;
|
||||
iso1BodyType->WeldingDetectionRes_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ChargingProfileType(struct iso1ChargingProfileType* iso1ChargingProfileType) {
|
||||
iso1ChargingProfileType->ProfileEntry.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1TransformType(struct iso1TransformType* iso1TransformType) {
|
||||
iso1TransformType->ANY_isUsed = 0u;
|
||||
iso1TransformType->XPath.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1SAScheduleTupleType(struct iso1SAScheduleTupleType* iso1SAScheduleTupleType) {
|
||||
iso1SAScheduleTupleType->SalesTariff_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1AC_EVChargeParameterType(struct iso1AC_EVChargeParameterType* iso1AC_EVChargeParameterType) {
|
||||
iso1AC_EVChargeParameterType->DepartureTime_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1AnonType_V2G_Message(struct iso1AnonType_V2G_Message* iso1AnonType_V2G_Message) {
|
||||
(void)iso1AnonType_V2G_Message; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1PaymentDetailsResType(struct iso1PaymentDetailsResType* iso1PaymentDetailsResType) {
|
||||
(void)iso1PaymentDetailsResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1ContractSignatureEncryptedPrivateKeyType(struct iso1ContractSignatureEncryptedPrivateKeyType* iso1ContractSignatureEncryptedPrivateKeyType) {
|
||||
(void)iso1ContractSignatureEncryptedPrivateKeyType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1PMaxScheduleEntryType(struct iso1PMaxScheduleEntryType* iso1PMaxScheduleEntryType) {
|
||||
iso1PMaxScheduleEntryType->TimeInterval_isUsed = 0u;
|
||||
iso1PMaxScheduleEntryType->RelativeTimeInterval_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1SPKIDataType(struct iso1SPKIDataType* iso1SPKIDataType) {
|
||||
iso1SPKIDataType->SPKISexp.arrayLen = 0u;
|
||||
iso1SPKIDataType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1MeteringReceiptResType(struct iso1MeteringReceiptResType* iso1MeteringReceiptResType) {
|
||||
iso1MeteringReceiptResType->EVSEStatus_isUsed = 0u;
|
||||
iso1MeteringReceiptResType->AC_EVSEStatus_isUsed = 0u;
|
||||
iso1MeteringReceiptResType->DC_EVSEStatus_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1SessionStopReqType(struct iso1SessionStopReqType* iso1SessionStopReqType) {
|
||||
(void)iso1SessionStopReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1WeldingDetectionResType(struct iso1WeldingDetectionResType* iso1WeldingDetectionResType) {
|
||||
(void)iso1WeldingDetectionResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1ReferenceType(struct iso1ReferenceType* iso1ReferenceType) {
|
||||
iso1ReferenceType->Id_isUsed = 0u;
|
||||
iso1ReferenceType->URI_isUsed = 0u;
|
||||
iso1ReferenceType->Type_isUsed = 0u;
|
||||
iso1ReferenceType->Transforms_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1CurrentDemandReqType(struct iso1CurrentDemandReqType* iso1CurrentDemandReqType) {
|
||||
iso1CurrentDemandReqType->EVMaximumVoltageLimit_isUsed = 0u;
|
||||
iso1CurrentDemandReqType->EVMaximumCurrentLimit_isUsed = 0u;
|
||||
iso1CurrentDemandReqType->EVMaximumPowerLimit_isUsed = 0u;
|
||||
iso1CurrentDemandReqType->BulkChargingComplete_isUsed = 0u;
|
||||
iso1CurrentDemandReqType->RemainingTimeToFullSoC_isUsed = 0u;
|
||||
iso1CurrentDemandReqType->RemainingTimeToBulkSoC_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1SalesTariffEntryType(struct iso1SalesTariffEntryType* iso1SalesTariffEntryType) {
|
||||
iso1SalesTariffEntryType->TimeInterval_isUsed = 0u;
|
||||
iso1SalesTariffEntryType->RelativeTimeInterval_isUsed = 0u;
|
||||
iso1SalesTariffEntryType->EPriceLevel_isUsed = 0u;
|
||||
iso1SalesTariffEntryType->ConsumptionCost.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1EntryType(struct iso1EntryType* iso1EntryType) {
|
||||
iso1EntryType->TimeInterval_isUsed = 0u;
|
||||
iso1EntryType->RelativeTimeInterval_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1SessionSetupReqType(struct iso1SessionSetupReqType* iso1SessionSetupReqType) {
|
||||
(void)iso1SessionSetupReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1CostType(struct iso1CostType* iso1CostType) {
|
||||
iso1CostType->amountMultiplier_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1DC_EVPowerDeliveryParameterType(struct iso1DC_EVPowerDeliveryParameterType* iso1DC_EVPowerDeliveryParameterType) {
|
||||
iso1DC_EVPowerDeliveryParameterType->BulkChargingComplete_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1RetrievalMethodType(struct iso1RetrievalMethodType* iso1RetrievalMethodType) {
|
||||
iso1RetrievalMethodType->URI_isUsed = 0u;
|
||||
iso1RetrievalMethodType->Type_isUsed = 0u;
|
||||
iso1RetrievalMethodType->Transforms_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1CertificateUpdateResType(struct iso1CertificateUpdateResType* iso1CertificateUpdateResType) {
|
||||
iso1CertificateUpdateResType->RetryCounter_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1CertificateInstallationResType(struct iso1CertificateInstallationResType* iso1CertificateInstallationResType) {
|
||||
(void)iso1CertificateInstallationResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1CanonicalizationMethodType(struct iso1CanonicalizationMethodType* iso1CanonicalizationMethodType) {
|
||||
iso1CanonicalizationMethodType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1WeldingDetectionReqType(struct iso1WeldingDetectionReqType* iso1WeldingDetectionReqType) {
|
||||
(void)iso1WeldingDetectionReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1DC_EVStatusType(struct iso1DC_EVStatusType* iso1DC_EVStatusType) {
|
||||
(void)iso1DC_EVStatusType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1CurrentDemandResType(struct iso1CurrentDemandResType* iso1CurrentDemandResType) {
|
||||
iso1CurrentDemandResType->EVSEMaximumVoltageLimit_isUsed = 0u;
|
||||
iso1CurrentDemandResType->EVSEMaximumCurrentLimit_isUsed = 0u;
|
||||
iso1CurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 0u;
|
||||
iso1CurrentDemandResType->MeterInfo_isUsed = 0u;
|
||||
iso1CurrentDemandResType->ReceiptRequired_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ServiceType(struct iso1ServiceType* iso1ServiceType) {
|
||||
iso1ServiceType->ServiceName_isUsed = 0u;
|
||||
iso1ServiceType->ServiceScope_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ServiceDiscoveryReqType(struct iso1ServiceDiscoveryReqType* iso1ServiceDiscoveryReqType) {
|
||||
iso1ServiceDiscoveryReqType->ServiceScope_isUsed = 0u;
|
||||
iso1ServiceDiscoveryReqType->ServiceCategory_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1AC_EVSEChargeParameterType(struct iso1AC_EVSEChargeParameterType* iso1AC_EVSEChargeParameterType) {
|
||||
(void)iso1AC_EVSEChargeParameterType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1CableCheckReqType(struct iso1CableCheckReqType* iso1CableCheckReqType) {
|
||||
(void)iso1CableCheckReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1SelectedServiceType(struct iso1SelectedServiceType* iso1SelectedServiceType) {
|
||||
iso1SelectedServiceType->ParameterSetID_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1AC_EVSEStatusType(struct iso1AC_EVSEStatusType* iso1AC_EVSEStatusType) {
|
||||
(void)iso1AC_EVSEStatusType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1SalesTariffType(struct iso1SalesTariffType* iso1SalesTariffType) {
|
||||
iso1SalesTariffType->Id_isUsed = 0u;
|
||||
iso1SalesTariffType->SalesTariffDescription_isUsed = 0u;
|
||||
iso1SalesTariffType->NumEPriceLevels_isUsed = 0u;
|
||||
iso1SalesTariffType->SalesTariffEntry.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1PaymentServiceSelectionReqType(struct iso1PaymentServiceSelectionReqType* iso1PaymentServiceSelectionReqType) {
|
||||
(void)iso1PaymentServiceSelectionReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1SignaturePropertiesType(struct iso1SignaturePropertiesType* iso1SignaturePropertiesType) {
|
||||
iso1SignaturePropertiesType->Id_isUsed = 0u;
|
||||
iso1SignaturePropertiesType->SignatureProperty.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1BodyBaseType(struct iso1BodyBaseType* iso1BodyBaseType) {
|
||||
(void)iso1BodyBaseType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1SupportedEnergyTransferModeType(struct iso1SupportedEnergyTransferModeType* iso1SupportedEnergyTransferModeType) {
|
||||
iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen = 0u;
|
||||
}
|
||||
|
||||
void init_iso1ChargingStatusReqType(struct iso1ChargingStatusReqType* iso1ChargingStatusReqType) {
|
||||
(void)iso1ChargingStatusReqType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1PaymentServiceSelectionResType(struct iso1PaymentServiceSelectionResType* iso1PaymentServiceSelectionResType) {
|
||||
(void)iso1PaymentServiceSelectionResType; /* avoid unused warning */
|
||||
}
|
||||
|
||||
void init_iso1DigestMethodType(struct iso1DigestMethodType* iso1DigestMethodType) {
|
||||
iso1DigestMethodType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1SignaturePropertyType(struct iso1SignaturePropertyType* iso1SignaturePropertyType) {
|
||||
iso1SignaturePropertyType->Id_isUsed = 0u;
|
||||
iso1SignaturePropertyType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
void init_iso1PGPDataType(struct iso1PGPDataType* iso1PGPDataType) {
|
||||
iso1PGPDataType->PGPKeyID_isUsed = 0u;
|
||||
iso1PGPDataType->PGPKeyPacket_isUsed = 0u;
|
||||
iso1PGPDataType->ANY_isUsed = 0u;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif /* DEPLOY_ISO1_CODEC */
|
||||
|
||||
#endif
|
||||
|
2992
src/iso1/iso1EXIDatatypes.h
Normal file
2992
src/iso1/iso1EXIDatatypes.h
Normal file
File diff suppressed because it is too large
Load diff
19379
src/iso1/iso1EXIDatatypesDecoder.c
Normal file
19379
src/iso1/iso1EXIDatatypesDecoder.c
Normal file
File diff suppressed because one or more lines are too long
65
src/iso1/iso1EXIDatatypesDecoder.h
Normal file
65
src/iso1/iso1EXIDatatypesDecoder.h
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EXIDatatypesDecoder.h
|
||||
* \brief Decoder for datatype definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXI_iso1_DATATYPES_DECODER_H
|
||||
#define EXI_iso1_DATATYPES_DECODER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "iso1EXIDatatypes.h"
|
||||
|
||||
#if DEPLOY_ISO1_CODEC == SUPPORT_YES
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
int decode_iso1ExiDocument(bitstream_t* stream, struct iso1EXIDocument* exiDoc);
|
||||
|
||||
#if DEPLOY_ISO1_CODEC_FRAGMENT == SUPPORT_YES
|
||||
int decode_iso1ExiFragment(bitstream_t* stream, struct iso1EXIFragment* exiFrag);
|
||||
#endif /* DEPLOY_ISO1_CODEC_FRAGMENT */
|
||||
|
||||
#endif /* DEPLOY_ISO1_CODEC */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
14589
src/iso1/iso1EXIDatatypesEncoder.c
Normal file
14589
src/iso1/iso1EXIDatatypesEncoder.c
Normal file
File diff suppressed because one or more lines are too long
68
src/iso1/iso1EXIDatatypesEncoder.h
Normal file
68
src/iso1/iso1EXIDatatypesEncoder.h
Normal file
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EXIDatatypesEncoder.h
|
||||
* \brief Encoder for datatype definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXI_iso1_DATATYPES_ENCODER_H
|
||||
#define EXI_iso1_DATATYPES_ENCODER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#include "iso1EXIDatatypes.h"
|
||||
|
||||
#if DEPLOY_ISO1_CODEC == SUPPORT_YES
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
|
||||
int encode_iso1ExiDocument(bitstream_t* stream, struct iso1EXIDocument* exiDoc);
|
||||
|
||||
#if DEPLOY_ISO1_CODEC_FRAGMENT == SUPPORT_YES
|
||||
int encode_iso1ExiFragment(bitstream_t* stream, struct iso1EXIFragment* exiFrag);
|
||||
#endif /* DEPLOY_ISO1_CODEC_FRAGMENT */
|
||||
|
||||
|
||||
#endif /* DEPLOY_ISO1_CODEC */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
1496
src/iso2/iso2EXIDatatypes.c
Normal file
1496
src/iso2/iso2EXIDatatypes.c
Normal file
File diff suppressed because it is too large
Load diff
4189
src/iso2/iso2EXIDatatypes.h
Normal file
4189
src/iso2/iso2EXIDatatypes.h
Normal file
File diff suppressed because it is too large
Load diff
86541
src/iso2/iso2EXIDatatypesDecoder.c
Normal file
86541
src/iso2/iso2EXIDatatypesDecoder.c
Normal file
File diff suppressed because one or more lines are too long
65
src/iso2/iso2EXIDatatypesDecoder.h
Normal file
65
src/iso2/iso2EXIDatatypesDecoder.h
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EXIDatatypesDecoder.h
|
||||
* \brief Decoder for datatype definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXI_iso2_DATATYPES_DECODER_H
|
||||
#define EXI_iso2_DATATYPES_DECODER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "iso2EXIDatatypes.h"
|
||||
|
||||
#if DEPLOY_ISO2_CODEC == SUPPORT_YES
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
int decode_iso2ExiDocument(bitstream_t* stream, struct iso2EXIDocument* exiDoc);
|
||||
|
||||
#if DEPLOY_ISO2_CODEC_FRAGMENT == SUPPORT_YES
|
||||
int decode_iso2ExiFragment(bitstream_t* stream, struct iso2EXIFragment* exiFrag);
|
||||
#endif /* DEPLOY_ISO2_CODEC_FRAGMENT */
|
||||
|
||||
#endif /* DEPLOY_ISO2_CODEC */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
62632
src/iso2/iso2EXIDatatypesEncoder.c
Normal file
62632
src/iso2/iso2EXIDatatypesEncoder.c
Normal file
File diff suppressed because one or more lines are too long
68
src/iso2/iso2EXIDatatypesEncoder.h
Normal file
68
src/iso2/iso2EXIDatatypesEncoder.h
Normal file
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2018 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Daniel.Peintner.EXT@siemens.com
|
||||
* @version 0.9.4
|
||||
* @contact Richard.Kuntschke@siemens.com
|
||||
*
|
||||
* <p>Code generated by EXIdizer</p>
|
||||
* <p>Schema: V2G_CI_MsgDef.xsd</p>
|
||||
*
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \file EXIDatatypesEncoder.h
|
||||
* \brief Encoder for datatype definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXI_iso2_DATATYPES_ENCODER_H
|
||||
#define EXI_iso2_DATATYPES_ENCODER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#include "iso2EXIDatatypes.h"
|
||||
|
||||
#if DEPLOY_ISO2_CODEC == SUPPORT_YES
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
|
||||
int encode_iso2ExiDocument(bitstream_t* stream, struct iso2EXIDocument* exiDoc);
|
||||
|
||||
#if DEPLOY_ISO2_CODEC_FRAGMENT == SUPPORT_YES
|
||||
int encode_iso2ExiFragment(bitstream_t* stream, struct iso2EXIFragment* exiFrag);
|
||||
#endif /* DEPLOY_ISO2_CODEC_FRAGMENT */
|
||||
|
||||
|
||||
#endif /* DEPLOY_ISO2_CODEC */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,69 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef V2G_SERVICE_H_
|
||||
#define V2G_SERVICE_H_
|
||||
|
||||
#include "v2g_serviceDataTypes.h"
|
||||
#include "EXITypes.h"
|
||||
|
||||
struct uniqueIDPath
|
||||
{
|
||||
int id[10];
|
||||
size_t pos;
|
||||
};
|
||||
|
||||
|
||||
struct v2gService
|
||||
{
|
||||
/* in-/ out-stream */
|
||||
bitstream_t inStream;
|
||||
bitstream_t outStream;
|
||||
|
||||
/* EXI */
|
||||
exi_state_t stateDecode;
|
||||
exi_state_t stateEncode;
|
||||
exi_event_t event;
|
||||
eqname_t eqn;
|
||||
exi_value_t val;
|
||||
|
||||
/* v2g message data structure */
|
||||
struct AnonType_V2G_Message v2gMsg;
|
||||
|
||||
/* unique id for ambiguous elements */
|
||||
struct uniqueIDPath idPath;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /* V2G_SERVICE_H_ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
|
@ -1,44 +0,0 @@
|
|||
|
||||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef V2G_SERVICECLIENTDATATRANSMITTER_H_
|
||||
#define V2G_SERVICECLIENTDATATRANSMITTER_H_
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
/* This method has to be implemented!
|
||||
* This method sends EXI stream (outStream) to the EVSE and receives response stream (inStream)*/
|
||||
int serviceDataTransmitter(uint8_t* outStream, size_t outStreamLength, uint8_t* inStream);
|
||||
|
||||
#endif /* V2G_SERVICECLIENTDATATRANSMITTER_H_ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
File diff suppressed because it is too large
Load diff
|
@ -1,105 +0,0 @@
|
|||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef SERVICECLIENTSTUBS_H
|
||||
#define SERVICECLIENTSTUBS_H
|
||||
|
||||
#include "v2g_service.h"
|
||||
#include "v2g_serviceDataTypes.h"
|
||||
#include "v2g_serviceClientStubs.h"
|
||||
|
||||
/* call sessionSetup */
|
||||
int call_sessionSetup(struct v2gService* service, struct HeaderType* header, struct SessionSetupReqType* params, struct SessionSetupResType* result);
|
||||
|
||||
|
||||
|
||||
|
||||
/* call serviceDiscovery */
|
||||
int call_serviceDiscovery(struct v2gService* service, struct HeaderType* header, struct ServiceDiscoveryReqType* params, struct ServiceDiscoveryResType* result);
|
||||
|
||||
|
||||
|
||||
|
||||
/* call selectedServicePayment */
|
||||
int call_selectedServicePayment(struct v2gService* service, struct HeaderType* header, struct ServicePaymentSelectionReqType* params, struct ServicePaymentSelectionResType* result);
|
||||
|
||||
|
||||
|
||||
|
||||
/* call paymentDetails */
|
||||
int call_paymentDetails(struct v2gService* service, struct HeaderType* header, struct PaymentDetailsReqType* params, struct PaymentDetailsResType* result);
|
||||
|
||||
|
||||
|
||||
|
||||
/* call powerDiscovery */
|
||||
int call_powerDiscovery(struct v2gService* service, struct HeaderType* header, struct PowerDiscoveryReqType* params, struct PowerDiscoveryResType* result);
|
||||
|
||||
|
||||
|
||||
|
||||
/* call lineLock */
|
||||
int call_lineLock(struct v2gService* service, struct HeaderType* header, struct LineLockReqType* params, struct LineLockResType* result);
|
||||
|
||||
|
||||
|
||||
|
||||
/* call powerDelivery */
|
||||
int call_powerDelivery(struct v2gService* service, struct HeaderType* header, struct PowerDeliveryReqType* params, struct PowerDeliveryResType* result);
|
||||
|
||||
|
||||
|
||||
|
||||
/* call meteringStatus */
|
||||
int call_meteringStatus(struct v2gService* service, struct HeaderType* header, struct MeteringStatusResType* result);
|
||||
|
||||
|
||||
|
||||
|
||||
/* call meteringReceipt */
|
||||
int call_meteringReceipt(struct v2gService* service, struct HeaderType* header, struct MeteringReceiptReqType* params, struct MeteringReceiptResType* result);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Initialize the v2g client */
|
||||
int init_v2gServiceClient(struct v2gService* service, bytes_t bytes, string_ucs_t string, uint8_t* inStream, size_t max_inStream_size, uint8_t* outStream, size_t max_outStream_size);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
File diff suppressed because it is too large
Load diff
|
@ -1,42 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef V2GSERVICEDATASERIAL_H_
|
||||
#define V2GSERVICEDATASERIAL_H_
|
||||
|
||||
#include "v2g_service.h"
|
||||
|
||||
int serialize_message(struct v2gService* service);
|
||||
|
||||
|
||||
#endif /* V2GSERVICEDATASERIAL_H_ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
|
@ -1,400 +0,0 @@
|
|||
|
||||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
#include "EXITypes.h"
|
||||
#include "v2g_serviceDataTypes.h"
|
||||
|
||||
|
||||
static void init_SessionInformationType_SessionID(struct SessionInformationType_SessionID* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_SessionInformationType_ServiceSessionID(struct SessionInformationType_ServiceSessionID* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_SessionInformationType_ProtocolVersion(struct SessionInformationType_ProtocolVersion* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_SessionInformationType(struct SessionInformationType* type)
|
||||
{
|
||||
init_SessionInformationType_SessionID(&(type->SessionID));
|
||||
init_SessionInformationType_ServiceSessionID(&(type->ServiceSessionID));
|
||||
type->isused.ServiceSessionID=0;
|
||||
init_SessionInformationType_ProtocolVersion(&(type->ProtocolVersion));
|
||||
type->isused.ProtocolVersion=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_NotificationType_FaultMsg(struct NotificationType_FaultMsg* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_NotificationType(struct NotificationType* type)
|
||||
{
|
||||
type->isused.FaultCode=0;
|
||||
init_NotificationType_FaultMsg(&(type->FaultMsg));
|
||||
type->isused.FaultMsg=0;
|
||||
type->isused.EventList=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_HeaderType(struct HeaderType* type)
|
||||
{
|
||||
init_SessionInformationType(&(type->SessionInformation));
|
||||
init_NotificationType(&(type->Notification));
|
||||
type->isused.Notification=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_SessionSetupReqType_PEVID(struct SessionSetupReqType_PEVID* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_SessionSetupReqType(struct SessionSetupReqType* type)
|
||||
{
|
||||
init_SessionSetupReqType_PEVID(&(type->PEVID));
|
||||
type->isused.PEVID=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_SessionSetupResType_EVSEID(struct SessionSetupResType_EVSEID* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_SessionSetupResType(struct SessionSetupResType* type)
|
||||
{
|
||||
init_SessionSetupResType_EVSEID(&(type->EVSEID));
|
||||
|
||||
}
|
||||
|
||||
static void init_ServiceDiscoveryReqType_ServiceScope(struct ServiceDiscoveryReqType_ServiceScope* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_ServiceDiscoveryReqType(struct ServiceDiscoveryReqType* type)
|
||||
{
|
||||
type->isused.ServiceType=0;
|
||||
init_ServiceDiscoveryReqType_ServiceScope(&(type->ServiceScope));
|
||||
type->isused.ServiceScope=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_ServiceDescriptionType_ServiceID(struct ServiceDescriptionType_ServiceID* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_ServiceDescriptionType_ServiceName(struct ServiceDescriptionType_ServiceName* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_ServiceDescriptionType_ServiceScope(struct ServiceDescriptionType_ServiceScope* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_ServiceDescriptionType(struct ServiceDescriptionType* type)
|
||||
{
|
||||
init_ServiceDescriptionType_ServiceID(&(type->ServiceID));
|
||||
init_ServiceDescriptionType_ServiceName(&(type->ServiceName));
|
||||
type->isused.ServiceName=0;
|
||||
type->isused.ServiceType=0;
|
||||
init_ServiceDescriptionType_ServiceScope(&(type->ServiceScope));
|
||||
type->isused.ServiceScope=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_ServiceListType(struct ServiceListType* type)
|
||||
{
|
||||
int i_loop;
|
||||
|
||||
for(i_loop=0; i_loop<8;i_loop++)
|
||||
{
|
||||
init_ServiceDescriptionType(&(type->Service[i_loop]));
|
||||
}
|
||||
|
||||
type->arraylen.Service=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_ServiceDiscoveryResType(struct ServiceDiscoveryResType* type)
|
||||
{
|
||||
init_ServiceListType(&(type->ServiceList));
|
||||
type->isused.ServiceList=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_ServicePaymentSelectionReqType_PEVPubKey(struct ServicePaymentSelectionReqType_PEVPubKey* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_ServicePaymentSelectionReqType(struct ServicePaymentSelectionReqType* type)
|
||||
{
|
||||
init_ServiceListType(&(type->ServiceList));
|
||||
init_ServicePaymentSelectionReqType_PEVPubKey(&(type->PEVPubKey));
|
||||
|
||||
}
|
||||
|
||||
static void init_ServicePaymentSelectionResType_MeteringAuthPubKey(struct ServicePaymentSelectionResType_MeteringAuthPubKey* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_ServicePaymentSelectionResType(struct ServicePaymentSelectionResType* type)
|
||||
{
|
||||
init_ServicePaymentSelectionResType_MeteringAuthPubKey(&(type->MeteringAuthPubKey));
|
||||
type->isused.MeteringAuthPubKey=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_PaymentDetailsReqType_ContractID(struct PaymentDetailsReqType_ContractID* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_PaymentDetailsReqType(struct PaymentDetailsReqType* type)
|
||||
{
|
||||
init_PaymentDetailsReqType_ContractID(&(type->ContractID));
|
||||
|
||||
}
|
||||
|
||||
static void init_PowerDiscoveryReqType(struct PowerDiscoveryReqType* type)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
static void init_PowerDiscoveryResType_EnergyProvider(struct PowerDiscoveryResType_EnergyProvider* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_TariffTableType_Currency(struct TariffTableType_Currency* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_TariffDescrType_TariffDescription(struct TariffDescrType_TariffDescription* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_TariffEntryType(struct TariffEntryType* type)
|
||||
{
|
||||
type->isused.EPrice=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_TariffEntriesType(struct TariffEntriesType* type)
|
||||
{
|
||||
int i_loop;
|
||||
|
||||
for(i_loop=0; i_loop<8;i_loop++)
|
||||
{
|
||||
init_TariffEntryType(&(type->TariffEntry[i_loop]));
|
||||
}
|
||||
|
||||
type->arraylen.TariffEntry=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_TariffDescrType(struct TariffDescrType* type)
|
||||
{
|
||||
init_TariffDescrType_TariffDescription(&(type->TariffDescription));
|
||||
type->isused.TariffDescription=0;
|
||||
init_TariffEntriesType(&(type->TariffEntries));
|
||||
|
||||
}
|
||||
|
||||
static void init_TariffTableType(struct TariffTableType* type)
|
||||
{
|
||||
int i_loop;
|
||||
|
||||
init_TariffTableType_Currency(&(type->Currency));
|
||||
for(i_loop=0; i_loop<6;i_loop++)
|
||||
{
|
||||
init_TariffDescrType(&(type->Tariff[i_loop]));
|
||||
}
|
||||
|
||||
type->arraylen.Tariff=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_PowerDiscoveryResType(struct PowerDiscoveryResType* type)
|
||||
{
|
||||
init_PowerDiscoveryResType_EnergyProvider(&(type->EnergyProvider));
|
||||
type->isused.EnergyProvider=0;
|
||||
init_TariffTableType(&(type->TariffTable));
|
||||
type->isused.TariffTable=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_LineLockReqType(struct LineLockReqType* type)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
static void init_LineLockResType(struct LineLockResType* type)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
static void init_ChargingProfileType(struct ChargingProfileType* type)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
static void init_PowerDeliveryReqType(struct PowerDeliveryReqType* type)
|
||||
{
|
||||
type->isused.Tariff=0;
|
||||
init_ChargingProfileType(&(type->ChargingProfile));
|
||||
type->isused.ChargingProfile=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_MeteringStatusResType_EVSEID(struct MeteringStatusResType_EVSEID* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_MeterInfoType_MeterID(struct MeterInfoType_MeterID* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_MeterInfoType_MeterPubKey(struct MeterInfoType_MeterPubKey* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_MeterInfoType(struct MeterInfoType* type)
|
||||
{
|
||||
init_MeterInfoType_MeterID(&(type->MeterID));
|
||||
type->isused.MeterID=0;
|
||||
init_MeterInfoType_MeterPubKey(&(type->MeterPubKey));
|
||||
type->isused.MeterPubKey=0;
|
||||
type->isused.MeterReading=0;
|
||||
type->isused.MeterStatus=0;
|
||||
type->isused.TMeter=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_MeteringStatusResType(struct MeteringStatusResType* type)
|
||||
{
|
||||
init_MeteringStatusResType_EVSEID(&(type->EVSEID));
|
||||
type->isused.PCurrent=0;
|
||||
init_MeterInfoType(&(type->MeterInfo));
|
||||
type->isused.MeterInfo=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_MeteringReceiptReqType_PEVID(struct MeteringReceiptReqType_PEVID* type)
|
||||
{
|
||||
type->arraylen.data=0;
|
||||
|
||||
}
|
||||
|
||||
static void init_MeteringReceiptReqType(struct MeteringReceiptReqType* type)
|
||||
{
|
||||
init_MeteringReceiptReqType_PEVID(&(type->PEVID));
|
||||
type->isused.PEVID=0;
|
||||
type->isused.TCurrent=0;
|
||||
init_MeterInfoType(&(type->MeterInfo));
|
||||
|
||||
}
|
||||
|
||||
static void init_BodyType(struct BodyType* type)
|
||||
{
|
||||
init_SessionSetupReqType(&(type->SessionSetupReq));
|
||||
type->isused.SessionSetupReq=0;
|
||||
init_SessionSetupResType(&(type->SessionSetupRes));
|
||||
type->isused.SessionSetupRes=0;
|
||||
init_ServiceDiscoveryReqType(&(type->ServiceDiscoveryReq));
|
||||
type->isused.ServiceDiscoveryReq=0;
|
||||
init_ServiceDiscoveryResType(&(type->ServiceDiscoveryRes));
|
||||
type->isused.ServiceDiscoveryRes=0;
|
||||
init_ServicePaymentSelectionReqType(&(type->ServicePaymentSelectionReq));
|
||||
type->isused.ServicePaymentSelectionReq=0;
|
||||
init_ServicePaymentSelectionResType(&(type->ServicePaymentSelectionRes));
|
||||
type->isused.ServicePaymentSelectionRes=0;
|
||||
init_PaymentDetailsReqType(&(type->PaymentDetailsReq));
|
||||
type->isused.PaymentDetailsReq=0;
|
||||
type->isused.PaymentDetailsRes=0;
|
||||
init_PowerDiscoveryReqType(&(type->PowerDiscoveryReq));
|
||||
type->isused.PowerDiscoveryReq=0;
|
||||
init_PowerDiscoveryResType(&(type->PowerDiscoveryRes));
|
||||
type->isused.PowerDiscoveryRes=0;
|
||||
init_LineLockReqType(&(type->LineLockReq));
|
||||
type->isused.LineLockReq=0;
|
||||
init_LineLockResType(&(type->LineLockRes));
|
||||
type->isused.LineLockRes=0;
|
||||
init_PowerDeliveryReqType(&(type->PowerDeliveryReq));
|
||||
type->isused.PowerDeliveryReq=0;
|
||||
type->isused.PowerDeliveryRes=0;
|
||||
type->isused.MeteringStatusReq=0;
|
||||
init_MeteringStatusResType(&(type->MeteringStatusRes));
|
||||
type->isused.MeteringStatusRes=0;
|
||||
init_MeteringReceiptReqType(&(type->MeteringReceiptReq));
|
||||
type->isused.MeteringReceiptReq=0;
|
||||
type->isused.MeteringReceiptRes=0;
|
||||
|
||||
}
|
||||
void init_AnonType_V2G_Message(struct AnonType_V2G_Message* type)
|
||||
{
|
||||
init_HeaderType(&(type->Header));
|
||||
init_BodyType(&(type->Body));
|
||||
|
||||
}
|
|
@ -1,991 +0,0 @@
|
|||
|
||||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef SERVICEDATATYPES_H
|
||||
#define SERVICEDATATYPES_H
|
||||
|
||||
#include "EXITypes.h"
|
||||
|
||||
|
||||
|
||||
|
||||
enum faultCodeType
|
||||
{
|
||||
ParsingError,
|
||||
V2GProtocolVersionNotSupported,
|
||||
UnknownError
|
||||
|
||||
};
|
||||
|
||||
enum eventEntryType
|
||||
{
|
||||
InitiateSessionSetup,
|
||||
InitiateServiceDiscovery,
|
||||
InitiatePowerDiscovery,
|
||||
InitiateLineLock,
|
||||
InitiatePowerDelivery,
|
||||
InitiateInitiateMeteringStatus
|
||||
|
||||
};
|
||||
|
||||
enum responseCode_SessionSetupType
|
||||
{
|
||||
OK_SessionSetup,
|
||||
OK_NewSessionEstablished,
|
||||
OK_OldSessionJoined,
|
||||
FAILED_UnknownSession,
|
||||
FAILED_SessionEstablishmentError,
|
||||
FAILED_UnknownError_InSessionSetup
|
||||
|
||||
};
|
||||
|
||||
enum serviceTypeType
|
||||
{
|
||||
PEV_Recharge,
|
||||
Remote_Customer_Support,
|
||||
Internet,
|
||||
Other
|
||||
|
||||
};
|
||||
|
||||
enum responseCode_ServiceDiscoveryType
|
||||
{
|
||||
OK_ServiceDiscovery,
|
||||
FAILED_NoServicesOfThisType,
|
||||
FAILED_NoServicesInThisScope,
|
||||
FAILED_NoServicesOfThisTypeScope,
|
||||
FAILED_NoServicesFound,
|
||||
FAILED_UnknownError_InServiceDiscovery
|
||||
|
||||
};
|
||||
|
||||
enum responseCode_ServicePaymentSelectionType
|
||||
{
|
||||
OK_ServicePaymentSelection,
|
||||
FAILED_ServiceSelectionInvalid,
|
||||
FAILED_PaymentSelectionInvalid,
|
||||
FAILED_UnknownError_InServicePaymentSelection
|
||||
|
||||
};
|
||||
|
||||
enum responseCode_PaymentDetailsType
|
||||
{
|
||||
OK_PaymentDetails,
|
||||
FAILED_PaymentDetailsInvalid,
|
||||
FAILED_UnknownError
|
||||
|
||||
};
|
||||
|
||||
enum unitMultiplierType
|
||||
{
|
||||
d,
|
||||
c,
|
||||
m,
|
||||
micro,
|
||||
n,
|
||||
p,
|
||||
k,
|
||||
M,
|
||||
G,
|
||||
T,
|
||||
none
|
||||
|
||||
};
|
||||
|
||||
enum unitSymbolType
|
||||
{
|
||||
A,
|
||||
deg,
|
||||
F,
|
||||
g,
|
||||
h,
|
||||
H,
|
||||
Hz,
|
||||
Hz_1,
|
||||
J,
|
||||
J_s,
|
||||
kg_J,
|
||||
min,
|
||||
N,
|
||||
C,
|
||||
ohm,
|
||||
Pa,
|
||||
rad,
|
||||
s,
|
||||
S,
|
||||
s_1,
|
||||
V,
|
||||
V_VAr,
|
||||
VA,
|
||||
VAh,
|
||||
VAr,
|
||||
VArh,
|
||||
W,
|
||||
W_Hz,
|
||||
W_s,
|
||||
Wh,
|
||||
Ah
|
||||
|
||||
};
|
||||
|
||||
enum responseCode_PowerDiscoveryType
|
||||
{
|
||||
OK_PowerDiscovery,
|
||||
FAILED_UnknownError_InPowerDiscovery
|
||||
|
||||
};
|
||||
|
||||
enum tariffIDType
|
||||
{
|
||||
Standard_charge,
|
||||
Fast_charge,
|
||||
Green_charge,
|
||||
Grid_friendly_charge,
|
||||
Freely_parameterisable_charge,
|
||||
Charge_under_reserve
|
||||
|
||||
};
|
||||
|
||||
enum responseCode_LineLockType
|
||||
{
|
||||
OK_LineLock,
|
||||
FAILED_LineLockNotApplied,
|
||||
FAILED_UnknownError_InLineLock
|
||||
|
||||
};
|
||||
|
||||
enum responseCode_PowerDeliveryType
|
||||
{
|
||||
OK_PowerDelivery,
|
||||
FAILED_PowerDeliveryNotApplied,
|
||||
FAILED_TariffSelectionInvalid,
|
||||
FAILED_ChargingProfileInvalid,
|
||||
FAILED_UnknownError_InPowerDelivery
|
||||
|
||||
};
|
||||
|
||||
enum responseCode_MeteringStatusType
|
||||
{
|
||||
OK_MeteringStatus,
|
||||
FAILED_UnknownError_InMeteringStatus
|
||||
|
||||
};
|
||||
|
||||
enum responseCode_MeteringReceiptType
|
||||
{
|
||||
OK_MeteringReceipt,
|
||||
FAILED_UnknownError_MeteringReceipt
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
struct arraylen_SessionInformationType_SessionID
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct SessionInformationType_SessionID
|
||||
{
|
||||
uint8_t data[8];
|
||||
struct arraylen_SessionInformationType_SessionID arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_SessionInformationType_ServiceSessionID
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct SessionInformationType_ServiceSessionID
|
||||
{
|
||||
uint8_t data[8];
|
||||
struct arraylen_SessionInformationType_ServiceSessionID arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct selection_SessionInformationType
|
||||
{
|
||||
int ServiceSessionID:1;
|
||||
int ProtocolVersion:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_SessionInformationType_ProtocolVersion
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct SessionInformationType_ProtocolVersion
|
||||
{
|
||||
uint32_t data[256];
|
||||
struct arraylen_SessionInformationType_ProtocolVersion arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct SessionInformationType
|
||||
{
|
||||
struct SessionInformationType_SessionID SessionID;
|
||||
struct SessionInformationType_ServiceSessionID ServiceSessionID;
|
||||
struct SessionInformationType_ProtocolVersion ProtocolVersion;
|
||||
struct selection_SessionInformationType isused;
|
||||
|
||||
};
|
||||
|
||||
struct selection_NotificationType
|
||||
{
|
||||
int FaultCode:1;
|
||||
int FaultMsg:1;
|
||||
int EventList:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_NotificationType_FaultMsg
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct NotificationType_FaultMsg
|
||||
{
|
||||
uint32_t data[256];
|
||||
struct arraylen_NotificationType_FaultMsg arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct EventListType
|
||||
{
|
||||
enum eventEntryType Event;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct NotificationType
|
||||
{
|
||||
enum faultCodeType FaultCode;
|
||||
struct NotificationType_FaultMsg FaultMsg;
|
||||
struct EventListType EventList;
|
||||
struct selection_NotificationType isused;
|
||||
|
||||
};
|
||||
|
||||
struct selection_HeaderType
|
||||
{
|
||||
int Notification:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct HeaderType
|
||||
{
|
||||
struct SessionInformationType SessionInformation;
|
||||
struct NotificationType Notification;
|
||||
struct selection_HeaderType isused;
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_SessionSetupReqType_PEVID
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct SessionSetupReqType_PEVID
|
||||
{
|
||||
uint32_t data[32];
|
||||
struct arraylen_SessionSetupReqType_PEVID arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct selection_SessionSetupReqType
|
||||
{
|
||||
int PEVID:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct PEVStatusType
|
||||
{
|
||||
int ConnectorLocked;
|
||||
int ChargerStandby;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct SessionSetupReqType
|
||||
{
|
||||
struct SessionSetupReqType_PEVID PEVID;
|
||||
struct PEVStatusType PEVStatus;
|
||||
struct selection_SessionSetupReqType isused;
|
||||
|
||||
};
|
||||
|
||||
struct selection_BodyType
|
||||
{
|
||||
int SessionSetupReq:1;
|
||||
int SessionSetupRes:1;
|
||||
int ServiceDiscoveryReq:1;
|
||||
int ServiceDiscoveryRes:1;
|
||||
int ServicePaymentSelectionReq:1;
|
||||
int ServicePaymentSelectionRes:1;
|
||||
int PaymentDetailsReq:1;
|
||||
int PaymentDetailsRes:1;
|
||||
int PowerDiscoveryReq:1;
|
||||
int PowerDiscoveryRes:1;
|
||||
int LineLockReq:1;
|
||||
int LineLockRes:1;
|
||||
int PowerDeliveryReq:1;
|
||||
int PowerDeliveryRes:1;
|
||||
int MeteringStatusReq:1;
|
||||
int MeteringStatusRes:1;
|
||||
int MeteringReceiptReq:1;
|
||||
int MeteringReceiptRes:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_SessionSetupResType_EVSEID
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct SessionSetupResType_EVSEID
|
||||
{
|
||||
uint8_t data[32];
|
||||
struct arraylen_SessionSetupResType_EVSEID arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct EVSEStatusType
|
||||
{
|
||||
int FatalError;
|
||||
int EVSEStandby;
|
||||
int ConnectorLocked;
|
||||
int PowerSwitchClosed;
|
||||
int RCD;
|
||||
int64_t ShutDownTime;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct SessionSetupResType
|
||||
{
|
||||
enum responseCode_SessionSetupType ResponseCode;
|
||||
struct SessionSetupResType_EVSEID EVSEID;
|
||||
struct EVSEStatusType EVSEStatus;
|
||||
int64_t TCurrent;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct selection_ServiceDiscoveryReqType
|
||||
{
|
||||
int ServiceType:1;
|
||||
int ServiceScope:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_ServiceDiscoveryReqType_ServiceScope
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct ServiceDiscoveryReqType_ServiceScope
|
||||
{
|
||||
uint32_t data[255];
|
||||
struct arraylen_ServiceDiscoveryReqType_ServiceScope arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct ServiceDiscoveryReqType
|
||||
{
|
||||
enum serviceTypeType ServiceType;
|
||||
struct ServiceDiscoveryReqType_ServiceScope ServiceScope;
|
||||
struct selection_ServiceDiscoveryReqType isused;
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_ServiceDescriptionType_ServiceID
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct ServiceDescriptionType_ServiceID
|
||||
{
|
||||
uint8_t data[8];
|
||||
struct arraylen_ServiceDescriptionType_ServiceID arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_ServiceDescriptionType_ServiceName
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct ServiceDescriptionType_ServiceName
|
||||
{
|
||||
uint32_t data[64];
|
||||
struct arraylen_ServiceDescriptionType_ServiceName arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct selection_ServiceDescriptionType
|
||||
{
|
||||
int ServiceName:1;
|
||||
int ServiceType:1;
|
||||
int ServiceScope:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_ServiceDescriptionType_ServiceScope
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct ServiceDescriptionType_ServiceScope
|
||||
{
|
||||
uint32_t data[255];
|
||||
struct arraylen_ServiceDescriptionType_ServiceScope arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct ServiceDescriptionType
|
||||
{
|
||||
struct ServiceDescriptionType_ServiceID ServiceID;
|
||||
struct ServiceDescriptionType_ServiceName ServiceName;
|
||||
enum serviceTypeType ServiceType;
|
||||
struct ServiceDescriptionType_ServiceScope ServiceScope;
|
||||
struct selection_ServiceDescriptionType isused;
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_ServiceListType
|
||||
{
|
||||
size_t Service;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct ServiceListType
|
||||
{
|
||||
struct ServiceDescriptionType Service[8];
|
||||
struct arraylen_ServiceListType arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct selection_ServiceDiscoveryResType
|
||||
{
|
||||
int ServiceList:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct ServiceDiscoveryResType
|
||||
{
|
||||
enum responseCode_ServiceDiscoveryType ResponseCode;
|
||||
struct ServiceListType ServiceList;
|
||||
struct selection_ServiceDiscoveryResType isused;
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_ServicePaymentSelectionReqType_PEVPubKey
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct ServicePaymentSelectionReqType_PEVPubKey
|
||||
{
|
||||
uint8_t data[64];
|
||||
struct arraylen_ServicePaymentSelectionReqType_PEVPubKey arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct ServicePaymentSelectionReqType
|
||||
{
|
||||
struct ServiceListType ServiceList;
|
||||
struct ServicePaymentSelectionReqType_PEVPubKey PEVPubKey;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_ServicePaymentSelectionResType_MeteringAuthPubKey
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct ServicePaymentSelectionResType_MeteringAuthPubKey
|
||||
{
|
||||
uint8_t data[64];
|
||||
struct arraylen_ServicePaymentSelectionResType_MeteringAuthPubKey arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct selection_ServicePaymentSelectionResType
|
||||
{
|
||||
int MeteringAuthPubKey:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct ServicePaymentSelectionResType
|
||||
{
|
||||
enum responseCode_ServicePaymentSelectionType ResponseCode;
|
||||
struct ServicePaymentSelectionResType_MeteringAuthPubKey MeteringAuthPubKey;
|
||||
struct selection_ServicePaymentSelectionResType isused;
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_PaymentDetailsReqType_ContractID
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct PaymentDetailsReqType_ContractID
|
||||
{
|
||||
uint32_t data[128];
|
||||
struct arraylen_PaymentDetailsReqType_ContractID arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct PaymentDetailsReqType
|
||||
{
|
||||
struct PaymentDetailsReqType_ContractID ContractID;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct PaymentDetailsResType
|
||||
{
|
||||
enum responseCode_PaymentDetailsType ResponseCode;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct FloatingValueType
|
||||
{
|
||||
enum unitMultiplierType Multiplier;
|
||||
enum unitSymbolType Unit;
|
||||
int64_t Value;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct PowerDiscoveryReqType
|
||||
{
|
||||
struct PEVStatusType PEVStatus;
|
||||
int64_t EoC;
|
||||
struct FloatingValueType EAmount;
|
||||
struct FloatingValueType PEVMaxPower;
|
||||
int32_t PEVMaxPhases;
|
||||
struct FloatingValueType PEVMaxVoltage;
|
||||
struct FloatingValueType PEVMinVoltage;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_PowerDiscoveryResType_EnergyProvider
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct PowerDiscoveryResType_EnergyProvider
|
||||
{
|
||||
uint32_t data[256];
|
||||
struct arraylen_PowerDiscoveryResType_EnergyProvider arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct selection_PowerDiscoveryResType
|
||||
{
|
||||
int EnergyProvider:1;
|
||||
int TariffTable:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_TariffTableType_Currency
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct TariffTableType_Currency
|
||||
{
|
||||
uint32_t data[3];
|
||||
struct arraylen_TariffTableType_Currency arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_TariffDescrType_TariffDescription
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct TariffDescrType_TariffDescription
|
||||
{
|
||||
uint32_t data[32];
|
||||
struct arraylen_TariffDescrType_TariffDescription arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct selection_TariffDescrType
|
||||
{
|
||||
int TariffDescription:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct selection_TariffEntryType
|
||||
{
|
||||
int EPrice:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct TariffEntryType
|
||||
{
|
||||
uint32_t TariffStart;
|
||||
struct FloatingValueType TariffPMax;
|
||||
struct FloatingValueType EPrice;
|
||||
struct selection_TariffEntryType isused;
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_TariffEntriesType
|
||||
{
|
||||
size_t TariffEntry;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct TariffEntriesType
|
||||
{
|
||||
struct TariffEntryType TariffEntry[8];
|
||||
struct arraylen_TariffEntriesType arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct TariffDescrType
|
||||
{
|
||||
enum tariffIDType TariffID;
|
||||
struct TariffDescrType_TariffDescription TariffDescription;
|
||||
struct TariffEntriesType TariffEntries;
|
||||
struct selection_TariffDescrType isused;
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_TariffTableType
|
||||
{
|
||||
size_t Tariff;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct TariffTableType
|
||||
{
|
||||
struct TariffTableType_Currency Currency;
|
||||
struct TariffDescrType Tariff[6];
|
||||
struct arraylen_TariffTableType arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct PowerDiscoveryResType
|
||||
{
|
||||
enum responseCode_PowerDiscoveryType ResponseCode;
|
||||
struct EVSEStatusType EVSEStatus;
|
||||
struct FloatingValueType EVSEVoltage;
|
||||
struct FloatingValueType EVSEIMax;
|
||||
int32_t EVSEMaxPhases;
|
||||
struct PowerDiscoveryResType_EnergyProvider EnergyProvider;
|
||||
struct TariffTableType TariffTable;
|
||||
struct selection_PowerDiscoveryResType isused;
|
||||
|
||||
};
|
||||
|
||||
struct LineLockReqType
|
||||
{
|
||||
struct PEVStatusType PEVStatus;
|
||||
int ReqLockStatus;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct LineLockResType
|
||||
{
|
||||
enum responseCode_LineLockType ResponseCode;
|
||||
struct EVSEStatusType EVSEStatus;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct selection_PowerDeliveryReqType
|
||||
{
|
||||
int Tariff:1;
|
||||
int ChargingProfile:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct ChargingProfileType
|
||||
{
|
||||
int64_t ChargingProfileEntryStart;
|
||||
struct FloatingValueType ChargingProfileEntryMaxPower;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct PowerDeliveryReqType
|
||||
{
|
||||
struct PEVStatusType PEVStatus;
|
||||
int ReqSwitchStatus;
|
||||
enum tariffIDType Tariff;
|
||||
struct ChargingProfileType ChargingProfile;
|
||||
struct selection_PowerDeliveryReqType isused;
|
||||
|
||||
};
|
||||
|
||||
struct PowerDeliveryResType
|
||||
{
|
||||
enum responseCode_PowerDeliveryType ResponseCode;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct MeteringStatusReqType
|
||||
{
|
||||
|
||||
|
||||
int NO_MEMBER:1;
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_MeteringStatusResType_EVSEID
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct MeteringStatusResType_EVSEID
|
||||
{
|
||||
uint8_t data[32];
|
||||
struct arraylen_MeteringStatusResType_EVSEID arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct selection_MeteringStatusResType
|
||||
{
|
||||
int PCurrent:1;
|
||||
int MeterInfo:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_MeterInfoType_MeterID
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct MeterInfoType_MeterID
|
||||
{
|
||||
uint32_t data[32];
|
||||
struct arraylen_MeterInfoType_MeterID arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct selection_MeterInfoType
|
||||
{
|
||||
int MeterID:1;
|
||||
int MeterPubKey:1;
|
||||
int MeterReading:1;
|
||||
int MeterStatus:1;
|
||||
int TMeter:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_MeterInfoType_MeterPubKey
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct MeterInfoType_MeterPubKey
|
||||
{
|
||||
uint8_t data[64];
|
||||
struct arraylen_MeterInfoType_MeterPubKey arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct MeterInfoType
|
||||
{
|
||||
struct MeterInfoType_MeterID MeterID;
|
||||
struct MeterInfoType_MeterPubKey MeterPubKey;
|
||||
struct FloatingValueType MeterReading;
|
||||
int32_t MeterStatus;
|
||||
int64_t TMeter;
|
||||
struct selection_MeterInfoType isused;
|
||||
|
||||
};
|
||||
|
||||
struct MeteringStatusResType
|
||||
{
|
||||
enum responseCode_MeteringStatusType ResponseCode;
|
||||
struct MeteringStatusResType_EVSEID EVSEID;
|
||||
struct EVSEStatusType EVSEStatus;
|
||||
int64_t TCurrent;
|
||||
struct FloatingValueType EVSEMaxPower;
|
||||
struct FloatingValueType PCurrent;
|
||||
struct MeterInfoType MeterInfo;
|
||||
struct selection_MeteringStatusResType isused;
|
||||
|
||||
};
|
||||
|
||||
struct arraylen_MeteringReceiptReqType_PEVID
|
||||
{
|
||||
size_t data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct MeteringReceiptReqType_PEVID
|
||||
{
|
||||
uint32_t data[32];
|
||||
struct arraylen_MeteringReceiptReqType_PEVID arraylen;
|
||||
|
||||
};
|
||||
|
||||
struct selection_MeteringReceiptReqType
|
||||
{
|
||||
int PEVID:1;
|
||||
int TCurrent:1;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct MeteringReceiptReqType
|
||||
{
|
||||
struct MeteringReceiptReqType_PEVID PEVID;
|
||||
struct PEVStatusType PEVStatus;
|
||||
int64_t TCurrent;
|
||||
enum tariffIDType Tariff;
|
||||
struct MeterInfoType MeterInfo;
|
||||
struct selection_MeteringReceiptReqType isused;
|
||||
|
||||
};
|
||||
|
||||
struct MeteringReceiptResType
|
||||
{
|
||||
enum responseCode_MeteringReceiptType ResponseCode;
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct BodyType
|
||||
{
|
||||
struct SessionSetupReqType SessionSetupReq;
|
||||
struct SessionSetupResType SessionSetupRes;
|
||||
struct ServiceDiscoveryReqType ServiceDiscoveryReq;
|
||||
struct ServiceDiscoveryResType ServiceDiscoveryRes;
|
||||
struct ServicePaymentSelectionReqType ServicePaymentSelectionReq;
|
||||
struct ServicePaymentSelectionResType ServicePaymentSelectionRes;
|
||||
struct PaymentDetailsReqType PaymentDetailsReq;
|
||||
struct PaymentDetailsResType PaymentDetailsRes;
|
||||
struct PowerDiscoveryReqType PowerDiscoveryReq;
|
||||
struct PowerDiscoveryResType PowerDiscoveryRes;
|
||||
struct LineLockReqType LineLockReq;
|
||||
struct LineLockResType LineLockRes;
|
||||
struct PowerDeliveryReqType PowerDeliveryReq;
|
||||
struct PowerDeliveryResType PowerDeliveryRes;
|
||||
struct MeteringStatusReqType MeteringStatusReq;
|
||||
struct MeteringStatusResType MeteringStatusRes;
|
||||
struct MeteringReceiptReqType MeteringReceiptReq;
|
||||
struct MeteringReceiptResType MeteringReceiptRes;
|
||||
struct selection_BodyType isused;
|
||||
|
||||
};
|
||||
|
||||
struct AnonType_V2G_Message
|
||||
{
|
||||
struct HeaderType Header;
|
||||
struct BodyType Body;
|
||||
|
||||
|
||||
};
|
||||
|
||||
/* init method of the V2G message */
|
||||
void init_AnonType_V2G_Message(struct AnonType_V2G_Message* v2gMsg);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
File diff suppressed because it is too large
Load diff
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef V2GSERVER_H_
|
||||
#define V2GSERVER_H_
|
||||
|
||||
#include "v2g_serviceDataTypes.h"
|
||||
|
||||
|
||||
int init_v2gservice(struct v2gService* service,bytes_t bytes, string_ucs_t string);
|
||||
int messageDispatcher(struct v2gService* service, uint8_t* inStream, size_t sizeInStream, size_t* inPos, uint8_t* outStream, size_t sizeOutStream, size_t* outPos);
|
||||
|
||||
#endif /* V2GSERVER_H_ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
|
@ -1,69 +0,0 @@
|
|||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Copyright (C) 2007-2010 Siemens AG
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||
* @version 0.2.2
|
||||
* @contact Joerg.Heuer@siemens.com
|
||||
*
|
||||
********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef SERVICEMETHODS_H
|
||||
#define SERVICEMETHODS_H
|
||||
|
||||
#include "v2g_serviceDataTypes.h"
|
||||
#include "EXITypes.h"
|
||||
|
||||
/* This service methods has to be implemented by the EVSE server */
|
||||
|
||||
int sessionSetup(struct SessionSetupReqType* param, struct SessionSetupResType* result);
|
||||
|
||||
int serviceDiscovery(struct ServiceDiscoveryReqType* param, struct ServiceDiscoveryResType* result);
|
||||
|
||||
int selectedServicePayment(struct ServicePaymentSelectionReqType* param, struct ServicePaymentSelectionResType* result);
|
||||
|
||||
int paymentDetails(struct PaymentDetailsReqType* param, struct PaymentDetailsResType* result);
|
||||
|
||||
int powerDiscovery(struct PowerDiscoveryReqType* param, struct PowerDiscoveryResType* result);
|
||||
|
||||
int lineLock(struct LineLockReqType* param, struct LineLockResType* result);
|
||||
|
||||
int powerDelivery(struct PowerDeliveryReqType* param, struct PowerDeliveryResType* result);
|
||||
|
||||
int meteringStatus(struct MeteringStatusReqType* param, struct MeteringStatusResType* result);
|
||||
|
||||
int meteringReceipt(struct MeteringReceiptReqType* param, struct MeteringReceiptResType* result);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue