Ich habe einen kleinen Patch vorbereitet, der für den CUL V3 ein separates `CUL_V3_MBUS`-Profil ergänzt. Ziel ist eine schlankere MBUS-Konfiguration mit größerem Ausgabepuffer für längere Telegramme; zusätzlich behebt der Patch ein Problem bei der Ausgabe längerer empfangener MBUS-Pakete.
Index: culfw/Devices/CUL/board.h
===================================================================
--- culfw/Devices/CUL/board.h (revision 571)
+++ culfw/Devices/CUL/board.h (working copy)
@@ -24,7 +24,7 @@
#undef RFR_DEBUG // PROGMEM: 354b RAM: 14b
#undef HAS_FASTRF // PROGMEM: 468b RAM: 1b
-#if defined(CUL_V3_ZWAVE)
+#if defined(CUL_V3_ZWAVE) || defined(CUL_V3_MBUS)
# define CUL_V3
#endif
@@ -54,6 +54,39 @@
#endif
#if defined(CUL_V3)
+#if defined(CUL_V3_MBUS)
+# undef RCV_BUCKETS
+# define RCV_BUCKETS 2 // RAM: 25b * bucket
+# define TTY_BUFSIZE 300 // RAM: TTY_BUFSIZE*4
+# undef HAS_FHT_80b
+# undef HAS_RF_ROUTER
+# undef RFR_FILTER
+# undef HAS_HOERMANN
+# undef HAS_HOERMANN_SEND
+# undef HAS_CC1101_RX_PLL_LOCK_CHECK_TASK_WAIT
+# undef HAS_CC1101_PLL_LOCK_CHECK_MSG
+# undef HAS_CC1101_PLL_LOCK_CHECK_MSG_SW
+# undef HAS_FHT_8v
+# undef HAS_FHT_TF
+# undef FHTBUF_SIZE
+# define FHTBUF_SIZE 0
+# undef HAS_RAWSEND
+# undef HAS_ASKSIN
+# undef HAS_ASKSIN_FUP
+# undef HAS_MORITZ
+# undef HAS_ESA
+# undef HAS_TX3
+# undef HAS_INTERTECHNO
+# undef HAS_TCM97001
+# undef HAS_UNIROLL
+# undef HAS_MEMFN
+# undef HAS_SOMFY_RTS
+# undef HAS_BELFOX
+# define HAS_MBUS // PROGMEM: 4255
+# define MBUS_NO_TX // PROGMEM: 962
+# undef HAS_RFNATIVE
+# undef HAS_KOPP_FC
+#else
# define TTY_BUFSIZE 128 // RAM: TTY_BUFSIZE*4
# undef HAS_MBUS // PROGMEM: 4255
#if defined(HAS_MBUS)
@@ -62,6 +95,7 @@
# define HAS_RFNATIVE // PROGMEM: 580
# define HAS_KOPP_FC // PROGMEM: 3370
#endif
+#endif
#if defined(CUL_V3_ZWAVE)
# define HAS_ZWAVE // PROGMEM: 882
@@ -200,7 +234,9 @@
# define LED_PIN PC4
#endif
-#if defined(CUL_V3)
+#if defined(CUL_V3_MBUS)
+# define CUL_HW_REVISION "CUL_V3_MBUS"
+#elif defined(CUL_V3)
# define CUL_HW_REVISION "CUL_V3"
#elif defined(CUL_V4)
# define CUL_HW_REVISION "CUL_V4"
Index: culfw/Devices/CUL/makefile
===================================================================
--- culfw/Devices/CUL/makefile (revision 571)
+++ culfw/Devices/CUL/makefile (working copy)
@@ -102,7 +102,7 @@
OBJ = $(SRC:%.c=$(OBJDIR)/%.o)
-ifeq ($(TARGET), CUL_V3)
+ifneq (,$(filter $(TARGET),CUL_V3 CUL_V3_MBUS))
SRC += ../../clib/rf_mbus.c ../../clib/mbus/manchester.c ../../clib/mbus/3outof6.c ../../clib/mbus/mbus_packet.c ../../clib/mbus/crc.c
endif
@@ -111,6 +111,7 @@
make TARGET=CUL_V2_HM MCU=at90usb162 mostly_clean build size
make TARGET=CUL_V2_MAX MCU=at90usb162 mostly_clean build size
make TARGET=CUL_V3 MCU=atmega32u4 mostly_clean build size
+ make TARGET=CUL_V3_MBUS MCU=atmega32u4 mostly_clean build size
make TARGET=CUL_V4 MCU=atmega32u2 mostly_clean build size
make TARGET=CUL_V3_ZWAVE MCU=atmega32u4 mostly_clean build size
@@ -131,7 +132,7 @@
usbprogram:
- @echo 'specify one of: usbprogram_v2 usbprogram_v2_hm usbprogram_v3 usbprogram_v4'
+ @echo 'specify one of: usbprogram_v2 usbprogram_v2_hm usbprogram_v3 usbprogram_v3_mbus usbprogram_v4'
usbprogram_v4: TARGET=CUL_V4
usbprogram_v4: MCU=atmega32u2
@@ -141,6 +142,10 @@
usbprogram_v3: MCU=atmega32u4
usbprogram_v3: do_usbprogram
+usbprogram_v3_mbus: TARGET=CUL_V3_MBUS
+usbprogram_v3_mbus: MCU=atmega32u4
+usbprogram_v3_mbus: do_usbprogram
+
usbprogram_v2: TARGET=CUL_V2
usbprogram_v2: MCU=at90usb162
usbprogram_v2: do_usbprogram
Index: culfw/clib/rf_mbus.c
===================================================================
--- culfw/clib/rf_mbus.c (revision 571)
+++ culfw/clib/rf_mbus.c (working copy)
@@ -383,7 +383,7 @@
}
}
- for (uint8_t i=0; i < rxLength; i++) {
+ for (uint16_t i = 0; i < rxLength; i++) {
DH2( MBpacket[i] );
// DC( ' ' );
}