added side menu für auto, manual

origin
steffen 5 years ago
parent f1580d3713
commit 4e68939126

@ -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);

@ -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;

@ -23,6 +23,7 @@ class Interface {
private:
InterfaceZ21 intz21;
bool needs_update;
struct timeval turnouttimeout;
public:
char name[REFERENCENAME_LEN];
char host[NET_HOSTLEN];

@ -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)) {

@ -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;

@ -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,8 +185,11 @@ bool Server::IsChanged() {
// Set Mode Auto
void Server::SetModeAuto() {
debug (0, "%s:%d * Set Mode Auto", __FILE__, __LINE__);
if (mode == SMODE_MANUAL) {
mode = SMODE_MANUAL;
status_text = "Mode Auto";
}
}
//
// Set Mode Manual

@ -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);

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

@ -52,26 +52,32 @@
<img src="images/btnonoff.png"></button>
<br><br>
<button class="side_btn_mode" id="sidebtn-reset" onclick="sideBtnResetClick(this);" value="none">
<img src="images/btnreset.png"></button><br><br>
<button class="side_btn_mode" id="sidebtn-close" onclick="sideBtnCloseClick(this);" value="none">
<img src="images/btnreset.png"></button><br>
<button class="side_btn_mode" id="sidebtn-manual" onclick="sideBtnManualClick(this);" value="none">
<img src="images/btnmanual.png"></button><br>
<button class="side_btn_mode" id="sidebtn-auto" onclick="sideBtnAutoClick(this);" value="none">
<img src="images/btnauto.png"></button><br>
<br>
<button class="side_btn_cmd" id="sidebtn-close" onclick="sideBtnCloseClick(this);" value="none">
<img src="images/btnclose.png"></button><br><br>
<br><br>
<div class="page_side_edit" id="side_trackeditbuttons" style="display: none;">
<button class="side_btn_mode side_btn_selected" id="mode-none" onclick="sideBtnModeClick(this);" value="none">
<button class="side_btn_cmd side_btn_selected" id="cmd-none" onclick="sideBtnCmdClick(this);" value="none">
<img src="images/btnarrow.png"></button>
<button class="side_btn_mode" id="mode-move" onclick="sideBtnModeClick(this);" value="move">
<button class="side_btn_cmd" id="cmd-track-move" onclick="sideBtnCmdClick(this);" value="move">
<img src="images/btnmove.png"></button>
<button class="side_btn_mode" id="mode-delete" onclick="sideBtnModeClick(this);" value="delete">
<button class="side_btn_cmd" id="cmd-track-delete" onclick="sideBtnCmdClick(this);" value="delete">
<img src="images/btndelete.png"></button>
<button class="side_btn_mode" id="mode-rail" onclick="sideBtnModeClick(this);" value="rail">
<button class="side_btn_cmd" id="cmd-track-rail" onclick="sideBtnCmdClick(this);" value="rail">
<img src="images/btnrail.png"></button>
<button class="side_btn_mode" id="mode-detail" onclick="sideBtnModeClick(this);" value="detail">
<button class="side_btn_cmd" id="cmd-track-detail" onclick="sideBtnCmdClick(this);" value="detail">
<img src="images/btnsettings.png"></button>
<br><br>
</div>
<div class="page_side_edit" id="side_normalbuttons" style="display: block;">
<button class="side_btn_mode" id="sidebtn-loco" onclick="sideBtnLocoClick(this);" value="none">
<button class="side_btn_cmd" id="sidebtn-loco" onclick="sideBtnLocoClick(this);" value="none">
<img src="images/btnloco.png"></button><br><br>
</div>

@ -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;

@ -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

@ -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;
};

@ -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();

Loading…
Cancel
Save