diff --git a/examples/knx-demo/knx-demo.ino b/examples/knx-demo/knx-demo.ino
index b437867..8786799 100644
--- a/examples/knx-demo/knx-demo.ino
+++ b/examples/knx-demo/knx-demo.ino
@@ -70,7 +70,7 @@ void setup()
knx.readMemory();
// register callback for reset GO
- goReset.updateHandler = resetCallback;
+ goReset.callback(resetCallback);
// print values of parameters if device is already configured
if (knx.configured())
diff --git a/knxPython/CMakeLists.txt b/knxPython/CMakeLists.txt
index 9849bd7..f3ea501 100644
--- a/knxPython/CMakeLists.txt
+++ b/knxPython/CMakeLists.txt
@@ -8,4 +8,4 @@ add_subdirectory(pybind11)
pybind11_add_module(knx ../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/platform.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)
-include_directories(../src)
\ No newline at end of file
+include_directories(../src pybind11/include)
diff --git a/knxPython/CMakeLists.txt.old b/knxPython/CMakeLists.txt.old
index 1e0f970..9849bd7 100644
--- a/knxPython/CMakeLists.txt.old
+++ b/knxPython/CMakeLists.txt.old
@@ -4,8 +4,8 @@
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 "")
+add_subdirectory(pybind11)
+
+pybind11_add_module(knx ../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/platform.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)
+
+include_directories(../src)
\ No newline at end of file
diff --git a/knxPython/knxPython.vcxproj b/knxPython/knxPython.vcxproj
index e01fb5a..a1237ae 100644
--- a/knxPython/knxPython.vcxproj
+++ b/knxPython/knxPython.vcxproj
@@ -44,7 +44,7 @@
- $(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\python3.5dm;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\python3.5;$(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;..\pybind11\include;$(NMakeIncludeSearchPath)
+ $(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\python3.5dm;$(LOCALAPPDATA)\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\usr\include\python3.5;$(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;..\pybind11\include;pybind11\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)"
diff --git a/knxPython/knxmodule.cpp b/knxPython/knxmodule.cpp
index ebbbb8c..f8af2ef 100644
--- a/knxPython/knxmodule.cpp
+++ b/knxPython/knxmodule.cpp
@@ -1,5 +1,6 @@
#include
#include
+#include
namespace py = pybind11;
@@ -15,96 +16,14 @@ namespace py = pybind11;
#include "knx/bau57B0.h"
#include "knx/group_object_table_object.h"
-
LinuxPlatform platform;
Bau57B0 bau(platform);
-#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 = platform.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;
-
- bau.enabled(true);
-}
-#endif
-
-bool threadEnabled = false;
static void loop()
{
while (1)
{
bau.loop();
- //appLoop();
platform.mdelay(100);
}
}
@@ -117,7 +36,10 @@ static void Start()
if (started)
return;
- setup();
+ started = true;
+
+ bau.readMemory();
+ bau.enabled(true);
workerThread = std::thread(loop);
workerThread.detach();
@@ -142,17 +64,32 @@ static void RegisterGroupObjects(std::vector& gos)
PYBIND11_MAKE_OPAQUE(std::vector);
-PYBIND11_MODULE(knx, m) {
- m.doc() = "wrapper for knx device lib"; // optional module docstring
+PYBIND11_MODULE(knx, m)
+{
+ m.doc() = "wrapper for knx device lib"; // optional module docstring
py::bind_vector>(m, "GroupObjectList");
m.def("Start", &Start, "Start knx handling thread.");
- m.def("ProgramMode", (bool (*)())&ProgramMode, "get programing mode active.");
+ m.def("ProgramMode", (bool(*)())&ProgramMode, "get programing mode active.");
m.def("ProgramMode", (bool(*)(bool))&ProgramMode, "Activate / deactivate programing mode.");
m.def("RegisterGroupObjects", &RegisterGroupObjects);
- py::class_(m, "GroupObject")
+ py::class_(m, "GroupObject", py::dynamic_attr())
.def(py::init())
- .def("objectWrite", (void(GroupObject::*)(float))&GroupObject::objectWrite);
+ .def("objectWrite", (void(GroupObject::*)(float))&GroupObject::objectWrite)
+ .def("asap", &GroupObject::asap)
+ .def("size", &GroupObject::valueSize)
+ .def_property("value",
+ [](GroupObject& go) { return py::bytes((const char*)go.valueRef(), go.valueSize()); },
+ [](GroupObject& go, py::bytes bytesValue)
+ {
+ const auto value = static_cast(bytesValue);
+ if (value.length() != go.valueSize())
+ throw std::length_error("bytesValue");
+
+ auto valueRef = go.valueRef();
+ memcpy(valueRef, value.c_str(), go.valueSize());
+ })
+ .def("callBack", (void(GroupObject::*)(GroupObjectUpdatedHandler))&GroupObject::callback);
}
\ No newline at end of file
diff --git a/knxPython/main.py b/knxPython/main.py
index 39e104b..07b859a 100644
--- a/knxPython/main.py
+++ b/knxPython/main.py
@@ -2,6 +2,9 @@ import knx
import time
import sys
+def updated(g1):
+ print(g1.value)
+
print("start")
gos = knx.GroupObjectList()
gos.append(knx.GroupObject(2))
@@ -9,6 +12,11 @@ gos.append(knx.GroupObject(2))
gos.append(knx.GroupObject(2))
gos.append(knx.GroupObject(1))
curr = gos[0]
+min = gos[1]
+max = gos[2]
+reset = gos[3]
+reset.callBack(updated)
+
knx.RegisterGroupObjects(gos)
knx.Start()
while True:
@@ -16,15 +24,11 @@ while True:
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))
elif cmd == 'w':
cmd = sys.stdin.read(4)
- print(cmd)
value = float(cmd)
curr.objectWrite(value)
print("wrote " + str(value) + " to curr")
diff --git a/src/knx/bau_systemB.cpp b/src/knx/bau_systemB.cpp
index 0dceee4..8fee035 100644
--- a/src/knx/bau_systemB.cpp
+++ b/src/knx/bau_systemB.cpp
@@ -83,8 +83,9 @@ void BauSystemB::updateGroupObject(GroupObject & go, uint8_t * data, uint8_t len
memcpy(goData, data, length);
go.commFlag(cfUpdate);
- if (go.updateHandler)
- go.updateHandler(go);
+ GroupObjectUpdatedHandler handler = go.callback();
+ if (handler)
+ handler(go);
}
void BauSystemB::readMemory()
diff --git a/src/knx/device_object.h b/src/knx/device_object.h
index c727e54..dcc594c 100644
--- a/src/knx/device_object.h
+++ b/src/knx/device_object.h
@@ -43,7 +43,7 @@ private:
uint8_t _routingCount;
uint8_t _prgMode;
uint16_t _ownAddress;
- uint16_t _manufacturerId;
+ uint16_t _manufacturerId = 0xfa; //Default to KNXA
uint32_t _bauNumber;
char _orderNumber[10];
uint8_t _hardwareType[6];
diff --git a/src/knx/group_object.cpp b/src/knx/group_object.cpp
index a6df977..75b1ecf 100644
--- a/src/knx/group_object.cpp
+++ b/src/knx/group_object.cpp
@@ -7,10 +7,11 @@
GroupObject::GroupObject(uint8_t size)
{
_data = new uint8_t[size];
+ memset(_data, 0, size);
_commFlag = Ok;
_table = 0;
_dataLength = size;
- updateHandler = 0;
+ _updateHandler = 0;
}
GroupObject::GroupObject(const GroupObject& other)
@@ -20,7 +21,7 @@ GroupObject::GroupObject(const GroupObject& other)
_table = other._table;
_dataLength = other._dataLength;
_asap = other._asap;
- updateHandler = other.updateHandler;
+ _updateHandler = other._updateHandler;
memcpy(_data, other._data, _dataLength);
}
@@ -252,3 +253,15 @@ void GroupObject::objectWrite(float value)
uint32_t tmp = value * 100;
objectWriteFloatDpt9(tmp);
}
+
+
+void GroupObject::callback(GroupObjectUpdatedHandler handler)
+{
+ _updateHandler = handler;
+}
+
+
+GroupObjectUpdatedHandler GroupObject::callback()
+{
+ return _updateHandler;
+}
diff --git a/src/knx/group_object.h b/src/knx/group_object.h
index 9a17278..1ca095a 100644
--- a/src/knx/group_object.h
+++ b/src/knx/group_object.h
@@ -4,6 +4,7 @@
#include
#include "knx_types.h"
+
class GroupObjectTableObject;
enum ComFlag
@@ -17,7 +18,14 @@ enum ComFlag
};
class GroupObject;
-typedef void (*GroupObjectUpdatedHandler)(GroupObject& go);
+
+#ifdef __linux__
+#include
+typedef std::function GroupObjectUpdatedHandler;
+#else
+typedef void(*GroupObjectUpdatedHandler)(GroupObject& go);
+#endif
+
class GroupObject
{
@@ -109,8 +117,10 @@ public:
size_t sizeInTelegram();
uint8_t* valueRef();
uint16_t asap();
- GroupObjectUpdatedHandler updateHandler;
+ void callback(GroupObjectUpdatedHandler hanlder);
+ GroupObjectUpdatedHandler callback();
private:
+ GroupObjectUpdatedHandler _updateHandler;
size_t goSize();
uint16_t _asap;
ComFlag _commFlag;
diff --git a/src/linux_platform.cpp b/src/linux_platform.cpp
index 2f2f693..65265a6 100644
--- a/src/linux_platform.cpp
+++ b/src/linux_platform.cpp
@@ -218,7 +218,7 @@ void LinuxPlatform::doMemoryMapping()
_fd = open("flash.bin", O_RDWR | O_CREAT, S_IRWXU | S_IRGRP | S_IROTH);
if (_fd < 0)
{
- perror("Error in file opening");
+ puts("Error in file opening");
//exit(-1);
}
@@ -226,7 +226,7 @@ void LinuxPlatform::doMemoryMapping()
uint32_t ret = fstat(_fd, &st);
if (ret < 0)
{
- perror("Error in fstat");
+ puts("Error in fstat");
//exit(-1);
}
@@ -235,7 +235,7 @@ void LinuxPlatform::doMemoryMapping()
{
if (ftruncate(_fd, FLASHSIZE) != 0)
{
- perror("Error extending file");
+ puts("Error extending file");
//exit(-1);
}
len_file = FLASHSIZE;
@@ -250,7 +250,7 @@ void LinuxPlatform::doMemoryMapping()
if (addr == MAP_FAILED)
{
- perror("Error in mmap");
+ puts("Error in mmap");
//exit(-1);
}
_mappedFile = addr;
@@ -308,9 +308,10 @@ uint8_t* LinuxPlatform::allocMemory(size_t size)
throw std::overflow_error("MAX_MEM was to small");
return addr;
}
-#endif
void LinuxPlatform::freeMemory(uint8_t* ptr)
{
/* do nothing. Memory is freed on restart()*/
}
+#endif
+
diff --git a/src/main.cpp b/src/main.cpp
index d0094f0..c01a1cd 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -75,18 +75,10 @@ void setup()
srand((unsigned int)time(NULL));
bau.readMemory();
- uint8_t hwType[] = { 0x0, 0x0, 0x8, 0x0, 0x0, 0x2 };
GroupObjectTableObject& got(bau.groupObjectTable());
got.groupObjects(groupObjects, 4);
- DeviceObject& devObj(bau.deviceObject());
- devObj.manufacturerId(0xfa);
- devObj.bauNumber(0xdeadbeef);
- devObj.orderNumber("Coolstuff");
- devObj.hardwareType(hwType);
- devObj.version(0x0020);
-
- RESET.updateHandler = resetCallback;
+ RESET.callback(resetCallback);
if (bau.deviceObject().induvidualAddress() == 0)
bau.deviceObject().progMode(true);
diff --git a/visualstudio/knx-demo.vgdbproj b/visualstudio/knx-demo.vgdbproj
index 0dc1c7e..a93d72a 100644
--- a/visualstudio/knx-demo.vgdbproj
+++ b/visualstudio/knx-demo.vgdbproj
@@ -171,116 +171,6 @@
-
- NodeMCU 1 0 (ESP-12E Module)
-
-
-
-
-
-
-
-
- false
- false
- false
- false
- false
- false
- false
- false
- false
-
- false
- false
- false
- false
- false
- false
- true
- false
- None
- false
- false
- main
- true
- false
- false
- false
- 0
-
-
- gdbstub
-
- 74880
- 115200
- 50
- !DTR;RTS;SLEEP;DTR;!RTS;SLEEP;!DTR;SLEEP
- Auto
- false
-
- size4M
- freq40M
- QIO
-
-
-
- true
- Disabled
- 0
- false
- false
- true
- false
- false
-
- _estack
- 0
- false
- true
-
-
- esp8266:esp8266:nodemcuv2
- COM7
-
-
-
- CpuFrequency
- 80
-
-
- VTable
- flash
-
-
- FlashSize
- 4M1M
-
-
- LwIPVariant
- v2mss536
-
-
- Debug
- Disabled
-
-
- DebugLevel
- None____
-
-
- FlashErase
- none
-
-
- UploadSpeed
- 115200
-
-
-
- Sketch
-
-
Arduino Genuino Zero (Native USB Port)
@@ -338,6 +228,100 @@
Sketch
+
+ NodeMCU 1 0 (ESP-12E Module)
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ None
+ false
+ false
+ main
+ true
+ false
+ false
+ false
+ 0
+
+
+ true
+ Auto
+ 0
+ false
+ false
+ true
+ false
+ false
+
+ _estack
+ 0
+ false
+ true
+
+
+ esp8266:esp8266:nodemcuv2
+
+
+
+ xtal
+ 80
+
+
+ vt
+ flash
+
+
+ exception
+ enabled
+
+
+ eesz
+ 4M
+
+
+ ip
+ lm2f
+
+
+ dbg
+ Disabled
+
+
+ lvl
+ None____
+
+
+ wipe
+ none
+
+
+ baud
+ 115200
+
+
+
+ Sketch
+
+
\ No newline at end of file
diff --git a/visualstudio/knx.sln b/visualstudio/knx.sln
index 6a3f9cb..eb7e8f4 100644
--- a/visualstudio/knx.sln
+++ b/visualstudio/knx.sln
@@ -105,36 +105,36 @@ Global
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|Arduino Genuino Zero (Native USB Port).ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|NodeMCU 1 0 (ESP-12E Module).Build.0 = Debug|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|VisualGDB.ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|x64.ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|x86.ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|VisualGDB.ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|x64.ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|x86.ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|VisualGDB.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|VisualGDB.Build.0 = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|x64.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|x64.Build.0 = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|x86.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|x86.Build.0 = Release|NodeMCU 1 0 (ESP-12E Module)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|VisualGDB.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|VisualGDB.Build.0 = Release|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|x64.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|x64.Build.0 = Release|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|x86.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|x86.Build.0 = Release|Arduino Genuino Zero (Native USB Port)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|VisualGDB.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|x64.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|x86.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|VisualGDB.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|x64.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|x86.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module)
{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|VisualGDB.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|VisualGDB.Build.0 = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|x64.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|x64.Build.0 = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|x86.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module)
- {6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|x86.Build.0 = Release|NodeMCU 1 0 (ESP-12E Module)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|VisualGDB.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|VisualGDB.Build.0 = Release|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|x64.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|x64.Build.0 = Release|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|x86.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port)
+ {6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|x86.Build.0 = Release|Arduino Genuino Zero (Native USB Port)
{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Debug|Arduino Genuino Zero (Native USB Port).ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port)
{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Debug|Arduino Genuino Zero (Native USB Port).Build.0 = Debug|Arduino Genuino Zero (Native USB Port)
{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Debug|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module)