[PATCH] Eigenes CUL_V3_MBUS-Build-Profil für Wireless M-Bus

Begonnen von szewcson, 27 April 2026, 17:54:55

Vorheriges Thema - Nächstes Thema

szewcson

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( ' ' );
       }