From 4e6893912699008c2b9b390306b3ddc9cf90411b Mon Sep 17 00:00:00 2001 From: steffen Date: Sun, 14 Feb 2021 13:40:06 +0000 Subject: [PATCH] =?UTF-8?q?added=20side=20menu=20f=C3=BCr=20auto,=20manual?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/interface-z21.cc | 2 -- server/interface-z21.h | 6 ++-- server/interface.cc | 7 ++++ server/interface.h | 1 + server/locomotive.cc | 5 ++- server/railway.cc | 2 +- server/server.cc | 7 ++-- server/session.cc | 12 +++++-- webinterface/images/btnauto.png | Bin 0 -> 6827 bytes webinterface/images/btnmanual.png | Bin 0 -> 6835 bytes webinterface/index.html | 22 +++++++----- webinterface/layout.css | 6 ++++ webinterface/serverinout.js | 4 +++ webinterface/side.js | 58 +++++++++++++++++++++++++++--- webinterface/track.js | 24 ++++++------- 15 files changed, 119 insertions(+), 37 deletions(-) create mode 100644 webinterface/images/btnauto.png create mode 100644 webinterface/images/btnmanual.png diff --git a/server/interface-z21.cc b/server/interface-z21.cc index 8145a7b..df46ac0 100644 --- a/server/interface-z21.cc +++ b/server/interface-z21.cc @@ -410,8 +410,6 @@ void InterfaceZ21::SetLocoFunction(Locomotive *l, int func, int value) { void InterfaceZ21::SetTurnout(Turnout *t, int activate, int motoractive) { unsigned char buffer[] = { 0x09, 0x00, 0x40, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00 }; - debug (0, "%s:%d InterfaceZ21::SetTurnout (a:%d, m:%d)", __FILE__, __LINE__, activate, motoractive); - // // setup turnout addr buffer[Z21_IDX_SETTURNOUT_ADRL] = (unsigned char) (t->addr & 0xFF); diff --git a/server/interface-z21.h b/server/interface-z21.h index 589afea..a589988 100644 --- a/server/interface-z21.h +++ b/server/interface-z21.h @@ -15,10 +15,10 @@ #define INTF_Z21_CS_ShortCircuit 0x04 #define INTF_Z21_CS_ProgModeActive 0x20 -#define INTF_Z21_LOCONET_MAXADDR 255 +#define INTF_Z21_LOCONET_MAXADDR 255 #define INTF_Z21_RMSENSOR_GROUPS 2 -#define INTF_Z21_RMSENSOR_BYTES 10 -#define INTF_Z21_RMGETDATA_TIMEOUT 30 +#define INTF_Z21_RMSENSOR_BYTES 10 +#define INTF_Z21_RMGETDATA_TIMEOUT 30 struct s_loconet_map{ int addr; diff --git a/server/interface.cc b/server/interface.cc index 0be242e..601b1a7 100644 --- a/server/interface.cc +++ b/server/interface.cc @@ -15,6 +15,7 @@ Interface::Interface() { flags = 0; type = INTF_T_OFF_UNKNOWN; needs_update = true; + timer_start(&turnouttimeout); }; Interface::~Interface() { @@ -57,6 +58,12 @@ void Interface::SetTurnout(Turnout *t, int active, int motoractive) { debug (DEBUG_INFO | DEBUG_IFACE, "* Interface (%s) SetTurnout Addr:%d FinalAcitve:%d Motor:%d", name, t->addr, active, motoractive); + if (motoractive == 1 && timer_get(&turnouttimeout) < 100) { + debug (0, "* Interface need to wait between two turnout commands"); + return; + } + timer_start(&turnouttimeout); + switch (type) { case INTF_T_Z21: intz21.SetTurnout(t, active, motoractive); break; default: break; diff --git a/server/interface.h b/server/interface.h index 3ded1c6..b259310 100644 --- a/server/interface.h +++ b/server/interface.h @@ -23,6 +23,7 @@ class Interface { private: InterfaceZ21 intz21; bool needs_update; + struct timeval turnouttimeout; public: char name[REFERENCENAME_LEN]; char host[NET_HOSTLEN]; diff --git a/server/locomotive.cc b/server/locomotive.cc index 462af97..b41c730 100644 --- a/server/locomotive.cc +++ b/server/locomotive.cc @@ -614,7 +614,8 @@ int Locomotives::Loop() { // find way, if nothing found check if we can reverse direction // if (loco->auto_timenext.tv_sec == 0 || timer_get(&loco->auto_timenext) > LOCO_TO_TRYAGAIN) { - debug (0, "* Loco Loop Search '%s' Reverse:%d", loco->name, reverse);; + debug (0, "* Loco Loop Search '%s' Reverse:%d", loco->name, reverse); + timer_start(&loco->auto_timenext); if (loco->blockdest[0] == 0) { if (loco->flags & LOCO_F_RANDOM) if (server->railways.FindRandomWay(loco->blockassign, loco->name, &way)) { @@ -628,7 +629,6 @@ int Locomotives::Loop() { } else { server->railways.UnLockWay(way, loco->name); - timer_start(&loco->auto_timenext); } } } @@ -641,7 +641,6 @@ int Locomotives::Loop() { if (loco->flags & LOCO_F_REVERSE) loco->flags &= ~LOCO_F_REVERSE; else loco->flags |= LOCO_F_REVERSE; } - timer_start(&loco->auto_timenext); } } else if (server->railways.FindWay(loco->blockassign, loco->blockdest, loco->name, &way)) { diff --git a/server/railway.cc b/server/railway.cc index b1a407d..d73e97c 100644 --- a/server/railway.cc +++ b/server/railway.cc @@ -1064,7 +1064,7 @@ int Railways::LockWay (string way, string lockedby, int lockonoff) { printf ("LockWay Position [%d,%d] Name:%s LockedBy:'%s'\n", pos.x, pos.y, r->name, r->lockedby); // check if railway is free or locked by me - if (r->lockedby[0] != 0 && lockedby.compare(r->lockedby) != 0) { + if (r->lockedby[0] != 0 && lockedby.compare(r->lockedby) != 0 && !(lockonoff == 0 && pos.x == start.x && pos.y == start.y && r->type == RAILWAY_BLOCK)) { debug (0, "LockWay: Railway currently locked by '%s'.", r->lockedby); UnLock(); return 0; diff --git a/server/server.cc b/server/server.cc index f362b85..bfc7b38 100644 --- a/server/server.cc +++ b/server/server.cc @@ -117,12 +117,12 @@ void Server::ThreadProcess() { // // mode manual else if (mode == SMODE_MANUAL) { - server->locomotives.Loop(); } // // mode auto else if (mode == SMODE_AUTO) { + server->locomotives.Loop(); } gettimeofday (&tv, NULL); @@ -185,7 +185,10 @@ bool Server::IsChanged() { // Set Mode Auto void Server::SetModeAuto() { debug (0, "%s:%d * Set Mode Auto", __FILE__, __LINE__); - status_text = "Mode Auto"; + if (mode == SMODE_MANUAL) { + mode = SMODE_MANUAL; + status_text = "Mode Auto"; + } } // diff --git a/server/session.cc b/server/session.cc index 35a885b..9cbe213 100644 --- a/server/session.cc +++ b/server/session.cc @@ -160,10 +160,18 @@ int Session::ProcessData(JSONParse *jin, JSONParse *jout) { debug (0, "* Save All"); server->Save(); } - else if (command.compare("resetdata") == 0) { - debug (0, "* Reset All Data"); + else if (command.compare("serverreset") == 0) { + debug (0, "* Server Set to Reset"); server->SetModeReset(); } + else if (command.compare("servermanual") == 0) { + debug (0, "* Server Set to Manual"); + server->SetModeManual(); + } + else if (command.compare("serverauto") == 0) { + debug (0, "* Server Set to Auto"); + server->SetModeAuto(); + } else if (command.compare("getall") == 0) { json.Clear(); server->GetJSONAll(&json); diff --git a/webinterface/images/btnauto.png b/webinterface/images/btnauto.png new file mode 100644 index 0000000000000000000000000000000000000000..6d7ca6f906d4e721a4bac3d955ab6db39d006e0b GIT binary patch literal 6827 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 literal 0 HcmV?d00001 diff --git a/webinterface/index.html b/webinterface/index.html index 8645ee3..22ab410 100644 --- a/webinterface/index.html +++ b/webinterface/index.html @@ -52,26 +52,32 @@



-
+
+
+ +
+



-

diff --git a/webinterface/layout.css b/webinterface/layout.css index 49e9847..6d9a80f 100644 --- a/webinterface/layout.css +++ b/webinterface/layout.css @@ -52,6 +52,12 @@ body { margin: 0px 0px; } +.side_btn_cmd { + background-color: lightgray; + padding: 0px 0px; + margin: 0px 0px; +} + .side_btn { background-color: lightgray; padding: 0px 0px; diff --git a/webinterface/serverinout.js b/webinterface/serverinout.js index 758a6e8..f528072 100644 --- a/webinterface/serverinout.js +++ b/webinterface/serverinout.js @@ -101,7 +101,11 @@ function serverinout_defaultCallback(data) { // infoline if (data.serverstatus) { var text = document.getElementById("infoserver"); + text.innerHTML = data.serverstatus; + if (data.serverstatus == "Mode Reset") sideBtnModeClick("sidebtn-reset"); + if (data.serverstatus == "Mode Manual") sideBtnModeClick("sidebtn-manual"); + if (data.serverstatus == "Mode Auto") sideBtnModeClick("sidebtn-auto"); } // // loop through all the changes diff --git a/webinterface/side.js b/webinterface/side.js index 622a5b4..96ad496 100644 --- a/webinterface/side.js +++ b/webinterface/side.js @@ -9,7 +9,7 @@ const SIDE_DISPLAY_EDITTRACK = 2; function side_Display(type) { var side_track = document.getElementById("side_trackeditbuttons"); var side_normal = document.getElementById("side_normalbuttons"); - var btn = document.getElementById("mode-none"); + var btn = document.getElementById("cmd-none"); debug ("side_display(" + type +")"); @@ -18,7 +18,7 @@ function side_Display(type) { side_track.style.display = "block"; } else { - sideBtnModeClick(btn); + sideBtnCmdClick(btn); side_track.style.display = "none"; side_normal.style.display = "block"; } @@ -69,8 +69,13 @@ function sideBtnOnOffMode (mode) { // deselect all elements and select new one // function sideBtnModeClick (obj) { + let id; + + if (obj.id) id = obj.id; + else id = obj; + $('.side_btn_mode').each(function(i, objiter) { - if (obj.id == objiter.id) { + if (id == objiter.id) { objiter.className = "side_btn_mode side_btn_selected"; } else { @@ -80,6 +85,21 @@ function sideBtnModeClick (obj) { }; +// +// deselect all elements and select new one +// +function sideBtnCmdClick (obj) { + $('.side_btn_cmd').each(function(i, objiter) { + if (obj.id == objiter.id) { + objiter.className = "side_btn_cmd side_btn_selected"; + } + else { + objiter.className = "side_btn_cmd"; + } + }); +}; + + // // show a list of locomotives // @@ -100,7 +120,25 @@ function sideBtnCloseClick () { // send sensor and turnout reset to server. // function sideBtnResetClick () { - var request = { command: "resetdata" }; + var request = { command: "serverreset" }; + serverinout (request, serverinout_defaultCallback); +}; + + +// +// set server to manual mode +// +function sideBtnManualClick () { + var request = { command: "servermanual" }; + serverinout (request, serverinout_defaultCallback); +}; + + +// +// send sensor and turnout reset to server. +// +function sideBtnAutoClick () { + var request = { command: "serverauto" }; serverinout (request, serverinout_defaultCallback); }; @@ -117,3 +155,15 @@ function sideBtnModeGet () { return selected; }; + +function sideBtnCmdGet () { + var i, selected = ""; + + i = 0; + $('.side_btn_cmd').each(function(j, objiter) { + i++; + if (objiter.className == "side_btn_cmd side_btn_selected") selected = objiter.id; + }); + + return selected; +}; diff --git a/webinterface/track.js b/webinterface/track.js index 4c02c4e..895dd86 100644 --- a/webinterface/track.js +++ b/webinterface/track.js @@ -211,7 +211,7 @@ function trackDrawElement(ctx, element, mode) { // // draw ref. name - if (element.name && sideBtnModeGet() == "mode-detail") { + if (element.name && sideBtnCmdGet() == "cmd-track-detail") { if (element.type != RAILWAY_TEXT && element.type != RAILWAY_CONNECTOR && element.type != RAILWAY_BLOCK) { ctx.font = "10px Arial"; @@ -439,9 +439,9 @@ function trackDraw() { // // draw mouseselection - var mode = sideBtnModeGet(); + var mode = sideBtnCmdGet(); - if ((mode == "mode-rail" || mode == "mode-delete") && + if ((mode == "cmd-track-rail" || mode == "cmd-track-delete") && trackMouse.down.x >= 0 && trackMouse.down.y >= 0) { var selected = new Array(); @@ -457,11 +457,11 @@ function trackDraw() { // // draw possible turnout - else if (mode == "mode-turn") { + else if (mode == "cmd-track-turn") { var t = trackGetTurnout({x: trackMouse.pos.x, y: trackMouse.pos.y}); } - else if (!mode == "mode-none") alert("track.js: unknown mode:" + mode); + else if (!mode == "cmd-track-none") alert("track.js: unknown mode:" + mode); // // flip screen - double buffering @@ -501,7 +501,7 @@ function trackMouseGetPos(event) { function trackMousemove(event) { - var mode = sideBtnModeGet(); + var mode = sideBtnCmdGet(); trackMouse.pos = trackMouseGetPos(event); // debug ("trackMousemove pos: " + trackMouse.pos.x + "," + trackMouse.pos.y + @@ -512,10 +512,10 @@ function trackMousemove(event) { function trackMousedown(event) { - var mode = sideBtnModeGet(); + var mode = sideBtnCmdGet(); var tmp = trackMouseGetPos(event); - if (mode == "mode-rail" || mode == "mode-delete") { + if (mode == "cmd-track-rail" || mode == "cmd-track-delete") { trackMouse.down = trackMouseGetPos(event); } @@ -529,7 +529,7 @@ function trackMousedown(event) { // // function trackMouseup(event) { - var mode = sideBtnModeGet(); + var mode = sideBtnCmdGet(); var tmp = trackMouseGetPos(event); debug ("trackMouseup tmp: " + tmp.x + "," + tmp.y + " mode:" + mode); @@ -538,7 +538,7 @@ function trackMouseup(event) { gContextmenuClose(); - if (mode == "mode-rail") { + if (mode == "cmd-track-rail") { var pos = {}; var selected = new Array(); @@ -548,11 +548,11 @@ function trackMouseup(event) { selected.length = 0; } - else if (mode == "mode-detail") { + else if (mode == "cmd-track-detail") { rwdetail_show(trackMouse.pos.x, trackMouse.pos.y); } - else if (mode == "mode-delete") { + else if (mode == "cmd-track-delete") { var pos = {}; var xs, ys, xe ,ye; var selected = new Array();