1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2025-02-21 08:16:04 +01:00

make Z21 support dependent on ESP32 to compile on all platforms

This commit is contained in:
Harald Barth 2024-04-01 11:57:57 +02:00
parent e075df7164
commit 605d5826dc
6 changed files with 36 additions and 1 deletions

View File

@ -31,7 +31,10 @@
#include "DCC.h" #include "DCC.h"
#include "TrackManager.h" #include "TrackManager.h"
#include "StringFormatter.h" #include "StringFormatter.h"
#ifdef Z21_PROTOCOL
#include "Z21Throttle.h" #include "Z21Throttle.h"
#endif
// variables to hold clock time // variables to hold clock time
int16_t lastclocktime; int16_t lastclocktime;
@ -150,7 +153,9 @@ void CommandDistributor::broadcastToClients(clientType type) {
// Public broadcast functions below // Public broadcast functions below
void CommandDistributor::broadcastSensor(int16_t id, bool on ) { void CommandDistributor::broadcastSensor(int16_t id, bool on ) {
#ifdef Z21_PROTOCOL
Z21Throttle::broadcastNotifySensor(id, on); Z21Throttle::broadcastNotifySensor(id, on);
#endif
broadcastReply(COMMAND_TYPE, F("<%c %d>\n"), on?'Q':'q', id); broadcastReply(COMMAND_TYPE, F("<%c %d>\n"), on?'Q':'q', id);
} }
@ -158,7 +163,9 @@ void CommandDistributor::broadcastTurnout(int16_t id, bool isClosed ) {
// For DCC++ classic compatibility, state reported to JMRI is 1 for thrown and 0 for closed; // For DCC++ classic compatibility, state reported to JMRI is 1 for thrown and 0 for closed;
// The string below contains serial and Withrottle protocols which should // The string below contains serial and Withrottle protocols which should
// be safe for both types. // be safe for both types.
#ifdef Z21_PROTOCOL
Z21Throttle::broadcastNotifyTurnout(id, isClosed); Z21Throttle::broadcastNotifyTurnout(id, isClosed);
#endif
broadcastReply(COMMAND_TYPE, F("<H %d %d>\n"),id, !isClosed); broadcastReply(COMMAND_TYPE, F("<H %d %d>\n"),id, !isClosed);
#ifdef CD_HANDLE_RING #ifdef CD_HANDLE_RING
broadcastReply(WITHROTTLE_TYPE, F("PTA%c%d\n"), isClosed?'2':'4', id); broadcastReply(WITHROTTLE_TYPE, F("PTA%c%d\n"), isClosed?'2':'4', id);

View File

@ -30,7 +30,10 @@
#include "RingStream.h" #include "RingStream.h"
#include "CommandDistributor.h" #include "CommandDistributor.h"
#include "WiThrottle.h" #include "WiThrottle.h"
#ifdef Z21_PROTOCOL
#include "Z21Throttle.h" #include "Z21Throttle.h"
#endif
/* /*
#include "soc/rtc_wdt.h" #include "soc/rtc_wdt.h"
#include "esp_task_wdt.h" #include "esp_task_wdt.h"
@ -258,10 +261,13 @@ bool WifiESP::setup(const char *SSid,
DIAG(F("Wifi setup failed to add withrottle service to mDNS")); DIAG(F("Wifi setup failed to add withrottle service to mDNS"));
} }
// server for WiThrottle and DCCEX protocol started here
server = new WiFiServer(port); // start listening on tcp port server = new WiFiServer(port); // start listening on tcp port
server->begin(); server->begin();
// server started here #ifdef Z21_PROTOCOL
// server for Z21 Protocol started here
Z21Throttle::setup(localIP, Z21_UDPPORT); Z21Throttle::setup(localIP, Z21_UDPPORT);
#endif
#ifdef WIFI_TASK_ON_CORE0 #ifdef WIFI_TASK_ON_CORE0
//start loop task //start loop task
@ -336,7 +342,9 @@ void WifiESP::loop() {
} // all clients } // all clients
WiThrottle::loop(outboundRing); WiThrottle::loop(outboundRing);
#ifdef Z21_PROTOCOL
Z21Throttle::loop(); Z21Throttle::loop();
#endif
// something to write out? // something to write out?
clientId=outboundRing->read(); clientId=outboundRing->read();

View File

@ -20,6 +20,7 @@
*/ */
#include <Arduino.h> #include <Arduino.h>
#include "defines.h" #include "defines.h"
#ifdef Z21_PROTOCOL
#include <WiFi.h> #include <WiFi.h>
#include "Z21Throttle.h" #include "Z21Throttle.h"
#include "DCC.h" #include "DCC.h"
@ -981,3 +982,4 @@ bool Z21Throttle::parse(byte *networkPacket, int len) {
// if we get here, we did parse one or several xbus packets inside USB packets // if we get here, we did parse one or several xbus packets inside USB packets
return true; return true;
} }
#endif // Z21_PROTOCOL

View File

@ -19,6 +19,9 @@
#ifndef Z21Throttle_h #ifndef Z21Throttle_h
#define Z21Throttle_h #define Z21Throttle_h
#include "defines.h"
#ifdef Z21_PROTOCOL
//#include "CircularBuffer.hpp" //#include "CircularBuffer.hpp"
#include "NetworkClientUDP.h" #include "NetworkClientUDP.h"
@ -217,4 +220,5 @@ class Z21Throttle {
#define LAN_X_DB0_CV_NACK 0x13 #define LAN_X_DB0_CV_NACK 0x13
#endif // Z21PROTOCOL
#endif #endif

View File

@ -300,6 +300,12 @@ The configuration file for DCC-EX Command Station
// //
//#define BOOSTER_INPUT 26 //#define BOOSTER_INPUT 26
// Z21 protocol support
// On ESP32 you have the possibility to use the Z21 app
// and other devices that use the Z21 protocol over IP/UDP.
//
//#define Z21_PROTOCOL
// SABERTOOTH // SABERTOOTH
// //
// This is a very special option and only useful if you happen to have a // This is a very special option and only useful if you happen to have a

View File

@ -157,6 +157,14 @@
#define CPU_TYPE_ERROR #define CPU_TYPE_ERROR
#endif #endif
// Only ESP32 does support the Z21 protocol currently
#ifndef ARDUINO_ARCH_ESP32
#ifdef Z21_PROTOCOL
#warning "Z21 protocol can not be used on this platform, disabling"
#undef Z21_PROTOCOL
#endif
#endif
// replace board type if provided by compiler // replace board type if provided by compiler
#ifdef BOARD_NAME #ifdef BOARD_NAME
#undef ARDUINO_TYPE #undef ARDUINO_TYPE