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_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.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;
|
|
|
public RTZ32_Talker_Reader_Control(RTZ32_Talker talker, Socket socketControl) throws Exception
|
{
|
this.talker = talker;
|
this.disControl = new DataInputStream(socketControl.getInputStream());
|
}
|
|
|
public void read() throws Exception
|
{
|
// Read response
|
|
int value = disControl.read();
|
|
long timestamp = System.currentTimeMillis();
|
|
switch (value)
|
{
|
case RTZ32_Talker.ACK : Shared.println(talker.name, "< ACK"); return;
|
case RTZ32_Talker.NACK : Shared.println(talker.name, "< NACK"); return;
|
case RTZ32_Talker.SYNC : Shared.println(talker.name, "< SYNC"); return;
|
case RTZ32_Talker.SYNCD : Shared.println(talker.name, "< SYNCD"); return;
|
|
case RTZ32_Talker.SCYCLE :
|
|
try
|
{
|
RTZ32_Realtime realtime = talker.rtz32_current.getDeviceRealtime().rtz32;
|
realtime.counters.lastTimestampUpdate = timestamp;
|
realtime.counters.cycle = 0;
|
realtime.counters.cycleReal = 0;
|
|
RTZ32_Status status = talker.rtz32_current.getDeviceStatus().rtz32;
|
RTZ32_Configuration configuration = talker.rtz32_current.getDeviceConfiguration().rtz32;
|
|
int cycleDuration = configuration.getProgram(status.plan.number).cycle;
|
realtime.scycle(cycleDuration);
|
|
realtime.counters.previousCycleStartTimestamp = realtime.counters.currentCycleStartTimestamp;
|
realtime.counters.currentCycleStartTimestamp = timestamp;
|
Shared.println(talker.name, "< SCYCLE, finished cycle = " + cycleDuration);
|
|
}
|
catch (Exception exception)
|
{
|
Shared.println(talker.name, "< SCYCLE");
|
}
|
|
return;
|
}
|
|
|
Shared.println(talker.name, "< CTRL " + String.format("%02X", value));
|
|
|
// Trolley demands
|
|
try
|
{
|
RTZ32_Realtime realtime = talker.rtz32_current.getDeviceRealtime().rtz32;
|
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);
|
|
}
|
catch (Exception exception)
|
{
|
}
|
|
try
|
{
|
RTZ32_Realtime realtime = talker.rtz32_current.getDeviceRealtime().rtz32;
|
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)); update(timestamp); return;
|
case 0x4c : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTD, active)); update(timestamp); return;
|
case 0x4d : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTDC, active)); update(timestamp); return;
|
case 0x4e : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTF, active)); update(timestamp); return;
|
|
case 0x5b : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTN, active)); update(timestamp); return;
|
case 0x5c : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTD, active)); update(timestamp); return;
|
case 0x5d : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTDC, active)); update(timestamp); return;
|
case 0x5e : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTF, active)); update(timestamp); return;
|
|
case 0x6b : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTN, active)); update(timestamp); return;
|
case 0x6c : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTD, active)); update(timestamp); return;
|
case 0x6d : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTDC, active)); update(timestamp); return;
|
case 0x6e : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTF, active)); update(timestamp); return;
|
|
case 0x7b : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTN, active)); update(timestamp); return;
|
case 0x7c : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTD, active)); update(timestamp); return;
|
case 0x7d : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTDC, active)); update(timestamp); return;
|
case 0x7e : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Demand(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Demand.TYPE_DTF, active)); update(timestamp); return;
|
}
|
}
|
catch (Exception exception)
|
{
|
}
|
|
|
// Trolley detectors
|
|
try
|
{
|
RTZ32_Realtime realtime = talker.rtz32_current.getDeviceRealtime().rtz32;
|
int cycleReal = realtime.counters.getCurrentCycleReal();
|
|
switch (value)
|
{
|
case 0x41 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DA)); update(timestamp); return;
|
case 0x42 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP1)); update(timestamp); return;
|
case 0x43 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP2)); update(timestamp); return;
|
case 0x44 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP3)); update(timestamp); return;
|
case 0x45 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP4)); update(timestamp); return;
|
case 0x46 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DS)); update(timestamp); return;
|
case 0x47 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DC)); update(timestamp); return;
|
case 0x48 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DE)); update(timestamp); return;
|
case 0x49 : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DEC)); update(timestamp); return;
|
case 0x4a : realtime.addImpulse(1, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DF)); update(timestamp); return;
|
|
case 0x51 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DA)); update(timestamp); return;
|
case 0x52 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP1)); update(timestamp); return;
|
case 0x53 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP2)); update(timestamp); return;
|
case 0x54 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP3)); update(timestamp); return;
|
case 0x55 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP4)); update(timestamp); return;
|
case 0x56 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DS)); update(timestamp); return;
|
case 0x57 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DC)); update(timestamp); return;
|
case 0x58 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DE)); update(timestamp); return;
|
case 0x59 : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DEC)); update(timestamp); return;
|
case 0x5a : realtime.addImpulse(2, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DF)); update(timestamp); return;
|
|
case 0x61 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DA)); update(timestamp); return;
|
case 0x62 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP1)); update(timestamp); return;
|
case 0x63 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP2)); update(timestamp); return;
|
case 0x64 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP3)); update(timestamp); return;
|
case 0x65 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP4)); update(timestamp); return;
|
case 0x66 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DS)); update(timestamp); return;
|
case 0x67 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DC)); update(timestamp); return;
|
case 0x68 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DE)); update(timestamp); return;
|
case 0x69 : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DEC)); update(timestamp); return;
|
case 0x6a : realtime.addImpulse(3, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DF)); update(timestamp); return;
|
|
case 0x71 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DA)); update(timestamp); return;
|
case 0x72 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP1)); update(timestamp); return;
|
case 0x73 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP2)); update(timestamp); return;
|
case 0x74 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP3)); update(timestamp); return;
|
case 0x75 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DP4)); update(timestamp); return;
|
case 0x76 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DS)); update(timestamp); return;
|
case 0x77 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DC)); update(timestamp); return;
|
case 0x78 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DE)); update(timestamp); return;
|
case 0x79 : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DEC)); update(timestamp); return;
|
case 0x7a : realtime.addImpulse(4, new RTZ32_Realtime_Impulse_Trolley_Detector(timestamp, cycleReal, RTZ32_Realtime_Impulse_Trolley_Detector.TYPE_DF)); update(timestamp); return;
|
}
|
}
|
catch (Exception exception)
|
{
|
}
|
|
}
|
|
|
|
private void update(long timestamp)
|
{
|
talker.rtz32_current.getDeviceRealtime().setLastTimestampUpdate(timestamp);
|
}
|
|
|
|
|
}
|