| magnetic_Polarity_calibration | %.2f
\n
+#include "DDBInputInterface.h"
+#include "DDBOutputInterface.h"
+#include "GAM.h"
+#include "HtmlStream.h"
+
+OBJECT_DLL(MagneticsGAM)
+
+
+class MagneticsGAM : public GAM, public HttpInterface {
+private:
+
+ DDBInputInterface *SignalsInputInterface;
+ DDBOutputInterface *SignalsOutputInterface;
+
+ struct InputInterfaceStruct {
+ int ADC_magnetic_chopper_fp_0;
+ int ADC_magnetic_chopper_fp_1;
+ int ADC_magnetic_chopper_fp_2;
+ int ADC_magnetic_chopper_fp_3;
+ int ADC_magnetic_chopper_fp_4;
+ int ADC_magnetic_chopper_fp_5;
+ int ADC_magnetic_chopper_fp_6;
+ int ADC_magnetic_chopper_fp_7;
+ int ADC_magnetic_chopper_fp_8;
+ int ADC_magnetic_chopper_fp_9;
+ int ADC_magnetic_chopper_fp_10;
+ int ADC_magnetic_chopper_fp_11;
+ //Add signals from primary,vertical and horizontal currents channels 91,92,93
+ float HorizontalCurrent;
+ float VerticalCurrent;
+ float PrimaryCurrent;
+ int usectime;
+ };
+ struct OutputInterfaceStruct {
+ float MagneticProbesR;
+ float MagneticProbesZ;
+ float MagneticProbesPlasmaCurrent;
+ };
+
+ int usectime_to_wait_for_starting_operation;
+ bool magnetic_radial_bool;
+ bool magnetic_vertical_bool;
+ bool magnetic_module_correction_bool;
+ int NumberOfProbes;
+ float *magnetic_Angles;
+ float *magnetic_Calibration;
+ int NumberOfMeasurements;
+ int *ProbeNumbers;
+ int NumberOfModules;
+ float *magnetic_Offset_slope;
+ float *magnetic_Polarity_calibration;
+
+ float *radial_coeficients;
+ float *vertical_coeficients;
+ float *magnetic_Offset_zero;
+ float *ADC_values;
+ float *corrected_probes;
+ // Picked values of magneticflux in databases for substraction
+ float *allmirnv_prim;
+ float *allmirnv_hor;
+ float *allmirnv_vert;
+
+
+ // Arrays with mirnov magneticflux from primary, vertical and horizontal currents (database)
+ float *primarydata; //[A]
+ float *horizontaldata;
+ float *verticaldata;
+
+ float **mirnprim;
+
+ float **mirnhor;
+
+ float **mirnvert;
+
+
+ ////////////////////////////////////////////////////////////
+
+
+ float adc18bit_conversion;
+
+ float *points_x;
+ float *points_y;
+ float *m_x;
+ float *m_y;
+ float y_a;
+ float y_b;
+ float x_a;
+ float x_b;
+ float r_a;
+ float r_b;
+ float m_a;
+ float m_b;
+ float plasma_current_convertion_factor;
+
+ int n_samples;
+ float probe_radius, major_radius, clip_limit;
+ float Area, Nvoltas, MAgPerm, ADCconst, Ncoils;
+ float radial_position, vertical_position;
+// float rOffset, zOffset;
+ float magnetic_field_sum;
+
+ bool view_input_variables;
+
+public:
+
+ // Default constructor
+ MagneticsGAM();
+
+ // Destructor
+ virtual ~MagneticsGAM();
+
+ // Initialise the module
+ virtual bool Initialise(ConfigurationDataBase& cdbData);
+
+ // Execute the module functionalities
+ virtual bool Execute(GAM_FunctionNumbers functionNumber);
+
+ virtual bool ProcessHttpMessage(HttpStream &hStream);
+
+
+
+ OBJECT_DLL_STUFF(MagneticsGAM)
+};
+
+
+
+#endif
+
diff --git a/epics/css/sys-mng-opi/CSS/MARTe/GAMs/isttokbiblio/MainConfigurator.cpp b/epics/css/sys-mng-opi/CSS/MARTe/GAMs/isttokbiblio/MainConfigurator.cpp
new file mode 100644
index 0000000..e11ab40
--- /dev/null
+++ b/epics/css/sys-mng-opi/CSS/MARTe/GAMs/isttokbiblio/MainConfigurator.cpp
@@ -0,0 +1,9247 @@
+// Object properties
+#define OBJECTNAME "Discharge Configurator"
+/*
+modified by Rafael Henriques - rhenriques@ipfn.ist.utl.pt
+date: 2016-04-11
+changes: add the hibd option for plasma position measurement
+*/
+/*
+#define VERSION "1.00"
+#define LASTDATE "2011-03-24"
+#define AUTHOR "Ivo Carvalho - ivoc@ipfn.ist.utl.pt"
+#define DESCRIPTION "HTML page to change and upload the configuration file parameters"
+*/
+#define HEADERIMAGELINK "http://www.ipfn.ist.utl.pt/ipfnPortalLayout/themes/ipfn/_img_/logoIPFN_Topo_officialColours.png"
+#define FOOTERIMAGELINK "http://backoffice.ipfn.ist.utl.pt/mgallery/default.asp?obj=1"
+
+#include "MainConfigurator.h"
+#include "MessageEnvelope.h"
+#include "Message.h"
+
+
+OBJECTLOADREGISTER(MainConfigurator,"$Id: MainConfigurator.cpp,v 1.0 2009/05/22 10:40:56 ivoc Exp $")
+
+
+ /** initialise an object from a set of configs */
+bool MainConfigurator::ObjectLoadSetup(ConfigurationDataBase & info, StreamInterface * err){
+
+ Ip_max_threshold_value = 10000;
+ max_value =1000;
+ timewindows_dropdown_vector = new int[42];
+ int i;
+ timewindows_time = new float[14];
+ timewindows_bool_vector = new bool[14];
+ delete_selected_points_bool = False;
+ vector_dim_temp = 0;
+
+ already_started = False;
+
+ this->graphics_support = new SVGGraphicSupport();
+
+ save_filename.Printf("last.cfg");
+
+ for(i=0;i<42;i++) timewindows_dropdown_vector[i]=0;
+
+
+ GCReferenceContainer::ObjectLoadSetup(info,err);
+
+ CDBExtended &cdbx = (CDBExtended &)info;
+
+ cdbx.ReadFString(configFileID, "configFileID", "cfgFile");
+
+ if(!cdbx.ReadFString(Description, "Description"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not read Description",this->Name());
+ return False;
+ }
+
+ // Move to the graphics branch
+ if(!cdbx->Move("graphics"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not move to \"graphics\"",this->Name());
+ return False;
+ }
+
+ if(!cdbx.ReadInt32(screen_resolution_x, "screen_resolution_x"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not read graph_width",this->Name());
+ return False;
+ }
+ if(!cdbx.ReadInt32(screen_resolution_y, "screen_resolution_y"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not read graph_height",this->Name());
+ return False;
+ }
+
+ // Move back to the GAM main branch
+ cdbx->MoveToFather();
+
+// CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %d %d",screen_resolution_x,screen_resolution_y);
+
+
+ // Move to the file branch
+ if(!cdbx->Move("colours"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not move to \"colours\"",this->Name());
+ return False;
+ }
+ if(!cdbx.ReadFString(header_colour, "header_colour"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not read header_colour",this->Name());
+ return False;
+ }
+ if(!cdbx.ReadFString(diagnostics_parameters_colour, "diagnostics_parameters_colour"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not read diagnostics_parameters_colour",this->Name());
+ return False;
+ }
+ if(!cdbx.ReadFString(control_parameters_colour, "control_parameters_colour"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not read control_parameters_colour",this->Name());
+ return False;
+ }
+ if(!cdbx.ReadFString(time_windows_colour, "time_windows_colour"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not read time_windows_colour",this->Name());
+ return False;
+ }
+ if(!cdbx.ReadFString(edit_colour, "edit_colour"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not read edit_colour",this->Name());
+ return False;
+ }
+ if(!cdbx.ReadFString(footer_colour, "footer_colour"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not read footer_colour",this->Name());
+ return False;
+ }
+ // Move back to the GAM main branch
+ cdbx->MoveToFather();
+
+// CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s %s %s %s %s %s",header_colour.Buffer(),diagnostics_parameters_colour.Buffer(),control_parameters_colour.Buffer(),time_windows_colour.Buffer(),edit_colour.Buffer(),footer_colour.Buffer());
+
+
+ if(!cdbx->Move("default_directories"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not move to \"default_directories\"",this->Name());
+ return False;
+ }
+ if(!cdbx.ReadFString(default_config_file_path, "default_config_file_path"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not read default_config_file_path",this->Name());
+ return False;
+ }
+ if(!cdbx.ReadFString(config_files_directory, "config_files_directory"))
+ {
+ CStaticAssertErrorCondition(InitialisationError,"MainConfigurator::ObjectLoadSetup: %s Could not read config_files_directory",this->Name());
+ return False;
+ }
+ // Move back to the GAM main branch
+ cdbx->MoveToFather();
+
+ graphic_select = 0;
+ selected_load_directory = "..";
+ selected_load_file = "last.cfg";
+
+ this->ReadConfigurationFile((char *)default_config_file_path.Buffer());
+
+// this->WriteConfigurationFileWithChanges((char *)default_config_file_path.Buffer(), (char *) "/home/atcatest/Dropbox/code/atca/sandbox/testeparvo.cfg");
+
+
+ if(!cdbx.ReadFString(marteLocation, "MARTeLocation", "MARTe")){
+ AssertErrorCondition(Warning, "ObjectLoadSetup::MARTe location wasn not specified. Using default: %s", marteLocation.Buffer());
+ }
+
+ return HttpInterface::ObjectLoadSetup(info,err);
+}
+
+bool MainConfigurator::PrintHTTPForm(HtmlStream &hmStream){
+
+// to view the limit, delete after complete
+// hmStream.SSPrintf(HtmlTagStreamMode, "div style=\"position: absolute; top: 0px; left: 1200px;\"");
+// hmStream.SSPrintf(HtmlTagStreamMode, "TEXTAREA NAME=\"form_description\" COLS=1 ROWS=\"1\" WRAP=\"SOFT\">Units used:Time in milisecondsDistance in milimetersCurrent in AmpereRadial position diagnostics:Vertical position diagnostics:Other calculations:Low IpHigh IpLow IpHigh IpFile Description:%suse interferometryfor radial controlPower supplies:Magnetic probes:Discharge Settings:Number of cycles:Discharge time:MARTe cycle (µs):start-up delay (µs):SoftMediumHardPrimaryHorizontalVerticalPIDPIDPIDAngleCalib.AngleCalib.AngleCalib.123456789101112%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%.2f%d%.1f ms%d µs%d µs%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1f%.1fPositive time-windows:Negative time-windows:T1 =T2 =T3 =T4 =T5 =T6 =T7 =T1 =T2 =T3 =T4 =T5 =T6 =T7 =PrimaryVerticalHorizontalPrimaryVerticalHorizontalFirst cycle:positivenegativepositivenegative------%.2f------%.2f------%.2f------%.2f------%.2f------%.2f------%.2f------%.2f------%.2f------%.2f------%.2f------%.2f------%.2f------%.2foffoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlIp control-Soft PIDIp control-Soft PIDIp control-Med. PIDIp control-Med. PIDIp control-Hard PIDIp control-Hard PIDIp control-Auto PIDIp control-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*offoffcurrent controlcurrent controlposition-Soft PIDposition-Soft PIDposition-Med. PIDposition-Med. PIDposition-Hard PIDposition-Hard PIDposition-Auto PIDposition-Auto PIDIntegrated control*Integrated control*Invert*Invert*Select waveform: \
+