diff --git a/server/block.cc b/server/block.cc
index 88c4e43..88acb8d 100644
--- a/server/block.cc
+++ b/server/block.cc
@@ -41,6 +41,9 @@ JSONParse Blocks::_GetJSON(int idx) {
s = blocks[idx].name; json.AddObject("name", s);
json.AddObject("flags", blocks[idx].flags);
json.AddObject("lockedby", blocks[idx].lockedby);
+ json.AddObject("sensor_pos_1", blocks[idx].s_pos_1);
+ json.AddObject("sensor_center", blocks[idx].s_center);
+ json.AddObject("sensor_neg_1", blocks[idx].s_neg_1);
return json;
};
@@ -98,6 +101,16 @@ Block Blocks::GetBlockFromJSON(JSONParse *j) {
j->GetValue("name", &s);
strncpy (bl.name, s.c_str(), REFERENCENAME_LEN);
j->GetValueInt("flags", &bl.flags);
+ // j->GetValue("lockedby", &s);
+ // strncpy (bl.lockedby, s.c_str(), REFERENCENAME_LEN);
+ s = ""; j->GetValue("sensor_pos_1", &s);
+ strncpy (bl.s_pos_1, s.c_str(), REFERENCENAME_LEN);
+ s = ""; j->GetValue("sensor_center", &s);
+ strncpy (bl.s_center, s.c_str(), REFERENCENAME_LEN);
+ s = ""; j->GetValue("sensor_neg_1", &s);
+ strncpy (bl.s_neg_1, s.c_str(), REFERENCENAME_LEN);
+
+ printf ("%s:%d Sensor (%s ---> %s ---> %s\n", __FILE__, __LINE__, bl.s_pos_1, bl.s_center, bl.s_neg_1);
return bl;
};
diff --git a/server/block.h b/server/block.h
index 8b4429d..2b40d8a 100644
--- a/server/block.h
+++ b/server/block.h
@@ -14,7 +14,8 @@
struct s_Block {
char name[REFERENCENAME_LEN];
- char s_pos_1[REFERENCENAME_LEN];
+ char s_pos_1[REFERENCENAME_LEN]; //
+ char s_center[REFERENCENAME_LEN];
char s_neg_1[REFERENCENAME_LEN];
int flags;
diff --git a/server/locomotive.h b/server/locomotive.h
index 096f09f..d192674 100644
--- a/server/locomotive.h
+++ b/server/locomotive.h
@@ -5,10 +5,12 @@
#include "modelbahn.h"
#include "server.h"
-#define LOCO_F_REVERSE 0x0001
-#define LOCO_F_CARGO 0x0002
-#define LOCO_F_AUTO 0x0100
-#define LOCO_F_RANDOM 0x0200
+#define LOCO_F_REVERSE 0x0001
+#define LOCO_F_CARGO 0x0010
+#define LOCO_F_CANREVERSE 0x0020
+#define LOCO_F_SHORTTRAIN 0x0040
+#define LOCO_F_AUTO 0x0100
+#define LOCO_F_RANDOM 0x0200
enum {
LOCO_INT_UNDEF = 0,
diff --git a/webinterface/block.js b/webinterface/block.js
index a2aa9d4..3169ccc 100644
--- a/webinterface/block.js
+++ b/webinterface/block.js
@@ -19,6 +19,11 @@ function block_Update(blockdata) {
if (blockdata.name == blocks[i].name) {
blocks[i].name = blockdata.name;
blocks[i].flags = blockdata.flags;
+ blocks[i].lockedby = blockdata.lockedby;
+ blocks[i].sensor_pos_1 = blockdata.sensor_pos_1,
+ blocks[i].sensor_center = blockdata.sensor_center,
+ blocks[i].sensor_neg_1 = blockdata.sensor_neg_1
+ blockdetail_setData(blocks[i]);
return;
}
}
@@ -27,7 +32,10 @@ function block_Update(blockdata) {
//debug ("Add Interface:" + intdata.name + "(" + intdata.host + ")");
blocks.push ({
name: blockdata.name,
- flags: blockdata.flags
+ flags: blockdata.flags,
+ sensor_pos_1: blockdata.sensor_pos_1,
+ sensor_center: blockdata.sensor_center,
+ sensor_neg_1: blockdata.sensor_neg_1
});
};
@@ -63,27 +71,27 @@ function block_contextmenu(name) {
innerhtml += "";
}
innerhtml += "
";
- innerhtml += "
";
- innerhtml += "
";
- innerhtml += "
";
- innerhtml += "
\ + \ + \
+ \
+
\ \
\
\
\
\
\
- ");
+ ";
+ debug ("blockdetail_show");
+
+ if (!win) {
+ debug ("blockdetail_show create window");
+ win = gWindowCreate("blockdetail", "Block", 450, 300, innerHTML);
gAddEventListener("blockdet_CLOSE", 'click', blockdetail_cb_close);
gAddEventListener("blockdet_DELETE", 'click', blockdetail_cb_delete);
@@ -301,11 +348,25 @@ function blockdetail_cb_prev () {
//
function blockdetail_setData(elm) {
var name = document.getElementById("blockdet_name");
- var flags = document.getElementById("blockdet_flags");
+ var flagoff = document.getElementById("blockdet_flagoff");
+ var flagshort = document.getElementById("blockdet_flagshort");
+ var flaglong = document.getElementById("blockdet_flaglong");
+ var flagend = document.getElementById("blockdet_flagend");
+ var flagspeedlimit = document.getElementById("blockdet_flagspeedlimit");
+ var sensorLU = document.getElementById("blockdet_sensorLU");
+ var sensorC = document.getElementById("blockdet_sensorC");
+ var sensorRD = document.getElementById("blockdet_sensorRD");
if (elm) {
if (name) name.value = elm.name;
- if (flags) flags.value = elm.flags;
+ if (flagoff) flagoff.checked = Number(elm.flags) & BLOCK_F_OFF;
+ 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 (flagspeedlimit) flagspeedlimit.checked = Number(elm.flags) & BLOCK_F_SPEEDLIMIT;
+ if (sensorLU) sensorLU.value = elm.sensor_pos_1;
+ if (sensorC) sensorC.value = elm.sensor_center;
+ if (sensorRD) sensorRD.value = elm.sensor_neg_1;
}
};
@@ -317,11 +378,24 @@ function blockdetail_setData(elm) {
function blockdetail_getData() {
var res = { name: "", flags:0 };
var name = document.getElementById("blockdet_name");
- var flags = document.getElementById("blockdet_flags");
+ var flagoff = document.getElementById("blockdet_flagoff");
+ var flagshort = document.getElementById("blockdet_flagshort");
+ var flaglong = document.getElementById("blockdet_flaglong");
+ var flagend = document.getElementById("blockdet_flagend");
+ var flagspeedlimit = document.getElementById("blockdet_flagspeedlimit");
+ var sensorLU = document.getElementById("blockdet_sensorLU");
+ var sensorC = document.getElementById("blockdet_sensorC");
+ var sensorRD = document.getElementById("blockdet_sensorRD");
if (name) res.name = name.value;
- if (flags) res.flags = flags.value;
-
+ if (flagoff.checked) res.flags |= BLOCK_F_OFF;
+ if (flagshort.checked) res.flags |= BLOCK_F_SHORT;
+ if (flaglong.checked) res.flags |= BLOCK_F_LONG;
+ if (flagend.checked) res.flags |= BLOCK_F_ENDSTATION;
+ if (flagspeedlimit.checked) 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;
return res;
};
diff --git a/webinterface/locomotive.js b/webinterface/locomotive.js
index 025605e..76f9cb8 100644
--- a/webinterface/locomotive.js
+++ b/webinterface/locomotive.js
@@ -2,10 +2,12 @@
//
//
-const LOCO_F_REVERSE = 0x0001;
-const LOCO_F_CARGO = 0x0002;
-const LOCO_F_AUTO = 0x0100;
-const LOCO_F_RANDOM = 0x0200;
+const LOCO_F_REVERSE = 0x0001;
+const LOCO_F_CARGO = 0x0010;
+const LOCO_F_CANREVERSE = 0x0020;
+const LOCO_F_SHORTTRAIN = 0x0040;
+const LOCO_F_AUTO = 0x0100;
+const LOCO_F_RANDOM = 0x0200;
var locomotives = [];
@@ -113,9 +115,6 @@ function locomotive_server_Dest(locname, blockname, reverse) {
-
-
-
//
// send delete element to server
//
@@ -133,7 +132,7 @@ function locodetail_show(loconame) {
if (!win) {
debug ("loco_showdetail create window");
- win = gWindowCreate("locodetail", "Locomotive", 400, 500, " \
+ win = gWindowCreate("locodetail", "Locomotive", 450, 500, " \
\
Name: \
\
@@ -147,14 +146,16 @@ function locodetail_show(loconame) {
\
|