1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2025-02-19 23:46:02 +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 "TrackManager.h"
#include "StringFormatter.h"
#ifdef Z21_PROTOCOL
#include "Z21Throttle.h"
#endif
// variables to hold clock time
int16_t lastclocktime;
@ -150,7 +153,9 @@ void CommandDistributor::broadcastToClients(clientType type) {
// Public broadcast functions below
void CommandDistributor::broadcastSensor(int16_t id, bool on ) {
#ifdef Z21_PROTOCOL
Z21Throttle::broadcastNotifySensor(id, on);
#endif
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;
// The string below contains serial and Withrottle protocols which should
// be safe for both types.
#ifdef Z21_PROTOCOL
Z21Throttle::broadcastNotifyTurnout(id, isClosed);
#endif
broadcastReply(COMMAND_TYPE, F("<H %d %d>\n"),id, !isClosed);
#ifdef CD_HANDLE_RING
broadcastReply(WITHROTTLE_TYPE, F("PTA%c%d\n"), isClosed?'2':'4', id);

View File

@ -30,7 +30,10 @@
#include "RingStream.h"
#include "CommandDistributor.h"
#include "WiThrottle.h"
#ifdef Z21_PROTOCOL
#include "Z21Throttle.h"
#endif
/*
#include "soc/rtc_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"));
}
// server for WiThrottle and DCCEX protocol started here
server = new WiFiServer(port); // start listening on tcp port
server->begin();
// server started here
#ifdef Z21_PROTOCOL
// server for Z21 Protocol started here
Z21Throttle::setup(localIP, Z21_UDPPORT);
#endif
#ifdef WIFI_TASK_ON_CORE0
//start loop task
@ -336,7 +342,9 @@ void WifiESP::loop() {
} // all clients
WiThrottle::loop(outboundRing);
#ifdef Z21_PROTOCOL
Z21Throttle::loop();
#endif
// something to write out?
clientId=outboundRing->read();

View File

@ -20,6 +20,7 @@
*/
#include <Arduino.h>
#include "defines.h"
#ifdef Z21_PROTOCOL
#include <WiFi.h>
#include "Z21Throttle.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
return true;
}
#endif // Z21_PROTOCOL

View File

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

View File

@ -300,6 +300,12 @@ The configuration file for DCC-EX Command Station
//
//#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
//
// 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
#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
#ifdef BOARD_NAME
#undef ARDUINO_TYPE