From 98d1d042071bd67bfb1171f40ee6c04f3cca168b Mon Sep 17 00:00:00 2001 From: steffen Date: Tue, 9 Mar 2021 21:07:13 +0000 Subject: [PATCH] added BLOCK_F_STATION flag to blocks --- ChangeLog | 4 ++++ server/block.cc | 4 ++-- server/block.h | 1 + webinterface/block.js | 14 +++++++++++--- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index accfc55..505a33a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2021-03-09: +- added station flag to blocks +- fixed: locomotives can not assigned to new block if on mode LOCO_F_AUTO + 2021-03-07: - fixed: high cpu load, sleep function was not working right. If the current loop took below 1ms we would ot wait for the 25ms to finish. diff --git a/server/block.cc b/server/block.cc index b07b5b8..0b94c81 100644 --- a/server/block.cc +++ b/server/block.cc @@ -176,7 +176,7 @@ int Blocks::SetOff(string blname) { if ((bl = FindBlock(blname)) != NULL) { changed = 1; bl->flags |= BLOCK_F_OFF; - printf ("%s:%d set block %s off", __FILE__, __LINE__, bl->name); + debug (0, "Blocks::SetOff block %s", bl->name); jp.AddObject("block",_GetJSON(bl)); if(network) network->ChangeListPushToAll(jp.ToString()); @@ -213,7 +213,7 @@ int Blocks::SetLockedby (string blname, string lockedby, int lock_onoff) { int res = -1; int x, y; - debug (0, "Blocks:SetLockedby block:'%s' locked for '%s' locked:%d", blname.c_str(), lockedby.c_str(), lock_onoff); + debug (0, "Blocks::SetLockedby block:'%s' locked for '%s' locked:%d", blname.c_str(), lockedby.c_str(), lock_onoff); Lock(); if ((bl = FindBlock(blname)) != NULL) { diff --git a/server/block.h b/server/block.h index dc3c7ed..ebcdb2e 100644 --- a/server/block.h +++ b/server/block.h @@ -9,6 +9,7 @@ #define BLOCK_F_SHORT 0x0010 #define BLOCK_F_LONG 0x0020 #define BLOCK_F_ENDSTATION 0x0040 +#define BLOCK_F_STATION 0x0080 #define BLOCK_F_SPEEDLIMIT 0x0100 diff --git a/webinterface/block.js b/webinterface/block.js index 41b58ec..0a1ebd0 100644 --- a/webinterface/block.js +++ b/webinterface/block.js @@ -3,10 +3,11 @@ // var blocks = []; -const BLOCK_F_OFF = 0x0001; -const BLOCK_F_SHORT = 0x0010; -const BLOCK_F_LONG = 0x0020; +const BLOCK_F_OFF = 0x0001; +const BLOCK_F_SHORT = 0x0010; +const BLOCK_F_LONG = 0x0020; const BLOCK_F_ENDSTATION = 0x0040; +const BLOCK_F_STATION = 0x0080; const BLOCK_F_SPEEDLIMIT = 0x0100; @@ -203,6 +204,7 @@ function blockdetail_show(name, create) { \ \
\ +
\
\ \ \ @@ -355,6 +357,7 @@ function blockdetail_setData(elm) { var flagshort = document.getElementById("blockdet_flagshort"); var flaglong = document.getElementById("blockdet_flaglong"); var flagend = document.getElementById("blockdet_flagend"); + var flagstation = document.getElementById("blockdet_flagstation"); var flagspeedlimit = document.getElementById("blockdet_flagspeedlimit"); var sensorLU = document.getElementById("blockdet_sensorLU"); var sensorC = document.getElementById("blockdet_sensorC"); @@ -367,6 +370,7 @@ function blockdetail_setData(elm) { if (flagshort) flagshort.checked = Number(elm.flags) & BLOCK_F_SHORT; if (flaglong) flaglong.checked = Number(elm.flags) & BLOCK_F_LONG; if (flagend) flagend.checked = Number(elm.flags) & BLOCK_F_ENDSTATION; + if (flagstation) flagstation.checked = Number(elm.flags) & BLOCK_F_STATION; if (flagspeedlimit) flagspeedlimit.checked = Number(elm.flags) & BLOCK_F_SPEEDLIMIT; if (sensorLU) sensorLU.value = elm.sensor_pos_1; if (sensorC) sensorC.value = elm.sensor_center; @@ -387,6 +391,7 @@ function blockdetail_getData() { var flagshort = document.getElementById("blockdet_flagshort"); var flaglong = document.getElementById("blockdet_flaglong"); var flagend = document.getElementById("blockdet_flagend"); + var flagstation = document.getElementById("blockdet_flagstation"); var flagspeedlimit = document.getElementById("blockdet_flagspeedlimit"); var sensorLU = document.getElementById("blockdet_sensorLU"); var sensorC = document.getElementById("blockdet_sensorC"); @@ -401,7 +406,10 @@ function blockdetail_getData() { else res.flags &= ~BLOCK_F_LONG; if (flagend.checked) res.flags |= BLOCK_F_ENDSTATION; else res.flags &= ~BLOCK_F_ENDSTATION; + if (flagstation.checked) res.flags |= BLOCK_F_STATION; + else res.flags &= ~BLOCK_F_STATION; if (flagspeedlimit.checked) res.flags |= BLOCK_F_SPEEDLIMIT; + else res.flags &= ~BLOCK_F_SPEEDLIMIT; if (sensorLU) res.sensor_pos_1 = sensorLU.value; if (sensorC) res.sensor_center = sensorC.value; if (sensorRD) res.sensor_neg_1 = sensorRD.value;