From 6f9d7c6f9fadf36f3fabd56e967593cd10ce3af4 Mon Sep 17 00:00:00 2001 From: wn Date: Fri, 17 Jan 2014 22:00:39 +0100 Subject: [PATCH] initial --- .cproject | 63 ++++++ .hgignore | 3 + .project | 54 +++++ .settings/language.settings.xml | 13 ++ .settings/org.eclipse.cdt.core.prefs | 297 +++++++++++++++++++++++++++ MeterBusPowerMaster.cpp | 34 +++ MeterBusPowerMaster.h | 29 +++ cmd.cpp | 97 +++++++++ cmd.h | 46 +++++ fatal.cpp | 11 + fatal.h | 15 ++ mBusDialog.h | 20 ++ meterBusMaster.cpp | 232 +++++++++++++++++++++ meterBusMaster.h | 61 ++++++ test.cpp | 7 + test.h | 14 ++ uptime.cpp | 45 ++++ uptime.h | 39 ++++ 18 files changed, 1080 insertions(+) create mode 100644 .cproject create mode 100644 .hgignore create mode 100644 .project create mode 100644 .settings/language.settings.xml create mode 100644 .settings/org.eclipse.cdt.core.prefs create mode 100644 MeterBusPowerMaster.cpp create mode 100644 MeterBusPowerMaster.h create mode 100644 cmd.cpp create mode 100644 cmd.h create mode 100644 fatal.cpp create mode 100644 fatal.h create mode 100644 mBusDialog.h create mode 100644 meterBusMaster.cpp create mode 100644 meterBusMaster.h create mode 100644 test.cpp create mode 100644 test.h create mode 100644 uptime.cpp create mode 100644 uptime.h diff --git a/.cproject b/.cproject new file mode 100644 index 0000000..a7dbb50 --- /dev/null +++ b/.cproject @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.hgignore b/.hgignore new file mode 100644 index 0000000..b16f296 --- /dev/null +++ b/.hgignore @@ -0,0 +1,3 @@ + +syntax: regexp +^Release$ \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..59dee40 --- /dev/null +++ b/.project @@ -0,0 +1,54 @@ + + + MeterBusPowerMaster + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + it.baeyens.arduinonature + + + + arduino/core + 2 + ArduinoPlatformPath/cores/arduino + + + arduino/variant + 2 + ArduinoPinPath/micro + + + + + ArduinoHardwareLibPath + file:/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/libraries + + + ArduinoPinPath + file:/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/variants + + + ArduinoPlatformPath + file:/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr + + + diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml new file mode 100644 index 0000000..2b7ad02 --- /dev/null +++ b/.settings/language.settings.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.settings/org.eclipse.cdt.core.prefs b/.settings/org.eclipse.cdt.core.prefs new file mode 100644 index 0000000..6646c0d --- /dev/null +++ b/.settings/org.eclipse.cdt.core.prefs @@ -0,0 +1,297 @@ +eclipse.preferences.version=1 +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.ARCHIVE_FILE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.ARCHIVE_FILE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.ARCHIVE_FILE/value=arduino.ar +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.EXTENDED_FUSES/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.EXTENDED_FUSES/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.EXTENDED_FUSES/value=0xcb +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.FILE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.FILE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.FILE/value=caterina/Caterina-Micro.hex +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.HIGH_FUSES/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.HIGH_FUSES/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.HIGH_FUSES/value=0xd8 +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.LOCK_BITS/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.LOCK_BITS/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.LOCK_BITS/value=0x2F +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.LOW_FUSES/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.LOW_FUSES/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.LOW_FUSES/value=0xff +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.TOOL/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.TOOL/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.TOOL/value=avrdude +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.UNLOCK_BITS/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.UNLOCK_BITS/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BOOTLOADER.UNLOCK_BITS/value=0x3F +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.CORE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.CORE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.CORE/value=arduino +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.EXTRA_FLAGS/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.EXTRA_FLAGS/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.EXTRA_FLAGS/value=-DUSB_VID\=${A.BUILD.VID} -DUSB_PID\=${A.BUILD.PID} +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.F_CPU/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.F_CPU/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.F_CPU/value=16000000L +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.MCU/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.MCU/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.MCU/value=atmega32u4 +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.PATH/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.PATH/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.PATH/value=${ProjDirPath}/${ConfigName} +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.PID/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.PID/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.PID/value=0x8037 +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.PROJECT_NAME/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.PROJECT_NAME/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.PROJECT_NAME/value=${ProjName} +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.USE_ARCHIVER/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.USE_ARCHIVER/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.USE_ARCHIVER/value=true +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.VARIANT.PATH/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.VARIANT.PATH/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.VARIANT.PATH/value=/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/variants/${A.BUILD.VARIANT} +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.VARIANT/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.VARIANT/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.VARIANT/value=micro +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.VID/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.VID/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.BUILD.VID/value=0x2341 +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.CMD.PATH/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.CMD.PATH/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.CMD.PATH/value=${A.TOOLS.AVRDUDE.CMD.PATH} +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.CMD/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.CMD/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.CMD/value=${A.TOOLS.BOSSAC.CMD} +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.AR.CMD/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.AR.CMD/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.AR.CMD/value=avr-ar +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.AR.FLAGS/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.AR.FLAGS/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.AR.FLAGS/value=rcs +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.C.CMD/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.C.CMD/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.C.CMD/value=avr-gcc +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.C.ELF.CMD/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.C.ELF.CMD/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.C.ELF.CMD/value=avr-gcc +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.C.ELF.FLAGS/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.C.ELF.FLAGS/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.C.ELF.FLAGS/value=-Os -Wl,--gc-sections +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.C.FLAGS/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.C.FLAGS/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.C.FLAGS/value=-c -g -Os -w -ffunction-sections -fdata-sections -MMD +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.CPP.CMD/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.CPP.CMD/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.CPP.CMD/value=avr-g++ +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.CPP.FLAGS/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.CPP.FLAGS/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.CPP.FLAGS/value=-c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -MMD +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.ELF2HEX.CMD/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.ELF2HEX.CMD/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.ELF2HEX.CMD/value=avr-objcopy +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.ELF2HEX.FLAGS/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.ELF2HEX.FLAGS/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.ELF2HEX.FLAGS/value=-O ihex -R .eeprom +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.LDFLAGS/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.LDFLAGS/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.LDFLAGS/value= +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.OBJCOPY.CMD/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.OBJCOPY.CMD/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.OBJCOPY.CMD/value=avr-objcopy +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.OBJCOPY.EEP.FLAGS/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.OBJCOPY.EEP.FLAGS/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.OBJCOPY.EEP.FLAGS/value=-O ihex -j .eeprom --set-section-flags\=.eeprom\=alloc,load --no-change-warnings --change-section-lma .eeprom\=0 +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.PATH/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.PATH/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.PATH/value=${A.RUNTIME.IDE.PATH}/hardware/tools/avr/bin/ +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.S.FLAGS/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.S.FLAGS/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.S.FLAGS/value=-c -g -assembler-with-cpp +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.SIZE.CMD/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.SIZE.CMD/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.COMPILER.SIZE.CMD/value=avr-size +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.CONFIG.PATH/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.CONFIG.PATH/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.CONFIG.PATH/value=${A.TOOLS.AVRDUDE.CONFIG.PATH} +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.NAME/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.NAME/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.NAME/value=Arduino Micro +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.PATH/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.PATH/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.PATH/value=${A.TOOLS.BOSSAC.PATH} +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.AR.PATTERN.1/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.AR.PATTERN.1/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.AR.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.AR.CMD}" ${A.COMPILER.AR.FLAGS} "${A.BUILD.PATH}/${A.ARCHIVE_FILE}" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.AR.PATTERN.2/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.AR.PATTERN.2/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.AR.PATTERN.2/value= +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.AR.PATTERN/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.AR.PATTERN/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.AR.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.AR.CMD}" ${A.COMPILER.AR.FLAGS} "${A.BUILD.PATH}/${A.ARCHIVE_FILE}" "${A.OBJECT_FILE}" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.COMBINE.PATTERN.1/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.COMBINE.PATTERN.1/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.COMBINE.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.C.ELF.CMD}" ${A.COMPILER.C.ELF.FLAGS} -mmcu\=${A.BUILD.MCU} -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.COMBINE.PATTERN.2/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.COMBINE.PATTERN.2/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.COMBINE.PATTERN.2/value=\ "${A.BUILD.PATH}/${A.ARCHIVE_FILE}" "-L${A.BUILD.PATH}" -lm +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.COMBINE.PATTERN/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.COMBINE.PATTERN/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.COMBINE.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.ELF.CMD}" ${A.COMPILER.C.ELF.FLAGS} -mmcu\=${A.BUILD.MCU} -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" ${A.OBJECT_FILES} "${A.BUILD.PATH}/${A.ARCHIVE_FILE}" "-L${A.BUILD.PATH}" -lm +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.O.PATTERN.1/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.O.PATTERN.1/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.O.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.C.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -D${A.SOFTWARE}\=${A.RUNTIME.IDE.VERSION} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.O.PATTERN.2/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.O.PATTERN.2/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.O.PATTERN.2/value=\ -o +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.O.PATTERN.3/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.O.PATTERN.3/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.O.PATTERN.3/value= +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.O.PATTERN/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.O.PATTERN/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.C.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.C.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -D${A.SOFTWARE}\=${A.RUNTIME.IDE.VERSION} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.CPP.O.PATTERN.1/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.CPP.O.PATTERN.1/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.CPP.O.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.CPP.CMD}" ${A.COMPILER.CPP.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -D${A.SOFTWARE}\=${A.RUNTIME.IDE.VERSION} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.CPP.O.PATTERN.2/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.CPP.O.PATTERN.2/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.CPP.O.PATTERN.2/value=\ -o +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.CPP.O.PATTERN.3/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.CPP.O.PATTERN.3/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.CPP.O.PATTERN.3/value= +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.CPP.O.PATTERN/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.CPP.O.PATTERN/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.CPP.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.CPP.CMD}" ${A.COMPILER.CPP.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -D${A.SOFTWARE}\=${A.RUNTIME.IDE.VERSION} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.OBJCOPY.EEP.PATTERN.1/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.OBJCOPY.EEP.PATTERN.1/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.OBJCOPY.EEP.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.OBJCOPY.CMD}" ${A.COMPILER.OBJCOPY.EEP.FLAGS} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.eep" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.OBJCOPY.EEP.PATTERN/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.OBJCOPY.EEP.PATTERN/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.OBJCOPY.EEP.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.OBJCOPY.CMD}" ${A.COMPILER.OBJCOPY.EEP.FLAGS} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.eep" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.OBJCOPY.HEX.PATTERN.1/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.OBJCOPY.HEX.PATTERN.1/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.OBJCOPY.HEX.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.ELF2HEX.CMD}" ${A.COMPILER.ELF2HEX.FLAGS} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.OBJCOPY.HEX.PATTERN/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.OBJCOPY.HEX.PATTERN/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.OBJCOPY.HEX.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.ELF2HEX.CMD}" ${A.COMPILER.ELF2HEX.FLAGS} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.SIZE.PATTERN.1/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.SIZE.PATTERN.1/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.SIZE.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" -A "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.SIZE.PATTERN/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.SIZE.PATTERN/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.SIZE.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" -A "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.SIZE.REGEX/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.SIZE.REGEX/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RECIPE.SIZE.REGEX/value=Total\\s+([0-9]+).* +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RUNTIME.IDE.PATH/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RUNTIME.IDE.PATH/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RUNTIME.IDE.PATH/value=/Applications/Arduino.app/Contents/Resources/Java +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RUNTIME.IDE.VERSION/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RUNTIME.IDE.VERSION/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.RUNTIME.IDE.VERSION/value=152 +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.SOFTWARE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.SOFTWARE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.SOFTWARE/value=ARDUINO +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.QUIET/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.QUIET/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.QUIET/value=-q -q +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.VERBOSE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.VERBOSE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.VERBOSE/value=-v -v -v -v +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.BOOTLOADER.PATTERN/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.BOOTLOADER.PATTERN/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.BOOTLOADER.PATTERN/value="${A.CMD.PATH}" "-C${A.CONFIG.PATH}" ${A.BOOTLOADER.VERBOSE} -p${A.BUILD.MCU} -c${A.PROTOCOL} ${A.PROGRAM.EXTRA_PARAMS} "-Uflash\:w\:${A.RUNTIME.IDE.PATH}/hardware/arduino/avr/bootloaders/${A.BOOTLOADER.FILE}\:i" -Ulock\:w\:${A.BOOTLOADER.LOCK_BITS}\:m +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.CMD.PATH.LINUX/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.CMD.PATH.LINUX/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.CMD.PATH.LINUX/value=${A.RUNTIME.IDE.PATH}/hardware/tools/avrdude +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.CMD.PATH/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.CMD.PATH/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.CMD.PATH/value=${A.RUNTIME.IDE.PATH}/hardware/tools/avr/bin/avrdude +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.CONFIG.PATH.LINUX/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.CONFIG.PATH.LINUX/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.CONFIG.PATH.LINUX/value=${A.RUNTIME.IDE.PATH}/hardware/tools/avrdude.conf +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.CONFIG.PATH/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.CONFIG.PATH/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.CONFIG.PATH/value=${A.RUNTIME.IDE.PATH}/hardware/tools/avr/etc/avrdude.conf +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.ERASE.PARAMS.QUIET/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.ERASE.PARAMS.QUIET/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.ERASE.PARAMS.QUIET/value=-q -q +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.ERASE.PARAMS.VERBOSE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.ERASE.PARAMS.VERBOSE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.ERASE.PARAMS.VERBOSE/value=-v -v -v -v +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.ERASE.PATTERN/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.ERASE.PATTERN/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.ERASE.PATTERN/value="${A.CMD.PATH}" "-C${A.CONFIG.PATH}" ${A.ERASE.VERBOSE} -p${A.BUILD.MCU} -c${A.PROTOCOL} ${A.PROGRAM.EXTRA_PARAMS} -e -Ulock\:w\:${A.BOOTLOADER.UNLOCK_BITS}\:m -Uefuse\:w\:${A.BOOTLOADER.EXTENDED_FUSES}\:m -Uhfuse\:w\:${A.BOOTLOADER.HIGH_FUSES}\:m -Ulfuse\:w\:${A.BOOTLOADER.LOW_FUSES}\:m +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.QUIET/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.QUIET/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.QUIET/value=-q -q +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.VERBOSE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.VERBOSE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.VERBOSE/value=-v -v -v -v +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.PROGRAM.PATTERN/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.PROGRAM.PATTERN/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.PROGRAM.PATTERN/value="${A.CMD.PATH}" "-C${A.CONFIG.PATH}" ${A.PROGRAM.VERBOSE} -p${A.BUILD.MCU} -c${A.PROTOCOL} ${A.PROGRAM.EXTRA_PARAMS} "-Uflash\:w\:${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex\:i" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.QUIET/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.QUIET/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.QUIET/value=-q -q +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.VERBOSE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.VERBOSE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.VERBOSE/value=-v -v -v -v +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.UPLOAD.PATTERN/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.UPLOAD.PATTERN/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.TOOLS.AVRDUDE.UPLOAD.PATTERN/value="${A.CMD.PATH}" "-C${A.CONFIG.PATH}" ${A.UPLOAD.VERBOSE} -p${A.BUILD.MCU} -c${A.UPLOAD.PROTOCOL} -P${A.SERIAL.PORT} -b${A.UPLOAD.SPEED} -D "-Uflash\:w\:${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex\:i" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.DISABLE_FLUSHING/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.DISABLE_FLUSHING/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.DISABLE_FLUSHING/value=true +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.MAXIMUM_SIZE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.MAXIMUM_SIZE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.MAXIMUM_SIZE/value=28672 +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.PROTOCOL/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.PROTOCOL/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.PROTOCOL/value=avr109 +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.SPEED/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.SPEED/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.SPEED/value=57600 +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.TOOL/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.TOOL/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.TOOL/value=avrdude +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.USE_1200BPS_TOUCH/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.USE_1200BPS_TOUCH/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.USE_1200BPS_TOUCH/value=true +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/value=true +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.BOARDS_FILE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.BOARDS_FILE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.BOARDS_FILE/value=/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/boards.txt +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.BOARD_NAME/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.BOARD_NAME/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.BOARD_NAME/value=Arduino Micro +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.COM_PORT/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.COM_PORT/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.COM_PORT/value=/dev/tty.usbmodemfd111 +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.C.COMPILE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.C.COMPILE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.C.COMPILE/value= +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.COMPILE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.COMPILE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.COMPILE/value= +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.CPP.COMPILE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.CPP.COMPILE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.CPP.COMPILE/value= +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.PLATFORM_FILE/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.PLATFORM_FILE/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.PLATFORM_FILE/value=/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/platform.txt +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.Processor/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.Processor/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.Processor/value= +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.SIZE.SWITCH/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.SIZE.SWITCH/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.SIZE.SWITCH/value=${A.RECIPE.SIZE.PATTERN} +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.SIZE_COMMAND/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.SIZE_COMMAND/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.SIZE_COMMAND/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" --format\=avr --mcu\=${A.BUILD.MCU} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/PATH/delimiter=\: +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/PATH/operation=replace +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/PATH/value=${A.COMPILER.PATH}${PathDelimiter}${A.BUILD.GENERIC.PATH}${PathDelimiter}${PATH} +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/append=true +environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/appendContributed=true diff --git a/MeterBusPowerMaster.cpp b/MeterBusPowerMaster.cpp new file mode 100644 index 0000000..b3b2e22 --- /dev/null +++ b/MeterBusPowerMaster.cpp @@ -0,0 +1,34 @@ +// Do not remove the include below +#include + +#include "MeterBusPowerMaster.h" + +#include "cmd.h" +#include "test.h" +#include "uptime.h" +#include "meterBusMaster.h" + + +static CmdServer cmdServer(&Serial); +static TestCmd testCmd; +static Uptime uptime; +static MeterBusMaster meterBusMaster; + + + +void setup() { + cmdServer.begin(); + testCmd.registerYourself(&cmdServer); + uptime.begin(&cmdServer); + meterBusMaster.begin(&cmdServer); + + + Serial.println("Good afternoon, Sir!"); +} + +void loop() { + cmdServer.exec(); + uptime.exec(); + meterBusMaster.exec(); + +} diff --git a/MeterBusPowerMaster.h b/MeterBusPowerMaster.h new file mode 100644 index 0000000..c348bf8 --- /dev/null +++ b/MeterBusPowerMaster.h @@ -0,0 +1,29 @@ +// Only modify this file to include +// - function definitions (prototypes) +// - include files +// - extern variable definitions +// In the appropriate section + +#ifndef NetMeterBusPowerMaster_H_ +#define NetMeterBusPowerMaster_H_ +#include "Arduino.h" +//add your includes for the project NetMeterBusPowerMaster here + + +//end of add your includes here +#ifdef __cplusplus +extern "C" { +#endif +void loop(); +void setup(); +#ifdef __cplusplus +} // extern "C" +#endif + +//add your function definitions for the project NetMeterBusPowerMaster here + + + + +//Do not add code below this line +#endif /* NetMeterBusPowerMaster_H_ */ diff --git a/cmd.cpp b/cmd.cpp new file mode 100644 index 0000000..fbacf1c --- /dev/null +++ b/cmd.cpp @@ -0,0 +1,97 @@ +#include + +#include "cmd.h" +#include "fatal.h" + + +void Cmd::registerYourself(CmdServer *cmdServer) { + cmdServer->registerCmd(this); +} + + +CmdServer::CmdServer(Stream *p_stream) : + m_stream(p_stream), cmd(""), params(""), cmdListIdx(0) +{ +} + +void CmdServer::begin() { + ((Serial_*)m_stream)->begin(9600); +} + +void CmdServer::exec() { + static uint8_t state = 0; + bool done = false; + + if (m_stream->available()) { + char ch; + while ((ch = m_stream->read()) != -1) { + switch (state) { + case 0: + if ((ch != ' ') && (ch != '\n')) { + cmd += ch; + } else if (ch == '\n') { + done = true; + } else { + state = 1; + } + break; + case 1: + if (ch != '\n') { + params += ch; + } else { + done = true; + state = 0; + } + break; + } + + if (done) { + m_stream->println("Cmd: " + cmd); + parseCommand(); + cmd = ""; + params = ""; + } + } + } +} + +void CmdServer::registerCmd(Cmd *cmdObj) { + if (cmdListIdx < NUM_OF_COMMANDS) { + cmdList[cmdListIdx] = cmdObj; + cmdListIdx++; + } else { + fatal(FATAL_NOT_ENOUGH_CMD_SLOTS); + } +} + +void CmdServer::parseCommand() { + //m_client.println("cmd: " + cmd); + //m_client.println("params: " + params); + + if (cmd.equalsIgnoreCase("help")) { + for (uint8_t i = 0; i < cmdListIdx; i++) { + Cmd *c = cmdList[i]; + m_stream->println(c->getCmdName() + " " + c->getHelp()); + } + m_stream->println("HELP List this help for all commands"); + } else { + bool found = false; + for (uint8_t i = 0; i < cmdListIdx; i++) { + // m_client.println("Check: " + cmdList[i]->getCmdName()); + if (cmdList[i]->getCmdName().equalsIgnoreCase(cmd)) { + found = true; + // m_client.println("cmd found"); + cmdList[i]->setClient(m_stream); + String res = cmdList[i]->exec(params); + m_stream->println(res); + break; + } + } + if (! found) + m_stream->println("command not found"); + } +} + + + + diff --git a/cmd.h b/cmd.h new file mode 100644 index 0000000..92869a9 --- /dev/null +++ b/cmd.h @@ -0,0 +1,46 @@ +#ifndef CMD_H_ +#define CMD_H_ + +#include +#include +#include +#include +#include + +static const uint8_t NUM_OF_COMMANDS = 10; + +class CmdServer; + +class Cmd { +public: + virtual ~Cmd() {}; + void setClient(Stream *p_stream) { m_stream = p_stream; }; + virtual String exec(String params) =0; + virtual String getCmdName() =0; + virtual String getHelp() =0; + virtual void registerYourself(CmdServer *cmdServer); +protected: + Stream *m_stream; +}; + + + +class CmdServer { +public: + CmdServer(Stream *p_stream); + void begin(); + void exec(); + void registerCmd(Cmd *cmdObj); +private: + void parseCommand(); + Stream *m_stream; + String cmd; + String params; + uint8_t cmdListIdx; + Cmd *cmdList[NUM_OF_COMMANDS]; +}; + + + + +#endif /* CMD_H_ */ diff --git a/fatal.cpp b/fatal.cpp new file mode 100644 index 0000000..aac91d9 --- /dev/null +++ b/fatal.cpp @@ -0,0 +1,11 @@ +#include +#include"fatal.h" + + +void fatal(uint8_t code) { + cli(); + // do something with the code and somehow show that there is a problem + while (1); +} + + diff --git a/fatal.h b/fatal.h new file mode 100644 index 0000000..a6c6581 --- /dev/null +++ b/fatal.h @@ -0,0 +1,15 @@ +#ifndef FATAL_H_ +#define FATAL_H_ + +#include + +const uint8_t FATAL_UNKNOWN = 1; +const uint8_t FATAL_NOT_ENOUGH_CMD_SLOTS = 2; + +const uint8_t FATAL_BUFFER_OVERFLOW = 10; + + +void fatal(uint8_t code); + + +#endif /* FATAL_H_ */ diff --git a/mBusDialog.h b/mBusDialog.h new file mode 100644 index 0000000..17e620d --- /dev/null +++ b/mBusDialog.h @@ -0,0 +1,20 @@ + +#ifndef MBUS_DIALOG_H_ +#define MBUS_DIALOG_H_ + +#include + +class ResponseCallback { +public: + virtual void sendResponse(uint8_t *responseBuffer, uint16_t responseBufferLength) =0; + virtual void sendError(uint8_t code) = 0; +}; + +class RequestSender { +public: + virtual uint8_t *getSendBuffer() =0; + virtual void sendBufferReady(uint16_t bufLen, ResponseCallback *responseCallback) =0; +}; + + +#endif /* MBUS_DIALOG_H_ */ diff --git a/meterBusMaster.cpp b/meterBusMaster.cpp new file mode 100644 index 0000000..a611007 --- /dev/null +++ b/meterBusMaster.cpp @@ -0,0 +1,232 @@ +#include +#include +#include +#include +#include +#include "meterBusMaster.h" +// #include "config.h" +#include "fatal.h" + + + +uint8_t charToNibble(char i) { + uint8_t r = 99; + if ((i >= '0') && (i <= '9')) { + r = i - '0'; + } else if ((i >= 'a') && (i <= 'f')) { + r = i - 'a' + 10; + } else if ((i >= 'A') && (i <= 'F')) { + r = i - 'A' + 10; + } + return r; +} + +uint16_t stringToUInt8(String i, uint8_t index) { + uint16_t r = 999; + char b0 = i[index]; + uint8_t c0 = charToNibble(b0); + char b1 = i[index + 1]; + uint8_t c1 = charToNibble(b1); + if ((c0 <= 15) && (c1 <= 15)) { + r = (c0 << 4) | c1; + } + return r; +} + + +// ===================================================================================================== + + +String SendOctets::exec(String params) { + bool err = false;; + uint16_t sendBufLen = 0; + + uint8_t *sendBuffer = m_meterBusMaster->getSendBuffer(); + + if (sendBuffer == 0) { + err = true; + } else { + uint16_t n; + for (uint16_t j = 0; j < params.length(); j+=3) { + n = stringToUInt8(params, j); + if (n == 999) { + err = true; + break; + } + + if (sendBufLen >= SEND_BUFFER_SIZE) + fatal(FATAL_BUFFER_OVERFLOW + 2); + + *(sendBuffer+sendBufLen) = n; + sendBufLen++; + } + } + + if (err) { + return "error"; + } else { + m_meterBusMaster->sendBufferReady(sendBufLen, this); + return "success"; + } +} + +void SendOctets::sendResponse(uint8_t *responseBuffer, uint16_t responseBufferLength) { + Print *out = m_stream; + out->print("SO RESP: "); + uint16_t i = 0; + while (true) { + if (responseBuffer[i] <= 0x0f) { + out->print("0"); + } + out->print(responseBuffer[i], HEX); + out->print(" "); + i++; + if (i == responseBufferLength) { + break; + } + } + out->println(""); +} + +void SendOctets::sendError(uint8_t code) { + switch (code) { + case 1: + m_stream->println("SO RESP: no resp."); + break; + } +} + + + +// ===================================================================================================== + + +MeterBusMaster::MeterBusMaster() : m_sendOctets(this), + m_cmdReadyToSend(false), m_cmdReadyFromRecv(false), m_expectResponse(false), + m_sendBufLen(0), m_recvBufLen(0), m_retransmitCount(0), m_responseCallback(0) { + pinMode(RX_EN_PIN, OUTPUT); + digitalWrite(RX_EN_PIN, RX_DISABLE); + Serial1.begin(2400, SERIAL_8E1); + +} + +uint8_t *MeterBusMaster::getSendBuffer() { + return m_expectResponse ? 0 : m_sendBuffer; +} + +void MeterBusMaster::sendBufferReady(uint16_t sendBufLen, ResponseCallback *responseCallback) { + m_cmdReadyToSend = true; + m_retransmitCount = 0; + m_sendBufLen = sendBufLen; + m_responseCallback = responseCallback; +} + +void MeterBusMaster::prepareResponse(bool err, uint8_t in) { + static int16_t expectedChars = -1; + static uint8_t state = 0; + + if (err) { + if (m_responseCallback != 0) { + m_responseCallback->sendError(1); + } + expectedChars = 0; + state = 0; + m_expectResponse = false; + m_responseCallback = 0; + } else { + switch (state) { + case 0: + m_recvBufLen = 0; + if (in == 0xe5) { + state = 2; + expectedChars = 0; + } else if (in == 0x10) { + state = 2; + expectedChars = 4; + } else if (in == 0x68) { + state = 1; + expectedChars = -1; + } + break; + case 1: + expectedChars = (int16_t)in; + expectedChars += 4; + state = 2; + break; + case 2: + expectedChars--; + break; + } + + if (m_recvBufLen >= RECEIVE_BUFFER_SIZE) + fatal(FATAL_BUFFER_OVERFLOW + 1); + + m_recvBuffer[m_recvBufLen] = in; + m_recvBufLen++; + + if (expectedChars == 0) { + if (m_responseCallback != 0) { + m_responseCallback->sendResponse(m_recvBuffer, m_recvBufLen); + } + m_expectResponse = false; + state = 0; + m_responseCallback = 0; + } + } +} + +void MeterBusMaster::begin(CmdServer *cmdServer) { + m_sendOctets.registerYourself(cmdServer); +} + +void MeterBusMaster::sample() { + if (! m_sampling) { + m_sampling = true; + digitalWrite(RX_EN_PIN, RX_DISABLE); + } +} + +void MeterBusMaster::hold() { + if (m_sampling) { + m_sampling = false; + digitalWrite(RX_EN_PIN, RX_ENABLE); + } +} + +void MeterBusMaster::exec() { + static unsigned long cmdSendTime = 0; + + if (m_cmdReadyToSend) { + sample(); + Serial1.write(m_sendBuffer, m_sendBufLen); + Serial1.flush(); + hold(); + m_cmdReadyToSend = false; + m_expectResponse = true; + cmdSendTime = millis(); + } + + if (! m_expectResponse) { + sample(); + } + + // timeout + if (m_expectResponse && ((millis() - cmdSendTime) > RESPONSE_TIMEOUT)) { + m_retransmitCount++; + if (m_retransmitCount > 2) { + m_expectResponse = false; + prepareResponse(true, 0); + } else { + m_cmdReadyToSend = true; + } + } + + int serialInChar = Serial1.read(); + if ((serialInChar != -1) && m_expectResponse) { + prepareResponse(false, (uint8_t)serialInChar); + } + +} + + +// ===================================================================================================== diff --git a/meterBusMaster.h b/meterBusMaster.h new file mode 100644 index 0000000..b4ef7c5 --- /dev/null +++ b/meterBusMaster.h @@ -0,0 +1,61 @@ +#ifndef METERBUSMASTER_H_ +#define METERBUSMASTER_H_ + +#include +#include +#include "cmd.h" +#include "mBusDialog.h" + + +const unsigned long RESPONSE_TIMEOUT = 2000; // millisecond + +#define RX_EN_PIN 2 +#define RX_ENABLE LOW +#define RX_DISABLE HIGH + + + +class SendOctets : public Cmd, public ResponseCallback { +public: + SendOctets(RequestSender *meterBusMaster) : m_meterBusMaster(meterBusMaster) {} + virtual String getCmdName() { return "SO"; } + virtual String getHelp() { return "Send octets, len first"; } + virtual String exec(String params); + virtual void sendResponse(uint8_t *responseBuffer, uint16_t responseBufferLength); + virtual void sendError(uint8_t code); +private: + RequestSender *m_meterBusMaster; +}; + + +const uint8_t SEND_BUFFER_SIZE = 30; +const uint8_t RECEIVE_BUFFER_SIZE = 180; + +class MeterBusMaster : public RequestSender { +public: + MeterBusMaster(); + void begin(CmdServer *cmdServer); + void exec(); + uint8_t *getSendBuffer(); + void sendBufferReady(uint16_t bufLen, ResponseCallback *responseCallback); +private: + SendOctets m_sendOctets; + bool m_cmdReadyToSend; + bool m_cmdReadyFromRecv; + bool m_expectResponse; + uint16_t m_sendBufLen; + uint16_t m_recvBufLen; + uint8_t m_retransmitCount; + ResponseCallback *m_responseCallback; + uint8_t m_sendBuffer[SEND_BUFFER_SIZE]; + uint8_t m_recvBuffer[RECEIVE_BUFFER_SIZE]; + bool m_sampling; + void prepareResponse(bool err, uint8_t in); + void sample(); + void hold(); + +}; + + + +#endif /* METERBUSMASTER_H_ */ diff --git a/test.cpp b/test.cpp new file mode 100644 index 0000000..7667d38 --- /dev/null +++ b/test.cpp @@ -0,0 +1,7 @@ +#include +#include "test.h" + +String TestCmd::exec(String params) { + return "Result of testCmd"; +} + diff --git a/test.h b/test.h new file mode 100644 index 0000000..5dc257c --- /dev/null +++ b/test.h @@ -0,0 +1,14 @@ +#ifndef TEST_H_ +#define TEST_H_ + +#include "cmd.h" + +class TestCmd : public Cmd { +public: + virtual String getCmdName() { return "TEST"; } + virtual String getHelp() { return "Just a test command"; } + virtual String exec(String params); +}; + + +#endif /* TEST_H_ */ diff --git a/uptime.cpp b/uptime.cpp new file mode 100644 index 0000000..a02d82c --- /dev/null +++ b/uptime.cpp @@ -0,0 +1,45 @@ +#include +#include "uptime.h" + + +UptimeCmd::UptimeCmd(Uptime *uptime) : m_uptime(uptime) { + +} + +String UptimeCmd::exec(String params) { + return m_uptime->getDays() + String(" ") + + m_uptime->getHours() + String(":") + m_uptime->getMinutes() + String(":") + m_uptime->getSeconds(); +} + +Uptime::Uptime() : m_uptimeCmd(this), m_seconds(0), m_minutes(0), m_hours(0), m_days(0) { + +} + + +void Uptime::begin(CmdServer *cmdServer) { + m_uptimeCmd.registerYourself(cmdServer); +} + + +void Uptime::exec() { + static unsigned long lastMillis = 0; + + unsigned long currentMillis = millis(); + if (currentMillis >= (lastMillis + 1000)) { + m_seconds += ((currentMillis - lastMillis) / 1000); + if (m_seconds >= 60) { + m_seconds -= 60; + m_minutes++; + if (m_minutes >= 60) { + m_minutes -= 60; + m_hours++; + if (m_hours >= 24) { + m_hours -= 24; + m_days++; + } + } + } + + lastMillis = currentMillis; + } +} diff --git a/uptime.h b/uptime.h new file mode 100644 index 0000000..4608761 --- /dev/null +++ b/uptime.h @@ -0,0 +1,39 @@ +#ifndef UPTIME_H_ +#define UPTIME_H_ + +#include "cmd.h" + + +class Uptime; + + +class UptimeCmd : public Cmd { +public: + UptimeCmd(Uptime *uptime); + virtual String getCmdName() { return "UP"; } + virtual String getHelp() { return "Uptime"; } + virtual String exec(String params); +private: + Uptime *m_uptime; +}; + + +class Uptime { +public: + Uptime(); + void begin(CmdServer *cmdServer); + void exec(); + uint8_t getSeconds() { return m_seconds; }; + uint8_t getMinutes() { return m_minutes; }; + uint8_t getHours() { return m_hours; }; + uint8_t getDays() { return m_days; }; +private: + UptimeCmd m_uptimeCmd; + uint8_t m_seconds; + uint8_t m_minutes; + uint8_t m_hours; + uint16_t m_days; +}; + + +#endif /* TEST_H_ */