{"id":567,"date":"2025-12-25T11:36:51","date_gmt":"2025-12-25T10:36:51","guid":{"rendered":"https:\/\/siggsoftware.ch\/wordpress\/?p=567"},"modified":"2026-02-27T21:22:10","modified_gmt":"2026-02-27T20:22:10","slug":"srcpd-in-rust","status":"publish","type":"post","link":"https:\/\/siggsoftware.ch\/wordpress\/srcpd-in-rust\/","title":{"rendered":"srcpd in RUST"},"content":{"rendered":"\n<p>Update 27.02.26: <br>Unterst\u00fctzung <a href=\"https:\/\/siggsoftware.ch\/wordpress\/mfx-rds-rueckmeldung\/\">MFX RDS GNU Radio Software<\/a> f\u00fcr MFX RDS R\u00fcckmeldung.<br><strong>Achtung: <\/strong>ab R2.0 wurde die MM GA Adressierung korrigiert. Diese war 4 verschoben, was bei Zubeh\u00f6hrdekodern die DCC und MM beherrschen zu unterschiedlichen Adressen gef\u00fchrt hat.<br>Bei Update zu R2.0 entweder auf Softwareseite alle GA Adressen f\u00fcr MM Protokoll -4 rechnen, aus Adresse 4 wird 1, aus 1 bis 4 wird 321 bis 324 oder die Dekoderbasisadresse um 1 erh\u00f6hen.<\/p>\n\n\n\n<p>Update 30.12.25: GIT Rep neu auf GITHUB: <a href=\"https:\/\/github.com\/DaSigg\/srcpd_rust\">https:\/\/github.com\/DaSigg\/srcpd_rust<\/a><\/p>\n\n\n\n<p>Update 25.12.25: Servicemode Hauptgleisprogrammierung auch f\u00fcr Zubeh\u00f6hrdekoder.<\/p>\n\n\n\n<p>Aktuelle, stabile Version 2.0.<\/p>\n\n\n\n<p>Nachdem ich nun langsam aber sicher genug habe von Fehlersuche mit Speicher\u00fcberl\u00e4ufen im alten srcpd C-Code habe ich mich dazu entschieden, einen neuen srcpd in RUST zu schreiben. Der Einstieg in RUST ist f\u00fcr einen langj\u00e4hrigen JAVA, C\/C++ Programmierer zwar schon etwas &#8222;z\u00e4h&#8220; und hat mir einiges an Durchhaltewille abverlangt. Aber: wenn es mit RUST mal compiliert, dann funktioniert es auch (meistens) .<\/p>\n\n\n\n<p>Einschr\u00e4nkungen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Auf SRCP Seite is nur das implementiert, was ich brauche, siehe Doku.<\/li>\n\n\n\n<li>Es wird nur DDL mit Ausgabe \u00fcber SPI (z.B. Raspberry PI) unterst\u00fctzt<\/li>\n<\/ul>\n\n\n\n<p>Was es kann:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DCC Servicemode, Lesen (Programmiergleis) &amp; Schreiben (Prog. und Hauptgleis) CV&#8217;s. Hauptgleisprogrammierung Zubeh\u00f6rdekoder.<\/li>\n\n\n\n<li>MM Protokolle, DCC, MFX. <\/li>\n\n\n\n<li>MFX Lesen und Schreiben Lokparameter, automatische Lokanmeldung mit auslesen Lokname und Funktionen.<br>Servicemode f\u00fcr MFX.<\/li>\n\n\n\n<li>Es ist schnell! Optimierung der Protokollausgabe, wenn z.B. ein Protokoll eine Pause verlangt (z.B. DCC zwischen zwei Paketen an die selbe Adresse 5ms, MM5 zwischen den Paketen f\u00fcr 28 FS 50ms), dann wird nicht einfach gewartet sondern andere Pakete eingeschoben. Es wir keine Millisekunde verschenkt. Das ist gegen\u00fcber dem Orginal srcpd sp\u00fcrbar (zumindest bei meiner Anlage mit ca. 80 Loks).<\/li>\n\n\n\n<li>S88 Bus (auch nur \u00fcber SPI).<\/li>\n\n\n\n<li>Konfigurierbare Oszi Triggerm\u00f6glichkeit bei S88 Ver\u00e4nderungen, Ausgabe GA, GL, SM Kommandos.<\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/github.com\/DaSigg\/srcpd_rust\">Download hier.<\/a><\/p>\n\n\n\n<p>Die notwendige Hardware (identisch dem &#8222;alten&#8220; SRCPD):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/siggsoftware.ch\/wordpress\/wp-content\/uploads\/2016\/11\/booster.pdf\">Schema Booster Anschlusss an RaspberryPI<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/siggsoftware.ch\/wordpress\/wp-content\/uploads\/2023\/01\/S88_SPI_Schema.pdf\">S88 SPI Interface<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/siggsoftware.ch\/wordpress\/wp-content\/uploads\/2026\/02\/mfxi.pdf\">Schema MFX RDS R\u00fcckmeldung<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Update 27.02.26: Unterst\u00fctzung MFX RDS GNU Radio Software f\u00fcr MFX RDS R\u00fcckmeldung.Achtung: ab R2.0 wurde die MM GA Adressierung korrigiert. Diese war 4 verschoben, was bei Zubeh\u00f6hrdekodern die DCC und MM beherrschen zu unterschiedlichen Adressen gef\u00fchrt hat.Bei Update zu R2.0 entweder auf Softwareseite alle GA Adressen f\u00fcr MM Protokoll -4 rechnen, aus Adresse 4 wird &hellip; <a href=\"https:\/\/siggsoftware.ch\/wordpress\/srcpd-in-rust\/\" class=\"more-link\"><span class=\"screen-reader-text\">srcpd in RUST<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-567","post","type-post","status-publish","format-standard","hentry","category-modellbahn"],"_links":{"self":[{"href":"https:\/\/siggsoftware.ch\/wordpress\/wp-json\/wp\/v2\/posts\/567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/siggsoftware.ch\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/siggsoftware.ch\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/siggsoftware.ch\/wordpress\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/siggsoftware.ch\/wordpress\/wp-json\/wp\/v2\/comments?post=567"}],"version-history":[{"count":25,"href":"https:\/\/siggsoftware.ch\/wordpress\/wp-json\/wp\/v2\/posts\/567\/revisions"}],"predecessor-version":[{"id":707,"href":"https:\/\/siggsoftware.ch\/wordpress\/wp-json\/wp\/v2\/posts\/567\/revisions\/707"}],"wp:attachment":[{"href":"https:\/\/siggsoftware.ch\/wordpress\/wp-json\/wp\/v2\/media?parent=567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/siggsoftware.ch\/wordpress\/wp-json\/wp\/v2\/categories?post=567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/siggsoftware.ch\/wordpress\/wp-json\/wp\/v2\/tags?post=567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}