package art.servers.rtzserver.controller.RTZ32;
|
|
import art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration;
|
import art.library.model.devices.colors.controller.RTZ32.realtime.RTZ32_Realtime;
|
import art.library.model.devices.colors.controller.RTZ32.realtime.RTZ32_Realtime_Counters;
|
import art.library.model.devices.colors.controller.RTZ32.realtime.RTZ32_Realtime_Impulse_Trolley_Demand;
|
import art.library.model.devices.colors.controller.RTZ32.realtime.RTZ32_Realtime_Impulse_Trolley_Detector;
|
import art.library.model.devices.colors.controller.RTZ32.realtime.RTZ32_Realtime_Sync;
|
import art.library.model.devices.colors.controller.RTZ32.realtime.RTZ32_Realtime_Trolley_Demands;
|
import art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status;
|
import art.servers.Shared;
|
import java.io.DataInputStream;
|
import java.net.Socket;
|
|
|
public class RTZ32_Talker_Reader_Control
|
{
|
private RTZ32_Talker talker = null;
|
private DataInputStream disControl = null;
|
private String name = null;
|
|
|
public RTZ32_Talker_Reader_Control(RTZ32_Talker talker, Socket socketControl) throws Exception
|
{
|
this.talker = talker;
|
this.disControl = new DataInputStream(socketControl.getInputStream());
|
this.name = this.talker.name + " (Reader control)";
|
}
|
|
|
public void read() throws Exception
|
{
|
// Read response
|
|
int value = disControl.read();
|
|
long timestamp = System.currentTimeMillis();
|
|
|
RTZ32_Status status = talker.rtz32.getDeviceStatus().rtz32;
|
RTZ32_Realtime realtime = talker.rtz32.getDeviceRealtime().rtz32;
|
|
switch (value)
|
{
|
case RTZ32_Talker.ACK : Shared.println(this.name, "< ACK"); return;
|
case RTZ32_Talker.NACK : Shared.println(this.name, "< NACK"); return;
|
case RTZ32_Talker.SYNC :
|
{
|
if (realtime.sync == null) realtime.sync = new RTZ32_Realtime_Sync();
|
realtime.sync.lastTimestampSync = timestamp;
|
Shared.println(this.name, "< SYNC");
|
talker.listener.realtimeUpdate();
|
}
|
return;
|
|
case RTZ32_Talker.SYNCD :
|
{
|
if (realtime.sync == null) realtime.sync = new RTZ32_Realtime_Sync();
|
realtime.sync.lastTimestampSyncD = timestamp;
|
Shared.println(this.name, "< SYNCD");
|
talker.listener.realtimeUpdate();
|
}
|
return;
|
|
case RTZ32_Talker.SCYCLE :
|
|
try
|
{
|
realtime.counters.lastTimestampUpdate = timestamp;
|
realtime.counters.cycle = 0;
|
realtime.counters.cycleReal = 0;
|
|
RTZ32_Configuration configuration = talker.rtz32.getDeviceConfiguration().rtz32;
|
|
if ((configuration == null) || (configuration.isValid() == false))
|
{
|
// if ((talker.rtz32.getDeviceRealtime().rtz32 == null) || (talker.rtz32.getDeviceRealtime().rtz32.reading == null))
|
// {
|
// talker.rtz32.getDeviceConfiguration().rtz32 = null;
|
// }
|
|
Shared.println(this.name, "< SCYCLE");
|
}
|
else
|
{
|
int cycleDuration = configuration.getProgram(status.plan.number).cycle;
|
realtime.scycle(cycleDuration);
|
Shared.println(this.name, "< SCYCLE, finished cycle = " + cycleDuration);
|
}
|
|
realtime.counters.previousCycleStartTimestamp = realtime.counters.currentCycleStartTimestamp;
|
realtime.counters.currentCycleStartTimestamp = timestamp;
|
|
}
|
catch (Exception exception)
|
{
|
Shared.println(this.name, "< SCYCLE");
|
}
|
|
talker.listener.realtimeUpdate();
|
return;
|
}
|
|
|
Shared.println(this.name, "< CTRL " + String.format("%02X", value));
|
|
|
// Trolley demands
|
|
try
|
{
|
|
if ((value >= 0x4b) && (value <= 0x4d)) realtime.trolleyDemands.activation(1);
|
if ((value >= 0x5b) && (value <= 0x5d)) realtime.trolleyDemands.activation(2);
|
if ((value >= 0x6b) && (value <= 0x6d)) realtime.trolleyDemands.activation(3);
|
if ((value >= 0x7b) && (value <= 0x7d)) realtime.trolleyDemands.activation(4);
|
|
if (value == 0x4e) realtime.trolleyDemands.deactivation(1);
|
if (value == 0x5e) realtime.trolleyDemands.deactivation(2);
|
if (value == 0x6e) realtime.trolleyDemands.deactivation(3);
|
if (value == 0x7e) realtime.trolleyDemands.deactivation(4);
|
|
|
if (realtime.counters == null)
|
{
|
realtime.counters = new RTZ32_Realtime_Counters();
|
}
|
|
if (realtime.trolleyDemands == null)
|
{
|
realtime.trolleyDemands = new RTZ32_Realtime_Trolley_Demands();
|
}
|
|
|
int cycleReal = realtime.counters.getCurrentCycleReal();
|
boolean active = realtime.trolleyDemands.active;
|
|
switch (value)
|
{
|
case 0x4b : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTN, active)); break;
|
case 0x4c : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTD, active)); break;
|
case 0x4d : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTDC, active)); break;
|
case 0x4e : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTF, active)); break;
|
|
case 0x5b : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTN, active)); break;
|
case 0x5c : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTD, active)); break;
|
case 0x5d : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTDC, active)); break;
|
case 0x5e : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTF, active)); break;
|
|
case 0x6b : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTN, active)); break;
|
case 0x6c : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTD, active)); break;
|
case 0x6d : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTDC, active)); break;
|
case 0x6e : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTF, active)); break;
|
|
case 0x7b : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTN, active)); break;
|
case 0x7c : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTD, active)); break;
|
case 0x7d : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTDC, active)); break;
|
case 0x7e : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTF, active)); break;
|
|
// Trolley detectors
|
|
case 0x41 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DA)); break;
|
case 0x42 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP1)); break;
|
case 0x43 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP2)); break;
|
case 0x44 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP3)); break;
|
case 0x45 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP4)); break;
|
case 0x46 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DS)); break;
|
case 0x47 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DC)); break;
|
case 0x48 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DE)); break;
|
case 0x49 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DEC)); break;
|
case 0x4a : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DF)); break;
|
|
case 0x51 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DA)); break;
|
case 0x52 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP1)); break;
|
case 0x53 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP2)); break;
|
case 0x54 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP3)); break;
|
case 0x55 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP4)); break;
|
case 0x56 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DS)); break;
|
case 0x57 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DC)); break;
|
case 0x58 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DE)); break;
|
case 0x59 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DEC)); break;
|
case 0x5a : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DF)); break;
|
|
case 0x61 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DA)); break;
|
case 0x62 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP1)); break;
|
case 0x63 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP2)); break;
|
case 0x64 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP3)); break;
|
case 0x65 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP4)); break;
|
case 0x66 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DS)); break;
|
case 0x67 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DC)); break;
|
case 0x68 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DE)); break;
|
case 0x69 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DEC)); break;
|
case 0x6a : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DF)); break;
|
|
case 0x71 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DA)); break;
|
case 0x72 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP1)); break;
|
case 0x73 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP2)); break;
|
case 0x74 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP3)); break;
|
case 0x75 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP4)); break;
|
case 0x76 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DS)); break;
|
case 0x77 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DC)); break;
|
case 0x78 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DE)); break;
|
case 0x79 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DEC)); break;
|
case 0x7a : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DF)); break;
|
}
|
|
talker.listener.realtimeUpdate();
|
}
|
catch (Exception exception)
|
{
|
}
|
|
}
|
|
|
|
|
}
|