package art.servers.rtzserver.controller;
|
|
import art.library.interop.InteropParameters;
|
import art.library.interop.serialization.Serialization;
|
import art.library.interop.serialization.SerializationException;
|
import art.library.model.devices.DeviceAction;
|
import art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller;
|
import art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerAlarms;
|
import art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerCommands;
|
import art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerConfiguration;
|
import art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerRealtime;
|
import art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerStatus;
|
import art.library.model.devices.colors.controller.RTZ32.alarms.RTZ32_Alarms;
|
import art.library.model.devices.colors.controller.RTZ32.commands.RTZ32_Commands_Configuration_Write;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration_Group;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration_Program;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.constants.RTZ32_Constants;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_1;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_11_28;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_2;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_3;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_31;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_32;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_33;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_34;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_35;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_36;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_37;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_38_40;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_4;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_42;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_43;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_44;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_45;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_46;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_5;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_6;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.RTZ32_Configuration_Table_7;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.eprom.RTZ32_Configuration_Table_91;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.eprom.RTZ32_Configuration_Table_92;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.eprom.RTZ32_Configuration_Table_93;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.eprom.RTZ32_Configuration_Table_94;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.eprom.RTZ32_Configuration_Table_95;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.microregulation.RTZ32_Configuration_Table_65;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.microregulation.RTZ32_Configuration_Table_66;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.microregulation.RTZ32_Configuration_Table_67;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.microregulation.RTZ32_Configuration_Table_68;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.microregulation.RTZ32_Configuration_Table_69;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.timetables.RTZ32_Configuration_Table_50;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.timetables.RTZ32_Configuration_Table_51;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.timetables.RTZ32_Configuration_Table_52;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.timetables.RTZ32_Configuration_Table_53_60;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.trolleygroups.RTZ32_Configuration_Table_70;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.trolleygroups.RTZ32_Configuration_Table_71;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.trolleygroups.RTZ32_Configuration_Table_72;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.trolleygroups.RTZ32_Configuration_Table_73;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.trolleygroups.RTZ32_Configuration_Table_74;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.trolleygroups.RTZ32_Configuration_Table_75;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.trolleygroups.RTZ32_Configuration_Table_78;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.trolleygroups.RTZ32_Configuration_Table_79;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.trolleygroups.RTZ32_Configuration_Table_80;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.trolleygroups.RTZ32_Configuration_Table_81;
|
import art.library.model.devices.colors.controller.RTZ32.configuration.tables.trolleygroups.RTZ32_Configuration_Table_82_85;
|
import art.library.model.devices.colors.controller.RTZ32.information.RTZ32_Information_Program;
|
import art.library.model.devices.colors.controller.RTZ32.realtime.RTZ32_Realtime;
|
import art.library.model.devices.colors.controller.RTZ32.realtime.RTZ32_Realtime_Reading;
|
import art.library.model.devices.colors.controller.RTZ32.realtime.RTZ32_Realtime_Writing;
|
import art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status;
|
import art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_Forcings;
|
import art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_Pendings;
|
import art.library.model.devices.colors.controller.RTZ32.types.RTZ32_Persistent_Configuration;
|
import art.library.model.devices.colors.controller.RTZ32.types.RTZ32_Report_Information;
|
import art.library.model.devices.etd.EtdStatus;
|
import art.library.model.devices.etd.status.EtdStatusLane;
|
import art.library.utils.common.StringUtils;
|
import art.library.utils.common.TimeUtils;
|
import art.library.utils.synchro.Mutex;
|
import art.servers.ServerException;
|
import art.servers.Shared;
|
import art.servers.rtzserver.controller.RTZ32.RTZ32_Talker;
|
import art.servers.rtzserver.controller.RTZ32.RTZ32_Talker_Listener;
|
import art.servers.rtzserver.reports.Report_CCT_Juzgados;
|
import art.servers.rtzserver.reports.Report_Configuration;
|
import static java.lang.Thread.sleep;
|
import java.util.ArrayList;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Timer;
|
import java.util.TimerTask;
|
|
|
public class Controller_RTZ32 extends Controller
|
{
|
public String name = null;
|
protected RTZ32_Controller device_rtz32 = null;
|
protected RTZ32_Talker talker = null;
|
protected Mutex mutexUpdate = new Mutex();
|
private boolean forceUpdate = false;
|
private boolean updatingStatus = false;
|
private boolean readingTables = false;
|
private List<EtdStatus> ltrafficData = new ArrayList<EtdStatus>();
|
|
|
protected Boolean realtime_junction = null;
|
protected Boolean realtime_groups = null;
|
protected Boolean realtime_phases = null;
|
|
public Controller_RTZ32(RTZ32_Controller device_rtz32)
|
{
|
super(device_rtz32);
|
this.device_rtz32 = device_rtz32;
|
this.name = art.servers.Shared.getMessage("Controller") + " " + this.device_rtz32.getDeviceInformation().name;
|
this.setName(this.name);
|
|
try
|
{
|
// this.device_rtz32.configuratfion = ((RTZ32_Controller)Serialization.deserialize(RTZ32_Controller.class, new File("controller-zaragoza-90020_v1.json"))).configuration;
|
// this.device_rtz32.status = new RTZ32_ControllerStatus();
|
// this.device_rtz32.getDeviceStatus().rtz32 = new RTZ32_Status();
|
// this.device_rtz32.getDeviceStatus().rtz32.realtime = new RTZ32_Status_Realtime();
|
// this.device_rtz32.getDeviceStatus().rtz32.realtime.junction = true;
|
|
// Controller_RTZ32_Factory_Configuration factory = new Controller_RTZ32_Factory_Configuration(this.device_rtz32.getDeviceConfiguration().rtz32);
|
// factory.serialize();
|
// Serialization.serialize(this.device_rtz32.getDeviceConfiguration().rtz32, new File("test1.json"));
|
// RTZ32_Configuration config = factory.deserialize();
|
// Serialization.serialize(config, new File("test2.json"));
|
|
// RTZ32_Window_Realtime window = new RTZ32_Window_Realtime(device_rtz32);
|
// window.setSize(new Dimension(1024, 768));
|
// window.setLocation(0, 0);
|
// window.setVisible(true);
|
|
// RTZ32_Window window2 = new RTZ32_Window(device_rtz32, null);
|
// window2.setSize(new Dimension(1024, 768));
|
// window2.setLocation(0, 0);
|
// window2.setVisible(true);
|
}
|
catch (Exception exception)
|
{
|
exception.printStackTrace();
|
}
|
|
|
|
// Initialise
|
|
if ((this.device_rtz32.status == null) || (this.device_rtz32.getDeviceStatus().rtz32 == null))
|
{
|
this.device_rtz32.status = new RTZ32_ControllerStatus();
|
this.device_rtz32.getDeviceStatus().rtz32 = new RTZ32_Status();
|
}
|
|
if ((this.device_rtz32.alarms == null) || (this.device_rtz32.getDeviceAlarms().rtz32 == null))
|
{
|
this.device_rtz32.alarms = new RTZ32_ControllerAlarms();
|
this.device_rtz32.getDeviceAlarms().rtz32 = new RTZ32_Alarms();
|
this.device_rtz32.setAlarm("alarm_offline", System.currentTimeMillis());
|
}
|
|
if ((this.device_rtz32.realtime == null) || (this.device_rtz32.getDeviceRealtime().rtz32 == null))
|
{
|
this.device_rtz32.realtime = new RTZ32_ControllerRealtime();
|
this.device_rtz32.getDeviceRealtime().rtz32 = new RTZ32_Realtime();
|
}
|
|
if ((this.device_rtz32.configuration == null) || (this.device_rtz32.getDeviceConfiguration().rtz32 == null))
|
{
|
this.device_rtz32.configuration = new RTZ32_ControllerConfiguration();
|
}
|
|
if (this.device_rtz32.getDeviceStatus().rtz32.forcings == null) this.device_rtz32.getDeviceStatus().rtz32.forcings = new RTZ32_Status_Forcings();
|
if (this.device_rtz32.getDeviceStatus().rtz32.pendings == null) this.device_rtz32.getDeviceStatus().rtz32.pendings = new RTZ32_Status_Pendings();
|
|
|
// Start talker
|
|
talker = new RTZ32_Talker(name, this.device_rtz32, this);
|
talker.setListener(new RTZ32_Talker_Listener()
|
{
|
public void connected()
|
{
|
if (device_rtz32.getDeviceInformation().number <= 9003)
|
{
|
Shared.println(name, "1.Listener connected");
|
}
|
Shared.model.updateDevice(device_rtz32, Serialization.clone(talker.rtz32));
|
forceUpdate = true;
|
if (device_rtz32.getDeviceInformation().number <= 9003)
|
{
|
Shared.println(name, "2.Listener connected");
|
}
|
}
|
|
public void disconnected()
|
{
|
{
|
talker.rtz32.setAlarm("alarm_offline", true);
|
Shared.model.updateDevice(device_rtz32, Serialization.clone(talker.rtz32));
|
forceUpdate = true;
|
}
|
}
|
|
public void realtimeUpdate()
|
{
|
long timestamp = System.currentTimeMillis();
|
device_rtz32.getDeviceRealtime().lastTimestampUpdate = timestamp;
|
}
|
|
public void statusUpdate()
|
{
|
if ((updatingStatus == false) && (readingTables == false))
|
{
|
if (device_rtz32.getDeviceInformation().number <= 9003)
|
{
|
Shared.println(name, "1.Listener status update");
|
}
|
mutexUpdate.lockWrite();
|
{
|
if (device_rtz32.getDeviceInformation().number <= 9003)
|
{
|
Shared.println(name, "2.Listener status update");
|
}
|
Shared.model.updateDevice(device_rtz32, Serialization.clone(talker.rtz32));
|
if (device_rtz32.getDeviceInformation().number <= 9003)
|
{
|
Shared.println(name, "3.Listener status update");
|
}
|
}
|
mutexUpdate.releaseWrite();
|
if (device_rtz32.getDeviceInformation().number <= 9003)
|
{
|
Shared.println(name, "4.Listener status update");
|
}
|
}
|
}
|
|
public void configurationUpdate()
|
{
|
if (device_rtz32.getDeviceInformation().number <= 9003)
|
{
|
Shared.println(name, "1.Listener configuration update");
|
}
|
if ((updatingStatus == false) && (readingTables == false))
|
{
|
mutexUpdate.lockWrite();
|
{
|
if (device_rtz32.getDeviceInformation().number <= 9003)
|
{
|
Shared.println(name, "2.Listener configuration update");
|
}
|
Shared.model.updateDevice(device_rtz32, Serialization.clone(talker.rtz32));
|
if (device_rtz32.getDeviceInformation().number <= 9003)
|
{
|
Shared.println(name, "3.Listener configuration update");
|
}
|
}
|
mutexUpdate.releaseWrite();
|
}
|
if (device_rtz32.getDeviceInformation().number <= 9003)
|
{
|
Shared.println(name, "4.Listener configuration update");
|
}
|
}
|
|
});
|
|
}
|
|
|
|
public RTZ32_Controller getController()
|
{
|
return this.device_rtz32;
|
}
|
|
|
|
public void run()
|
{
|
Shared.traceInformation(name, "Starting");
|
|
try
|
{
|
if (Shared.isServerEnabled() == true)
|
{
|
update();
|
}
|
|
long delay = 0;
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTimeInMillis(System.currentTimeMillis());
|
long ts = TimeUtils.thisperiod(device_rtz32.getDeviceInformation().polling) + (device_rtz32.getDeviceInformation().polling * 1000L);
|
delay = ts-calendar.getTimeInMillis();
|
|
Timer timer = new Timer();
|
timer.scheduleAtFixedRate(new TimerTask()
|
{
|
public void run ()
|
{
|
try
|
{
|
if (talker.isConnected() == true)
|
{
|
talker.writer.CTRL_DET();
|
}
|
else
|
{
|
// Este periodo se ha de guardar el EtdStatus sin datos
|
addEtdStatus(createEtdStatus());
|
}
|
}
|
catch (Exception exception)
|
{
|
}
|
}
|
|
}, delay, device_rtz32.getDeviceInformation().polling * 1000);
|
|
long timestamp1 = System.currentTimeMillis();
|
|
while ((isInterrupted() == false) && (exit == false))
|
{
|
long timestamp2 = timestamp1 + (device_rtz32.getDeviceInformation().polling * 1000);
|
|
if ((System.currentTimeMillis() > timestamp2) || (forceUpdate == true))
|
{
|
try
|
{
|
forceUpdate = false;
|
|
if (Shared.isServerEnabled() == true)
|
{
|
update();
|
}
|
}
|
catch (Exception exception)
|
{
|
}
|
|
timestamp1 = timestamp1 + device_rtz32.getDeviceInformation().polling * 1000;
|
}
|
|
sleep(1000);
|
|
|
if (Shared.model.existsDevice(device_rtz32.getIdentifier()) == false)
|
{
|
Shared.println(name, Shared.getMessage("Device no longer exists"));
|
Shared.traceInformation(name, "Device no longer exists");
|
exit = true;
|
}
|
}
|
|
}
|
catch (Exception exception)
|
{
|
}
|
|
Shared.traceInformation(name, "Finishing");
|
|
}
|
|
|
public byte[] printConfiguration(RTZ32_Report_Information reportInformation, String format, String language) throws ServerException
|
{
|
byte[] data = null;
|
|
try
|
{
|
Report_Configuration report = new Report_Configuration(language);
|
data = report.generate(format, reportInformation);
|
}
|
catch (ServerException e)
|
{
|
throw e;
|
}
|
catch (Exception e)
|
{
|
throw new ServerException(e);
|
}
|
|
return(data);
|
}
|
|
|
public byte[] printCCT(RTZ32_Report_Information reportInformation, String format, String language) throws ServerException
|
{
|
byte[] data = null;
|
|
try
|
{
|
Report_CCT_Juzgados report = new Report_CCT_Juzgados(language);
|
data = report.generateCCT(format, reportInformation, this.device_rtz32);
|
}
|
catch (ServerException e)
|
{
|
throw e;
|
}
|
catch (Exception e)
|
{
|
throw new ServerException(e);
|
}
|
|
return(data);
|
}
|
|
|
public byte[] printJuzgados(RTZ32_Report_Information reportInformation, String format, String language) throws ServerException
|
{
|
byte[] data = null;
|
|
try
|
{
|
Report_CCT_Juzgados report = new Report_CCT_Juzgados(language);
|
data = report.generateJuzgados(format, reportInformation, this.device_rtz32);
|
}
|
catch (ServerException e)
|
{
|
throw e;
|
}
|
catch (Exception e)
|
{
|
throw new ServerException(e);
|
}
|
|
return(data);
|
}
|
|
|
// <editor-fold defaultstate="collapsed" desc="Actions">
|
|
|
public DeviceAction[] sendCommands(InteropParameters parameters) throws ServerException, SerializationException, Exception
|
{
|
RTZ32_ControllerCommands commands = parameters.getBodyContentValue(RTZ32_ControllerCommands.class);
|
return Controller_RTZ32_Actions.sendCommands(this, parameters, commands);
|
}
|
|
|
|
//</editor-fold>
|
|
|
public void addEtdStatus(EtdStatus etdStatus)
|
{
|
// Añadir el EtdStatus del periodo actual
|
ltrafficData.add(etdStatus);
|
if (ltrafficData.size() >= 1440)
|
ltrafficData.remove(0);
|
}
|
|
|
public List<EtdStatus> getTrafficData(long timestamp)
|
{
|
List<EtdStatus> lresult = new ArrayList<EtdStatus>();
|
|
try
|
{
|
for (EtdStatus etdStatus : ltrafficData)
|
{
|
if (etdStatus.measurementTimestamp >= timestamp)
|
lresult.add(etdStatus);
|
}
|
}
|
catch (Exception e)
|
{
|
|
}
|
|
return(lresult);
|
}
|
|
|
public EtdStatus createEtdStatus()
|
{
|
EtdStatus etdStatus = new EtdStatus();
|
etdStatus.period = device_rtz32.getDeviceInformation().polling;
|
etdStatus.measurementTimestamp = TimeUtils.thisperiod(device_rtz32.getDeviceInformation().polling);
|
etdStatus.status = EtdStatus.STATUS_OFFLINE;
|
etdStatus.llane = new ArrayList<EtdStatusLane>();
|
etdStatus.total = new EtdStatusLane();
|
return(etdStatus);
|
}
|
|
|
// <editor-fold defaultstate="collapsed" desc="Update">
|
|
|
boolean init = true;
|
|
public void forceUpdate()
|
{
|
this.forceUpdate = true;
|
}
|
|
|
|
|
protected void update() throws Exception
|
{
|
RTZ32_Controller rtz32 = getController();
|
|
// Tables
|
|
try
|
{
|
if (talker.isConnected() == true)
|
{
|
if ((rtz32.getDeviceConfiguration().rtz32 == null)) // || (rtz32.getDeviceConfiguration().rtz32.isValid() == false))
|
{
|
configurationRead(Shared.getApplicationName(), Shared.getMessage("System initialization"), true, new ArrayList<String>());
|
}
|
}
|
}
|
catch (Exception exception)
|
{
|
}
|
|
|
|
// States and alarms
|
|
mutexUpdate.lockWrite();
|
|
updatingStatus = true;
|
|
try
|
{
|
if (talker.isConnected() == true)
|
{
|
talker.writer.PET_ESTADO();
|
talker.writer.PET_ALARMAS(0x01);
|
talker.writer.PET_ALARMAS(0x02);
|
talker.writer.PET_ALARMAS(0x03);
|
talker.writer.PET_ALARMAS(0x04);
|
talker.writer.PET_ALARMAS(0x05);
|
talker.writer.PET_ALARMAS(0x06);
|
talker.writer.PET_ALARMAS(0x07);
|
talker.writer.PET_ALARMAS(0x08);
|
talker.writer.PET_ALARMAS(0x09);
|
talker.writer.PET_ALARMAS(0x0A);
|
talker.writer.PET_ALARMAS(0x0F);
|
talker.writer.PET_PLAN_DESFASE();
|
talker.writer.PET_FH();
|
talker.writer.PET_VERSION();
|
|
|
RTZ32_Status_Pendings pendings = talker.rtz32.getDeviceStatus().rtz32.pendings;
|
|
if ((pendings != null) && (pendings.hasPendings() == true))
|
{
|
pendings.update(talker.rtz32.getDeviceStatus().rtz32);
|
}
|
|
Shared.model.updateDevice(device_rtz32, Serialization.clone(talker.rtz32));
|
}
|
else
|
{
|
RTZ32_Status_Pendings pendings = talker.rtz32.getDeviceStatus().rtz32.pendings;
|
|
if ((pendings != null) && (pendings.hasPendings() == true))
|
{
|
pendings.update(talker.rtz32.getDeviceStatus().rtz32);
|
}
|
|
Shared.model.updateDevice(device_rtz32, Serialization.clone(talker.rtz32));
|
|
}
|
}
|
catch (Exception exception)
|
{
|
}
|
finally
|
{
|
updatingStatus = false;
|
mutexUpdate.releaseWrite();
|
}
|
|
}
|
|
|
|
// </editor-fold>
|
|
|
public void adjustConfiguration (RTZ32_Information_Program program, RTZ32_Information_Program program0) throws ServerException
|
{
|
try
|
{
|
{
|
RTZ32_Controller rtz32 = Serialization.clone(this.device_rtz32);
|
for (RTZ32_Configuration_Group group : program.configuration.rtz32.groups)
|
{
|
program0.configuration.rtz32.getGroup(group.number).setType(group.type);
|
}
|
|
Controller_RTZ32_Database.addProgram(program0);
|
}
|
|
}
|
catch (Exception e)
|
{
|
|
}
|
}
|
|
|
public void adjustConfigurationPrograms (RTZ32_Information_Program program0) throws ServerException
|
{
|
try
|
{
|
for (int i=1; i<=RTZ32_Constants.MAXIMUM_NUMBER_PROGRAMS; i++)
|
{
|
try
|
{
|
RTZ32_Information_Program programI = Controller_RTZ32_Database.getProgram(this.device_rtz32.getIdentifier(), "" + i);
|
RTZ32_Configuration_Program programCfg = programI.configuration.rtz32.getProgram(i);
|
RTZ32_Configuration_Program program0Cfg = program0.configuration.rtz32.getProgram(i);
|
// programI.configuration.rtz32.programs[i-1].subtableApproachingTimesTW = program0Cfg.subtableApproachingTimesTW;
|
// programI.configuration.rtz32.programs[i-1].subtableGroupTransitions = program0Cfg.subtableGroupTransitions;
|
// programI.configuration.rtz32.programs[i-1].subtableToleranceTimesTW = program0Cfg.subtableToleranceTimesTW;
|
for (int j=1; j<=RTZ32_Constants.MAXIMUM_NUMBER_GROUPS; j++)
|
{
|
try
|
{
|
programI.configuration.rtz32.groups[j-1].transitions = program0.configuration.rtz32.groups[j-1].transitions;
|
}
|
catch (Exception e)
|
{
|
|
}
|
}
|
Controller_RTZ32_Database.addProgram(programI);
|
}
|
catch (Exception e)
|
{
|
|
}
|
}
|
}
|
catch (Exception e)
|
{
|
|
}
|
}
|
|
|
|
// <editor-fold defaultstate="collapsed" desc="Configuration read update">
|
|
public void configurationRead(String username, String description, boolean update, List<String> programsDescriptions) throws ServerException
|
{
|
if ((device_rtz32.getDeviceRealtime().rtz32.reading != null) &&
|
(device_rtz32.getDeviceRealtime().rtz32.reading.status == RTZ32_Realtime_Reading.READING_IN_PROGRESS))
|
{
|
// Already reading
|
throw new ServerException(Shared.getMessage("Already reading tables"));
|
}
|
|
if ((device_rtz32.getDeviceRealtime().rtz32.writing != null) &&
|
(device_rtz32.getDeviceRealtime().rtz32.writing.status == RTZ32_Realtime_Writing.WRITING_IN_PROGRESS))
|
{
|
// Already writing
|
throw new ServerException(Shared.getMessage("Controller is writing tables"));
|
}
|
|
if (device_rtz32.getDeviceRealtime().rtz32.reading == null)
|
device_rtz32.getDeviceRealtime().rtz32.reading = new RTZ32_Realtime_Reading();
|
device_rtz32.getDeviceRealtime().rtz32.reading.status = RTZ32_Realtime_Reading.READING_IN_PROGRESS;
|
device_rtz32.getDeviceRealtime().rtz32.reading.timestamp = System.currentTimeMillis();
|
device_rtz32.getDeviceRealtime().rtz32.reading.progress = 0f;
|
device_rtz32.getDeviceRealtime().rtz32.reading.table = 0;
|
device_rtz32.getDeviceRealtime().rtz32.reading.configuration = null;
|
device_rtz32.getDeviceRealtime().setLastTimestampUpdate(System.currentTimeMillis());
|
|
long millis = System.currentTimeMillis();
|
mutexUpdate.lockWrite(45000);
|
if ((System.currentTimeMillis()-millis) >= 45000)
|
{
|
Shared.println(name, "LOCK READ TIMEOUT");
|
device_rtz32.getDeviceRealtime().rtz32.reading.status = RTZ32_Realtime_Reading.READING_ERROR;
|
mutexUpdate.releaseWrite();
|
return;
|
}
|
|
try
|
{
|
readingTables = true;
|
for (int i=1; i<=7; i++) PET_TABLA(i);
|
for (int i=11; i<=28; i++) PET_TABLA(i);
|
for (int i=31; i<=40; i++) PET_TABLA(i);
|
for (int i=42; i<=46; i++) PET_TABLA(i);
|
for (int i=50; i<=60; i++) PET_TABLA(i);
|
for (int i=65; i<=75; i++) PET_TABLA(i);
|
for (int i=78; i<=85; i++) PET_TABLA(i);
|
for (int i=91; i<=95; i++) PET_TABLA(i);
|
|
talker.rtz32.getDeviceConfiguration().rtz32.valid = true;
|
|
Shared.println(name, Shared.getMessage("Tables downloaded") + "!!!!!!!!!!!!!!!!!!");
|
|
long recordingTimestamp = System.currentTimeMillis();
|
|
if (update == true)
|
{
|
talker.rtz32.getDeviceConfiguration().rtz32.description = description;
|
talker.rtz32.getDeviceConfiguration().rtz32.recordingTimestamp = recordingTimestamp;
|
for (int i=0; i<talker.rtz32.getDeviceConfiguration().rtz32.programs.length; i++)
|
{
|
if (talker.rtz32.getDeviceConfiguration().rtz32.programs[i] != null)
|
{
|
if ((programsDescriptions.size() > i) && (programsDescriptions.get(i) != null))
|
talker.rtz32.getDeviceConfiguration().rtz32.programs[i].description = programsDescriptions.get(i);
|
else
|
talker.rtz32.getDeviceConfiguration().rtz32.programs[i].description = description;
|
|
talker.rtz32.getDeviceConfiguration().rtz32.programs[i].recordingTimestamp = recordingTimestamp;
|
}
|
}
|
|
// Si lee todas las tablas correctamente se actualiza la configuracion
|
Shared.model.updateDevice(device_rtz32, Serialization.clone(talker.rtz32));
|
|
// Tables readed, insert in historical
|
|
RTZ32_Persistent_Configuration configuration = new RTZ32_Persistent_Configuration();
|
configuration.device = device_rtz32.getIdentifier();
|
configuration.datetime = new Date();
|
configuration.username = username;
|
configuration.action = Shared.getMessage("Tables downloading");
|
configuration.operation = Shared.getMessage("All");
|
configuration.distribution = Shared.getMessage("All");
|
configuration.description = description;
|
configuration.configuration = talker.rtz32.getDeviceConfiguration();
|
Controller_RTZ32_Database.addConfiguration(configuration);
|
}
|
else
|
{
|
device_rtz32.getDeviceRealtime().rtz32.reading.configuration = talker.rtz32.getDeviceConfiguration().rtz32;
|
talker.rtz32 = Serialization.clone(device_rtz32); // Cambio 09092022
|
}
|
|
device_rtz32.getDeviceRealtime().rtz32.reading.status = RTZ32_Realtime_Reading.READING_OK;
|
device_rtz32.getDeviceRealtime().rtz32.reading.table = 0;
|
}
|
catch (Exception exception)
|
{
|
device_rtz32.getDeviceRealtime().rtz32.reading.status = RTZ32_Realtime_Reading.READING_ERROR;
|
device_rtz32.getDeviceRealtime().rtz32.reading.configuration = null;
|
throw new ServerException(exception.getMessage());
|
}
|
finally
|
{
|
// device_rtz32.getDeviceRealtime().rtz32.reading = null;
|
device_rtz32.getDeviceRealtime().setLastTimestampUpdate(System.currentTimeMillis());
|
readingTables = false;
|
mutexUpdate.releaseWrite();
|
}
|
}
|
|
|
|
|
private void PET_TABLA(int number) throws Exception
|
{
|
device_rtz32.getDeviceRealtime().rtz32.reading.table = number;
|
|
long timestamp1 = System.currentTimeMillis();
|
{
|
talker.writer.PET_TABLA(number);
|
}
|
long timestamp2 = System.currentTimeMillis();
|
|
if ((timestamp2-timestamp1) > talker.rtz32.getDeviceInformation().connection.readTimeout)
|
{
|
throw new Exception("Timeout");
|
}
|
device_rtz32.getDeviceRealtime().rtz32.reading.progress = device_rtz32.getDeviceRealtime().rtz32.reading.progress + 1.35f;
|
device_rtz32.getDeviceRealtime().setLastTimestampUpdate(System.currentTimeMillis());
|
}
|
|
//</editor-fold>
|
|
|
|
|
|
// <editor-fold defaultstate="collapsed" desc="Configuration write">
|
|
public void configurationWrite(String username, RTZ32_Commands_Configuration_Write command) throws ServerException
|
{
|
if ((device_rtz32.getDeviceRealtime().rtz32.writing != null) &&
|
(device_rtz32.getDeviceRealtime().rtz32.writing.status == RTZ32_Realtime_Writing.WRITING_IN_PROGRESS))
|
{
|
// Already writing
|
|
throw new ServerException("Already writing tables");
|
}
|
|
if ((device_rtz32.getDeviceRealtime().rtz32.reading != null) &&
|
(device_rtz32.getDeviceRealtime().rtz32.reading.status == RTZ32_Realtime_Reading.READING_IN_PROGRESS))
|
{
|
// Already writing
|
|
throw new ServerException("Conntroller is reading tables");
|
}
|
|
|
if (device_rtz32.getDeviceRealtime().rtz32.writing == null)
|
device_rtz32.getDeviceRealtime().rtz32.writing = new RTZ32_Realtime_Writing();
|
device_rtz32.getDeviceRealtime().rtz32.writing.timestamp = System.currentTimeMillis();
|
device_rtz32.getDeviceRealtime().rtz32.writing.status = RTZ32_Realtime_Writing.WRITING_IN_PROGRESS;
|
device_rtz32.getDeviceRealtime().rtz32.writing.progress = 0f;
|
device_rtz32.getDeviceRealtime().rtz32.writing.table = 0;
|
device_rtz32.getDeviceRealtime().setLastTimestampUpdate(System.currentTimeMillis());
|
|
long millis = System.currentTimeMillis();
|
mutexUpdate.lockWrite(45000);
|
if ((System.currentTimeMillis()-millis) >= 45000)
|
{
|
Shared.println(name, "LOCK WRITE TIMEOUT");
|
device_rtz32.getDeviceRealtime().rtz32.writing.status = RTZ32_Realtime_Writing.WRITING_ERROR;
|
mutexUpdate.releaseWrite();
|
return;
|
}
|
|
updatingStatus = true;
|
|
try
|
{
|
// Tables write, insert in historical
|
Shared.println(name, "############################################# CLONING");
|
talker.rtz32 = Serialization.clone(device_rtz32);
|
talker.rtz32.realtime = device_rtz32.realtime;
|
Shared.println(name, "############################################# CLONED");
|
|
RTZ32_Persistent_Configuration configuration = new RTZ32_Persistent_Configuration();
|
configuration.device = device_rtz32.getIdentifier();
|
configuration.datetime = new Date();
|
configuration.username = username;
|
configuration.action = "Uploaded tables";
|
if (command.operationTables == true) configuration.operation = "All"; else configuration.operation = "None";
|
|
if (command.distributionTables == true)
|
{
|
if ((command.programs == null) || (command.programs.size() == 0))
|
{
|
configuration.distribution = "All";
|
}
|
else
|
{
|
configuration.distribution = command.getProgramsTables();
|
}
|
}
|
else
|
{
|
configuration.distribution = "None";
|
}
|
|
|
// Antes de enviar las tablas se ha de poner el regulador en Grabacion:ON (pagina 7 protocolo)
|
// Si al grabar una tabla devuelve 0(ok) se pasa a la siguiente, si devuelve 1(Error), no se puede enviar la siguiente
|
// (Mirar pagina 9 protocolo)
|
// Que hacer si da error?
|
// Al acabar de grabar todas las tablas se ha de enviar Grabacion:OFF
|
// Si todo ha ido bien (se ha activado grabacion, se han enviado todas las tablas correctamente, se ha desactivado grabacion)
|
// entonces se ha de borrar la copia de trabajo enviada
|
|
// Activar grabacion
|
{
|
SEND_GRABACION(true);
|
}
|
|
int[] programsTables = new int[0];
|
|
// Enviar tablas
|
{
|
if (command.operationTables == true)
|
{
|
// Send all tables less distribution tables
|
for (int i=1; i<=7; i++) SEND_TABLA(i, command.configuration);
|
|
if (configuration.distribution.equalsIgnoreCase("All") == true)
|
{
|
programsTables = new int[18];
|
|
// Send all tables 11 to 28
|
for (int i=11; i<=28; i++)
|
{
|
programsTables[i-11] = i;
|
SEND_TABLA(i, command.configuration);
|
}
|
|
configuration.action = "Enviadas tablas de reparto y de funcionamiento";
|
}
|
else if (configuration.distribution.equalsIgnoreCase("None") == true)
|
{
|
// Nothing to do
|
configuration.action = "Enviadas tablas de funcionamiento";
|
}
|
else
|
{
|
// Send all tables 11 to 28 indicated in configuration.distribution
|
configuration.action = "Enviadas tablas de repartos (";
|
programsTables = StringUtils.obtenerTokensInt(configuration.distribution, ",");
|
for (int i=0; i<programsTables.length; i++)
|
{
|
SEND_TABLA(programsTables[i], command.configuration);
|
configuration.action += (programsTables[i]-10) + "";
|
if (i<(programsTables.length-1)) configuration.action += ",";
|
}
|
|
configuration.action += ") y tablas de funcionamiento";
|
}
|
|
for (int i=31; i<=40; i++) SEND_TABLA(i, command.configuration);
|
for (int i=42; i<=46; i++) SEND_TABLA(i, command.configuration);
|
for (int i=50; i<=60; i++) SEND_TABLA(i, command.configuration);
|
for (int i=65; i<=75; i++) SEND_TABLA(i, command.configuration);
|
for (int i=78; i<=85; i++) SEND_TABLA(i, command.configuration);
|
|
// Las tablas 91 a 94 (Incompatibilidades) no se graban,
|
// están prefijadas en fabrica en el chipset del regulador
|
|
SEND_TABLA(95, command.configuration);
|
}
|
else
|
{
|
if (configuration.distribution.equalsIgnoreCase("All") == true)
|
{
|
// Send tables 1 to 7
|
for (int i=1; i<=7; i++) SEND_TABLA(i, command.configuration);
|
|
// Send all tables 11 to 28
|
for (int i=11; i<=28; i++)
|
{
|
programsTables[i-11] = i;
|
SEND_TABLA(i, command.configuration);
|
}
|
|
// Send tables 35 to 37
|
for (int i=35; i<=37; i++) SEND_TABLA(i, command.configuration);
|
|
// Send tables 42 to 45
|
for (int i=42; i<=45; i++) SEND_TABLA(i, command.configuration);
|
|
// Send tables 72 to 73
|
for (int i=72; i<=73; i++) SEND_TABLA(i, command.configuration);
|
|
// Send tables 78 to 79
|
for (int i=78; i<=79; i++) SEND_TABLA(i, command.configuration);
|
|
// Send table 80 (Correlation times)
|
SEND_TABLA(80, command.configuration);
|
|
// Send tables 82 to 85
|
for (int i=82; i<=85; i++) SEND_TABLA(i, command.configuration);
|
|
// Send table 95 (Junction number and number of groups)
|
SEND_TABLA(95, command.configuration);
|
|
configuration.action = "Enviadas tablas de todos los repartos";
|
}
|
else if (configuration.distribution.equalsIgnoreCase("None") == true)
|
{
|
// Nothing to do
|
}
|
else
|
{
|
// Send tables 1 to 7
|
for (int i=1; i<=7; i++) SEND_TABLA(i, command.configuration);
|
|
// Send all tables 11 to 28 indicated in configuration.distribution
|
configuration.action = "Enviadas tablas de repartos (";
|
programsTables = StringUtils.obtenerTokensInt(configuration.distribution, ",");
|
for (int i=0; i<programsTables.length; i++)
|
{
|
SEND_TABLA(programsTables[i], command.configuration);
|
configuration.action += (programsTables[i]-10) + "";
|
if (i<(programsTables.length-1)) configuration.action += ",";
|
}
|
|
// Send tables 35 to 37
|
for (int i=35; i<=37; i++) SEND_TABLA(i, command.configuration);
|
|
// Send tables 42 to 45
|
for (int i=42; i<=45; i++) SEND_TABLA(i, command.configuration);
|
|
// Send tables 72 to 73
|
for (int i=72; i<=73; i++) SEND_TABLA(i, command.configuration);
|
|
// Send tables 78 to 79
|
for (int i=78; i<=79; i++) SEND_TABLA(i, command.configuration);
|
|
// Send table 80 (Correlation times)
|
SEND_TABLA(80, command.configuration);
|
|
// Send tables 82 to 85
|
for (int i=82; i<=85; i++) SEND_TABLA(i, command.configuration);
|
|
// Send table 95 (Junction number and number of groups)
|
SEND_TABLA(95, command.configuration);
|
|
configuration.action += ")";
|
}
|
}
|
}
|
|
// Desactivar grabacion
|
{
|
SEND_GRABACION(false);
|
}
|
|
long recordingTimestamp = System.currentTimeMillis();
|
|
// Si todo ha ido bien se ha de registrar en la base de datos la configuración enviada
|
{
|
configuration.description = command.description;
|
if (configuration.description == null) configuration.description = "?";
|
|
// Fill talker.rtz32.configuration
|
// RTZ32_Configuration newConfiguration = talker.rtz32.getDeviceConfiguration().rtz32;
|
// newConfiguration.description = configuration.description;
|
// newConfiguration.recordingTimestamp = recordingTimestamp;
|
|
for (int i=0; i<programsTables.length; i++)
|
{
|
int programNumber = programsTables[i] - 10;
|
RTZ32_Configuration_Program program = talker.rtz32.getDeviceConfiguration().rtz32.getProgram(programNumber);
|
talker.rtz32.getDeviceConfiguration().rtz32.programs[programNumber-1] = command.configuration.programs[programNumber-1];
|
talker.rtz32.getDeviceConfiguration().rtz32.programs[programNumber-1].recordingTimestamp = recordingTimestamp;
|
// if (program.description == null) program.description = command.configuration.programs[programNumber-1].description;
|
}
|
}
|
|
{
|
talker.rtz32.getDeviceConfiguration().rtz32.description = configuration.description;
|
talker.rtz32.getDeviceConfiguration().rtz32.recordingTimestamp = recordingTimestamp;
|
// Los programas no enviados mantienen su descripción y fecha
|
// for (int i=0; i<talker.rtz32.getDeviceConfiguration().rtz32.programs.length; i++)
|
// {
|
// if (talker.rtz32.getDeviceConfiguration().rtz32.programs[i] != null)
|
// {
|
// talker.rtz32.getDeviceConfiguration().rtz32.programs[i].description = configuration.description;
|
// talker.rtz32.getDeviceConfiguration().rtz32.programs[i].recordingTimestamp = recordingTimestamp;
|
// }
|
// }
|
|
// Si lee todas las tablas correctamente se actualiza la configuracion
|
Shared.model.updateDevice(device_rtz32, Serialization.clone(talker.rtz32));
|
|
configuration.configuration = talker.rtz32.getDeviceConfiguration();
|
// configuration.configuration.rtz32 = command.configuration;
|
Controller_RTZ32_Database.addConfiguration(configuration);
|
}
|
|
|
// Si todo ha ido bien se ha de eliminar la copia de trabajo
|
{
|
// TODO: Eliminar copia de trabajo
|
for (int i=0; i<programsTables.length; i++)
|
{
|
Shared.println(name, "Deleting work copy program: " + (programsTables[i]-10));
|
boolean result = Controller_RTZ32_Database.deleteProgram(device_rtz32.getIdentifier(), "" + (programsTables[i]-10));
|
Shared.println(name, "Deleted work copy program: " + (programsTables[i]-10) + ", " + result);
|
}
|
}
|
|
device_rtz32.getDeviceRealtime().rtz32.writing.status = RTZ32_Realtime_Writing.WRITING_OK;
|
device_rtz32.getDeviceRealtime().rtz32.writing.table = 0;
|
}
|
catch (Exception exception)
|
{
|
Shared.printstack(name, exception);
|
try
|
{
|
SEND_GRABACION(false);
|
}
|
catch (Exception e)
|
{
|
}
|
|
device_rtz32.getDeviceRealtime().rtz32.writing.status = RTZ32_Realtime_Writing.WRITING_ERROR;
|
}
|
finally
|
{
|
// device_rtz32.getDeviceRealtime().rtz32.writing = null;
|
device_rtz32.getDeviceRealtime().setLastTimestampUpdate(System.currentTimeMillis());
|
updatingStatus = false;
|
mutexUpdate.releaseWrite();
|
}
|
}
|
|
|
|
|
private void SEND_GRABACION(boolean value) throws Exception
|
{
|
device_rtz32.getDeviceRealtime().rtz32.recording = RTZ32_Realtime.RECORDING_UNKNOWN;
|
|
long timestamp1 = System.currentTimeMillis();
|
{
|
talker.writer.ORD_GRABACION(value);
|
}
|
long timestamp2 = System.currentTimeMillis();
|
|
if ((timestamp2-timestamp1) > talker.rtz32.getDeviceInformation().connection.readTimeout)
|
{
|
throw new Exception("Timeout");
|
}
|
|
device_rtz32.getDeviceRealtime().setLastTimestampUpdate(System.currentTimeMillis());
|
}
|
|
|
|
|
private void SEND_TABLA(int tableNumber, RTZ32_Configuration configuration) throws Exception
|
{
|
device_rtz32.getDeviceRealtime().rtz32.writing.table = tableNumber;
|
|
long timestamp1 = System.currentTimeMillis();
|
{
|
RTZ32_Configuration_Table table = getTable(tableNumber);
|
if (table != null)
|
{
|
byte[] data = table.serialize(configuration);
|
talker.writer.ORD_TABLA(table, data);
|
}
|
}
|
long timestamp2 = System.currentTimeMillis();
|
|
if ((timestamp2-timestamp1) > talker.rtz32.getDeviceInformation().connection.readTimeout)
|
{
|
throw new Exception("Timeout");
|
}
|
|
if (device_rtz32.getDeviceRealtime().rtz32.writing.tableWrittenCorrect == false)
|
{
|
throw new Exception("Error writing table");
|
}
|
|
device_rtz32.getDeviceRealtime().rtz32.writing.progress = device_rtz32.getDeviceRealtime().rtz32.writing.progress + 1.41f;
|
device_rtz32.getDeviceRealtime().setLastTimestampUpdate(System.currentTimeMillis());
|
}
|
|
|
private RTZ32_Configuration_Table getTable(int tableNumber)
|
{
|
RTZ32_Configuration_Table table = null;
|
|
if ((tableNumber >= 11) && (tableNumber) <= 28)
|
{
|
table = new RTZ32_Configuration_Table_11_28(tableNumber);
|
}
|
else if ((tableNumber >= 38) && (tableNumber) <= 40)
|
{
|
table = new RTZ32_Configuration_Table_38_40(tableNumber);
|
}
|
else if ((tableNumber >= 53) && (tableNumber) <= 60)
|
{
|
table = new RTZ32_Configuration_Table_53_60(tableNumber);
|
}
|
else if ((tableNumber >= 82) && (tableNumber) <= 85)
|
{
|
table = new RTZ32_Configuration_Table_82_85(tableNumber);
|
}
|
else
|
{
|
switch (tableNumber)
|
{
|
case 1: table = new RTZ32_Configuration_Table_1(tableNumber); break;
|
case 2: table = new RTZ32_Configuration_Table_2(tableNumber); break;
|
case 3: table = new RTZ32_Configuration_Table_3(tableNumber); break;
|
case 4: table = new RTZ32_Configuration_Table_4(tableNumber); break;
|
case 5: table = new RTZ32_Configuration_Table_5(tableNumber); break;
|
case 6: table = new RTZ32_Configuration_Table_6(tableNumber); break;
|
case 7: table = new RTZ32_Configuration_Table_7(tableNumber); break;
|
case 31: table = new RTZ32_Configuration_Table_31(tableNumber); break;
|
case 32: table = new RTZ32_Configuration_Table_32(tableNumber); break;
|
case 33: table = new RTZ32_Configuration_Table_33(tableNumber); break;
|
case 34: table = new RTZ32_Configuration_Table_34(tableNumber); break;
|
case 35: table = new RTZ32_Configuration_Table_35(tableNumber); break;
|
case 36: table = new RTZ32_Configuration_Table_36(tableNumber); break;
|
case 37: table = new RTZ32_Configuration_Table_37(tableNumber); break;
|
case 42: table = new RTZ32_Configuration_Table_42(tableNumber); break;
|
case 43: table = new RTZ32_Configuration_Table_43(tableNumber); break;
|
case 44: table = new RTZ32_Configuration_Table_44(tableNumber); break;
|
case 45: table = new RTZ32_Configuration_Table_45(tableNumber); break;
|
case 46: table = new RTZ32_Configuration_Table_46(tableNumber); break;
|
case 50: table = new RTZ32_Configuration_Table_50(tableNumber); break;
|
case 51: table = new RTZ32_Configuration_Table_51(tableNumber); break;
|
case 52: table = new RTZ32_Configuration_Table_52(tableNumber); break;
|
case 65: table = new RTZ32_Configuration_Table_65(tableNumber); break;
|
case 66: table = new RTZ32_Configuration_Table_66(tableNumber); break;
|
case 67: table = new RTZ32_Configuration_Table_67(tableNumber); break;
|
case 68: table = new RTZ32_Configuration_Table_68(tableNumber); break;
|
case 69: table = new RTZ32_Configuration_Table_69(tableNumber); break;
|
case 70: table = new RTZ32_Configuration_Table_70(tableNumber); break;
|
case 71: table = new RTZ32_Configuration_Table_71(tableNumber); break;
|
case 72: table = new RTZ32_Configuration_Table_72(tableNumber); break;
|
case 73: table = new RTZ32_Configuration_Table_73(tableNumber); break;
|
case 74: table = new RTZ32_Configuration_Table_74(tableNumber); break;
|
case 75: table = new RTZ32_Configuration_Table_75(tableNumber); break;
|
case 78: table = new RTZ32_Configuration_Table_78(tableNumber); break;
|
case 79: table = new RTZ32_Configuration_Table_79(tableNumber); break;
|
case 80: table = new RTZ32_Configuration_Table_80(tableNumber); break;
|
case 81: table = new RTZ32_Configuration_Table_81(tableNumber); break;
|
case 91: table = new RTZ32_Configuration_Table_91(tableNumber); break;
|
case 92: table = new RTZ32_Configuration_Table_92(tableNumber); break;
|
case 93: table = new RTZ32_Configuration_Table_93(tableNumber); break;
|
case 94: table = new RTZ32_Configuration_Table_94(tableNumber); break;
|
case 95: table = new RTZ32_Configuration_Table_95(tableNumber); break;
|
default: table = new RTZ32_Configuration_Table(tableNumber); break;
|
}
|
}
|
|
return(table);
|
}
|
//</editor-fold>
|
|
|
|
|
}
|