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