diff --git a/examples/knx-demo/knx-demo.ino b/examples/knx-demo/knx-demo.ino
index 3c92916..b437867 100644
--- a/examples/knx-demo/knx-demo.ino
+++ b/examples/knx-demo/knx-demo.ino
@@ -60,7 +60,7 @@ void resetCallback(GroupObject& go)
void setup()
{
- Serial.begin(115200);
+ SerialDBG.begin(115200);
randomSeed(millis());
diff --git a/knxPython/CMakeLists.txt b/knxPython/CMakeLists.txt
new file mode 100644
index 0000000..1e0f970
--- /dev/null
+++ b/knxPython/CMakeLists.txt
@@ -0,0 +1,11 @@
+#Generated by VisualGDB project wizard.
+#Note: VisualGDB will automatically update this file when you add new sources to the project.
+
+cmake_minimum_required(VERSION 2.7)
+project(knx)
+
+set(LIBRARIES_FROM_REFERENCES "")
+add_library(knx SHARED ../src/knx/address_table_object.cpp ../src/knx/apdu.cpp ../src/knx/application_layer.cpp ../src/knx/application_program_object.cpp ../src/knx/association_table_object.cpp ../src/knx/bau.cpp ../src/knx/bau07B0.cpp ../src/knx/bau57B0.cpp ../src/knx/bau_systemB.cpp ../src/knx/bits.cpp ../src/knx/cemi_frame.cpp ../src/knx/datapoint_types.cpp ../src/knx/data_link_layer.cpp ../src/knx/device_object.cpp ../src/knx/group_object.cpp ../src/knx/group_object_table_object.cpp ../src/knx/interface_object.cpp ../src/knx/ip_data_link_layer.cpp ../src/knx/ip_parameter_object.cpp ../src/knx/memory.cpp ../src/knx/network_layer.cpp ../src/knx/npdu.cpp ../src/knx/table_object.cpp ../src/knx/tpdu.cpp ../src/knx/tpuart_data_link_layer.cpp ../src/knx/transport_layer.cpp ../src/linux_platform.cpp knxmodule.cpp)
+target_link_libraries(knx python3.5m "${LIBRARIES_FROM_REFERENCES}")
+include_directories(/usr/include/python3.5m ../src)
+SET_TARGET_PROPERTIES(knx PROPERTIES PREFIX "")
diff --git a/knxPython/CMakeLists.txt.old b/knxPython/CMakeLists.txt.old
new file mode 100644
index 0000000..8c103a7
--- /dev/null
+++ b/knxPython/CMakeLists.txt.old
@@ -0,0 +1,11 @@
+#Generated by VisualGDB project wizard.
+#Note: VisualGDB will automatically update this file when you add new sources to the project.
+
+cmake_minimum_required(VERSION 2.7)
+project(knx)
+
+set(LIBRARIES_FROM_REFERENCES "")
+add_library(knx SHARED ../src/knx/address_table_object.cpp ../src/knx/apdu.cpp ../src/knx/application_layer.cpp ../src/knx/application_program_object.cpp ../src/knx/association_table_object.cpp ../src/knx/bau.cpp ../src/knx/bau07B0.cpp ../src/knx/bau57B0.cpp ../src/knx/bau_systemB.cpp ../src/knx/bits.cpp ../src/knx/cemi_frame.cpp ../src/knx/datapoint_types.cpp ../src/knx/data_link_layer.cpp ../src/knx/device_object.cpp ../src/knx/group_object.cpp ../src/knx/group_object_table_object.cpp ../src/knx/interface_object.cpp ../src/knx/ip_data_link_layer.cpp ../src/knx/ip_parameter_object.cpp ../src/knx/memory.cpp ../src/knx/network_layer.cpp ../src/knx/npdu.cpp ../src/knx/table_object.cpp ../src/knx/tpdu.cpp ../src/knx/tpuart_data_link_layer.cpp ../src/knx/transport_layer.cpp ../src/linux_platform.cpp knxmodule.cpp)
+target_link_libraries(knx python3.5m "${LIBRARIES_FROM_REFERENCES}")
+include_directories(/usr/include/python3.5m)
+SET_TARGET_PROPERTIES(knx PROPERTIES PREFIX "")
diff --git a/knxPython/gcc_Debug.h b/knxPython/gcc_Debug.h
new file mode 100644
index 0000000..3018ca2
--- /dev/null
+++ b/knxPython/gcc_Debug.h
@@ -0,0 +1,890 @@
+/*
+ This file is only used by IntelliSense (VisualStudio code suggestion system)
+ DO NOT INCLUDE THIS FILE FROM YOUR ACTUAL SOURCE FILES.
+ This file lists the preprocessor macros extracted from your GCC.
+ It is needed for IntelliSense to parse other header files correctly.
+*/
+#if defined(_MSC_VER) || defined (__SYSPROGS_CODESENSE__)
+#pragma clang diagnostic push
+
+#pragma clang diagnostic ignored "-Wreserved-id-macro"
+#ifndef __DBL_MIN_EXP__
+#define __DBL_MIN_EXP__ (-1021)
+#endif
+#ifndef __cpp_attributes
+#define __cpp_attributes 200809
+#endif
+#ifndef __UINT_LEAST16_MAX__
+#define __UINT_LEAST16_MAX__ 0xffff
+#endif
+#ifndef __ATOMIC_ACQUIRE
+#define __ATOMIC_ACQUIRE 2
+#endif
+#ifndef __FLT_MIN__
+#define __FLT_MIN__ 1.17549435082228750797e-38F
+#endif
+#ifndef __GCC_IEC_559_COMPLEX
+#define __GCC_IEC_559_COMPLEX 2
+#endif
+#ifndef __cpp_aggregate_nsdmi
+#define __cpp_aggregate_nsdmi 201304
+#endif
+#ifndef __UINT_LEAST8_TYPE__
+#define __UINT_LEAST8_TYPE__ unsigned char
+#endif
+#ifndef __SIZEOF_FLOAT80__
+#define __SIZEOF_FLOAT80__ 16
+#endif
+#ifndef __CHAR_BIT__
+#define __CHAR_BIT__ 8
+#endif
+#ifndef __UINT8_MAX__
+#define __UINT8_MAX__ 0xff
+#endif
+#ifndef __WINT_MAX__
+#define __WINT_MAX__ 0xffffffffU
+#endif
+#ifndef __cpp_static_assert
+#define __cpp_static_assert 200410
+#endif
+#ifndef __ORDER_LITTLE_ENDIAN__
+#define __ORDER_LITTLE_ENDIAN__ 1234
+#endif
+#ifndef __SIZE_MAX__
+#define __SIZE_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __WCHAR_MAX__
+#define __WCHAR_MAX__ 0x7fffffff
+#endif
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
+#endif
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
+#endif
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
+#endif
+#ifndef __DBL_DENORM_MIN__
+#define __DBL_DENORM_MIN__ double(4.94065645841246544177e-324L)
+#endif
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
+#endif
+#ifndef __GCC_ATOMIC_CHAR_LOCK_FREE
+#define __GCC_ATOMIC_CHAR_LOCK_FREE 2
+#endif
+#ifndef __GCC_IEC_559
+#define __GCC_IEC_559 2
+#endif
+#ifndef __FLT_EVAL_METHOD__
+#define __FLT_EVAL_METHOD__ 0
+#endif
+#ifndef __unix__
+#define __unix__ 1
+#endif
+#ifndef __cpp_binary_literals
+#define __cpp_binary_literals 201304
+#endif
+#ifndef __GCC_ATOMIC_CHAR32_T_LOCK_FREE
+#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
+#endif
+#ifndef __x86_64
+#define __x86_64 1
+#endif
+#ifndef __cpp_variadic_templates
+#define __cpp_variadic_templates 200704
+#endif
+#ifndef __UINT_FAST64_MAX__
+#define __UINT_FAST64_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __SIG_ATOMIC_TYPE__
+#define __SIG_ATOMIC_TYPE__ int
+#endif
+#ifndef __DBL_MIN_10_EXP__
+#define __DBL_MIN_10_EXP__ (-307)
+#endif
+#ifndef __FINITE_MATH_ONLY__
+#define __FINITE_MATH_ONLY__ 0
+#endif
+#ifndef __cpp_variable_templates
+#define __cpp_variable_templates 201304
+#endif
+#ifndef __GNUC_PATCHLEVEL__
+#define __GNUC_PATCHLEVEL__ 0
+#endif
+#ifndef __UINT_FAST8_MAX__
+#define __UINT_FAST8_MAX__ 0xff
+#endif
+#ifndef __DEC64_MAX_EXP__
+#define __DEC64_MAX_EXP__ 385
+#endif
+#ifndef __UINT_LEAST64_MAX__
+#define __UINT_LEAST64_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __SHRT_MAX__
+#define __SHRT_MAX__ 0x7fff
+#endif
+#ifndef __LDBL_MAX__
+#define __LDBL_MAX__ 1.18973149535723176502e+4932L
+#endif
+#ifndef __UINT_LEAST8_MAX__
+#define __UINT_LEAST8_MAX__ 0xff
+#endif
+#ifndef __GCC_ATOMIC_BOOL_LOCK_FREE
+#define __GCC_ATOMIC_BOOL_LOCK_FREE 2
+#endif
+#ifndef __UINTMAX_TYPE__
+#define __UINTMAX_TYPE__ long unsigned int
+#endif
+#ifndef __linux
+#define __linux 1
+#endif
+#ifndef __DEC32_EPSILON__
+#define __DEC32_EPSILON__ 1E-6DF
+#endif
+#ifndef __unix
+#define __unix 1
+#endif
+#ifndef __UINT32_MAX__
+#define __UINT32_MAX__ 0xffffffffU
+#endif
+#if !defined(__GXX_EXPERIMENTAL_CXX0X__) && defined(__SYSPROGS_CODESENSE__)
+#define __GXX_EXPERIMENTAL_CXX0X__ 1
+#endif
+#ifndef __LDBL_MAX_EXP__
+#define __LDBL_MAX_EXP__ 16384
+#endif
+#ifndef __WINT_MIN__
+#define __WINT_MIN__ 0U
+#endif
+#ifndef __linux__
+#define __linux__ 1
+#endif
+#ifndef __SCHAR_MAX__
+#define __SCHAR_MAX__ 0x7f
+#endif
+#ifndef __WCHAR_MIN__
+#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
+#endif
+#ifndef __DBL_DIG__
+#define __DBL_DIG__ 15
+#endif
+#ifndef __GCC_ATOMIC_POINTER_LOCK_FREE
+#define __GCC_ATOMIC_POINTER_LOCK_FREE 2
+#endif
+#ifndef __SIZEOF_INT__
+#define __SIZEOF_INT__ 4
+#endif
+#ifndef __SIZEOF_POINTER__
+#define __SIZEOF_POINTER__ 8
+#endif
+#ifndef __GCC_ATOMIC_CHAR16_T_LOCK_FREE
+#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
+#endif
+#ifndef __USER_LABEL_PREFIX__
+#define __USER_LABEL_PREFIX__
+#endif
+#ifndef __STDC_HOSTED__
+#define __STDC_HOSTED__ 1
+#endif
+#ifndef __LDBL_HAS_INFINITY__
+#define __LDBL_HAS_INFINITY__ 1
+#endif
+#ifndef __FLT_EPSILON__
+#define __FLT_EPSILON__ 1.19209289550781250000e-7F
+#endif
+#ifndef __GXX_WEAK__
+#define __GXX_WEAK__ 1
+#endif
+#ifndef __LDBL_MIN__
+#define __LDBL_MIN__ 3.36210314311209350626e-4932L
+#endif
+#ifndef __DEC32_MAX__
+#define __DEC32_MAX__ 9.999999E96DF
+#endif
+#ifndef __INT32_MAX__
+#define __INT32_MAX__ 0x7fffffff
+#endif
+#ifndef __SIZEOF_LONG__
+#define __SIZEOF_LONG__ 8
+#endif
+#ifndef __STDC_IEC_559__
+#define __STDC_IEC_559__ 1
+#endif
+#ifndef __STDC_ISO_10646__
+#define __STDC_ISO_10646__ 201605L
+#endif
+#ifndef __DECIMAL_DIG__
+#define __DECIMAL_DIG__ 21
+#endif
+#ifndef __gnu_linux__
+#define __gnu_linux__ 1
+#endif
+#ifndef __LDBL_HAS_QUIET_NAN__
+#define __LDBL_HAS_QUIET_NAN__ 1
+#endif
+#ifndef __GNUC__
+#define __GNUC__ 6
+#endif
+#ifndef __GXX_RTTI
+#define __GXX_RTTI 1
+#endif
+#ifndef __pie__
+#define __pie__ 2
+#endif
+#ifndef __MMX__
+#define __MMX__ 1
+#endif
+#ifndef __cpp_delegating_constructors
+#define __cpp_delegating_constructors 200604
+#endif
+#ifndef __FLT_HAS_DENORM__
+#define __FLT_HAS_DENORM__ 1
+#endif
+#ifndef __SIZEOF_LONG_DOUBLE__
+#define __SIZEOF_LONG_DOUBLE__ 16
+#endif
+#ifndef __BIGGEST_ALIGNMENT__
+#define __BIGGEST_ALIGNMENT__ 16
+#endif
+#ifndef __STDC_UTF_16__
+#define __STDC_UTF_16__ 1
+#endif
+#ifndef __DBL_MAX__
+#define __DBL_MAX__ double(1.79769313486231570815e+308L)
+#endif
+#ifndef __cpp_raw_strings
+#define __cpp_raw_strings 200710
+#endif
+#ifndef __INT_FAST32_MAX__
+#define __INT_FAST32_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __DBL_HAS_INFINITY__
+#define __DBL_HAS_INFINITY__ 1
+#endif
+#ifndef __INT64_MAX__
+#define __INT64_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __DEC32_MIN_EXP__
+#define __DEC32_MIN_EXP__ (-94)
+#endif
+#ifndef __INT_FAST16_TYPE__
+#define __INT_FAST16_TYPE__ long int
+#endif
+#ifndef __LDBL_HAS_DENORM__
+#define __LDBL_HAS_DENORM__ 1
+#endif
+//VS2005-2012 treats all files as C++, while VS2013+ can treat C files correctly.
+#if defined(_MSC_VER) && (_MSC_VER < 1800 || defined(__cplusplus))
+#undef __cplusplus
+#define __cplusplus 201402L
+#endif
+#ifndef __cpp_ref_qualifiers
+#define __cpp_ref_qualifiers 200710
+#endif
+#ifndef __DEC128_MAX__
+#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
+#endif
+#ifndef __INT_LEAST32_MAX__
+#define __INT_LEAST32_MAX__ 0x7fffffff
+#endif
+#ifndef __DEC32_MIN__
+#define __DEC32_MIN__ 1E-95DF
+#endif
+#ifndef __DEPRECATED
+#define __DEPRECATED 1
+#endif
+#ifndef __cpp_rvalue_references
+#define __cpp_rvalue_references 200610
+#endif
+#ifndef __DBL_MAX_EXP__
+#define __DBL_MAX_EXP__ 1024
+#endif
+#ifndef __DEC128_EPSILON__
+#define __DEC128_EPSILON__ 1E-33DL
+#endif
+#ifndef __SSE2_MATH__
+#define __SSE2_MATH__ 1
+#endif
+#ifndef __ATOMIC_HLE_RELEASE
+#define __ATOMIC_HLE_RELEASE 131072
+#endif
+#ifndef __PTRDIFF_MAX__
+#define __PTRDIFF_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __amd64
+#define __amd64 1
+#endif
+#ifndef __STDC_NO_THREADS__
+#define __STDC_NO_THREADS__ 1
+#endif
+#ifndef __ATOMIC_HLE_ACQUIRE
+#define __ATOMIC_HLE_ACQUIRE 65536
+#endif
+#ifndef __GNUG__
+#define __GNUG__ 6
+#endif
+#ifndef __LONG_LONG_MAX__
+#define __LONG_LONG_MAX__ 0x7fffffffffffffffLL
+#endif
+#ifndef __SIZEOF_SIZE_T__
+#define __SIZEOF_SIZE_T__ 8
+#endif
+#ifndef __cpp_rvalue_reference
+#define __cpp_rvalue_reference 200610
+#endif
+#ifndef __cpp_nsdmi
+#define __cpp_nsdmi 200809
+#endif
+#ifndef __SIZEOF_WINT_T__
+#define __SIZEOF_WINT_T__ 4
+#endif
+#ifndef __cpp_initializer_lists
+#define __cpp_initializer_lists 200806
+#endif
+#ifndef __cpp_hex_float
+#define __cpp_hex_float 201603
+#endif
+#ifndef __GCC_HAVE_DWARF2_CFI_ASM
+#define __GCC_HAVE_DWARF2_CFI_ASM 1
+#endif
+#ifndef __GXX_ABI_VERSION
+#define __GXX_ABI_VERSION 1010
+#endif
+#ifndef __FLT_MIN_EXP__
+#define __FLT_MIN_EXP__ (-125)
+#endif
+#ifndef __cpp_lambdas
+#define __cpp_lambdas 200907
+#endif
+#ifndef __INT_FAST64_TYPE__
+#define __INT_FAST64_TYPE__ long int
+#endif
+#ifndef __DBL_MIN__
+#define __DBL_MIN__ double(2.22507385850720138309e-308L)
+#endif
+#ifndef __PIE__
+#define __PIE__ 2
+#endif
+#ifndef __LP64__
+#define __LP64__ 1
+#endif
+#ifndef __DECIMAL_BID_FORMAT__
+#define __DECIMAL_BID_FORMAT__ 1
+#endif
+#ifndef __DEC128_MIN__
+#define __DEC128_MIN__ 1E-6143DL
+#endif
+#ifndef __REGISTER_PREFIX__
+#define __REGISTER_PREFIX__
+#endif
+#ifndef __UINT16_MAX__
+#define __UINT16_MAX__ 0xffff
+#endif
+#ifndef __DBL_HAS_DENORM__
+#define __DBL_HAS_DENORM__ 1
+#endif
+#ifndef __UINT8_TYPE__
+#define __UINT8_TYPE__ unsigned char
+#endif
+#ifndef __NO_INLINE__
+#define __NO_INLINE__ 1
+#endif
+#ifndef __FLT_MANT_DIG__
+#define __FLT_MANT_DIG__ 24
+#endif
+#ifndef __VERSION__
+#define __VERSION__ "6.3.0 20170516"
+#endif
+#ifndef __cpp_unicode_characters
+#define __cpp_unicode_characters 200704
+#endif
+#ifndef _STDC_PREDEF_H
+#define _STDC_PREDEF_H 1
+#endif
+#ifndef __cpp_decltype_auto
+#define __cpp_decltype_auto 201304
+#endif
+#ifndef __GCC_ATOMIC_INT_LOCK_FREE
+#define __GCC_ATOMIC_INT_LOCK_FREE 2
+#endif
+#ifndef __FLOAT_WORD_ORDER__
+#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
+#endif
+#ifndef __STDC_IEC_559_COMPLEX__
+#define __STDC_IEC_559_COMPLEX__ 1
+#endif
+#ifndef __DEC64_EPSILON__
+#define __DEC64_EPSILON__ 1E-15DD
+#endif
+#ifndef __ORDER_PDP_ENDIAN__
+#define __ORDER_PDP_ENDIAN__ 3412
+#endif
+#ifndef __DEC128_MIN_EXP__
+#define __DEC128_MIN_EXP__ (-6142)
+#endif
+#ifndef __INT_FAST32_TYPE__
+#define __INT_FAST32_TYPE__ long int
+#endif
+#ifndef __UINT_LEAST16_TYPE__
+#define __UINT_LEAST16_TYPE__ short unsigned int
+#endif
+#ifndef unix
+#define unix 1
+#endif
+#ifndef __INT16_MAX__
+#define __INT16_MAX__ 0x7fff
+#endif
+#ifndef __cpp_rtti
+#define __cpp_rtti 199711
+#endif
+#ifndef __SIZE_TYPE__
+#define __SIZE_TYPE__ long unsigned int
+#endif
+#ifndef __UINT64_MAX__
+#define __UINT64_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __INT8_TYPE__
+#define __INT8_TYPE__ signed char
+#endif
+#ifndef __cpp_digit_separators
+#define __cpp_digit_separators 201309
+#endif
+#ifndef __ELF__
+#define __ELF__ 1
+#endif
+#ifndef __GCC_ASM_FLAG_OUTPUTS__
+#define __GCC_ASM_FLAG_OUTPUTS__ 1
+#endif
+#ifndef __FLT_RADIX__
+#define __FLT_RADIX__ 2
+#endif
+#ifndef __INT_LEAST16_TYPE__
+#define __INT_LEAST16_TYPE__ short int
+#endif
+#ifndef __LDBL_EPSILON__
+#define __LDBL_EPSILON__ 1.08420217248550443401e-19L
+#endif
+#ifndef __GLIBCXX_BITSIZE_INT_N_0
+#define __GLIBCXX_BITSIZE_INT_N_0 128
+#endif
+#ifndef __k8
+#define __k8 1
+#endif
+#ifndef __SIG_ATOMIC_MAX__
+#define __SIG_ATOMIC_MAX__ 0x7fffffff
+#endif
+#ifndef __GCC_ATOMIC_WCHAR_T_LOCK_FREE
+#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
+#endif
+#ifndef __cpp_sized_deallocation
+#define __cpp_sized_deallocation 201309
+#endif
+#ifndef __SIZEOF_PTRDIFF_T__
+#define __SIZEOF_PTRDIFF_T__ 8
+#endif
+#ifndef __x86_64__
+#define __x86_64__ 1
+#endif
+#ifndef __DEC32_SUBNORMAL_MIN__
+#define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF
+#endif
+#ifndef __INT_FAST16_MAX__
+#define __INT_FAST16_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __UINT_FAST32_MAX__
+#define __UINT_FAST32_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __UINT_LEAST64_TYPE__
+#define __UINT_LEAST64_TYPE__ long unsigned int
+#endif
+#ifndef __FLT_HAS_QUIET_NAN__
+#define __FLT_HAS_QUIET_NAN__ 1
+#endif
+#ifndef __FLT_MAX_10_EXP__
+#define __FLT_MAX_10_EXP__ 38
+#endif
+#ifndef __LONG_MAX__
+#define __LONG_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __DEC128_SUBNORMAL_MIN__
+#define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL
+#endif
+#ifndef __FLT_HAS_INFINITY__
+#define __FLT_HAS_INFINITY__ 1
+#endif
+#ifndef __cpp_unicode_literals
+#define __cpp_unicode_literals 200710
+#endif
+#ifndef __UINT_FAST16_TYPE__
+#define __UINT_FAST16_TYPE__ long unsigned int
+#endif
+#ifndef __DEC64_MAX__
+#define __DEC64_MAX__ 9.999999999999999E384DD
+#endif
+#ifndef __CHAR16_TYPE__
+#define __CHAR16_TYPE__ short unsigned int
+#endif
+#ifndef __PRAGMA_REDEFINE_EXTNAME
+#define __PRAGMA_REDEFINE_EXTNAME 1
+#endif
+#ifndef __SEG_FS
+#define __SEG_FS 1
+#endif
+#ifndef __INT_LEAST16_MAX__
+#define __INT_LEAST16_MAX__ 0x7fff
+#endif
+#ifndef __DEC64_MANT_DIG__
+#define __DEC64_MANT_DIG__ 16
+#endif
+#ifndef __UINT_LEAST32_MAX__
+#define __UINT_LEAST32_MAX__ 0xffffffffU
+#endif
+#ifndef __SEG_GS
+#define __SEG_GS 1
+#endif
+#ifndef __GCC_ATOMIC_LONG_LOCK_FREE
+#define __GCC_ATOMIC_LONG_LOCK_FREE 2
+#endif
+#ifndef __INT_LEAST64_TYPE__
+#define __INT_LEAST64_TYPE__ long int
+#endif
+#ifndef __INT16_TYPE__
+#define __INT16_TYPE__ short int
+#endif
+#ifndef __INT_LEAST8_TYPE__
+#define __INT_LEAST8_TYPE__ signed char
+#endif
+#ifndef __DEC32_MAX_EXP__
+#define __DEC32_MAX_EXP__ 97
+#endif
+#ifndef __INT_FAST8_MAX__
+#define __INT_FAST8_MAX__ 0x7f
+#endif
+#ifndef __INTPTR_MAX__
+#define __INTPTR_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef linux
+#define linux 1
+#endif
+#ifndef __cpp_range_based_for
+#define __cpp_range_based_for 200907
+#endif
+#ifndef __SSE2__
+#define __SSE2__ 1
+#endif
+#ifndef __EXCEPTIONS
+#define __EXCEPTIONS 1
+#endif
+#ifndef __LDBL_MANT_DIG__
+#define __LDBL_MANT_DIG__ 64
+#endif
+#ifndef __DBL_HAS_QUIET_NAN__
+#define __DBL_HAS_QUIET_NAN__ 1
+#endif
+#ifndef __SIG_ATOMIC_MIN__
+#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
+#endif
+#ifndef __code_model_small__
+#define __code_model_small__ 1
+#endif
+#ifndef __cpp_return_type_deduction
+#define __cpp_return_type_deduction 201304
+#endif
+#ifndef __k8__
+#define __k8__ 1
+#endif
+#ifndef __INTPTR_TYPE__
+#define __INTPTR_TYPE__ long int
+#endif
+#ifndef __UINT16_TYPE__
+#define __UINT16_TYPE__ short unsigned int
+#endif
+#ifndef __WCHAR_TYPE__
+#define __WCHAR_TYPE__ int
+#endif
+#ifndef __SIZEOF_FLOAT__
+#define __SIZEOF_FLOAT__ 4
+#endif
+#ifndef __pic__
+#define __pic__ 2
+#endif
+#ifndef __UINTPTR_MAX__
+#define __UINTPTR_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __DEC64_MIN_EXP__
+#define __DEC64_MIN_EXP__ (-382)
+#endif
+#ifndef __cpp_decltype
+#define __cpp_decltype 200707
+#endif
+#ifndef __INT_FAST64_MAX__
+#define __INT_FAST64_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __GCC_ATOMIC_TEST_AND_SET_TRUEVAL
+#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
+#endif
+#ifndef __FLT_DIG__
+#define __FLT_DIG__ 6
+#endif
+#ifndef __UINT_FAST64_TYPE__
+#define __UINT_FAST64_TYPE__ long unsigned int
+#endif
+#ifndef __INT_MAX__
+#define __INT_MAX__ 0x7fffffff
+#endif
+#ifndef __amd64__
+#define __amd64__ 1
+#endif
+#ifndef __INT64_TYPE__
+#define __INT64_TYPE__ long int
+#endif
+#ifndef __FLT_MAX_EXP__
+#define __FLT_MAX_EXP__ 128
+#endif
+#ifndef __ORDER_BIG_ENDIAN__
+#define __ORDER_BIG_ENDIAN__ 4321
+#endif
+#ifndef __DBL_MANT_DIG__
+#define __DBL_MANT_DIG__ 53
+#endif
+#ifndef __cpp_inheriting_constructors
+#define __cpp_inheriting_constructors 200802
+#endif
+#ifndef __SIZEOF_FLOAT128__
+#define __SIZEOF_FLOAT128__ 16
+#endif
+#ifndef __INT_LEAST64_MAX__
+#define __INT_LEAST64_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __DEC64_MIN__
+#define __DEC64_MIN__ 1E-383DD
+#endif
+#ifndef __WINT_TYPE__
+#define __WINT_TYPE__ unsigned int
+#endif
+#ifndef __UINT_LEAST32_TYPE__
+#define __UINT_LEAST32_TYPE__ unsigned int
+#endif
+#ifndef __SIZEOF_SHORT__
+#define __SIZEOF_SHORT__ 2
+#endif
+#ifndef __SSE__
+#define __SSE__ 1
+#endif
+#ifndef __LDBL_MIN_EXP__
+#define __LDBL_MIN_EXP__ (-16381)
+#endif
+#ifndef __INT_LEAST8_MAX__
+#define __INT_LEAST8_MAX__ 0x7f
+#endif
+#ifndef __SIZEOF_INT128__
+#define __SIZEOF_INT128__ 16
+#endif
+#ifndef __LDBL_MAX_10_EXP__
+#define __LDBL_MAX_10_EXP__ 4932
+#endif
+#ifndef __ATOMIC_RELAXED
+#define __ATOMIC_RELAXED 0
+#endif
+#ifndef __DBL_EPSILON__
+#define __DBL_EPSILON__ double(2.22044604925031308085e-16L)
+#endif
+#ifndef _LP64
+#define _LP64 1
+#endif
+#ifndef __INT_LEAST32_TYPE__
+#define __INT_LEAST32_TYPE__ int
+#endif
+#ifndef __SIZEOF_WCHAR_T__
+#define __SIZEOF_WCHAR_T__ 4
+#endif
+#ifndef __UINT64_TYPE__
+#define __UINT64_TYPE__ long unsigned int
+#endif
+#ifndef __INT_FAST8_TYPE__
+#define __INT_FAST8_TYPE__ signed char
+#endif
+#ifndef __GNUC_STDC_INLINE__
+#define __GNUC_STDC_INLINE__ 1
+#endif
+#ifndef __DBL_DECIMAL_DIG__
+#define __DBL_DECIMAL_DIG__ 17
+#endif
+#ifndef __STDC_UTF_32__
+#define __STDC_UTF_32__ 1
+#endif
+#ifndef __FXSR__
+#define __FXSR__ 1
+#endif
+#ifndef __DEC_EVAL_METHOD__
+#define __DEC_EVAL_METHOD__ 2
+#endif
+#ifndef __cpp_runtime_arrays
+#define __cpp_runtime_arrays 198712
+#endif
+#ifndef __INTMAX_MAX__
+#define __INTMAX_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __cpp_alias_templates
+#define __cpp_alias_templates 200704
+#endif
+#ifndef __BYTE_ORDER__
+#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
+#endif
+#ifndef __FLT_DENORM_MIN__
+#define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F
+#endif
+#ifndef __INT8_MAX__
+#define __INT8_MAX__ 0x7f
+#endif
+#ifndef __PIC__
+#define __PIC__ 2
+#endif
+#ifndef __UINT_FAST32_TYPE__
+#define __UINT_FAST32_TYPE__ long unsigned int
+#endif
+#ifndef __CHAR32_TYPE__
+#define __CHAR32_TYPE__ unsigned int
+#endif
+#ifndef __FLT_MAX__
+#define __FLT_MAX__ 3.40282346638528859812e+38F
+#endif
+#ifndef __cpp_constexpr
+#define __cpp_constexpr 201304
+#endif
+#ifndef __INT32_TYPE__
+#define __INT32_TYPE__ int
+#endif
+#ifndef __SIZEOF_DOUBLE__
+#define __SIZEOF_DOUBLE__ 8
+#endif
+#ifndef __cpp_exceptions
+#define __cpp_exceptions 199711
+#endif
+#ifndef __INTMAX_TYPE__
+#define __INTMAX_TYPE__ long int
+#endif
+#ifndef __DEC128_MAX_EXP__
+#define __DEC128_MAX_EXP__ 6145
+#endif
+#ifndef __ATOMIC_CONSUME
+#define __ATOMIC_CONSUME 1
+#endif
+#ifndef __GNUC_MINOR__
+#define __GNUC_MINOR__ 3
+#endif
+#ifndef __GLIBCXX_TYPE_INT_N_0
+#define __GLIBCXX_TYPE_INT_N_0 __int128
+#endif
+#ifndef __UINTMAX_MAX__
+#define __UINTMAX_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __DEC32_MANT_DIG__
+#define __DEC32_MANT_DIG__ 7
+#endif
+#ifndef __DBL_MAX_10_EXP__
+#define __DBL_MAX_10_EXP__ 308
+#endif
+#ifndef __LDBL_DENORM_MIN__
+#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
+#endif
+#ifndef __cpp_generic_lambdas
+#define __cpp_generic_lambdas 201304
+#endif
+#ifndef __STDC__
+#define __STDC__ 1
+#endif
+#ifndef __PTRDIFF_TYPE__
+#define __PTRDIFF_TYPE__ long int
+#endif
+#ifndef __ATOMIC_SEQ_CST
+#define __ATOMIC_SEQ_CST 5
+#endif
+#ifndef __UINT32_TYPE__
+#define __UINT32_TYPE__ unsigned int
+#endif
+#ifndef __UINTPTR_TYPE__
+#define __UINTPTR_TYPE__ long unsigned int
+#endif
+#ifndef __DEC64_SUBNORMAL_MIN__
+#define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD
+#endif
+#ifndef __DEC128_MANT_DIG__
+#define __DEC128_MANT_DIG__ 34
+#endif
+#ifndef __LDBL_MIN_10_EXP__
+#define __LDBL_MIN_10_EXP__ (-4931)
+#endif
+#ifndef __SSE_MATH__
+#define __SSE_MATH__ 1
+#endif
+#ifndef __SIZEOF_LONG_LONG__
+#define __SIZEOF_LONG_LONG__ 8
+#endif
+#ifndef __cpp_user_defined_literals
+#define __cpp_user_defined_literals 200809
+#endif
+#ifndef __GCC_ATOMIC_LLONG_LOCK_FREE
+#define __GCC_ATOMIC_LLONG_LOCK_FREE 2
+#endif
+#ifndef __LDBL_DIG__
+#define __LDBL_DIG__ 18
+#endif
+#ifndef __FLT_DECIMAL_DIG__
+#define __FLT_DECIMAL_DIG__ 9
+#endif
+#ifndef __UINT_FAST16_MAX__
+#define __UINT_FAST16_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __FLT_MIN_10_EXP__
+#define __FLT_MIN_10_EXP__ (-37)
+#endif
+#ifndef __GCC_ATOMIC_SHORT_LOCK_FREE
+#define __GCC_ATOMIC_SHORT_LOCK_FREE 2
+#endif
+#ifndef __UINT_FAST8_TYPE__
+#define __UINT_FAST8_TYPE__ unsigned char
+#endif
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE 1
+#endif
+#ifndef __cpp_init_captures
+#define __cpp_init_captures 201304
+#endif
+#ifndef __ATOMIC_ACQ_REL
+#define __ATOMIC_ACQ_REL 4
+#endif
+#ifndef __ATOMIC_RELEASE
+#define __ATOMIC_RELEASE 3
+#endif
+#endif
+
+// --- Include directories begin --- //
+///usr/include/python3.5m
+///usr/include/c++/6
+///usr/include/x86_64-linux-gnu/c++/6
+///usr/include/c++/6/backward
+///usr/lib/gcc/x86_64-linux-gnu/6/include
+///usr/local/include
+///usr/lib/gcc/x86_64-linux-gnu/6/include-fixed
+///usr/include/x86_64-linux-gnu
+///usr/include
+// --- Include directories end --- //
+
+
+// --- Library directories begin --- //
+///usr/lib/gcc/x86_64-linux-gnu/6/
+///usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/
+///usr/lib/gcc/x86_64-linux-gnu/6/../../../../lib/
+///lib/x86_64-linux-gnu/
+///lib/../lib/
+///usr/lib/x86_64-linux-gnu/
+///usr/lib/../lib/
+///usr/lib/gcc/x86_64-linux-gnu/6/../../../
+///lib/
+///usr/lib/
+// --- Library directories begin --- //
+
+#pragma clang diagnostic pop
diff --git a/knxPython/gcc_Release.h b/knxPython/gcc_Release.h
new file mode 100644
index 0000000..ed07d0c
--- /dev/null
+++ b/knxPython/gcc_Release.h
@@ -0,0 +1,896 @@
+/*
+ This file is only used by IntelliSense (VisualStudio code suggestion system)
+ DO NOT INCLUDE THIS FILE FROM YOUR ACTUAL SOURCE FILES.
+ This file lists the preprocessor macros extracted from your GCC.
+ It is needed for IntelliSense to parse other header files correctly.
+*/
+#if defined(_MSC_VER) || defined (__SYSPROGS_CODESENSE__)
+#pragma clang diagnostic push
+
+#pragma clang diagnostic ignored "-Wreserved-id-macro"
+#ifndef __DBL_MIN_EXP__
+#define __DBL_MIN_EXP__ (-1021)
+#endif
+#ifndef __cpp_attributes
+#define __cpp_attributes 200809
+#endif
+#ifndef __UINT_LEAST16_MAX__
+#define __UINT_LEAST16_MAX__ 0xffff
+#endif
+#ifndef __ATOMIC_ACQUIRE
+#define __ATOMIC_ACQUIRE 2
+#endif
+#ifndef __FLT_MIN__
+#define __FLT_MIN__ 1.17549435082228750797e-38F
+#endif
+#ifndef __GCC_IEC_559_COMPLEX
+#define __GCC_IEC_559_COMPLEX 2
+#endif
+#ifndef __cpp_aggregate_nsdmi
+#define __cpp_aggregate_nsdmi 201304
+#endif
+#ifndef __UINT_LEAST8_TYPE__
+#define __UINT_LEAST8_TYPE__ unsigned char
+#endif
+#ifndef __SIZEOF_FLOAT80__
+#define __SIZEOF_FLOAT80__ 16
+#endif
+#ifndef __CHAR_BIT__
+#define __CHAR_BIT__ 8
+#endif
+#ifndef __UINT8_MAX__
+#define __UINT8_MAX__ 0xff
+#endif
+#ifndef __WINT_MAX__
+#define __WINT_MAX__ 0xffffffffU
+#endif
+#ifndef __cpp_static_assert
+#define __cpp_static_assert 200410
+#endif
+#ifndef __ORDER_LITTLE_ENDIAN__
+#define __ORDER_LITTLE_ENDIAN__ 1234
+#endif
+#ifndef __SIZE_MAX__
+#define __SIZE_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __WCHAR_MAX__
+#define __WCHAR_MAX__ 0x7fffffff
+#endif
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
+#endif
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
+#endif
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
+#endif
+#ifndef __DBL_DENORM_MIN__
+#define __DBL_DENORM_MIN__ double(4.94065645841246544177e-324L)
+#endif
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
+#endif
+#ifndef __GCC_ATOMIC_CHAR_LOCK_FREE
+#define __GCC_ATOMIC_CHAR_LOCK_FREE 2
+#endif
+#ifndef __GCC_IEC_559
+#define __GCC_IEC_559 2
+#endif
+#ifndef __FLT_EVAL_METHOD__
+#define __FLT_EVAL_METHOD__ 0
+#endif
+#ifndef __unix__
+#define __unix__ 1
+#endif
+#ifndef __cpp_binary_literals
+#define __cpp_binary_literals 201304
+#endif
+#ifndef __GCC_ATOMIC_CHAR32_T_LOCK_FREE
+#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
+#endif
+#ifndef __x86_64
+#define __x86_64 1
+#endif
+#ifndef __cpp_variadic_templates
+#define __cpp_variadic_templates 200704
+#endif
+#ifndef __UINT_FAST64_MAX__
+#define __UINT_FAST64_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __SIG_ATOMIC_TYPE__
+#define __SIG_ATOMIC_TYPE__ int
+#endif
+#ifndef __DBL_MIN_10_EXP__
+#define __DBL_MIN_10_EXP__ (-307)
+#endif
+#ifndef __FINITE_MATH_ONLY__
+#define __FINITE_MATH_ONLY__ 0
+#endif
+#ifndef __cpp_variable_templates
+#define __cpp_variable_templates 201304
+#endif
+#ifndef __GNUC_PATCHLEVEL__
+#define __GNUC_PATCHLEVEL__ 0
+#endif
+#ifndef __UINT_FAST8_MAX__
+#define __UINT_FAST8_MAX__ 0xff
+#endif
+#ifndef __DEC64_MAX_EXP__
+#define __DEC64_MAX_EXP__ 385
+#endif
+#ifndef __UINT_LEAST64_MAX__
+#define __UINT_LEAST64_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __SHRT_MAX__
+#define __SHRT_MAX__ 0x7fff
+#endif
+#ifndef __LDBL_MAX__
+#define __LDBL_MAX__ 1.18973149535723176502e+4932L
+#endif
+#ifndef __UINT_LEAST8_MAX__
+#define __UINT_LEAST8_MAX__ 0xff
+#endif
+#ifndef __GCC_ATOMIC_BOOL_LOCK_FREE
+#define __GCC_ATOMIC_BOOL_LOCK_FREE 2
+#endif
+#ifndef __UINTMAX_TYPE__
+#define __UINTMAX_TYPE__ long unsigned int
+#endif
+#ifndef __linux
+#define __linux 1
+#endif
+#ifndef __DEC32_EPSILON__
+#define __DEC32_EPSILON__ 1E-6DF
+#endif
+#ifndef __unix
+#define __unix 1
+#endif
+#ifndef __UINT32_MAX__
+#define __UINT32_MAX__ 0xffffffffU
+#endif
+#if !defined(__GXX_EXPERIMENTAL_CXX0X__) && defined(__SYSPROGS_CODESENSE__)
+#define __GXX_EXPERIMENTAL_CXX0X__ 1
+#endif
+#ifndef __LDBL_MAX_EXP__
+#define __LDBL_MAX_EXP__ 16384
+#endif
+#ifndef __WINT_MIN__
+#define __WINT_MIN__ 0U
+#endif
+#ifndef __linux__
+#define __linux__ 1
+#endif
+#ifndef __SCHAR_MAX__
+#define __SCHAR_MAX__ 0x7f
+#endif
+#ifndef __WCHAR_MIN__
+#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
+#endif
+#ifndef __DBL_DIG__
+#define __DBL_DIG__ 15
+#endif
+#ifndef __GCC_ATOMIC_POINTER_LOCK_FREE
+#define __GCC_ATOMIC_POINTER_LOCK_FREE 2
+#endif
+#ifndef __SIZEOF_INT__
+#define __SIZEOF_INT__ 4
+#endif
+#ifndef __SIZEOF_POINTER__
+#define __SIZEOF_POINTER__ 8
+#endif
+#ifndef __GCC_ATOMIC_CHAR16_T_LOCK_FREE
+#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
+#endif
+#ifndef __USER_LABEL_PREFIX__
+#define __USER_LABEL_PREFIX__
+#endif
+#ifndef __STDC_HOSTED__
+#define __STDC_HOSTED__ 1
+#endif
+#ifndef __LDBL_HAS_INFINITY__
+#define __LDBL_HAS_INFINITY__ 1
+#endif
+#ifndef __FLT_EPSILON__
+#define __FLT_EPSILON__ 1.19209289550781250000e-7F
+#endif
+#ifndef __GXX_WEAK__
+#define __GXX_WEAK__ 1
+#endif
+#ifndef __LDBL_MIN__
+#define __LDBL_MIN__ 3.36210314311209350626e-4932L
+#endif
+#ifndef __DEC32_MAX__
+#define __DEC32_MAX__ 9.999999E96DF
+#endif
+#ifndef __INT32_MAX__
+#define __INT32_MAX__ 0x7fffffff
+#endif
+#ifndef __SIZEOF_LONG__
+#define __SIZEOF_LONG__ 8
+#endif
+#ifndef __STDC_IEC_559__
+#define __STDC_IEC_559__ 1
+#endif
+#ifndef __STDC_ISO_10646__
+#define __STDC_ISO_10646__ 201605L
+#endif
+#ifndef __DECIMAL_DIG__
+#define __DECIMAL_DIG__ 21
+#endif
+#ifndef __gnu_linux__
+#define __gnu_linux__ 1
+#endif
+#ifndef __LDBL_HAS_QUIET_NAN__
+#define __LDBL_HAS_QUIET_NAN__ 1
+#endif
+#ifndef __GNUC__
+#define __GNUC__ 6
+#endif
+#ifndef __GXX_RTTI
+#define __GXX_RTTI 1
+#endif
+#ifndef __pie__
+#define __pie__ 2
+#endif
+#ifndef __MMX__
+#define __MMX__ 1
+#endif
+#ifndef __cpp_delegating_constructors
+#define __cpp_delegating_constructors 200604
+#endif
+#ifndef __FLT_HAS_DENORM__
+#define __FLT_HAS_DENORM__ 1
+#endif
+#ifndef __SIZEOF_LONG_DOUBLE__
+#define __SIZEOF_LONG_DOUBLE__ 16
+#endif
+#ifndef __BIGGEST_ALIGNMENT__
+#define __BIGGEST_ALIGNMENT__ 16
+#endif
+#ifndef __STDC_UTF_16__
+#define __STDC_UTF_16__ 1
+#endif
+#ifndef __DBL_MAX__
+#define __DBL_MAX__ double(1.79769313486231570815e+308L)
+#endif
+#ifndef __cpp_raw_strings
+#define __cpp_raw_strings 200710
+#endif
+#ifndef __INT_FAST32_MAX__
+#define __INT_FAST32_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __DBL_HAS_INFINITY__
+#define __DBL_HAS_INFINITY__ 1
+#endif
+#ifndef __INT64_MAX__
+#define __INT64_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __DEC32_MIN_EXP__
+#define __DEC32_MIN_EXP__ (-94)
+#endif
+#ifndef __INT_FAST16_TYPE__
+#define __INT_FAST16_TYPE__ long int
+#endif
+#ifndef __LDBL_HAS_DENORM__
+#define __LDBL_HAS_DENORM__ 1
+#endif
+//VS2005-2012 treats all files as C++, while VS2013+ can treat C files correctly.
+#if defined(_MSC_VER) && (_MSC_VER < 1800 || defined(__cplusplus))
+#undef __cplusplus
+#define __cplusplus 201402L
+#endif
+#ifndef __cpp_ref_qualifiers
+#define __cpp_ref_qualifiers 200710
+#endif
+#ifndef __DEC128_MAX__
+#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
+#endif
+#ifndef __INT_LEAST32_MAX__
+#define __INT_LEAST32_MAX__ 0x7fffffff
+#endif
+#ifndef __DEC32_MIN__
+#define __DEC32_MIN__ 1E-95DF
+#endif
+#ifndef __DEPRECATED
+#define __DEPRECATED 1
+#endif
+#ifndef __cpp_rvalue_references
+#define __cpp_rvalue_references 200610
+#endif
+#ifndef __DBL_MAX_EXP__
+#define __DBL_MAX_EXP__ 1024
+#endif
+#ifndef __DEC128_EPSILON__
+#define __DEC128_EPSILON__ 1E-33DL
+#endif
+#ifndef __SSE2_MATH__
+#define __SSE2_MATH__ 1
+#endif
+#ifndef __ATOMIC_HLE_RELEASE
+#define __ATOMIC_HLE_RELEASE 131072
+#endif
+#ifndef __PTRDIFF_MAX__
+#define __PTRDIFF_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __amd64
+#define __amd64 1
+#endif
+#ifndef __STDC_NO_THREADS__
+#define __STDC_NO_THREADS__ 1
+#endif
+#ifndef __ATOMIC_HLE_ACQUIRE
+#define __ATOMIC_HLE_ACQUIRE 65536
+#endif
+#ifndef __GNUG__
+#define __GNUG__ 6
+#endif
+#ifndef __LONG_LONG_MAX__
+#define __LONG_LONG_MAX__ 0x7fffffffffffffffLL
+#endif
+#ifndef __SIZEOF_SIZE_T__
+#define __SIZEOF_SIZE_T__ 8
+#endif
+#ifndef __cpp_rvalue_reference
+#define __cpp_rvalue_reference 200610
+#endif
+#ifndef __cpp_nsdmi
+#define __cpp_nsdmi 200809
+#endif
+#ifndef __SIZEOF_WINT_T__
+#define __SIZEOF_WINT_T__ 4
+#endif
+#ifndef __cpp_initializer_lists
+#define __cpp_initializer_lists 200806
+#endif
+#ifndef __cpp_hex_float
+#define __cpp_hex_float 201603
+#endif
+#ifndef __GCC_HAVE_DWARF2_CFI_ASM
+#define __GCC_HAVE_DWARF2_CFI_ASM 1
+#endif
+#ifndef __GXX_ABI_VERSION
+#define __GXX_ABI_VERSION 1010
+#endif
+#ifndef __FLT_MIN_EXP__
+#define __FLT_MIN_EXP__ (-125)
+#endif
+#ifndef __cpp_lambdas
+#define __cpp_lambdas 200907
+#endif
+#ifndef __INT_FAST64_TYPE__
+#define __INT_FAST64_TYPE__ long int
+#endif
+#ifndef __DBL_MIN__
+#define __DBL_MIN__ double(2.22507385850720138309e-308L)
+#endif
+#ifndef __PIE__
+#define __PIE__ 2
+#endif
+#ifndef __LP64__
+#define __LP64__ 1
+#endif
+#ifndef __DECIMAL_BID_FORMAT__
+#define __DECIMAL_BID_FORMAT__ 1
+#endif
+#ifndef __DEC128_MIN__
+#define __DEC128_MIN__ 1E-6143DL
+#endif
+#ifndef __REGISTER_PREFIX__
+#define __REGISTER_PREFIX__
+#endif
+#ifndef __UINT16_MAX__
+#define __UINT16_MAX__ 0xffff
+#endif
+#ifndef __DBL_HAS_DENORM__
+#define __DBL_HAS_DENORM__ 1
+#endif
+#ifndef __UINT8_TYPE__
+#define __UINT8_TYPE__ unsigned char
+#endif
+#ifndef __NO_INLINE__
+#define __NO_INLINE__ 1
+#endif
+#ifndef __FLT_MANT_DIG__
+#define __FLT_MANT_DIG__ 24
+#endif
+#ifndef __VERSION__
+#define __VERSION__ "6.3.0 20170516"
+#endif
+#ifndef __cpp_unicode_characters
+#define __cpp_unicode_characters 200704
+#endif
+#ifndef _STDC_PREDEF_H
+#define _STDC_PREDEF_H 1
+#endif
+#ifndef __cpp_decltype_auto
+#define __cpp_decltype_auto 201304
+#endif
+#ifndef __GCC_ATOMIC_INT_LOCK_FREE
+#define __GCC_ATOMIC_INT_LOCK_FREE 2
+#endif
+#ifndef __FLOAT_WORD_ORDER__
+#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
+#endif
+#ifndef __STDC_IEC_559_COMPLEX__
+#define __STDC_IEC_559_COMPLEX__ 1
+#endif
+#ifndef __DEC64_EPSILON__
+#define __DEC64_EPSILON__ 1E-15DD
+#endif
+#ifndef __ORDER_PDP_ENDIAN__
+#define __ORDER_PDP_ENDIAN__ 3412
+#endif
+#ifndef __DEC128_MIN_EXP__
+#define __DEC128_MIN_EXP__ (-6142)
+#endif
+#ifndef __INT_FAST32_TYPE__
+#define __INT_FAST32_TYPE__ long int
+#endif
+#ifndef __UINT_LEAST16_TYPE__
+#define __UINT_LEAST16_TYPE__ short unsigned int
+#endif
+#ifndef unix
+#define unix 1
+#endif
+#ifndef __INT16_MAX__
+#define __INT16_MAX__ 0x7fff
+#endif
+#ifndef __cpp_rtti
+#define __cpp_rtti 199711
+#endif
+#ifndef __SIZE_TYPE__
+#define __SIZE_TYPE__ long unsigned int
+#endif
+#ifndef __UINT64_MAX__
+#define __UINT64_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __INT8_TYPE__
+#define __INT8_TYPE__ signed char
+#endif
+#ifndef __cpp_digit_separators
+#define __cpp_digit_separators 201309
+#endif
+#ifndef __ELF__
+#define __ELF__ 1
+#endif
+#ifndef __GCC_ASM_FLAG_OUTPUTS__
+#define __GCC_ASM_FLAG_OUTPUTS__ 1
+#endif
+#ifndef __FLT_RADIX__
+#define __FLT_RADIX__ 2
+#endif
+#ifndef __INT_LEAST16_TYPE__
+#define __INT_LEAST16_TYPE__ short int
+#endif
+#ifndef __LDBL_EPSILON__
+#define __LDBL_EPSILON__ 1.08420217248550443401e-19L
+#endif
+#ifndef __GLIBCXX_BITSIZE_INT_N_0
+#define __GLIBCXX_BITSIZE_INT_N_0 128
+#endif
+#ifndef __k8
+#define __k8 1
+#endif
+#ifndef __SIG_ATOMIC_MAX__
+#define __SIG_ATOMIC_MAX__ 0x7fffffff
+#endif
+#ifndef __GCC_ATOMIC_WCHAR_T_LOCK_FREE
+#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
+#endif
+#ifndef __cpp_sized_deallocation
+#define __cpp_sized_deallocation 201309
+#endif
+#ifndef __SIZEOF_PTRDIFF_T__
+#define __SIZEOF_PTRDIFF_T__ 8
+#endif
+#ifndef __x86_64__
+#define __x86_64__ 1
+#endif
+#ifndef __DEC32_SUBNORMAL_MIN__
+#define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF
+#endif
+#ifndef __INT_FAST16_MAX__
+#define __INT_FAST16_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __UINT_FAST32_MAX__
+#define __UINT_FAST32_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __UINT_LEAST64_TYPE__
+#define __UINT_LEAST64_TYPE__ long unsigned int
+#endif
+#ifndef __FLT_HAS_QUIET_NAN__
+#define __FLT_HAS_QUIET_NAN__ 1
+#endif
+#ifndef __FLT_MAX_10_EXP__
+#define __FLT_MAX_10_EXP__ 38
+#endif
+#ifndef __LONG_MAX__
+#define __LONG_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __DEC128_SUBNORMAL_MIN__
+#define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL
+#endif
+#ifndef __FLT_HAS_INFINITY__
+#define __FLT_HAS_INFINITY__ 1
+#endif
+#ifndef __cpp_unicode_literals
+#define __cpp_unicode_literals 200710
+#endif
+#ifndef __UINT_FAST16_TYPE__
+#define __UINT_FAST16_TYPE__ long unsigned int
+#endif
+#ifndef __DEC64_MAX__
+#define __DEC64_MAX__ 9.999999999999999E384DD
+#endif
+#ifndef __CHAR16_TYPE__
+#define __CHAR16_TYPE__ short unsigned int
+#endif
+#ifndef __PRAGMA_REDEFINE_EXTNAME
+#define __PRAGMA_REDEFINE_EXTNAME 1
+#endif
+#ifndef __SEG_FS
+#define __SEG_FS 1
+#endif
+#ifndef __INT_LEAST16_MAX__
+#define __INT_LEAST16_MAX__ 0x7fff
+#endif
+#ifndef __DEC64_MANT_DIG__
+#define __DEC64_MANT_DIG__ 16
+#endif
+#ifndef __UINT_LEAST32_MAX__
+#define __UINT_LEAST32_MAX__ 0xffffffffU
+#endif
+#ifndef __SEG_GS
+#define __SEG_GS 1
+#endif
+#ifndef __GCC_ATOMIC_LONG_LOCK_FREE
+#define __GCC_ATOMIC_LONG_LOCK_FREE 2
+#endif
+#ifndef __INT_LEAST64_TYPE__
+#define __INT_LEAST64_TYPE__ long int
+#endif
+#ifndef __INT16_TYPE__
+#define __INT16_TYPE__ short int
+#endif
+#ifndef __INT_LEAST8_TYPE__
+#define __INT_LEAST8_TYPE__ signed char
+#endif
+#ifndef __DEC32_MAX_EXP__
+#define __DEC32_MAX_EXP__ 97
+#endif
+#ifndef __INT_FAST8_MAX__
+#define __INT_FAST8_MAX__ 0x7f
+#endif
+#ifndef __INTPTR_MAX__
+#define __INTPTR_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef linux
+#define linux 1
+#endif
+#ifndef __cpp_range_based_for
+#define __cpp_range_based_for 200907
+#endif
+#ifndef __SSE2__
+#define __SSE2__ 1
+#endif
+#ifndef __EXCEPTIONS
+#define __EXCEPTIONS 1
+#endif
+#ifndef __LDBL_MANT_DIG__
+#define __LDBL_MANT_DIG__ 64
+#endif
+#ifndef __DBL_HAS_QUIET_NAN__
+#define __DBL_HAS_QUIET_NAN__ 1
+#endif
+#ifndef __SIG_ATOMIC_MIN__
+#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
+#endif
+#ifndef __code_model_small__
+#define __code_model_small__ 1
+#endif
+#ifndef __cpp_return_type_deduction
+#define __cpp_return_type_deduction 201304
+#endif
+#ifndef __k8__
+#define __k8__ 1
+#endif
+#ifndef __INTPTR_TYPE__
+#define __INTPTR_TYPE__ long int
+#endif
+#ifndef __UINT16_TYPE__
+#define __UINT16_TYPE__ short unsigned int
+#endif
+#ifndef __WCHAR_TYPE__
+#define __WCHAR_TYPE__ int
+#endif
+#ifndef __SIZEOF_FLOAT__
+#define __SIZEOF_FLOAT__ 4
+#endif
+#ifndef __pic__
+#define __pic__ 2
+#endif
+#ifndef __UINTPTR_MAX__
+#define __UINTPTR_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __DEC64_MIN_EXP__
+#define __DEC64_MIN_EXP__ (-382)
+#endif
+#ifndef __cpp_decltype
+#define __cpp_decltype 200707
+#endif
+#ifndef __INT_FAST64_MAX__
+#define __INT_FAST64_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __GCC_ATOMIC_TEST_AND_SET_TRUEVAL
+#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
+#endif
+#ifndef __FLT_DIG__
+#define __FLT_DIG__ 6
+#endif
+#ifndef __UINT_FAST64_TYPE__
+#define __UINT_FAST64_TYPE__ long unsigned int
+#endif
+#ifndef __INT_MAX__
+#define __INT_MAX__ 0x7fffffff
+#endif
+#ifndef __amd64__
+#define __amd64__ 1
+#endif
+#ifndef __INT64_TYPE__
+#define __INT64_TYPE__ long int
+#endif
+#ifndef __FLT_MAX_EXP__
+#define __FLT_MAX_EXP__ 128
+#endif
+#ifndef __ORDER_BIG_ENDIAN__
+#define __ORDER_BIG_ENDIAN__ 4321
+#endif
+#ifndef __DBL_MANT_DIG__
+#define __DBL_MANT_DIG__ 53
+#endif
+#ifndef __cpp_inheriting_constructors
+#define __cpp_inheriting_constructors 200802
+#endif
+#ifndef __SIZEOF_FLOAT128__
+#define __SIZEOF_FLOAT128__ 16
+#endif
+#ifndef __INT_LEAST64_MAX__
+#define __INT_LEAST64_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __DEC64_MIN__
+#define __DEC64_MIN__ 1E-383DD
+#endif
+#ifndef __WINT_TYPE__
+#define __WINT_TYPE__ unsigned int
+#endif
+#ifndef __UINT_LEAST32_TYPE__
+#define __UINT_LEAST32_TYPE__ unsigned int
+#endif
+#ifndef __SIZEOF_SHORT__
+#define __SIZEOF_SHORT__ 2
+#endif
+#ifndef __SSE__
+#define __SSE__ 1
+#endif
+#ifndef __LDBL_MIN_EXP__
+#define __LDBL_MIN_EXP__ (-16381)
+#endif
+#ifndef __INT_LEAST8_MAX__
+#define __INT_LEAST8_MAX__ 0x7f
+#endif
+#ifndef __SIZEOF_INT128__
+#define __SIZEOF_INT128__ 16
+#endif
+#ifndef __LDBL_MAX_10_EXP__
+#define __LDBL_MAX_10_EXP__ 4932
+#endif
+#ifndef __ATOMIC_RELAXED
+#define __ATOMIC_RELAXED 0
+#endif
+#ifndef __DBL_EPSILON__
+#define __DBL_EPSILON__ double(2.22044604925031308085e-16L)
+#endif
+#ifndef _LP64
+#define _LP64 1
+#endif
+#ifndef __INT_LEAST32_TYPE__
+#define __INT_LEAST32_TYPE__ int
+#endif
+#ifndef __SIZEOF_WCHAR_T__
+#define __SIZEOF_WCHAR_T__ 4
+#endif
+#ifndef __UINT64_TYPE__
+#define __UINT64_TYPE__ long unsigned int
+#endif
+#ifndef __INT_FAST8_TYPE__
+#define __INT_FAST8_TYPE__ signed char
+#endif
+#ifndef __GNUC_STDC_INLINE__
+#define __GNUC_STDC_INLINE__ 1
+#endif
+#ifndef __DBL_DECIMAL_DIG__
+#define __DBL_DECIMAL_DIG__ 17
+#endif
+#ifndef __STDC_UTF_32__
+#define __STDC_UTF_32__ 1
+#endif
+#ifndef __FXSR__
+#define __FXSR__ 1
+#endif
+#ifndef __DEC_EVAL_METHOD__
+#define __DEC_EVAL_METHOD__ 2
+#endif
+#ifndef __cpp_runtime_arrays
+#define __cpp_runtime_arrays 198712
+#endif
+#ifndef __INTMAX_MAX__
+#define __INTMAX_MAX__ 0x7fffffffffffffffL
+#endif
+#ifndef __cpp_alias_templates
+#define __cpp_alias_templates 200704
+#endif
+#ifndef __BYTE_ORDER__
+#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
+#endif
+#ifndef __FLT_DENORM_MIN__
+#define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F
+#endif
+#ifndef __INT8_MAX__
+#define __INT8_MAX__ 0x7f
+#endif
+#ifndef __PIC__
+#define __PIC__ 2
+#endif
+#ifndef __UINT_FAST32_TYPE__
+#define __UINT_FAST32_TYPE__ long unsigned int
+#endif
+#ifndef __CHAR32_TYPE__
+#define __CHAR32_TYPE__ unsigned int
+#endif
+#ifndef __FLT_MAX__
+#define __FLT_MAX__ 3.40282346638528859812e+38F
+#endif
+#ifndef __cpp_constexpr
+#define __cpp_constexpr 201304
+#endif
+#ifndef __INT32_TYPE__
+#define __INT32_TYPE__ int
+#endif
+#ifndef __SIZEOF_DOUBLE__
+#define __SIZEOF_DOUBLE__ 8
+#endif
+#ifndef __cpp_exceptions
+#define __cpp_exceptions 199711
+#endif
+#ifndef __INTMAX_TYPE__
+#define __INTMAX_TYPE__ long int
+#endif
+#ifndef __DEC128_MAX_EXP__
+#define __DEC128_MAX_EXP__ 6145
+#endif
+#ifndef __ATOMIC_CONSUME
+#define __ATOMIC_CONSUME 1
+#endif
+#ifndef __GNUC_MINOR__
+#define __GNUC_MINOR__ 3
+#endif
+#ifndef __GLIBCXX_TYPE_INT_N_0
+#define __GLIBCXX_TYPE_INT_N_0 __int128
+#endif
+#ifndef __UINTMAX_MAX__
+#define __UINTMAX_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __DEC32_MANT_DIG__
+#define __DEC32_MANT_DIG__ 7
+#endif
+#ifndef __DBL_MAX_10_EXP__
+#define __DBL_MAX_10_EXP__ 308
+#endif
+#ifndef __LDBL_DENORM_MIN__
+#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
+#endif
+#ifndef __cpp_generic_lambdas
+#define __cpp_generic_lambdas 201304
+#endif
+#ifndef __STDC__
+#define __STDC__ 1
+#endif
+#ifndef __PTRDIFF_TYPE__
+#define __PTRDIFF_TYPE__ long int
+#endif
+#ifndef __ATOMIC_SEQ_CST
+#define __ATOMIC_SEQ_CST 5
+#endif
+#ifndef __UINT32_TYPE__
+#define __UINT32_TYPE__ unsigned int
+#endif
+#ifndef __UINTPTR_TYPE__
+#define __UINTPTR_TYPE__ long unsigned int
+#endif
+#ifndef __DEC64_SUBNORMAL_MIN__
+#define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD
+#endif
+#ifndef __DEC128_MANT_DIG__
+#define __DEC128_MANT_DIG__ 34
+#endif
+#ifndef __LDBL_MIN_10_EXP__
+#define __LDBL_MIN_10_EXP__ (-4931)
+#endif
+#ifndef __SSE_MATH__
+#define __SSE_MATH__ 1
+#endif
+#ifndef __SIZEOF_LONG_LONG__
+#define __SIZEOF_LONG_LONG__ 8
+#endif
+#ifndef __cpp_user_defined_literals
+#define __cpp_user_defined_literals 200809
+#endif
+#ifndef __GCC_ATOMIC_LLONG_LOCK_FREE
+#define __GCC_ATOMIC_LLONG_LOCK_FREE 2
+#endif
+#ifndef __LDBL_DIG__
+#define __LDBL_DIG__ 18
+#endif
+#ifndef __FLT_DECIMAL_DIG__
+#define __FLT_DECIMAL_DIG__ 9
+#endif
+#ifndef __UINT_FAST16_MAX__
+#define __UINT_FAST16_MAX__ 0xffffffffffffffffUL
+#endif
+#ifndef __FLT_MIN_10_EXP__
+#define __FLT_MIN_10_EXP__ (-37)
+#endif
+#ifndef __GCC_ATOMIC_SHORT_LOCK_FREE
+#define __GCC_ATOMIC_SHORT_LOCK_FREE 2
+#endif
+#ifndef __UINT_FAST8_TYPE__
+#define __UINT_FAST8_TYPE__ unsigned char
+#endif
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE 1
+#endif
+#ifndef __cpp_init_captures
+#define __cpp_init_captures 201304
+#endif
+#ifndef __ATOMIC_ACQ_REL
+#define __ATOMIC_ACQ_REL 4
+#endif
+#ifndef __ATOMIC_RELEASE
+#define __ATOMIC_RELEASE 3
+#endif
+#ifndef NDEBUG
+#define NDEBUG 1
+#endif
+#ifndef RELEASE
+#define RELEASE 1
+#endif
+#endif
+
+// --- Include directories begin --- //
+///usr/include/c++/6
+///usr/include/x86_64-linux-gnu/c++/6
+///usr/include/c++/6/backward
+///usr/lib/gcc/x86_64-linux-gnu/6/include
+///usr/local/include
+///usr/lib/gcc/x86_64-linux-gnu/6/include-fixed
+///usr/include/x86_64-linux-gnu
+///usr/include
+///usr/include/python3.5m
+// --- Include directories end --- //
+
+
+// --- Library directories begin --- //
+///usr/lib/gcc/x86_64-linux-gnu/6/
+///usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/
+///usr/lib/gcc/x86_64-linux-gnu/6/../../../../lib/
+///lib/x86_64-linux-gnu/
+///lib/../lib/
+///usr/lib/x86_64-linux-gnu/
+///usr/lib/../lib/
+///usr/lib/gcc/x86_64-linux-gnu/6/../../../
+///lib/
+///usr/lib/
+// --- Library directories begin --- //
+
+#pragma clang diagnostic pop
diff --git a/knxPython/knxPython-Debug.vgdbsettings b/knxPython/knxPython-Debug.vgdbsettings
new file mode 100644
index 0000000..e701a62
--- /dev/null
+++ b/knxPython/knxPython-Debug.vgdbsettings
@@ -0,0 +1,141 @@
+
+
+ Debug
+
+
+
+ RemoteUnix
+
+
+ localhost
+ LinuxSubsystem
+ Linux
+
+ false
+ false
+ false
+ false
+ false
+ $(ProjectDir)
+
+
+
+ com.sysprogs.toolchain.default-gcc
+
+ 0
+
+
+
+ DEBUG
+ Debug
+ knx
+
+ false
+
+ BuildMachine
+ BuiltinShortcut
+
+ ninja
+
+ $(BuildDir)
+
+
+
+ false
+
+ BuildMachine
+ BuiltinShortcut
+
+ $(ToolchainCMake)
+
+
+ true
+ false
+ false
+ Ninja
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ Default
+
+
+
+ true
+
+
+
+
+ Unknown
+
+ true
+ true
+ true
+
+
+
+ false
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ None
+ false
+ false
+
+ true
+ false
+ false
+ false
+ 0
+
+
+ $(SourceDir)/main.py
+ 2000
+
+ PYTHONPATH=%PYTHONPATH%:$(SourceDir)/$(ConfigurationName)
+ python3
+ true
+ false
+ false
+
+ false
+ Local
+ false
+ false
+ Auto
+ true
+ false
+
+
\ No newline at end of file
diff --git a/knxPython/knxPython-Release.vgdbsettings b/knxPython/knxPython-Release.vgdbsettings
new file mode 100644
index 0000000..e5d8aed
--- /dev/null
+++ b/knxPython/knxPython-Release.vgdbsettings
@@ -0,0 +1,137 @@
+
+
+ Release
+
+
+
+ RemoteUnix
+
+
+ localhost
+ LinuxSubsystem
+ Linux
+
+ false
+ false
+ false
+ false
+ false
+ $(ProjectDir)
+
+
+
+ com.sysprogs.toolchain.default-gcc
+
+ 0
+
+
+
+ RELWITHDEBINFO
+ Release
+
+ false
+
+ BuildMachine
+ BuiltinShortcut
+
+ ninja
+
+ $(BuildDir)
+
+
+
+ false
+
+ BuildMachine
+ BuiltinShortcut
+
+ $(ToolchainCMake)
+
+
+ true
+ false
+ false
+ Ninja
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ Default
+
+
+
+ true
+
+
+
+ Unknown
+
+ true
+ true
+ true
+
+
+
+ false
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ None
+ false
+ false
+
+ true
+ false
+ false
+ false
+ 0
+
+
+ $(SourceDir)/main.py
+ 2000
+
+ PYTHONPATH=%PYTHONPATH%:$(SourceDir)/$(ConfigurationName)
+ python3
+ true
+ false
+ false
+
+ false
+ Local
+ false
+ false
+ Auto
+ true
+ false
+
+
\ No newline at end of file
diff --git a/knxPython/knxPython.vcxproj b/knxPython/knxPython.vcxproj
new file mode 100644
index 0000000..7170bc0
--- /dev/null
+++ b/knxPython/knxPython.vcxproj
@@ -0,0 +1,142 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+ 15.0
+ {68FCB2F7-7A74-43A0-8CBE-36CB25020584}
+
+
+
+ Makefile
+ true
+ v141
+
+
+ Makefile
+ false
+ v141
+
+
+ com.sysprogs.toolchain.default-gcc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\python3.5m;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\c++\6;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\x86_64-linux-gnu\c++\6;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\c++\6\backward;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\lib\gcc\x86_64-linux-gnu\6\include;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\local\include;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\lib\gcc\x86_64-linux-gnu\6\include-fixed;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\x86_64-linux-gnu;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include;..\src;$(NMakeIncludeSearchPath)
+ $(ProjectDir)\gcc_Debug.h;$(VISUALGDB_DIR)\gcc_compat.h;$(NMakeForcedIncludes)
+ "$(VISUALGDB_DIR)\VisualGDB.exe" /build "$(ProjectPath)" "/solution:$(SolutionPath)" "/config:$(Configuration)" "/platform:$(Platform)"
+ "$(VISUALGDB_DIR)\VisualGDB.exe" /clean "$(ProjectPath)" "/solution:$(SolutionPath)" "/config:$(Configuration)" "/platform:$(Platform)"
+ "$(VISUALGDB_DIR)\VisualGDB.exe" /rebuild "$(ProjectPath)" "/solution:$(SolutionPath)" "/config:$(Configuration)" "/platform:$(Platform)"
+ $(ProjectDir)knxPython-Debug.vgdbsettings
+
+
+
+ __VisualGDB_CFG_Debug;$(NMakePreprocessorDefinitions)
+
+
+ $(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\c++\6;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\x86_64-linux-gnu\c++\6;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\c++\6\backward;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\lib\gcc\x86_64-linux-gnu\6\include;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\local\include;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\lib\gcc\x86_64-linux-gnu\6\include-fixed;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\x86_64-linux-gnu;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\python3.5m;$(NMakeIncludeSearchPath)
+ $(ProjectDir)\gcc_Release.h;$(VISUALGDB_DIR)\gcc_compat.h;$(NMakeForcedIncludes)
+ __VisualGDB_CFG_Release;$(NMakePreprocessorDefinitions)
+ "$(VISUALGDB_DIR)\VisualGDB.exe" /build "$(ProjectPath)" "/solution:$(SolutionPath)" "/config:$(Configuration)" "/platform:$(Platform)"
+ "$(VISUALGDB_DIR)\VisualGDB.exe" /clean "$(ProjectPath)" "/solution:$(SolutionPath)" "/config:$(Configuration)" "/platform:$(Platform)"
+ "$(VISUALGDB_DIR)\VisualGDB.exe" /rebuild "$(ProjectPath)" "/solution:$(SolutionPath)" "/config:$(Configuration)" "/platform:$(Platform)"
+ $(ProjectDir)knxPython-Release.vgdbsettings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/knxPython/knxPython.vcxproj.filters b/knxPython/knxPython.vcxproj.filters
new file mode 100644
index 0000000..ac7acbf
--- /dev/null
+++ b/knxPython/knxPython.vcxproj.filters
@@ -0,0 +1,221 @@
+
+
+
+
+ {bc07234d-6893-4fc7-b48a-c5e380b556fc}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {5e6d3a3e-54cc-42a3-b9fe-e38d28131f2c}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {1a42e2a3-aaf9-4fb5-979e-e5e0e1b08066}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+ {2b5bbab2-2018-429a-86e7-9c7acc39c6bd}
+
+
+ {7e69dfe2-4c9f-45d6-ac01-da91e2fca1d6}
+
+
+ {d0e1ff81-b680-49ee-a4db-64ebb9748e39}
+
+
+
+
+ Source files
+
+
+ Source files
+
+
+ VisualGDB settings
+
+
+ VisualGDB settings
+
+
+
+
+ Source files
+
+
+ Source files
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+ Source files\knx
+
+
+
+
+ Header files
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+ Header files\knx
+
+
+
\ No newline at end of file
diff --git a/knxPython/knxmodule.cpp b/knxPython/knxmodule.cpp
new file mode 100644
index 0000000..d7e87c4
--- /dev/null
+++ b/knxPython/knxmodule.cpp
@@ -0,0 +1,174 @@
+#include
+#include
+#include
+#include
+#include
+
+#include "linux_platform.h"
+#include "knx/bau57B0.h"
+#include "knx/group_object_table_object.h"
+
+
+LinuxPlatform platfrom;
+Bau57B0 bau(platfrom);
+
+#if 1 // this code will go to python later
+float currentValue = 0;
+float maxValue = 0;
+float minValue = RAND_MAX;
+long lastsend = 0;
+
+GroupObject groupObjects[]
+{
+ GroupObject(2),
+ GroupObject(2),
+ GroupObject(2),
+ GroupObject(1)
+}
+;
+#define CURR groupObjects[0]
+#define MAX groupObjects[1]
+#define MIN groupObjects[2]
+#define RESET groupObjects[3]
+
+void measureTemp()
+{
+ long now = platfrom.millis();
+ if ((now - lastsend) < 2000)
+ return;
+
+ lastsend = now;
+ int r = rand();
+ currentValue = (r * 1.0) / (RAND_MAX * 1.0);
+ currentValue *= 100 * 100;
+
+ CURR.objectWrite(currentValue);
+
+ if (currentValue > maxValue)
+ {
+ maxValue = currentValue;
+ MAX.objectWrite(maxValue);
+ }
+
+ if (currentValue < minValue)
+ {
+ minValue = currentValue;
+ MIN.objectWrite(minValue);
+ }
+}
+
+void resetCallback(GroupObject& go)
+{
+ if (go.objectReadBool())
+ {
+ maxValue = 0;
+ minValue = 10000;
+ }
+}
+
+void appLoop()
+{
+ if (!bau.configured())
+ return;
+
+ measureTemp();
+}
+
+void setup()
+{
+ srand((unsigned int)time(NULL));
+ bau.readMemory();
+
+ GroupObjectTableObject& got(bau.groupObjectTable());
+ got.groupObjects(groupObjects, 4);
+
+ DeviceObject& devObj(bau.deviceObject());
+ devObj.manufacturerId(0xfa);
+
+ RESET.updateHandler = resetCallback;
+
+
+ if (bau.parameters().loadState() == LS_LOADED)
+ {
+ printf("Timeout: %d\n", bau.parameters().getWord(0));
+ printf("Zykl. senden: %d\n", bau.parameters().getByte(2));
+ printf("Min/Max senden: %d\n", bau.parameters().getByte(3));
+ printf("Aenderung senden: %d\n", bau.parameters().getByte(4));
+ printf("Abgleich %d\n", bau.parameters().getByte(5));
+ }
+ bau.enabled(true);
+}
+#endif
+
+static void* loop(void* x)
+{
+ while (1)
+ {
+ bau.loop();
+ appLoop();
+ platfrom.mdelay(100);
+ }
+
+ pthread_exit(NULL);
+}
+
+static pthread_t workerThread;
+
+static PyObject* Start(PyObject* self, PyObject* args)
+{
+ if (!PyArg_ParseTuple(args, ""))
+ return NULL;
+
+ setup();
+
+ int res = pthread_create(&workerThread, NULL, loop, NULL);
+ if (res)
+ {
+ printf("error %d\n", res);
+ return NULL;
+ }
+
+ Py_RETURN_NONE;
+}
+
+static PyObject* ProgramMode(PyObject* self, PyObject* args)
+{
+ if (PyArg_ParseTuple(args, ""))
+ {
+ //no arguments
+ return Py_BuildValue("i", bau.deviceObject().progMode());
+ }
+ PyErr_Clear();
+ int value = 0;
+ if (!PyArg_ParseTuple(args, "i", &value))
+ return NULL;
+ bau.deviceObject().progMode(value);
+ return Py_BuildValue("i", bau.deviceObject().progMode());
+}
+
+static PyMethodDef knxMethods[] =
+{
+ {"Start", Start, METH_VARARGS, "Start knx handling thread." },
+ {"ProgramMode", ProgramMode, METH_VARARGS, "Activate/deactivate programing mode." },
+ { NULL, NULL, 0, NULL } /* End of list */
+};
+
+
+static struct PyModuleDef knxModule = {
+ PyModuleDef_HEAD_INIT,
+ "knx",
+ NULL,
+ 0,
+ knxMethods,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+PyMODINIT_FUNC PyInit_knx(void)
+{
+ PyObject* m = PyModule_Create(&knxModule);
+ return m;
+}
+
diff --git a/knxPython/main.py b/knxPython/main.py
new file mode 100644
index 0000000..43141aa
--- /dev/null
+++ b/knxPython/main.py
@@ -0,0 +1,17 @@
+import knx
+import time
+import sys
+
+print("start")
+while True:
+ time.sleep(1)
+ cmd = sys.stdin.read(1)
+ if cmd == 'q':
+ break
+ elif cmd == 's':
+ print("start knx")
+ name = knx.Start()
+ elif cmd == 'p':
+ currentMode = knx.ProgramMode(not knx.ProgramMode())
+ print("set programming mode to " + str(currentMode))
+print("end")
\ No newline at end of file
diff --git a/visualstudio/knx-bme680.vgdbproj b/visualstudio/knx-bme680.vgdbproj
index f9e7207..79ddb76 100644
--- a/visualstudio/knx-bme680.vgdbproj
+++ b/visualstudio/knx-bme680.vgdbproj
@@ -1,6 +1,6 @@
- Release
+ Debug
diff --git a/visualstudio/knx-linux-Debug.vgdbsettings b/visualstudio/knx-linux-Debug.vgdbsettings
index d3e6100..8b32dfc 100644
--- a/visualstudio/knx-linux-Debug.vgdbsettings
+++ b/visualstudio/knx-linux-Debug.vgdbsettings
@@ -1,6 +1,6 @@
- Release
+ Debug
@@ -78,10 +78,16 @@
- Unknown
+ True
true
false
+
+ Enabled
+ true
+ true
+ true
+