3 Commits

Author SHA1 Message Date
ferrog
c14d19c420 Boh 2026-02-05 15:58:48 +00:00
ferrog
3d7e9ddb85 MARTe GYA cfg cleanup 2026-01-06 13:03:20 +00:00
ferrog
d3b2e4fb2a PBS-80 - Aligned to project provided by JADA 2025-12-10 20:34:59 +00:00
62 changed files with 9861 additions and 6327 deletions

View File

@@ -23,7 +23,7 @@ of the distribution package..
<groupId>org.iter.codac.units</groupId>
<artifactId>EC-GN-P01-PCF</artifactId>
<packaging>codac</packaging>
<version>1.0.2</version>
<version>1.0.3</version>
<name>CODAC Core System EC-GN subsystem</name>
<description>CODAC Core System EC-GN subsystem</description>
<url>http://www.iter.org/</url>
@@ -197,7 +197,7 @@ KillSignal=SIGINT]]>
<servicetype>simple</servicetype>
<user>root</user>
<group>root</group>
<execstart>%{codac_bin}/ec-gn-ja-pcf-gy.sh JAGyrotronB_FY19_P1.cfg</execstart>
<execstart>%{codac_bin}/ec-gn-ja-pcf-gy.sh JAGyrotronB_FY19_P1</execstart>
</include>
<!-- Soft dependencies and service ordering -->
<include type="file" source="-"

View File

@@ -120,7 +120,7 @@ bool JAModeControlGAM::Execute() {
rfonTime = *inputSignals[9];
resetRemainingTime = false;
pulseLengthLimit = CalcPulseLengthLimit(inputSignals);
//REPORT_ERROR(ErrorManagement::Debug, "Pulse Length was set to Limit:%d", pulseLengthLimit);
REPORT_ERROR(ErrorManagement::Debug, "Pulse Length was set to Limit:%d", pulseLengthLimit);
}
// Turn on the flag during RFON if the pulse legth over the limit.
if ((*inputSignals[9] - rfonTime <= pulseLengthLimit) && (previousState == 1u)) {

View File

@@ -36,10 +36,7 @@
/*---------------------------------------------------------------------------*/
/* Static definitions */
/*---------------------------------------------------------------------------*/
static MARTe::uint64 getCurrentTimeUs() {
using namespace MARTe;
return static_cast<uint64>(HighResolutionTimer::Counter() * HighResolutionTimer::Period() * 1e6f + 0.5f);
}
/*---------------------------------------------------------------------------*/
/* Method definitions */
/*---------------------------------------------------------------------------*/
@@ -67,9 +64,7 @@ JASDNRTStateMachineGAM::JASDNRTStateMachineGAM() {
triggerDelay_shotlen = NULL_PTR(MARTe::uint32 *);
stopRequest = NULL_PTR(MARTe::uint32 *);
modePulseLengthLimit = NULL_PTR(MARTe::uint32 *);
Command = NULL_PTR(MARTe::uint16 *);
Command2 = NULL_PTR(MARTe::uint16 *);
sdnStatus = NULL_PTR(MARTe::uint8 *);
sdnCommand = NULL_PTR(MARTe::uint16 *);
// write out target.
outputSignal = NULL_PTR(MARTe::uint32 *);
@@ -86,17 +81,6 @@ JASDNRTStateMachineGAM::JASDNRTStateMachineGAM() {
aps_swon_is_on = false;
bps_hvon_is_on = false;
bps_swon_is_on = false;
sdnCommand = 0;
groupFix = 0;
apsSwonHighResolutionTime = 0;
aps_hvon_state=0;
aps_swon_state=0;
mhvps_hvon_state=0;
bps_hvon_state=0;
bps_swon_state=0;
}
JASDNRTStateMachineGAM::~JASDNRTStateMachineGAM() {
@@ -151,21 +135,21 @@ bool JASDNRTStateMachineGAM::PrepareNextState(const MARTe::char8 * const current
bool JASDNRTStateMachineGAM::Setup() {
using namespace MARTe;
bool ok = (numberOfInputSignals == 13u);
bool ok = (numberOfInputSignals == 11u);
if (ok) {
ok = (numberOfOutputSignals == 15u);
ok = (numberOfOutputSignals == 8u);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "15 output signals shall be defined");
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Seven output signals shall be defined");
}
}
else {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "13 input signals shall be defined");
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Nine input signals shall be defined");
}
if (ok) {
uint32 c;
for (c = 0u; c < numberOfInputSignals; c++) {
TypeDescriptor inputType = GetSignalType(InputSignals, c);
ok = (inputType == UnsignedInteger32Bit || inputType == UnsignedInteger16Bit || inputType == UnsignedInteger8Bit);
ok = (inputType == UnsignedInteger32Bit || inputType == UnsignedInteger16Bit);
if (!ok) {
StreamString signalName;
(void) GetSignalName(InputSignals, c, signalName);
@@ -178,7 +162,7 @@ bool JASDNRTStateMachineGAM::Setup() {
uint32 c;
for (c = 0u; c < numberOfOutputSignals; c++) {
TypeDescriptor outputType = GetSignalType(OutputSignals, c);
ok = (outputType == UnsignedInteger32Bit || outputType == UnsignedInteger8Bit);
ok = (outputType == UnsignedInteger32Bit);
if (!ok) {
StreamString signalName;
(void) GetSignalName(InputSignals, c, signalName);
@@ -197,9 +181,7 @@ bool JASDNRTStateMachineGAM::Setup() {
triggerDelay_shotlen = reinterpret_cast<uint32 *>(GetInputSignalMemory(7));
stopRequest = reinterpret_cast<uint32 *>(GetInputSignalMemory(8));
modePulseLengthLimit = reinterpret_cast<uint32 *>(GetInputSignalMemory(9));
Command = reinterpret_cast<uint16 *>(GetInputSignalMemory(10));
Command2 = reinterpret_cast<uint16 *>(GetInputSignalMemory(11));
sdnStatus = reinterpret_cast<uint8 *>(GetInputSignalMemory(12));
sdnCommand = reinterpret_cast<uint16 *>(GetInputSignalMemory(10));
outputSignal = reinterpret_cast<uint32 *>(GetOutputSignalMemory(0));
outputBeamON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(1));
@@ -209,15 +191,6 @@ bool JASDNRTStateMachineGAM::Setup() {
outputBeamONTime = reinterpret_cast<uint32 *>(GetOutputSignalMemory(5));
outputRFONTime = reinterpret_cast<uint32 *>(GetOutputSignalMemory(6));
shotCounter = reinterpret_cast<uint32 *>(GetOutputSignalMemory(7));
outputAPSHVON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(8));
outputAPSSWON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(9));
outputBPSHVON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(10));
outputBPSSWON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(11));
outputMHVPSON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(12));
outputSignalNI6528P3 = reinterpret_cast<uint8 *>(GetOutputSignalMemory(13));
outputSignalNI6528P4 = reinterpret_cast<uint8 *>(GetOutputSignalMemory(14));
*shotCounter = 0;
}
return ok;
@@ -225,19 +198,11 @@ bool JASDNRTStateMachineGAM::Setup() {
bool JASDNRTStateMachineGAM::Execute() {
using namespace MARTe;
if (!groupFix && (*triggerSignal != false)) {
sdnCommand = (1 - *sdnStatus)*(*Command) + (*sdnStatus)*(*Command2);
groupFix = 1;
sdnStatusFix = *sdnStatus;
}
else {
sdnCommand = (1 - sdnStatusFix)*(*Command) + sdnStatusFix*(*Command2);
}
if (currentState == WaitTrigger) {
//State Transition condition
if ((*triggerSignal == conditionTrigger)) {
//REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence in SDN mode.");
REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence in SDN mode.");
plcOnTime = *currentTime; //Save pulse start time.
*outputBeamON = 0;
//State transition.
@@ -248,22 +213,20 @@ bool JASDNRTStateMachineGAM::Execute() {
//Actions in this state.
if (*stopRequest != 0 || *triggerSignal != conditionTrigger) {
*outputSignal = 0;
*outputSignal -= aps_swon;
currentState = HVTerminate;
}
if (*currentTime >= (plcOnTime + *triggerDelay_bps_hvon) && bps_hvon_is_on == false){
//Do action
*outputSignal += bps_hvon;
bps_hvon_is_on = true; bps_hvon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime);
*outputBPSHVON=1;
bps_hvon_is_on = true;
REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime);
}
if (*currentTime >= (plcOnTime + *triggerDelay_aps_hvon) && aps_hvon_is_on == false) {
//Do action
*outputSignal += aps_hvon;
aps_hvon_is_on = true; aps_hvon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal.");
*outputAPSHVON=1;
aps_hvon_is_on = true;
REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal.");
}
*outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time.
@@ -279,7 +242,7 @@ bool JASDNRTStateMachineGAM::Execute() {
*outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time.
// State change conditions
if (sdnCommand == 1){
if (*sdnCommand == 1){
sdnTriggerTime = *currentTime;
currentState = SwitchingHVPS_SWON;
}
@@ -299,80 +262,68 @@ bool JASDNRTStateMachineGAM::Execute() {
if (*currentTime >= (sdnTriggerTime + *triggerDelay_bps_swon) && bps_swon_is_on==false){
//Do action
*outputSignal += bps_swon;
bps_swon_is_on = true; bps_swon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime);
*outputBPSSWON=1;
bps_swon_is_on = true;
REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime);
}
if (*currentTime >= (sdnTriggerTime + *triggerDelay_mhvps_hvon) && mhvps_hvon_is_on==false) {
//Do action
*outputSignal += mhvps_hvon;
mhvps_hvon_is_on = true; mhvps_hvon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime);
*outputMHVPSON=1;
mhvps_hvon_is_on = true;
REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime);
}
if (bps_swon_is_on && mhvps_hvon_is_on && *currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon)){
//Do action
*outputSignal += aps_swon;
aps_swon_is_on = true; aps_swon_state=1;
apsSwonHighResolutionTime = getCurrentTimeUs();
aps_swon_is_on = true;
apsSwonTime = *currentTime;
//REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime);
*outputAPSSWON=1;
REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime);
}
*outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time.
if (bps_swon_is_on || mhvps_hvon_is_on){
*outputHVInjection = 1;
*outputHVInjection = 0;
}
//State transition condition
if (aps_swon_is_on){
currentState = RFON;
*outputRFON = 0;
*outputBeamON = 1;
*shotCounter += 1;
//REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON");
REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON");
}
}
else if (currentState == RFON) {
//SDN command processing.
if (sdnCommand == 4 && aps_swon_is_on) {
if (*sdnCommand == 4 && aps_swon_is_on) {
*outputSignal -= aps_swon;
aps_swon_is_on = false; aps_swon_state=0;
//REPORT_ERROR(ErrorManagement::Debug, "sdn command was 4");
*outputAPSSWON=0;
aps_swon_is_on = false;
REPORT_ERROR(ErrorManagement::Debug, "sdn command was 4");
}
if (sdnCommand == 3 && !aps_swon_is_on) {
if (*sdnCommand == 3 && !aps_swon_is_on) {
*outputSignal += aps_swon;
aps_swon_is_on = true; aps_swon_state=0;
//REPORT_ERROR(ErrorManagement::Debug, "sdn command was 3");
*outputAPSSWON=1;
aps_swon_is_on = true;
REPORT_ERROR(ErrorManagement::Debug, "sdn command was 3");
}
//Action in this state.
if ((sdnCommand == 2) || (*modePulseLengthLimit == 1u) || (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen))) {
//REPORT_ERROR(ErrorManagement::Debug, "shotlen: %d", *triggerDelay_shotlen);
if (sdnCommand == 2) {
//REPORT_ERROR(ErrorManagement::Information, "sdn command was 2");
if ((*sdnCommand == 2) || (*modePulseLengthLimit == 1u) || (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen))) {
REPORT_ERROR(ErrorManagement::Debug, "shotlen: %d", *triggerDelay_shotlen);
if (*sdnCommand == 2) {
REPORT_ERROR(ErrorManagement::Information, "sdn command was 2");
} else if (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen)){
//REPORT_ERROR(ErrorManagement::Information, "pulse length reached setpoint.");
REPORT_ERROR(ErrorManagement::Information, "pulse length reached setpoint.");
}
//Do action
*outputSignal -= aps_swon; //Turn off only aps_swon
mhvps_hvon_is_on = false;
aps_hvon_is_on = false;
aps_swon_is_on = false; aps_swon_state=0;
aps_swon_is_on = false;
bps_hvon_is_on = false;
bps_swon_is_on = false;
*outputAPSHVON=0;
*outputAPSSWON=0;
*outputBPSHVON=0;
*outputBPSSWON=0;
*outputMHVPSON=0;
//REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime);
REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime);
}
*outputRFON = 1;
*outputRFON = 0;
*outputBeamONTime = *currentTime - plcOnTime;
*outputRFONTime = *currentTime - apsSwonTime;
@@ -381,37 +332,29 @@ bool JASDNRTStateMachineGAM::Execute() {
if (!aps_swon_is_on && !bps_swon_is_on && !mhvps_hvon_is_on) {
currentState = HVTerminate;
apsSwoffTime = *currentTime;
//REPORT_ERROR(ErrorManagement::Information, "state was changed to HVTerminate");
REPORT_ERROR(ErrorManagement::Information, "state was changed to HVTerminate");
}
}
else if (currentState == HVTerminate) {
//Action in this state.
*outputBeamON = 0;
*outputHVArmed = 0;
*outputHVInjection = 0;
*outputRFON = 0;
*outputBeamON = 1;
*outputHVArmed = 1;
*outputHVInjection = 1;
*outputRFON = 1;
// State transition condition.
if (*currentTime - apsSwoffTime >= turn_off_delay){
*outputSignal = 0;
mhvps_hvon_state=0;
aps_hvon_state=0;
bps_hvon_state=0;
bps_swon_state=0;
}
if (*triggerSignal == false){
//Check PLC_ON is reset
currentState = WaitTrigger;
*outputSignal = 0;
groupFix = 0;
//REPORT_ERROR(ErrorManagement::Debug, "state was changed to WaitTrigger");
REPORT_ERROR(ErrorManagement::Debug, "state was changed to WaitTrigger");
}
}
p3Value = 1*aps_hvon_state +2*aps_swon_state + 8*bps_hvon_state +16*bps_swon_state + 64*(*outputBeamON);
*outputSignalNI6528P3 = ~p3Value;
p4Value = 8*mhvps_hvon_state;
*outputSignalNI6528P4 = ~p4Value;
return true;
}

View File

@@ -92,18 +92,10 @@
* DataSource = DDB1
* Type = uint32
* }
* Command = {//from packet x
* Command = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint16
* }
* Command2 = {//from packet y
* DataSource = RealTimeThreadAsyncBridge
* Type = uint16
* }
* ESDNStatus = {// 0 or 1. If 0, packet x is used, elif 1, packet y is used.
* DataSource = RealTimeThreadAsyncBridge
* Type = uint8
* }
* }
* OutputSignals = {
* Value = {
@@ -207,12 +199,8 @@ private:
MARTe::uint32 *stopRequest;
// Input signal for pulse length limit by mode.
MARTe::uint32 *modePulseLengthLimit;
// Input signal for SDN commands from packet x.
MARTe::uint16 *Command;
// Input signal for SDN commands from packet y.
MARTe::uint16 *Command2;
// Input signal for SDN status.
MARTe::uint8 *sdnStatus;
// Input signal for SDN commands.
MARTe::uint16 *sdnCommand;
/////////////////////////////////////////////////////////////
// Output signal to which the output value will be written.
@@ -230,17 +218,6 @@ private:
// shot counter (coutup every RFON time.)
MARTe::uint32 *shotCounter;
// Added for HVPS state (20210602)
MARTe::uint32 *outputAPSHVON;
MARTe::uint32 *outputAPSSWON;
MARTe::uint32 *outputBPSHVON;
MARTe::uint32 *outputBPSSWON;
MARTe::uint32 *outputMHVPSON;
// Output signals for NI devices
MARTe::uint8 *outputSignalNI6528P3;
MARTe::uint8 *outputSignalNI6528P4;
//////////////////////////////
//Internal Parameters
//////////////////////////////
@@ -249,7 +226,6 @@ private:
//APS_SWON time holder
MARTe::uint32 apsSwonTime;
MARTe::uint32 apsSwoffTime;
MARTe::uint64 apsSwonHighResolutionTime;
//PS turn off delay
MARTe::uint32 turn_off_delay;
@@ -263,22 +239,6 @@ private:
bool bps_hvon_is_on;
bool bps_swon_is_on;
//command x or y
MARTe::uint16 sdnCommand;
//packet group must not be changed during real time operation
MARTe::uint16 groupFix; //0: packet group is not fixed yet, 1: fixed.
//when packet group is fixed, sdnStatus is copied to this variable.
MARTe::uint8 sdnStatusFix;
// terminal values
MARTe::uint8 p3Value;
MARTe::uint8 p4Value;
MARTe::uint8 aps_hvon_state;
MARTe::uint8 aps_swon_state;
MARTe::uint8 mhvps_hvon_state;
MARTe::uint8 bps_hvon_state;
MARTe::uint8 bps_swon_state;
};

View File

@@ -0,0 +1,353 @@
+DDB1 = {
Class = GAMDataSource
AllowNoProducers = 1
ResetUnusedVariablesAtStateChange = 0
}
// Timer for thread 1 (Normal RT state execution cycle.)
+Timer1kHz = {
Class = LinuxTimer
SleepNature = "Busy"
SleepPercentage = 40
ExecutionMode = RealTimeThread
CPUMask = 0x100
Signals = {
Counter = {
Type = uint32
}
Time = {
Type = uint32
}
}
}
+EPICSCAInput_Th1 = {
Class = "EPICSCA::EPICSCAInput"
CPUMask = "0x100" //change from 200
StackSize = "10000000"
Signals = {
CCPS_OUTPUT_FREQ = {
PVName = "EC-GN-P01-GAF-CCPS:STAT-FREQ"
Type = float32
}
CCPS_OUTPUT_AMP = {
PVName = "EC-GN-P01-GAF-CCPS:STAT-AMP"
Type = float32
}
CCPS_OUTPUT_OFFS = {
PVName = "EC-GN-P01-GAF-CCPS:STAT-OFFS"
Type = float32
}
CSV_LOAD = {
PVName = "EC-GN-P01-GAF:STAT-CSV-LOAD"
Type = uint32
}
CSV_NAME = {
PVName = "EC-GN-P01-GAF:STAT-CSV-NAME"
Type = char8
NumberOfElements = 40
}
FHPS_AUTO_TAGV = {
PVName = "EC-GN-P01-GAF-FHPS:PSU2610-AUTO-TAGV"
Type = float32
}
FHPS_AUTO_TIME = {
PVName = "EC-GN-P01-GAF-FHPS:PSU2610-AUTO-RU-TIME"
Type = float32
}
FHPS_AUTO_START = {
PVName = "EC-GN-P01-GAF-FHPS:PSU2610-AUTO-START"
Type = uint32
}
FHPS_MANM = {
PVName = "EC-GN-P01-GAF-FHPS:STAT-MANM"
Type = uint32
}
GCPS_TRG_CURR_MANUAL = {
PVName = "EC-GN-P01-GAF-GCPS:PSU2130-TRG-CURR-SET-MI"
Type = float32
}
MCPS_TRG_CURR_MANUAL = {
PVName = "EC-GN-P01-GAF-MCPS:PSU2120-TRG-CURR-SET-MI"
Type = float32
}
BPS_MM = {
PVName = "EC-GN-P01-PB1F:STAT-MANM"
Type = uint32
}
BPS_MANUAL = {
PVName = "EC-GN-P01-PB1F:PSU1000-EREF-MSP"
Type = float32
}
APS_MM = {
PVName = "EC-GN-P01-PA1F:STAT-MANM"
Type = uint32
}
APS_MANUAL = {
PVName = "EC-GN-P01-PA1F:PSU3000-EREF-MSP"
Type = float32
}
MHVPS_MANUAL = {
PVName = "EC-GN-P01-PMF:PSU0000-EREF-MSP"
Type = float32
}
MHVPS_MM = {
PVName = "EC-GN-P01-PMF:STAT-MANM"
Type = uint32
}
MCPS_MM = {
PVName = "EC-GN-P01-GAF-MCPS:STAT-MANM"
Type = uint32
}
MCPS_TRG_CURR_MANUAL = {
PVName = "EC-GN-P01-GAF-MCPS:PSU2120-TRG-CURR-SET-MI"
Type = float32
}
GCPS_TRG_CURR_MANUAL = {
PVName = "EC-GN-P01-GAF-GCPS:PSU2130-TRG-CURR-SET-MI"
Type = float32
}
GCPS_MM = {
PVName = "EC-GN-P01-GAF-GCPS:STAT-MANM"
Type = uint32
}
PLC_STANDBY = {
PVName = "EC-GN-P01-GPS:PLC4110-YTS-ST1R"
Type = uint32
}
PLC_READY = {
PVName = "EC-GN-P01-GPS:PLC4110-YTS-ST2R"
Type = uint32
}
PLC_SELECT = {
PVName = "EC-GN-P01-GPS:PLC4110-CON-OPGY1"
Type = uint32
}
PLC_SYNCMODE = {
PVName = "EC-GN-P01-GPS:PLC4110-YSTA-MPSS"
Type = uint32
}
PLC_PERMIT = {
PVName = "EC-GN-P01-GPS:PLC4110-CON-GY1PRM"
Type = uint32
}
//PXI Board status PVs
PXI6259_0 = {
PVName = "EC-GN-HWCF:6259-0-STATUS"
Type = uint32
}
PXI6259_1 = {
PVName = "EC-GN-HWCF:6259-1-STATUS"
Type = uint32
}
PXI6528_0 = {
PVName = "EC-GN-HWCF:6528-0-STATUS"
Type = uint32
}
PXI6528_1 = {
PVName = "EC-GN-HWCF:6528-1-STATUS"
Type = uint32
}
PXI6368_0 = {
PVName = "EC-GN-HWCF:6368-0-STATUS"
Type = uint32
}
PXI6368_1 = {
PVName = "EC-GN-HWCF:6368-1-STATUS"
Type = uint32
}
MCPS_ACT_RB = {
PVName = "EC-GN-P01-GAF-MCPS:PSU2120-ACT-RB"
Type = uint32
}
GCPS_ACT_RB = {
PVName = "EC-GN-P01-GAF-GCPS:PSU2130-ACT-RB"
Type = uint32
}
FHPS_RU = {
PVName = "EC-GN-P01-GAF-FHPS:PSU2610-YTS-RUP"
Type = uint32
}
FHPS_MEAS_ACV = {
PVName = "EC-GN-P01-GAF-FHPS:PSU2610-MEAS-ACV"
Type = float32
}
PREP_MODE = {
PVName = "EC-GN-P01-GAF:STAT-PREP-MODE"
Type = uint32
}
RESET_FLT = {
PVName = "EC-GN-P01-GPF:STAT-RST-FLT"
Type = uint32
}
}
}
+EPICSCAOutput_Th1 = {
Class = "EPICSCA::EPICSCAOutput"
CPUMask = "0x100" //change from 0x200
StackSize = "10000000"
NumberOfBuffers = 2
Signals = {
PCF_STATE = {
PVName = "EC-GN-P01-GAF:STAT-SM"
Type = uint32
}
MCPS_ACT_SP = {
PVName = "EC-GN-P01-GAF-MCPS:PSU2120-ACT-SP-MO"
Type = uint32
}
GCPS_ACT_SP = {
PVName = "EC-GN-P01-GAF-GCPS:PSU2130-ACT-SP-MO"
Type = uint32
}
BPS_REF = {
PVName = "EC-GN-P01-PB1F:PSU1000-EREF"
Type = float32
}
APS_REF = {
PVName = "EC-GN-P01-PA1F:STAT-EREF-CONV.A"
Type = float32
}
MCPS_TRG_CURR_SET = {
PVName = "EC-GN-P01-GAF-MCPS:PSU2120-TRG-CURR-SET-MO"
Type = float32
}
MCPS_TRG_CURR_SET = {
PVName = "EC-GN-P01-GAF-MCPS:PSU2120-TRG-CURR-SET-MO"
Type = float32
}
FHPS_REF = {
PVName = "EC-GN-P01-GAF-FHPS:PSU2610-EREF"
Type = float32
}
CSV_LOADED = {
PVName = "EC-GN-P01-GAF:STAT-CSV-LOADED"
Type = uint32
}
CSV_ERR = {
PVName = "EC-GN-P01-GAF:STAT-CSV-ERR"
Type = uint32
}
ELAPSED_TIME = {
PVName = "EC-GN-P01-GAF:STAT-ELAPSED"
Type = uint32
}
HVARMED = {
PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA1"
Type = uint32
}
HVINJECTION = {
PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA2"
Type = uint32
}
RFON = {
PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA3"
Type = uint32
}
MHVPS_REF = {
PVName = "EC-GN-P01-PMF:STAT-EREF-CALC.A"
Type = float32
}
PREP_TIME_WF = {
PVName = "EC-GN-P01-GAF:STAT-PREP-TIME-WF"
Type = int32
NumberOfElements = 8000
NumberOfDimensions = 1
}
MHVPS_PREP_WF = {
PVName = "EC-GN-P01-PMF:STAT-PREP-WF"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
BPS_PREP_WF = {
PVName = "EC-GN-P01-PB1F:STAT-PREP-WF"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
APS_PREP_WF = {
PVName = "EC-GN-P01-PA1F:STAT-PREP-WF"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
MCPS_PREP_WF = {
PVName = "EC-GN-P01-GAF-MCPS:STAT-PREP-WF"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GCPS_PREP_WF = {
PVName = "EC-GN-P01-GAF-GCPS:STAT-PREP-WF"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
FHPS_PREP_WF = {
PVName = "EC-GN-P01-GAF-FHPS:STAT-PREP-WF"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
CCPS_REF = {
PVName = "EC-GN-P01-GAF-CCPS:PSU2320-EREF"
Type = float32
}
MHVPS_STOP = {
PVName = "EC-GN-P01-PMF:PSU0000-COFF"
Type = uint32
}
APS_STOP = {
PVName = "EC-GN-P01-PA1F:PSU3000-CTRP"
Type = uint32
}
BPS_STOP = {
PVName = "EC-GN-P01-PB1F:PSU1000-CTRP"
Type = uint32
}
BEAM_ON_TIME = {
PVName = "EC-GN-P01-GAF:STAT-BEAMON-TIME"
Type = uint32
}
PCF_FLT = {
PVName = "EC-GN-P01-GPF:PCF4210-CTRP"
Type = uint32
}
PXI_FLT = {
PVName = "EC-GN-P01-GPS:PLC4110-RV2"
Type = uint32
}
BEAM_ON_STAT = {
PVName = "EC-GN-P01-GAFP:FMC4310-YSTA-GAOP"
Type = uint32
}
SHOT_ID = {
PVName = "EC-GN-P01-GAF:STAT-SHOT-ID"
Type = uint32
}
FHPS_AUTO_STAT = {
PVName = "EC-GN-P01-GAF-FHPS:PSU2610-AUTO-STAT"
Type = uint32
}
APS_HVON = {
PVName = "EC-GN-P01-PA1F:PSU3000-CON-HV"
Type = uint32
}
APS_SWON = {
PVName = "EC-GN-P01-PA1F:PSU3000-CON-SW"
Type = uint32
}
BPS_HVON = {
PVName = "EC-GN-P01-PB1F:PSU1000-CON-HV"
Type = uint32
}
BPS_SWON = {
PVName = "EC-GN-P01-PB1F:PSU1000-CON-SW"
Type = uint32
}
MHVPS_HVON = {
PVName = "EC-GN-P01-PMF:STAT-HVON-CALC.A"
Type = uint32
}
}
}

View File

@@ -0,0 +1,419 @@
+DDB2 = {
Class = GAMDataSource
AllowNoProducers = 1
ResetUnusedVariablesAtStateChange = 0
}
+TimerSDN = {
Class = LinuxTimer
SleepNature = "Busy"
SleepPercentage = 40
ExecutionMode = RealTimeThread
CPUMask = 0x200
Signals = {
Counter = {
Type = uint32
}
Time = {
Type = uint32
}
}
}
// for ESDN packet subscription/publication.
+SDNSubCommands = {
Class = SDN::SDNSubscriber
Topic = ECPC2SCUJA
Interface = SDN_IFACE
CPUs = 0x200 //change from 100
Locked = 1
Timeout = 2
Signals = {
Header = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 48
}
ESDNHeaderVersionId = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNHeaderSize = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNStatus = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNDoNotUse = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNTime = {
Type = uint32
NumberOfDimensions = 1
NumberOfElements = 1
}
Command = {
Type = uint16
NumberOfDimensions = 1
NumberOfElements = 64
}
}
}
+SDNReply = {
Class = SDN::SDNPublisher
Topic = SCUJA2ECPC
Interface = SDN_IFACE
CPUs = 0x200 //changed from 0x100
Locked = 1
Signals = {
Header = {
Type = uint8
NumberOfElements = 48
}
ESDNHeaderVersionId = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNHeaderSize = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNStatus = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNDoNotUse = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNTime = {
Type = uint32
NumberOfDimensions = 1
NumberOfElements = 1
}
ReplyStatus = {
Type = uint16
NumberOfDimensions = 1
NumberOfElements = 1
}
ReplyWaveformAck = {
Type = uint16
NumberOfDimensions = 1
NumberOfElements = 1
}
//Status (26Bytes?) is not assigned
//GyrotronA measurements
//56Bytes are used as Gyrotron1 Measurements (verified on 2020/10/22)
GYA_MHVPS_MESVOLT = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYA_MHVPS_MESCURR = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYA_BPS_MESVOLT = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYA_BPS_MESCURR = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYA_APS_MESVOLT = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYA_APS_MESCURR = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYA_ARC1_MESVOLT = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYA_ARC1_MESCURR = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYA_ARC2_MESVOLT = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYA_ARC2_MESCURR = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYA_MCPS_CURR_MON = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYA_GCPS_CURR_MON = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYA_FHPS_MEAS_ACI = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYA_CCPS_MEAS_DCI = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
//GyrotronB measurements
GYB_MHVPS_MESVOLT = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYB_MHVPS_MESCURR = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYB_BPS_MESVOLT = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYB_BPS_MESCURR = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYB_APS_MESVOLT = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYB_APS_MESCURR = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYB_ARC1_MESVOLT = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYB_ARC1_MESCURR = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYB_ARC2_MESVOLT = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYB_ARC2_MESCURR = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYB_MCPS_CURR_MON = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYB_GCPS_CURR_MON = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYB_FHPS_MEAS_ACI = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
GYB_CCPS_MEAS_DCI = {
Type = float32
NumberOfDimensions = 1
NumberOfElements = 1
}
}
}
+EPICSCAInput_Th2 = {
Class = "EPICSCA::EPICSCAInput"
CPUMask = "0x100" //change from 200
StackSize = "10000000"
Signals = {
// Analog Input PVs.
GYA_BPS_MESVOLT = {
PVName = "EC-GN-P01-PB1F:PSU1000-ET"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYB_BPS_MESVOLT = {
PVName = "EC-GN-P01-PB2F:PSU2000-ET"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYA_BPS_MESCURR = {
PVName = "EC-GN-P01-PB1F:PSU1000-IT"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYB_BPS_MESCURR = {
PVName = "EC-GN-P01-PB2F:PSU2000-IT"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYA_APS_MESVOLT = {
PVName = "EC-GN-P01-PA1F:PSU3000-ET"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYB_APS_MESVOLT = {
PVName = "EC-GN-P01-PA2F:PSU4000-ET"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYA_APS_MESCURR = {
PVName = "EC-GN-P01-PA1F:PSU3000-IT"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYB_APS_MESCURR = {
PVName = "EC-GN-P01-PA2F:PSU4000-IT"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYA_ARC1_MESVOLT = {
PVName = "EC-GN-P01-GAF:MOE2810-ET"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYB_ARC1_MESVOLT = {
PVName = "EC-GN-P01-GBF:MOE2810-ET"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYA_ARC1_MESCURR = {
PVName = "EC-GN-P01-GAF:MOE2820-ET"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYB_ARC1_MESCURR = {
PVName = "EC-GN-P01-GBF:MOE2820-ET"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYA_ARC2_MESVOLT = {
PVName = "EC-GN-P01-GAF:MOE2830-ET"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYB_ARC2_MESVOLT = {
PVName = "EC-GN-P01-GBF:MOE2830-ET"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYA_ARC2_MESCURR = {
PVName = "EC-GN-P01-GAF:MRF2910-ET"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYB_ARC2_MESCURR = {
PVName = "EC-GN-P01-GBF:MRF2910-ET"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYA_MHVPS_MESVOLT = {
PVName = "EC-GN-P01-PMF:PSU0000-ET-GA"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYB_MHVPS_MESVOLT = {
PVName = "EC-GN-P01-PMF:PSU0000-ET-GB"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYA_MHVPS_MESCURR = {
PVName = "EC-GN-P01-PMF:PSU0000-IT-GA"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYB_MHVPS_MESCURR = {
PVName = "EC-GN-P01-PMF:PSU0000-IT-GB"
Type = float32
NumberOfElements = 8000
NumberOfDimensions = 1
}
GYA_MCPS_CURR_MON = {
PVName = "EC-GN-P01-GAF-MCPS:PSU2120-CURR-MON"
Type = float32
}
GYA_GCPS_CURR_MON = {
PVName = "EC-GN-P01-GAF-GCPS:PSU2130-CURR-MON"
Type = float32
}
GYB_MCPS_CURR_MON = {
PVName = "EC-GN-P01-GBF-MCPS:PSU2120-CURR-MON"
Type = float32
}
GYB_GCPS_CURR_MON = {
PVName = "EC-GN-P01-GBF-GCPS:PSU2130-CURR-MON"
Type = float32
}
GYA_FHPS_MEAS_ACI = {
PVName = "EC-GN-P01-GAF-FHPS:PSU2610-MEAS-ACI"
Type = float32
}
GYB_FHPS_MEAS_ACI = {
PVName = "EC-GN-P01-GBF-FHPS:PSU2610-MEAS-ACI"
Type = float32
}
GYA_CCPS_MEAS_DCI = {
PVName = "EC-GN-P01-GAF-CCPS:PSU2320-MEAS-DCI"
Type = float32
}
GYB_CCPS_MEAS_DCI = {
PVName = "EC-GN-P01-GBF-CCPS:PSU2320-MEAS-DCI"
Type = float32
}
}
}

View File

@@ -0,0 +1,296 @@
+DDB3 = {
Class = GAMDataSource
AllowNoProducers = 1
ResetUnusedVariablesAtStateChange = 0
}
// Timer for thread 3 (RTStateMachineGAM execution cycle.)
+Timer = {
Class = LinuxTimer
SleepNature = "Busy"
SleepPercentage = 40
ExecutionMode = RealTimeThread
CPUMask = 0x400
Signals = {
Counter = {
Type = uint32
}
Time = {
Type = uint32
}
}
}
// Direct HW accesses. Follwing device/port assignment must be consistent with actual wiring.
// NI6259.0
// APS_SWON BoardId=0, PortId=3.0
+NI6259 = {
Class = NI6259::NI6259DIO
DeviceName = "/dev/pxi6259"
BoardId = 1
Signals = {
NI6259Value = {
Type = uint32
Mask = 0xFF
PortId = 0
}
}
}
//NI6528 digital output has logic low == 0 == close relay. ((See Driver Manual.)
//When the program send ON signal, this program writes 0 on the data source.
+NI6528P3 = {
Class = NI6528
DeviceName = "/dev/pxi6528.1"
Port = 3
NI6528P3Value = {
NI6528P3Value = {
Type = uint8
}
}
}
//P3.0 APS_HVON
//P3.1 APS_SWON
//P3.2 APS_Shutdown
//P3.3 BPS_HVON
//P3.4 BPS_SWON
//P3.5 BPS_Shutdown
//P3.6 GY1_Beam_ON_status
//P3.7 RV5 _cRIO
+NI6528P4 = {
Class = NI6528
DeviceName = "/dev/pxi6528.1"
Port = 4
NI6528P4Value = {
NI6528P4Value = {
Type = uint8
}
}
}
//P4.0 RV6 _cRIO
//P4.1 RV7 _cRIO
//P4.2 RV8 _cRIO
//P4.3 MHVPS_HVON
//P4.4 MHVPS_Shutdown
//P4.5 MHVPS_MOD
//P4.6 PCF_FLT
//P4.7 HVArmed
+NI6528P5 = {
Class = NI6528
DeviceName = "/dev/pxi6528.1"
Port = 5
NI6528P5Value = {
NI6528P5Value = {
Type = uint8
}
}
}
//P5.0 HVInjection
//P5.1 RFON
//P5.2 FHPS_Rampup_complete
//P5.3 SCM_RU_Complete
//P5.4 SCM_RD_Complete
//P5.5 CCPS_IN_OPERATION
//P5.6 None
//P5.7 None
+EPICSCAInput_Th3 = {
Class = "EPICSCA::EPICSCAInput"
CPUMask = "0x100" //change from 200
StackSize = "10000000"
Signals = {
MHVPS_DT = {
PVName = "EC-GN-P01-PMF:STAT-DT-HVON"
Type = uint32
}
APS_HVON_DT = {
PVName = "EC-GN-P01-PA1F:STAT-DT-HVON"
Type = uint32
}
APS_SWON_DT = {
PVName = "EC-GN-P01-PA1F:STAT-DT-SWON"
Type = uint32
}
BPS_HVON_DT = {
PVName = "EC-GN-P01-PB1F:STAT-DT-HVON"
Type = uint32
}
BPS_SWON_DT = {
PVName = "EC-GN-P01-PB1F:STAT-DT-SWON"
Type = uint32
}
SHOTLEN = {
PVName = "EC-GN-P01-GAF:STAT-DT-SHOTLEN"
Type = uint32
}
PLC_ON = {
PVName = "EC-GN-P01-GPS:PLC4110-YTS-ST3R"
Type = uint32
}
GYA_APS_FLT = {
PVName = "EC-GN-P01-PA1F:PSU3000-YFLT"
Type = uint32
}
GYB_APS_FLT = {
PVName = "EC-GN-P01-PA2F:PSU4000-YFLT"
Type = uint32
}
GYA_BPS_FLT = {
PVName = "EC-GN-P01-PB1F:PSU1000-YFLT"
Type = uint32
}
GYB_BPS_FLT = {
PVName = "EC-GN-P01-PB2F:PSU2000-YFLT"
Type = uint32
}
MHVPS_OV = {
PVName = "EC-GN-P01-GAFP:FMC4310-YFLT-OC"
Type = uint32
}
MHVPS_OC = {
PVName = "EC-GN-P01-GAFP:FMC4310-YFLT-OV"
Type = uint32
}
MHVPS_FLT = {
PVName = "EC-GN-P01-PMF:PSU0000-YFLT"
Type = uint32
}
MIS_ITL = {
PVName = "EC-GN-P01-GAFP:FMC4310-YTRP"
Type = uint32
}
MISB_ITL = {
PVName = "EC-GN-P01-GBFP:FMC4310-YTRP"
Type = uint32
}
PLC_ITL = {
PVName = "EC-GN-P01-GPS:PLC4110-YTRP"
Type = uint32
}
PLC_MODE1 = {
PVName = "EC-GN-P01-GPS:PLC4110-YTS-MD1"
Type = uint32
}
PLC_MODE2 = {
PVName = "EC-GN-P01-GPS:PLC4110-YTS-MD2"
Type = uint32
}
PLC_MODE3 = {
PVName = "EC-GN-P01-GPS:PLC4110-YTS-MD3"
Type = uint32
}
PLC_MODE4 = {
PVName = "EC-GN-P01-GPS:PLC4110-YTS-MD4"
Type = uint32
}
MD1_SHOTLEN_LIM = {
PVName = "EC-GN-P01-GPF:STAT-MD1-LIM"
Type = uint32
}
MD2_SHOTLEN_LIM = {
PVName = "EC-GN-P01-GPF:STAT-MD2-LIM"
Type = uint32
}
MD3_SHOTLEN_LIM = {
PVName = "EC-GN-P01-GPF:STAT-MD3-LIM"
Type = uint32
}
MD4_SHOTLEN_LIM = {
PVName = "EC-GN-P01-GPF:STAT-MD4-LIM"
Type = uint32
}
RFON = {
PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA3"
Type = uint32
}
APS_HVON = {
PVName = "EC-GN-P01-PA1F:PSU3000-CON-HV"
Type = uint32
}
APS_SWON = {
PVName = "EC-GN-P01-PA1F:PSU3000-CON-SW"
Type = uint32
}
APS_STOP = {
PVName = "EC-GN-P01-PA1F:PSU3000-CTRP"
Type = uint32
}
BPS_HVON = {
PVName = "EC-GN-P01-PB1F:PSU1000-CON-HV"
Type = uint32
}
BPS_SWON = {
PVName = "EC-GN-P01-PB1F:PSU1000-CON-SW"
Type = uint32
}
BPS_STOP = {
PVName = "EC-GN-P01-PB1F:PSU1000-CTRP"
Type = uint32
}
BEAM_ON_STAT = {
PVName = "EC-GN-P01-GAFP:FMC4310-YSTA-GAOP"
Type = uint32
}
DO_REV5 = {
PVName = "EC-GN-P01-GAFP:FMC4310-RV5"
Type = uint32
}
DO_REV6 = {
PVName = "EC-GN-P01-GAFP:FMC4310-RV6"
Type = uint32
}
DO_REV7 = {
PVName = "EC-GN-P01-GAFP:FMC4310-RV7"
Type = uint32
}
DO_REV8 = {
PVName = "EC-GN-P01-GAFP:FMC4310-RV8"
Type = uint32
}
MHVPS_HVON = {
PVName = "EC-GN-P01-PMF:PSU0000-CON-SW"
Type = uint32
}
MHVPS_MODSW = {
PVName = "EC-GN-P01-PMF:PSU0000-CON-MOD"
Type = uint32
}
PCF_FLT = {
PVName = "EC-GN-P01-GPF:PCF4210-CTRP"
Type = uint32
}
PXI_FLT = {
PVName = "EC-GN-P01-GPS:PLC4110-RV2"
Type = uint32
}
HVARMED = {
PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA1"
Type = uint32
}
HVINJECTION = {
PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA2"
Type = uint32
}
SHORT_PULSE_MODE = {
PVName = "EC-GN-P01-GAF:STAT-SHORT-PULSE"
Type = uint32
}
FHPS_RU = {
PVName = "EC-GN-P01-GAF-FHPS:PSU2610-YTS-RUP"
Type = uint32
}
SCM_RU = {
PVName = "EC-GN-P01-GAF-MCPS:PSU2120-YTS-RUP"
Type = uint32
}
SCM_RD = {
PVName = "EC-GN-P01-GAF-MCPS:PSU2120-YTS-RDOWN"
Type = uint32
}
CCPS_IN_OPERATION = {
PVName = "EC-GN-P01-GAF-CCPS:PSU2320-TR"
Type = uint32
}
}
}

View File

@@ -0,0 +1,20 @@
+DDB4 = {
Class = GAMDataSource
AllowNoProducers = 1
ResetUnusedVariablesAtStateChange = 0
}
+Timer10Hz = {
Class = LinuxTimer
SleepNature = "Busy"
SleepPercentage = 40
ExecutionMode = RealTimeThread
CPUMask = 0x800
Signals = {
Counter = {
Type = uint32
}
Time = {
Type = uint32
}
}
}

View File

@@ -0,0 +1,518 @@
// Timer for SDN thread.
+TimeSDNGAM = {
Class = IOGAM
InputSignals = {
Time = {
DataSource = TimerSDN
Type = uint32
}
Counter = {
DataSource = TimerSDN
Type = uint32
Frequency = 1000 //operation:1k(=1ms cyc), debug:10
}
GYA_BPS_MESVOLT = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYB_BPS_MESVOLT = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYA_BPS_MESCURR = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYB_BPS_MESCURR = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYA_APS_MESVOLT = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYB_APS_MESVOLT = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYA_APS_MESCURR = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYB_APS_MESCURR = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYA_ARC1_MESVOLT = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYB_ARC1_MESVOLT = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYA_ARC1_MESCURR = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYB_ARC1_MESCURR = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYA_ARC2_MESVOLT = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYB_ARC2_MESVOLT = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYA_ARC2_MESCURR = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYB_ARC2_MESCURR = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYA_MHVPS_MESVOLT = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYB_MHVPS_MESVOLT = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYA_MHVPS_MESCURR = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYB_MHVPS_MESCURR = {
DataSource = EPICSCAInput_Th2
Ranges = {{0 0}}
}
GYA_MCPS_CURR_MON = {
DataSource = EPICSCAInput_Th2
}
GYB_MCPS_CURR_MON = {
DataSource = EPICSCAInput_Th2
}
GYA_GCPS_CURR_MON = {
DataSource = EPICSCAInput_Th2
}
GYB_GCPS_CURR_MON = {
DataSource = EPICSCAInput_Th2
}
GYA_FHPS_MEAS_ACI = {
DataSource = EPICSCAInput_Th2
}
GYB_FHPS_MEAS_ACI = {
DataSource = EPICSCAInput_Th2
}
GYA_CCPS_MEAS_DCI = {
DataSource = EPICSCAInput_Th2
}
GYB_CCPS_MEAS_DCI = {
DataSource = EPICSCAInput_Th2
}
}
OutputSignals = {
TimeSDN = {
DataSource = DDB2
Type = uint32
}
CounterSDN = {
DataSource = DDB2
Type = uint32
}
GYA_BPS_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYB_BPS_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYA_BPS_MESCURR = {
DataSource = DDB2
Type = float32
}
GYB_BPS_MESCURR = {
DataSource = DDB2
Type = float32
}
GYA_APS_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYB_APS_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYA_APS_MESCURR = {
DataSource = DDB2
Type = float32
}
GYB_APS_MESCURR = {
DataSource = DDB2
Type = float32
}
GYA_ARC1_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYB_ARC1_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYA_ARC1_MESCURR = {
DataSource = DDB2
Type = float32
}
GYB_ARC1_MESCURR = {
DataSource = DDB2
Type = float32
}
GYA_ARC2_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYB_ARC2_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYA_ARC2_MESCURR = {
DataSource = DDB2
Type = float32
}
GYB_ARC2_MESCURR = {
DataSource = DDB2
Type = float32
}
GYA_MHVPS_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYB_MHVPS_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYA_MHVPS_MESCURR = {
DataSource = DDB2
Type = float32
}
GYB_MHVPS_MESCURR = {
DataSource = DDB2
Type = float32
}
GYA_MCPS_CURR_MON = {
DataSource = DDB2
Type = float32
}
GYB_MCPS_CURR_MON = {
DataSource = DDB2
Type = float32
}
GYA_GCPS_CURR_MON = {
DataSource = DDB2
Type = float32
}
GYB_GCPS_CURR_MON = {
DataSource = DDB2
Type = float32
}
GYA_FHPS_MEAS_ACI = {
DataSource = DDB2
Type = float32
}
GYB_FHPS_MEAS_ACI = {
DataSource = DDB2
Type = float32
}
GYA_CCPS_MEAS_DCI = {
DataSource = DDB2
Type = float32
}
GYB_CCPS_MEAS_DCI = {
DataSource = DDB2
Type = float32
}
}
}
//GAM for SDN communication.(ProcessWF:thread1, Subscribe/Publish:thread2)
+SDNCommandGAM = {
Class = IOGAM
InputSignals = {
Command = {
DataSource = SDNSubCommands
Type = uint16
NumberOfDimensions = 1
NumberOfElements = 64
Ranges = {{0 0}}
// TODO uncomment this for release/testing
//Frequency = 1
}
ESDNTime = {
DataSource = SDNSubCommands
Type = uint32
NumberOfDimensions = 1
NumberOfElements = 1
}
}
OutputSignals = {
Command = {
DataSource = DDB2
Type = uint16
}
ESDNTime = {
DataSource = DDB2
Type = uint32
}
}
}
+SDNReplyGAM = {
Class = IOGAM
InputSignals = {
ESDNTime = {
DataSource = DDB2
Type = uint32
}
WaveformPacketID = {
DataSource = DDB2
Type = uint16
}
GYA_BPS_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYB_BPS_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYA_BPS_MESCURR = {
DataSource = DDB2
Type = float32
}
GYB_BPS_MESCURR = {
DataSource = DDB2
Type = float32
}
GYA_APS_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYB_APS_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYA_APS_MESCURR = {
DataSource = DDB2
Type = float32
}
GYB_APS_MESCURR = {
DataSource = DDB2
Type = float32
}
GYA_ARC1_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYB_ARC1_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYA_ARC1_MESCURR = {
DataSource = DDB2
Type = float32
}
GYB_ARC1_MESCURR = {
DataSource = DDB2
Type = float32
}
GYA_ARC2_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYB_ARC2_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYA_ARC2_MESCURR = {
DataSource = DDB2
Type = float32
}
GYB_ARC2_MESCURR = {
DataSource = DDB2
Type = float32
}
GYA_MHVPS_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYB_MHVPS_MESVOLT = {
DataSource = DDB2
Type = float32
}
GYA_MHVPS_MESCURR = {
DataSource = DDB2
Type = float32
}
GYB_MHVPS_MESCURR = {
DataSource = DDB2
Type = float32
}
GYA_MCPS_CURR_MON = {
DataSource = DDB2
Type = float32
}
GYB_MCPS_CURR_MON = {
DataSource = DDB2
Type = float32
}
GYA_GCPS_CURR_MON = {
DataSource = DDB2
Type = float32
}
GYB_GCPS_CURR_MON = {
DataSource = DDB2
Type = float32
}
GYA_FHPS_MEAS_ACI = {
DataSource = DDB2
Type = float32
}
GYB_FHPS_MEAS_ACI = {
DataSource = DDB2
Type = float32
}
GYA_CCPS_MEAS_DCI = {
DataSource = DDB2
Type = float32
}
GYB_CCPS_MEAS_DCI = {
DataSource = DDB2
Type = float32
}
Command = {
DataSource = DDB2
Type = uint16
}
GYA_MCPS_CURR_MON = {
DataSource = DDB2
Type = float32
}
GYA_GCPS_CURR_MON = {
DataSource = DDB2
Type = float32
}
}
OutputSignals = {
ESDNTime = {
DataSource = SDNReply
Type = uint32
Trigger = 1
}
ReplyWaveformAck = {
DataSource = SDNReply
Type = uint16
}
GYA_BPS_MESVOLT = {
DataSource = SDNReply
}
GYB_BPS_MESVOLT = {
DataSource = SDNReply
}
GYA_BPS_MESCURR = {
DataSource = SDNReply
}
GYB_BPS_MESCURR = {
DataSource = SDNReply
}
GYA_APS_MESVOLT = {
DataSource = SDNReply
}
GYB_APS_MESVOLT = {
DataSource = SDNReply
}
GYA_APS_MESCURR = {
DataSource = SDNReply
}
GYB_APS_MESCURR = {
DataSource = SDNReply
}
GYA_ARC1_MESVOLT = {
DataSource = SDNReply
}
GYB_ARC1_MESVOLT = {
DataSource = SDNReply
}
GYA_ARC1_MESCURR = {
DataSource = SDNReply
}
GYB_ARC1_MESCURR = {
DataSource = SDNReply
}
GYA_ARC2_MESVOLT = {
DataSource = SDNReply
}
GYB_ARC2_MESVOLT = {
DataSource = SDNReply
}
GYA_ARC2_MESCURR = {
DataSource = SDNReply
}
GYB_ARC2_MESCURR = {
DataSource = SDNReply
}
GYA_MHVPS_MESVOLT = {
DataSource = SDNReply
}
GYB_MHVPS_MESVOLT = {
DataSource = SDNReply
}
GYA_MHVPS_MESCURR = {
DataSource = SDNReply
}
GYB_MHVPS_MESCURR = {
DataSource = SDNReply
}
GYA_MCPS_CURR_MON = {
DataSource = SDNReply
}
GYB_MCPS_CURR_MON = {
DataSource = SDNReply
}
GYA_GCPS_CURR_MON = {
DataSource = SDNReply
}
GYB_GCPS_CURR_MON = {
DataSource = SDNReply
}
GYA_FHPS_MEAS_ACI = {
DataSource = SDNReply
}
GYB_FHPS_MEAS_ACI = {
DataSource = SDNReply
}
GYA_CCPS_MEAS_DCI = {
DataSource = SDNReply
}
GYB_CCPS_MEAS_DCI = {
DataSource = SDNReply
}
Command = {
DataSource = TriggerAsyncBridge
Type = uint16
}
GYA_MCPS_CURR_MON = {
DataSource = RealTimeThreadAsyncBridge
Type = float32
}
GYA_GCPS_CURR_MON = {
DataSource = RealTimeThreadAsyncBridge
Type = float32
}
}
}

View File

@@ -0,0 +1,80 @@
+Timer10HzGAM = {
Class = IOGAM
InputSignals = {
Counter = {
DataSource = Timer10Hz
Type = uint32
Frequency = 1 //Hz
}
Time = {
DataSource = Timer10Hz
Type = uint32
}
}
OutputSignals = {
Counter10Hz = {
DataSource = DDB4
Type = uint32
}
Time1Hz = {
DataSource = DDB4
Type = uint32
}
}
}
+GAMExecTime = {//debug
Class = IOGAM
InputSignals = {
GAMEPICSCA_ExecTime = {
DataSource = Timings
Type = uint32
}
StopRequestGAM_ExecTime = {
DataSource = Timings
Type = uint32
}
ModeLimitGAM_ExecTime = {
DataSource = Timings
Type = uint32
}
NI6528P3GAM_ExecTime = {
DataSource = Timings
Type = uint32
}
terminalInterfaceGAM_ExecTime = {
DataSource = Timings
Type = uint32
}
GAMRealTimeStateMachine_ExecTime = {
DataSource = Timings
Type = uint32
}
}
OutputSignals = {
GAMEPICSCA_ExecTime = {
DataSource = Display
Type = uint32
}
StopRequestGAM_ExecTime = {
DataSource = Display
Type = uint32
}
ModeLimitGAM_ExecTime = {
DataSource = Display
Type = uint32
}
NI6528P3GAM_ExecTime = {
DataSource = Display
Type = uint32
}
terminalInterfaceGAM_ExecTime = {
DataSource = Display
Type = uint32
}
GAMRealTimeStateMachine_ExecTime = {
DataSource = Display
Type = uint32
}
}
}

View File

@@ -0,0 +1,786 @@
// StateMachine node
+StateMachine = {
Class = StateMachine
+INITIAL = {
Class = ReferenceContainer
+Start = {
Class = StateMachineEvent
NextState = "WAITSTANDBY"
NextStateError = "ERROR"
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitStandby
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
}
+DISABLED = {
Class = ReferenceContainer
+GoWaitStandby = {
Class = StateMachineEvent
NextState = "WAITSTANDBY"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitStandby
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoError = {
Class = StateMachineEvent
NextState = "ERROR"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = Error
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
}
+WAITSTANDBY = {
Class = ReferenceContainer
+GoWaitReady = {
Class = StateMachineEvent
NextState = "WAITREADY"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitReady
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoDisabled = {
Class = StateMachineEvent
NextState = "DISABLED"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = Disabled
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoError = {
Class = StateMachineEvent
NextState = "ERROR"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = Error
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
}
+WAITREADY = {
Class = ReferenceContainer
+GoWaitStandby = {
Class = StateMachineEvent
NextState = "WAITSTANDBY"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitStandby
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoWaitPermit = {
Class = StateMachineEvent
NextState = "WAITPERMIT"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitPermit
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoError = {
Class = StateMachineEvent
NextState = "ERROR"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = Error
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
}
+WAITPERMIT = {
Class = ReferenceContainer
+GoWaitReady = {
Class = StateMachineEvent
NextState = "WAITREADY"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitReady
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoWaitHVON = {
Class = StateMachineEvent
NextState = "WAITHVON"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitHVON
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoWaitHVON_SDN = {
Class = StateMachineEvent
NextState = "WAITHVON_SDN"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitHVON_SDN
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoWaitHVON_PREP = {
Class = StateMachineEvent
NextState = "WAITHVON_PREP"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitHVON_PREP
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoWaitHVON_SDN_PREP = {
Class = StateMachineEvent
NextState = "WAITHVON_SDN_PREP"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitHVON_SDN_PREP
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoError = {
Class = StateMachineEvent
NextState = "ERROR"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = Error
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
}
// HVPS sequence control states.
+WAITHVON = {
Class = ReferenceContainer
+GoWaitStandby = {
Class = StateMachineEvent
NextState = "WAITSTANDBY"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitStandby
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoWaitPermit = {
Class = StateMachineEvent
NextState = "WAITPERMIT"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitPermit
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoError = {
Class = StateMachineEvent
NextState = "ERROR"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = Error
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
}
+WAITHVON_SDN = {
Class = ReferenceContainer
+GoWaitStandby = {
Class = StateMachineEvent
NextState = "WAITSTANDBY"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitStandby
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoWaitPermit = {
Class = StateMachineEvent
NextState = "WAITPERMIT"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitPermit
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoError = {
Class = StateMachineEvent
NextState = "ERROR"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = Error
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
}
+WAITHVON_PREP = {
Class = ReferenceContainer
+GoWaitStandby = {
Class = StateMachineEvent
NextState = "WAITSTANDBY"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitStandby
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoWaitPermit = {
Class = StateMachineEvent
NextState = "WAITPERMIT"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitPermit
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoError = {
Class = StateMachineEvent
NextState = "ERROR"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = Error
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
}
+WAITHVON_SDN_PREP = {
Class = ReferenceContainer
+GoWaitStandby = {
Class = StateMachineEvent
NextState = "WAITSTANDBY"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitStandby
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoWaitPermit = {
Class = StateMachineEvent
NextState = "WAITPERMIT"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitPermit
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
+GoError = {
Class = StateMachineEvent
NextState = "ERROR"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = Error
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
}
// Error State (Enter by HVPS errors)
+ERROR = {
Class = ReferenceContainer
+GoWaitStandby = {
Class = StateMachineEvent
NextState = "WAITSTANDBY"
NextStateError = "ERROR"
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareNextStateMsg = {
Class = Message
Destination = JAGyrotronRTApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = WaitStandby
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = JAGyrotronRTApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
}
}

View File

@@ -0,0 +1,37 @@
+Disabled = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1 = {
Class = RealTimeThread
Functions = {
Timer1kHzGAM
InDisabledGAM
CCPSWaveformGAM
ChoiseGAM MCPSGAM GCPSGAM
PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
EPICSOutputGAM
GoErrorGAM GoWaitStandbyGAM
}
CPUs = TH1_CPU
}
+Thread2 = {
Class = RealTimeThread
Functions = {
TimeSDNGAM SDNCommandGAM SDNReplyGAM
}
CPUs = TH2_CPU
}
+Thread3 = {
Class = RealTimeThread
Functions = {
Timer100kHzGAM
NI6528P3GAM NI6528P4GAM NI6528P5GAM
NI6528P3PV2PortGAM NI6528P4PV2PortGAM NI6528P5PV2PortGAM
NI6528P3WriteGAM NI6528P4WriteGAM NI6528P5WriteGAM
ShareOutGAM
}
CPUs = TH3_CPU
}
}
}

View File

@@ -0,0 +1,39 @@
+Error = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1 = {
Class = RealTimeThread
Functions = {
Timer1kHzGAM
InErrorGAM
CCPSWaveformGAM FHPSRampupGAM
ChoiseGAM
PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
EPICSOutputGAM
ExitedHVArmedInjectionRFONGAM ResetPSsGAM ErrorGAM
EPICSOutputGAM
FromErrorToWaitStandbyGAM
}
CPUs = TH1_CPU
}
+Thread2 = {
Class = RealTimeThread
Functions = {
TimeSDNGAM SDNCommandGAM SDNReplyGAM
}
CPUs = TH2_CPU
}
+Thread3 = {
Class = RealTimeThread
Functions = {
Timer100kHzGAM
NI6528P3GAM NI6528P4GAM NI6528P5GAM
NI6528P3PV2PortGAM NI6528P4PV2PortGAM NI6528P5PV2PortGAM
NI6528P3WriteGAM NI6528P4WriteGAM NI6528P5WriteGAM
ShareOutGAM
}
CPUs = TH3_CPU
}
}
}

View File

@@ -0,0 +1,39 @@
+WaitHVON = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1 = {
Class = RealTimeThread
Functions = {
Timer1kHzGAM
InWaitHVONGAM
CCPSWaveformGAM FHPSRampupGAM
ChoiseGAM
PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
EPICSOutputGAM
FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorGAM
}
CPUs = TH1_CPU
}
+Thread2 = {
Class = RealTimeThread
Functions = {
TimeSDNGAM SDNCommandGAM SDNReplyGAM
}
CPUs = TH2_CPU
}
+Thread3 = {
Class = RealTimeThread
Functions = {
Timer100kHzGAM
StopRequestGAM ModeLimitGAM
GAMRealTimeStateMachine
NI6528P5GAM
NI6528P5PV2PortGAM
NI6528P5WriteGAM
ShareOutGAM
}
CPUs = TH3_CPU
}
}
}

View File

@@ -0,0 +1,39 @@
+WaitHVON_PREP = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1 = {
Class = RealTimeThread
Functions = {
Timer1kHzGAM
InWaitHVON_PREPGAM
CCPSWaveformGAM PreProgrammedGAM FHPSRampupGAM
ChoiseGAM
PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
EPICSOutputGAM
FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorGAM
}
CPUs = TH1_CPU
}
+Thread2 = {
Class = RealTimeThread
Functions = {
TimeSDNGAM SDNCommandGAM SDNReplyGAM
}
CPUs = TH2_CPU
}
+Thread3 = {
Class = RealTimeThread
Functions = {
Timer100kHzGAM
StopRequestGAM ModeLimitGAM
GAMRealTimeStateMachine
NI6528P5GAM
NI6528P5PV2PortGAM
NI6528P5WriteGAM
ShareOutGAM
}
CPUs = TH3_CPU
}
}
}

View File

@@ -0,0 +1,40 @@
+WaitHVON_SDN = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1 = {
Class = RealTimeThread
Functions = {
Timer1kHzGAM
InWaitHVON_SDNGAM
CCPSWaveformGAM FHPSRampupGAM
ChoiseGAM
PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
EPICSOutputGAM
FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorGAM
}
CPUs = TH1_CPU
}
+Thread2 = {
Class = RealTimeThread
Functions = {
TimeSDNGAM SDNCommandGAM SDNReplyGAM
}
CPUs = TH2_CPU
}
+Thread3 = {
Class = RealTimeThread
Functions = {
Timer100kHzGAM
StopRequestGAM ModeLimitGAM
GAMSDNRealTimeStateMachine
NI6528P3GAM NI6528P4GAM NI6528P5GAM
TerminalInterfaceGAM
NI6528P5PV2PortGAM
NI6528P5WriteGAM
ShareOutGAM
}
CPUs = TH3_CPU
}
}
}

View File

@@ -0,0 +1,40 @@
+WaitHVON_SDN_PREP = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1 = {
Class = RealTimeThread
Functions = {
Timer1kHzGAM
InWaitHVON_SDN_PREPGAM
CCPSWaveformGAM PreProgrammedGAM FHPSRampupGAM
ChoiseGAM
PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
EPICSOutputGAM
FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorGAM
}
CPUs = TH1_CPU
}
+Thread2 = {
Class = RealTimeThread
Functions = {
TimeSDNGAM SDNCommandGAM SDNReplyGAM
}
CPUs = TH2_CPU
}
+Thread3 = {
Class = RealTimeThread
Functions = {
Timer100kHzGAM
StopRequestGAM ModeLimitGAM
GAMSDNRealTimeStateMachine
NI6528P3GAM NI6528P4GAM NI6528P5GAM
TerminalInterfaceGAM
NI6528P5PV2PortGAM
NI6528P5WriteGAM
ShareOutGAM
}
CPUs = TH3_CPU
}
}
}

View File

@@ -0,0 +1,38 @@
+WaitPermit = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1 = {
Class = RealTimeThread
Functions = {
Timer1kHzGAM
InWaitPermitGAM
CCPSWaveformGAM WFRecordGAM PreProgrammedGAM FHPSRampupGAM
ChoiseGAM
PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
EPICSOutputGAM
GoWaitHVONGAM GoWaitHVON_PREP_GAM GoWaitHVON_SDN_GAM GoWaitHVON_SDN_PREP_GAM GoWaitReadyFromWaitPermitGAM GoErrorGAM
}
CPUs = TH1_CPU
}
+Thread2 = {
Class = RealTimeThread
Functions = {
TimeSDNGAM SDNCommandGAM SDNReplyGAM
}
CPUs = TH2_CPU
}
+Thread3 = {
Class = RealTimeThread
Functions = {
Timer100kHzGAM
NI6528P3GAM NI6528P4GAM NI6528P5GAM
NI6528P3PV2PortGAM NI6528P4PV2PortGAM NI6528P5PV2PortGAM
NI6528P3WriteGAM NI6528P4WriteGAM NI6528P5WriteGAM
ShareOutGAM
}
CPUs = TH3_CPU
}
}
}

View File

@@ -0,0 +1,37 @@
+WaitReady = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1 = {
Class = RealTimeThread
Functions = {
Timer1kHzGAM
InWaitReadyGAM
CCPSWaveformGAM WFRecordGAM PreProgrammedGAM FHPSRampupGAM
ChoiseGAM
PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
EPICSOutputGAM
GoWaitPermitGAM GoWaitStandbyFromReadyGAM GoErrorGAM
}
CPUs = TH1_CPU
}
+Thread2 = {
Class = RealTimeThread
Functions = {
TimeSDNGAM SDNCommandGAM SDNReplyGAM
}
CPUs = TH2_CPU
}
+Thread3 = {
Class = RealTimeThread
Functions = {
Timer100kHzGAM
NI6528P3GAM NI6528P4GAM NI6528P5GAM
NI6528P3PV2PortGAM NI6528P4PV2PortGAM NI6528P5PV2PortGAM
NI6528P3WriteGAM NI6528P4WriteGAM NI6528P5WriteGAM
ShareOutGAM
}
CPUs = TH3_CPU
}
}
}

View File

@@ -0,0 +1,37 @@
+WaitStandby = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1 = {
Class = RealTimeThread
Functions = {
Timer1kHzGAM
InWaitStandbyGAM
CCPSWaveformGAM FHPSRampupGAM
ChoiseGAM MCPSGAM GCPSGAM
PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
EPICSOutputGAM
GoDisabledGAM GoWaitReadyGAM GoErrorGAM
}
CPUs = TH1_CPU
}
+Thread2 = {
Class = RealTimeThread
Functions = {
TimeSDNGAM SDNCommandGAM SDNReplyGAM
}
CPUs = TH2_CPU
}
+Thread3 = {
Class = RealTimeThread
Functions = {
Timer100kHzGAM
NI6528P3GAM NI6528P4GAM NI6528P5GAM
NI6528P3PV2PortGAM NI6528P4PV2PortGAM NI6528P5PV2PortGAM
NI6528P3WriteGAM NI6528P4WriteGAM NI6528P5WriteGAM
ShareOutGAM
}
CPUs = TH3_CPU
}
}
}

View File

@@ -804,6 +804,141 @@
Class = RealTimeApplication
+Functions = {
Class = ReferenceContainer
+ReadyDebugGAM = {
Class = IOGAM
InputSignals = {
NI6528P5CurrentValue = {
DataSource = DDB1
Type = uint32
}
}
OutputSignals = {
P5CurrentValue = {
DataSource = Display
Type = uint32
}
}
}
+DebugGAM = {
Class = IOGAM
InputSignals = {
PCF_FLT = {
DataSource = DDB1
Type = uint32
}
PXI_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
NI6528P5CurrentValue = {
DataSource = DDB1
Type = uint32
}
RESET_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
GYA_APS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
GYB_APS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
GYA_BPS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
GYB_BPS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
MHVPS_OV = {
DataSource = EPICSCAInput
Type = uint32
}
MHVPS_OC = {
DataSource = EPICSCAInput
Type = uint32
}
MHVPS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
MIS_ITL = {
DataSource = EPICSCAInput
Type = uint32
}
MISB_ITL = {
DataSource = EPICSCAInput
Type = uint32
}
PLC_ITL = {
DataSource = EPICSCAInput
Type = uint32
}
}
OutputSignals = {
PCF_FLT = {
DataSource = Display
Type = uint32
}
PXI_FLT = {
DataSource = Display
Type = uint32
}
PXI_VAL = {
DataSource = Display
Type = uint32
}
RESET_FLT = {
DataSource = Display
Type = uint32
}
GYA_APS_FLT = {
DataSource = Display
Type = uint32
}
GYB_APS_FLT = {
DataSource = Display
Type = uint32
}
GYA_BPS_FLT = {
DataSource = Display
Type = uint32
}
GYB_BPS_FLT = {
DataSource = Display
Type = uint32
}
MHVPS_OV = {
DataSource = Display
Type = uint32
}
MHVPS_OC = {
DataSource = Display
Type = uint32
}
MHVPS_FLT = {
DataSource = Display
Type = uint32
}
MIS_ITL = {
DataSource = Display
Type = uint32
}
MISB_ITL = {
DataSource = Display
Type = uint32
}
PLC_ITL = {
DataSource = Display
Type = uint32
}
}
}
//Timer GAM for thread 1.
+Timer1kHzGAM = {
Class = IOGAM
@@ -863,6 +998,12 @@
Type = uint32
Default = 1
}
PCF_FLT = {
DataSource = DDB1
Type = uint32
Default = 1
}
}
}
+InDisabledGAM = {
@@ -873,6 +1014,11 @@
Type = uint32
Default = 2
}
PCF_FLT = {
DataSource = DDB1
Type = uint32
Default = 0
}
}
}
+InWaitStandbyGAM = {
@@ -883,6 +1029,12 @@
Type = uint32
Default = 3
}
PCF_FLT = {
DataSource = DDB1
Type = uint32
Default = 0
}
}
}
+InWaitReadyGAM = {
@@ -893,6 +1045,12 @@
Type = uint32
Default = 4
}
PCF_FLT = {
DataSource = DDB1
Type = uint32
Default = 0
}
}
}
+InWaitPermitGAM = {
@@ -903,6 +1061,12 @@
Type = uint32
Default = 5
}
PCF_FLT = {
DataSource = DDB1
Type = uint32
Default = 0
}
}
}
+InWaitHVONGAM = {
@@ -913,6 +1077,12 @@
Type = uint32
Default = 6
}
PCF_FLT = {
DataSource = DDB1
Type = uint32
Default = 0
}
}
}
+InWaitHVON_PREPGAM = {
@@ -923,6 +1093,12 @@
Type = uint32
Default = 7
}
PCF_FLT = {
DataSource = DDB1
Type = uint32
Default = 0
}
}
}
+InWaitHVON_SDNGAM = {
@@ -933,6 +1109,12 @@
Type = uint32
Default = 8
}
PCF_FLT = {
DataSource = DDB1
Type = uint32
Default = 0
}
}
}
+InWaitHVON_SDN_PREPGAM = {
@@ -943,6 +1125,12 @@
Type = uint32
Default = 9
}
PCF_FLT = {
DataSource = DDB1
Type = uint32
Default = 0
}
}
}
@@ -1072,10 +1260,15 @@
DataSource = DDB1
Type = uint32
}
// MARTe Internal PCF_FLT
PCF_FLT = {
DataSource = DDB1
Type = uint32
}
PXI_FLT = {
DataSource = DDB1
Type = uint32
}
BEAM_ON_STAT = {
DataSource = DDB1
Type = uint32
@@ -1212,9 +1405,13 @@
DataSource = EPICSCAOutput
Type = uint32
}
// EPICS PCF_FLT
PCF_FLT = {
DataSource = EPICSCAOutput
}
PXI_FLT = {
DataSource = EPICSCAOutput
}
BEAM_ON_STAT = {
DataSource = EPICSCAOutput
}
@@ -2180,6 +2377,7 @@
}
}
}
+PXIErrorGAM = {
Class = JAConditionalSignalUpdateGAM
Operation = OR
@@ -2207,7 +2405,7 @@
}
}
OutputSignals = {
PCF_FLT = {
PXI_FLT = {
DataSource = DDB1
Type = uint32
}
@@ -2325,63 +2523,6 @@
Function = GoError
}
}
+GoErrorFromWaitHVON_SDNGAM = {
Class = JAMessageGAM
Operation = OR
//ExpectedIntValues = {1 1 1 1 1 1 1 1 1 1 0}
ExpectedIntValues = {1 1 1 1 1 1 1 1 1 1}
InputSignals = {
GYA_APS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
GYB_APS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
GYA_BPS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
GYB_BPS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
MHVPS_OV = {
DataSource = EPICSCAInput
Type = uint32
}
MHVPS_OC = {
DataSource = EPICSCAInput
Type = uint32
}
MHVPS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
MIS_ITL = {
DataSource = EPICSCAInput
Type = uint32
}
MISB_ITL = {
DataSource = EPICSCAInput
Type = uint32
}
PLC_ITL = {
DataSource = EPICSCAInput
Type = uint32
}
//SDN_Connection = {
// DataSource = DDB1
// Type = uint32
//}
}
+Event = {
Class = Message
Destination = StateMachine
Function = GoError
}
}
// Reset HVPS outputs. ToDo: Fix to access NI d.s.
+ResetPSsGAM = {
Class = ConstantGAM
@@ -2460,13 +2601,8 @@
NumberOfDimensions = 1
NumberOfElements = 64
Ranges = {{0 0}}
}
ESDNStatus = {
DataSource = SDNSubCommands
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
Ranges = {{0 0}}
// TODO uncomment this for release/testing
//Frequency = 1
}
ESDNTime = {
DataSource = SDNSubCommands
@@ -2480,39 +2616,17 @@
DataSource = RealTimeThreadAsyncBridge
Type = uint16
}
ESDNStatus = {
DataSource = RealTimeThreadAsyncBridge
Type = uint8
}
ESDNTime = {
DataSource = DDB1
Type = uint32
}
}
}
+SDNCommandGAM2 = {
+debugSDNGAM = {//for debug
Class = IOGAM
InputSignals = {
Command = {
DataSource = SDNSubCommands2
Type = uint16
NumberOfDimensions = 1
NumberOfElements = 64
Ranges = {{0 0}}
}
}
OutputSignals = {
Command2 = {
DataSource = RealTimeThreadAsyncBridge
Type = uint16
}
}
}
+debugGAM = {//for validation func. debug
Class = IOGAM
InputSignals = {
SDN_Connection = {
DataSource = DDB1
Type = uint32
}
ESDNTime = {
@@ -2521,9 +2635,9 @@
}
}
OutputSignals = {
SDN_Connection_DISP = {
Command_DISP = {
DataSource = Display
Type = uint32
Type = float32
}
ESDNTime_DISP = {
DataSource = Display
@@ -2531,54 +2645,6 @@
}
}
}
+debugGAM_Group = {//for group func. debug
Class = IOGAM
InputSignals = {
ESDNStatus = {
DataSource = SDNSubCommands
Type = uint8
}
Command = {
DataSource = SDNSubCommands
Type = uint16
Ranges = {{0 0}}
}
}
OutputSignals = {
ESDNStatus1_DISP = {
DataSource = Display
Type = uint8
}
Command1_DISP = {
DataSource = Display
Type = uint16
}
}
}
+debugGAM_Group2 = {//for group func. debug
Class = IOGAM
InputSignals = {
ESDNStatus = {
DataSource = SDNSubCommands2
Type = uint8
}
Command = {
DataSource = SDNSubCommands2
Type = uint16
Ranges = {{0 0}}
}
}
OutputSignals = {
ESDNStatus2_DISP = {
DataSource = Display
Type = uint8
}
Command2_DISP = {
DataSource = Display
Type = uint16
}
}
}
+SDNReplyGAM = {
Class = IOGAM
InputSignals = {
@@ -2791,21 +2857,7 @@
}
}
}
+SDNTimeCompareGAM = { // for "Validation" functionality
Class = JAESDNTimeCompareGAM
InputSignals = {
ESDNTime = {
DataSource = DDB1
Type = uint32
}
}
OutputSignals = {
SDN_Connection = {
DataSource = DDB1
Type = uint32
}
}
}
//Write SDN waveform data into PS setpoint PV.
// Timer for SDN thread.
+TimeSDNGAM = {
@@ -2818,8 +2870,7 @@
Counter = {
DataSource = TimerSDN
Type = uint32
//Frequency = 1000 //operation:1k(=1ms cyc), debug:10
Frequency = 900 //TimeCompareGAM for validation function properly work at 900Hz
Frequency = 1000 //operation:1k(=1ms cyc), debug:10
}
}
OutputSignals = {
@@ -2845,7 +2896,7 @@
Counter = {
DataSource = Timer
Type = uint32
Frequency = 10000
Frequency = 200000 //operation:10k(=100us cyc)
//Frequency = 100000 //operation:100k(=10us cyc)
}
RTThreadPerf = {
@@ -2985,11 +3036,10 @@
DataSource = EPICSCAInput
Type = uint32
}
NONE1 = {
PXI_FLT = {
DataSource = DDB1
Type = uint32
Default = 0
}
}
NONE2 = {
DataSource = DDB1
Type = uint32
@@ -3338,14 +3388,7 @@
DataSource = RealTimeThreadAsyncBridge
Type = uint16
}
Command2 = {
DataSource = RealTimeThreadAsyncBridge
Type = uint16
}
ESDNStatus = {
DataSource = RealTimeThreadAsyncBridge
Type = uint8
}
}
OutputSignals = {
RTSMValue = {
@@ -3381,37 +3424,6 @@
DataSource = RealTimeThreadAsyncBridge
Type = uint32
}
//Added 20210602
APS_HVON = {
DataSource = RealTimeThreadAsyncBridge
Type = uint32
}
APS_SWON = {
DataSource = RealTimeThreadAsyncBridge
Type = uint32
}
BPS_HVON = {
DataSource = RealTimeThreadAsyncBridge
Type = uint32
}
BPS_SWON = {
DataSource = RealTimeThreadAsyncBridge
Type = uint32
}
MHVPS_HVON = {
DataSource = RealTimeThreadAsyncBridge
Type = uint32
}
NI6528P3Value = {
DataSource = NI6528P3
//DataSource = DDB1
Type = uint8
}
NI6528P4Value = {
DataSource = NI6528P4
//DataSource = DDB1
Type = uint8
}
}
}
@@ -3754,14 +3766,12 @@
}
+Display = {
Class = LoggerDataSource
CyclePeriod = 00
}
// for data exechange between threads.
+RealTimeThreadAsyncBridge = {
//Class = RealTimeThreadAsyncBridge
//NumberOfBuffers = 20
NumberOfBuffers = 64
Class = GAMDataSource
AllowNoProducers = 1
Class = RealTimeThreadAsyncBridge
NumberOfBuffers = 20
}
// for access ECPIS PV.
+EPICSCAInput = {
@@ -4083,6 +4093,10 @@
PVName = "EC-GN-P01-GPF:PCF4210-CTRP"
Type = uint32
}
PXI_FLT = {
PVName = "EC-GN-P01-GPS:PLC4110-RV2"
Type = uint32
}
HVARMED = {
PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA1"
Type = uint32
@@ -4470,6 +4484,10 @@
PVName = "EC-GN-P01-GPF:PCF4210-CTRP"
Type = uint32
}
PXI_FLT = {
PVName = "EC-GN-P01-GPS:PLC4110-RV2"
Type = uint32
}
HVARMED = {
PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA1"
Type = uint32
@@ -4603,52 +4621,7 @@
+SDNSubCommands = {
Class = SDN::SDNSubscriber
Topic = ECPC2SCUJA
Interface = enp17s0f0
CPUs = 0x200 //change from 100
Locked = 1
Timeout = 2
Signals = {
Header = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 48
}
ESDNHeaderVersionId = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNHeaderSize = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNStatus = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNDoNotUse = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNTime = {
Type = uint32
NumberOfDimensions = 1
NumberOfElements = 1
}
Command = {
Type = uint16
NumberOfDimensions = 1
NumberOfElements = 64
}
}
}
+SDNSubCommands2 = {
Class = SDN::SDNSubscriber
Topic = ECPC2SCUJA2
Interface = enp17s0f0
Interface = enp35s0f1
CPUs = 0x200 //change from 100
Locked = 1
Timeout = 2
@@ -4693,7 +4666,7 @@
+SDNReply = {
Class = SDN::SDNPublisher
Topic = SCUJA2ECPC
Interface = enp17s0f0
Interface = enp35s0f1
CPUs = 0x200 //changed from 0x100
Locked = 1
Signals = {
@@ -4973,7 +4946,7 @@
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x200
}
+Thread3 = {
@@ -4999,7 +4972,7 @@
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x200
}
+Thread3 = {
@@ -5020,12 +4993,12 @@
Class = RealTimeThread
Functions = {Timer1kHzGAM CCPSWaveformGAM WFRecordGAM PreProgrammedGAM FHPSSetpointGAM FHPSRampupGAM InWaitReadyGAM
choiseGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
GoWaitPermitGAM GoWaitStandbyFromReadyGAM GoErrorGAM }
GoWaitPermitGAM GoWaitStandbyFromReadyGAM GoErrorGAM ReadyDebugGAM}
CPUs = 0x100
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x200
}
+Thread3 = {
@@ -5051,7 +5024,7 @@
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x200
}
+Thread3 = {
@@ -5081,7 +5054,7 @@
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x200
}
+Thread3 = {
@@ -5108,19 +5081,19 @@
choiseGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
writeBeamONStateGAM writeHVArmedStateGAM writeHVInjectionStateGAM writeRFONStateGAM
writeBeamONTimeGAM writeRFONTimeGAM
FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorFromWaitHVON_SDNGAM }
FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorGAM }
CPUs = 0x100
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x200
}
+Thread3 = {
Class = RealTimeThread
Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM
NI6528P3GAM NI6528P4GAM
GAMSDNRealTimeStateMachine NI6528P5GAM NI6528P5PV2PortGAM}
GAMSDNRealTimeStateMachine terminalInterfaceGAM NI6528P5GAM NI6528P5PV2PortGAM}
CPUs = 0x400
}
}
@@ -5140,7 +5113,7 @@
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x200
}
+Thread3 = {
@@ -5167,14 +5140,14 @@
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x200
}
+Thread3 = {
Class = RealTimeThread
Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM
NI6528P3GAM NI6528P4GAM
GAMSDNRealTimeStateMachine NI6528P5GAM NI6528P5PV2PortGAM}
GAMSDNRealTimeStateMachine terminalInterfaceGAM NI6528P5GAM NI6528P5PV2PortGAM}
CPUs = 0x400
}
}
@@ -5188,12 +5161,12 @@
Class = RealTimeThread
Functions = {Timer1kHzGAM InErrorGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
ExitedHVArmedInjectionRFONGAM ResetPSsGAM
FromErrorToWaitStandbyGAM ErrorGAM choiseGAM EPICSOutputGAM FHPSSetpointGAM FHPSRampupGAM CCPSWaveformGAM }
FromErrorToWaitStandbyGAM ErrorGAM choiseGAM EPICSOutputGAM FHPSSetpointGAM FHPSRampupGAM CCPSWaveformGAM DebugGAM}
CPUs = 0x100
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x200
}
+Thread3 = {

View File

@@ -1,15 +1,15 @@
// LoggerService node: See /var/log/messages file.
// +LoggerService = {
// Class = LoggerService
// CPUs = 0x8000
// StackSize = 32768
// NumberOfLogPages = 128
// +SysLogger = {
// Class = SysLogger
// Format = "EtOoFmC"
// PrintKeys = 1
// Ident = "JAGyA"
// }
// Class = LoggerService
// CPUs = 0x8000
// StackSize = 32768
// NumberOfLogPages = 128
// +SysLogger = {
// Class = SysLogger
// Format = "EtOoFmC"
// PrintKeys = 1
// Ident = "JAGyA"
// }
// }
// StateMachine node
@@ -1695,8 +1695,8 @@
Type = uint32
}
HVInjection = {
DataSource = RealTimeThreadAsyncBridge
Type = uint32
DataSource = RealTimeThreadAsyncBridge
Type = uint32
}
}
OutputSignals = {
@@ -2301,63 +2301,6 @@
Function = GoError
}
}
+GoErrorFromWaitHVON_SDNGAM = {
Class = JAMessageGAM
Operation = OR
//ExpectedIntValues = {1 1 1 1 1 1 1 1 1 1 0}
ExpectedIntValues = {1 1 1 1 1 1 1 1 1 1}
InputSignals = {
GYA_APS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
GYB_APS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
GYA_BPS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
GYB_BPS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
MHVPS_OV = {
DataSource = EPICSCAInput
Type = uint32
}
MHVPS_OC = {
DataSource = EPICSCAInput
Type = uint32
}
MHVPS_FLT = {
DataSource = EPICSCAInput
Type = uint32
}
MIS_ITL = {
DataSource = EPICSCAInput
Type = uint32
}
MISB_ITL = {
DataSource = EPICSCAInput
Type = uint32
}
PLC_ITL = {
DataSource = EPICSCAInput
Type = uint32
}
//SDN_Connection = {
// DataSource = DDB1
// Type = uint32
//}
}
+Event = {
Class = Message
Destination = StateMachine
Function = GoError
}
}
// Reset HVPS outputs. ToDo: Fix to access NI d.s.
+ResetPSsGAM = {
Class = ConstantGAM
@@ -2456,24 +2399,7 @@
}
}
}
+SDNCommandGAM2 = {
Class = IOGAM
InputSignals = {
Command = {
DataSource = SDNSubCommands2
Type = uint16
NumberOfDimensions = 1
NumberOfElements = 64
Ranges = {{0 0}}
}
}
OutputSignals = {
Command2 = {
DataSource = RealTimeThreadAsyncBridge
Type = uint16
}
}
}
+SDNReplyGAM = {
Class = IOGAM
InputSignals = {
@@ -2686,21 +2612,7 @@
}
}
}
+SDNTimeCompareGAM = { // for "Validation" functionality
Class = JAESDNTimeCompareGAM
InputSignals = {
ESDNTime = {
DataSource = DDB1
Type = uint32
}
}
OutputSignals = {
SDN_Connection = {
DataSource = DDB1
Type = uint32
}
}
}
//Write SDN waveform data into PS setpoint PV.
// Timer for SDN thread.
+TimeSDNGAM = {
@@ -2713,8 +2625,12 @@
Counter = {
DataSource = TimerSDN
Type = uint32
//Frequency = 1000 //operation:1k(=1ms cyc), debug:10
Frequency = 900 //TimeCompareGAM for validation function properly work at 900Hz for QST ECPC
Frequency = 1000 //operation:1k(=1ms cyc), debug:10
}
RTThreadPerf = {
DataSource = Timings
Alias = "WaitHVON.Thread3_CycleTime"
Type = uint32
}
}
OutputSignals = {
@@ -2726,6 +2642,10 @@
DataSource = DDB1
Type = uint32
}
RTThreadPerfSDN = {
DataSource = DDB1
Type = uint32
}
}
}
@@ -2740,8 +2660,7 @@
Counter = {
DataSource = Timer
Type = uint32
Frequency = 10000
//Frequency = 100000 //operation:100k(=10us cyc), debug:10
Frequency = 200000 //operation:100k(=10us cyc), debug:10
}
RTThreadPerf = {
DataSource = Timings
@@ -3160,8 +3079,8 @@
Type = uint32
}
StopRequest = {
DataSource = DDB1
Type = uint32
DataSource = DDB1
Type = uint32
}
MODE_SHOTLEN_FLAG = {
DataSource = DDB1
@@ -3298,8 +3217,8 @@
Type = uint32
}
StopRequest = {
DataSource = DDB1
Type = uint32
DataSource = DDB1
Type = uint32
}
MODE_SHOTLEN_FLAG = {
DataSource = DDB1
@@ -3309,14 +3228,6 @@
DataSource = RealTimeThreadAsyncBridge
Type = uint16
}
Command2 = {
DataSource = RealTimeThreadAsyncBridge
Type = uint16
}
ESDNStatus = {
DataSource = RealTimeThreadAsyncBridge
Type = uint8
}
}
OutputSignals = {
@@ -3353,37 +3264,6 @@
DataSource = RealTimeThreadAsyncBridge
Type = uint32
}
//Added 20210603
APS_HVON = {
DataSource = RealTimeThreadAsyncBridge
Type = uint32
}
APS_SWON = {
DataSource = RealTimeThreadAsyncBridge
Type = uint32
}
BPS_HVON = {
DataSource = RealTimeThreadAsyncBridge
Type = uint32
}
BPS_SWON = {
DataSource = RealTimeThreadAsyncBridge
Type = uint32
}
MHVPS_HVON = {
DataSource = RealTimeThreadAsyncBridge
Type = uint32
}
NI6528P3Value = {
DataSource = NI6528P3
//DataSource = DDB1
Type = uint8
}
NI6528P4GYAValue = {
DataSource = NI6528P4GYA
//DataSource = DDB1
Type = uint8
}
}
}
@@ -3616,11 +3496,8 @@
}
// for data exechange between threads.
+RealTimeThreadAsyncBridge = {
//Class = RealTimeThreadAsyncBridge
//NumberOfBuffers = 20
NumberOfBuffers = 64
Class = GAMDataSource
AllowNoProducers = 1
Class = RealTimeThreadAsyncBridge
NumberOfBuffers = 20
}
// for access ECPIS PV.
+EPICSCAInput = {
@@ -4278,27 +4155,27 @@
}
//PXI Board status PVs
PXI6259_0 = {
PVName = "EC-GN-P01-HWCF:6259-0-STATUS"
PVName = "EC-GN-HWCF:6259-0-STATUS"
Type = uint32
}
PXI6259_1 = {
PVName = "EC-GN-P01-HWCF:6259-1-STATUS"
PVName = "EC-GN-HWCF:6259-1-STATUS"
Type = uint32
}
PXI6528_0 = {
PVName = "EC-GN-P01-HWCF:6528-0-STATUS"
PVName = "EC-GN-HWCF:6528-0-STATUS"
Type = uint32
}
PXI6528_1 = {
PVName = "EC-GN-P01-HWCF:6528-1-STATUS"
PVName = "EC-GN-HWCF:6528-1-STATUS"
Type = uint32
}
PXI6368_0 = {
PVName = "EC-GN-P01-HWCF:6368-0-STATUS"
PVName = "EC-GN-HWCF:6368-0-STATUS"
Type = uint32
}
PXI6368_1 = {
PVName = "EC-GN-P01-HWCF:6368-1-STATUS"
PVName = "EC-GN-HWCF:6368-1-STATUS"
Type = uint32
}
}
@@ -4530,51 +4407,6 @@
}
}
}
+SDNSubCommands2 = {
Class = SDN::SDNSubscriber
Topic = ECPC2SCUJA2
Interface = enp27s0f0
CPUs = 0x2000
Locked = 1
Timeout = 2
Signals = {
Header = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 48
}
ESDNHeaderVersionId = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNHeaderSize = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNStatus = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNDoNotUse = {
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 1
}
ESDNTime = {
Type = uint32
NumberOfDimensions = 1
NumberOfElements = 1
}
Command = {
Type = uint16
NumberOfDimensions = 1
NumberOfElements = 64
}
}
}
+SDNReply = {
Class = SDN::SDNPublisher
//Topic = SCUJAB2ECPC
@@ -4878,7 +4710,7 @@
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x2000
}
+Thread3 = {
@@ -4899,12 +4731,12 @@
Class = RealTimeThread
Functions = {Timer1kHzGAM CCPSWaveformGAM FHPSSetpointGAM FHPSRampupGAM InWaitStandbyGAM
choiseGAM MCPSGAM GCPSGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
GoDisabledGAM GoWaitReadyGAM GoErrorGAM }
GoDisabledGAM GoWaitReadyGAM GoErrorGAM CCPSWaveformGAM }
CPUs = 0x1000
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x2000
}
+Thread3 = {
@@ -4930,7 +4762,7 @@
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x2000
}
+Thread3 = {
@@ -4956,7 +4788,7 @@
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x2000
}
+Thread3 = {
@@ -4986,7 +4818,7 @@
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x2000
}
+Thread3 = {
@@ -5008,19 +4840,19 @@
choiseGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
writeBeamONStateGAM writeHVArmedStateGAM writeHVInjectionStateGAM writeRFONStateGAM
writeBeamONTimeGAM writeRFONTimeGAM
FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorFromWaitHVON_SDNGAM }
FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorGAM }
CPUs = 0x1000
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x2000
}
+Thread3 = {
Class = RealTimeThread
Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM
NI6528P3GAM NI6528P4GAM NI6528P4GYAGAM NI6528P4PV2PortGAM NI6528P4WriteGAM
GAMSDNRealTimeStateMachine NI6528P5GAM NI6528P5PV2PortGAM}
GAMSDNRealTimeStateMachine terminalInterfaceGAM NI6528P5GAM NI6528P5PV2PortGAM}
CPUs = 0x4000
}
}
@@ -5040,7 +4872,7 @@
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x2000
}
+Thread3 = {
@@ -5067,14 +4899,14 @@
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x2000
}
+Thread3 = {
Class = RealTimeThread
Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM
NI6528P3GAM NI6528P4GAM NI6528P4GYAGAM NI6528P4PV2PortGAM NI6528P4WriteGAM
GAMSDNRealTimeStateMachine NI6528P5GAM NI6528P5PV2PortGAM}
GAMSDNRealTimeStateMachine terminalInterfaceGAM NI6528P5GAM NI6528P5PV2PortGAM}
CPUs = 0x4000
}
}
@@ -5088,12 +4920,12 @@
Class = RealTimeThread
Functions = {Timer1kHzGAM InErrorGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM
ExitedHVArmedInjectionRFONGAM ResetPSsGAM
FromErrorToWaitStandbyGAM ErrorGAM choiseGAM EPICSOutputGAM FHPSSetpointGAM FHPSRampupGAM CCPSWaveformGAM }
FromErrorToWaitStandbyGAM ErrorGAM choiseGAM EPICSOutputGAM FHPSSetpointGAM FHPSRampupGAM CCPSWaveformGAM}
CPUs = 0x1000
}
+Thread2 = {
Class = RealTimeThread
Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM }
Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM}
CPUs = 0x2000
}
+Thread3 = {

View File

@@ -1,7 +1,7 @@
#############################################################
#
# Copyright 2015 F4E | European Joint Undertaking for ITER
# and the Development of Fusion Energy ('Fusion for Energy')
# Copyright 2015 EFDA | European Joint Undertaking for ITER
# and the Development of Fusion Energy ("Fusion for Energy")
#
# Licensed under the EUPL, Version 1.1 or - as soon they
# will be approved by the European Commission - subsequent
@@ -20,8 +20,11 @@
# See the Licence for the specific language governing
# permissions and limitations under the Licence.
#
# $Id: Makefile.gcc 3 2012-01-15 16:26:07Z aneto $
# $Id: Makefile.gcc 3 2015-01-15 16:26:07Z aneto $
#
#############################################################
#Defines the target architecture
export TARGET=cfg
include Makefile.inc

View File

@@ -0,0 +1,42 @@
#############################################################
#
# Copyright 2015 F4E | European Joint Undertaking for ITER
# and the Development of Fusion Energy ('Fusion for Energy')
#
# Licensed under the EUPL, Version 1.1 or - as soon they
# will be approved by the European Commission - subsequent
# versions of the EUPL (the "Licence");
# You may not use this work except in compliance with the
# Licence.
# You may obtain a copy of the Licence at:
#
# http://ec.europa.eu/idabc/eupl
#
# Unless required by applicable law or agreed to in
# writing, software distributed under the Licence is
# distributed on an "AS IS" basis,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
# express or implied.
# See the Licence for the specific language governing
# permissions and limitations under the Licence.
#
#############################################################
#Named of the unit files to be compiled
OBJSX=JAGyrotronA_FY19_P1.x
#Location of the Build directory where the configuration file will be written to
BUILD_DIR?=.
#Location of the MakeDefaults directory.
#Note that the MARTe2_DIR environment variable
#must have been exported before
MAKEDEFAULTDIR=$(MARTe2_DIR)/MakeDefaults
include $(MAKEDEFAULTDIR)/MakeStdLibDefs.$(TARGET)
all: $(OBJS)
echo $(OBJS)
include $(MAKEDEFAULTDIR)/MakeStdLibRules.$(TARGET)

View File

@@ -0,0 +1,293 @@
../..//Build/x86-linux/DataSources/JAEPICSCA/JAEPICSCAInput.o: JAEPICSCAInput.cpp JAEPICSCAInput.h \
/opt/codac-6.0/epics/include/cadef.h \
/opt/codac-6.0/epics/include/epicsThread.h \
/opt/codac-6.0/epics/include/shareLib.h \
/opt/codac-6.0/epics/include/epicsEvent.h \
/opt/codac-6.0/epics/include/os/Linux/osdEvent.h \
/opt/codac-6.0/epics/include/epicsMutex.h \
/opt/codac-6.0/epics/include/epicsAssert.h \
/opt/codac-6.0/epics/include/compilerDependencies.h \
/opt/codac-6.0/epics/include/compiler/gcc/compilerSpecific.h \
/opt/codac-6.0/epics/include/epicsGuard.h \
/opt/codac-6.0/epics/include/os/Linux/osdMutex.h \
/opt/codac-6.0/epics/include/os/Linux/osdThread.h \
/opt/codac-6.0/epics/include/shareLib.h \
/opt/codac-6.0/epics/include/ellLib.h \
/opt/codac-6.0/epics/include/epicsEvent.h \
/opt/codac-6.0/epics/include/caerr.h \
/opt/codac-6.0/epics/include/epicsTypes.h \
/opt/codac-6.0/epics/include/db_access.h \
/opt/codac-6.0/epics/include/epicsTime.h \
/opt/codac-6.0/epics/include/os/Linux/osdTime.h \
/opt/codac-6.0/epics/include/errMdef.h \
/opt/codac-6.0/epics/include/caeventmask.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/ConfigurationDatabase.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/AnyObject.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Architecture/x86_gcc/CompilerTypes.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TypeCharacteristics.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TemplateParametersVerificator.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryDatabase.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectsDatabase.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/StandardHeap.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HeapI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorInformation.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ErrorType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../StreamI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeoutType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeStamp.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Architecture/x86_gcc/HighResolutionTimerA.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimerCalibrator.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeStamp.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../Generic/StandardHeap_Generic.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FastPollingMutexSem.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Atomic.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Architecture/x86_gcc/AtomicA.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Sleep.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItem.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CString.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Introspection.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/IntrospectionEntry.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TypeDescriptor.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BasicType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolderT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/IteratorT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Iterator.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilterT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilter.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilterT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilter.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/LoadableLibrary.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticList.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticListHolder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Matrix.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapManager.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StringHelper.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/CLASSREGISTER.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItemT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilderT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/TypeConversion.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StreamI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamString.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/CharBuffer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/BufferedStreamI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FormatDescriptor.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/IOBuffer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/MemoryOperationsHelper.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamStringIOBuffer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Reference.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilter.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerNode.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilterObjectName.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/StatefulI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/ExecutionInfo.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/Threads.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/ExceptionHandler.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ProcessorType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/EventSem.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/SingleThreadService.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThreadI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThread.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/AdvancedErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamMemoryReference.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/MemoryMapInputBroker.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/MemoryMapBroker.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/BrokerI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/ExecutableI.h
../..//Build/x86-linux/DataSources/JAEPICSCA/EPICSCAOutput.o: EPICSCAOutput.cpp EPICSCAOutput.h \
/opt/codac-6.0/epics/include/cadef.h \
/opt/codac-6.0/epics/include/epicsThread.h \
/opt/codac-6.0/epics/include/shareLib.h \
/opt/codac-6.0/epics/include/epicsEvent.h \
/opt/codac-6.0/epics/include/os/Linux/osdEvent.h \
/opt/codac-6.0/epics/include/epicsMutex.h \
/opt/codac-6.0/epics/include/epicsAssert.h \
/opt/codac-6.0/epics/include/compilerDependencies.h \
/opt/codac-6.0/epics/include/compiler/gcc/compilerSpecific.h \
/opt/codac-6.0/epics/include/epicsGuard.h \
/opt/codac-6.0/epics/include/os/Linux/osdMutex.h \
/opt/codac-6.0/epics/include/os/Linux/osdThread.h \
/opt/codac-6.0/epics/include/shareLib.h \
/opt/codac-6.0/epics/include/ellLib.h \
/opt/codac-6.0/epics/include/epicsEvent.h \
/opt/codac-6.0/epics/include/caerr.h \
/opt/codac-6.0/epics/include/epicsTypes.h \
/opt/codac-6.0/epics/include/db_access.h \
/opt/codac-6.0/epics/include/epicsTime.h \
/opt/codac-6.0/epics/include/os/Linux/osdTime.h \
/opt/codac-6.0/epics/include/errMdef.h \
/opt/codac-6.0/epics/include/caeventmask.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/ConfigurationDatabase.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/AnyObject.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Architecture/x86_gcc/CompilerTypes.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TypeCharacteristics.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TemplateParametersVerificator.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryDatabase.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectsDatabase.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/StandardHeap.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HeapI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorInformation.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ErrorType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../StreamI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeoutType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeStamp.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Architecture/x86_gcc/HighResolutionTimerA.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimerCalibrator.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeStamp.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../Generic/StandardHeap_Generic.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FastPollingMutexSem.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Atomic.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Architecture/x86_gcc/AtomicA.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Sleep.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItem.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CString.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Introspection.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/IntrospectionEntry.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TypeDescriptor.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BasicType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolderT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/IteratorT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Iterator.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilterT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilter.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilterT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilter.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/LoadableLibrary.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticList.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticListHolder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Matrix.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapManager.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StringHelper.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/CLASSREGISTER.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItemT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilderT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/TypeConversion.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StreamI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamString.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/CharBuffer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/BufferedStreamI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FormatDescriptor.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/IOBuffer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/MemoryOperationsHelper.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamStringIOBuffer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Reference.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilter.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerNode.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilterObjectName.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/StatefulI.h \
EPICSCAInput.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/ExecutionInfo.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/Threads.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/ExceptionHandler.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ProcessorType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/EventSem.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/SingleThreadService.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThreadI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThread.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/AdvancedErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamMemoryReference.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L5GAMs/MemoryMapAsyncOutputBroker.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/MemoryMapBroker.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/BrokerI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/ExecutableI.h

View File

@@ -0,0 +1,293 @@
JAEPICSCAInput.o: JAEPICSCAInput.cpp JAEPICSCAInput.h \
/opt/codac-6.0/epics/include/cadef.h \
/opt/codac-6.0/epics/include/epicsThread.h \
/opt/codac-6.0/epics/include/shareLib.h \
/opt/codac-6.0/epics/include/epicsEvent.h \
/opt/codac-6.0/epics/include/os/Linux/osdEvent.h \
/opt/codac-6.0/epics/include/epicsMutex.h \
/opt/codac-6.0/epics/include/epicsAssert.h \
/opt/codac-6.0/epics/include/compilerDependencies.h \
/opt/codac-6.0/epics/include/compiler/gcc/compilerSpecific.h \
/opt/codac-6.0/epics/include/epicsGuard.h \
/opt/codac-6.0/epics/include/os/Linux/osdMutex.h \
/opt/codac-6.0/epics/include/os/Linux/osdThread.h \
/opt/codac-6.0/epics/include/shareLib.h \
/opt/codac-6.0/epics/include/ellLib.h \
/opt/codac-6.0/epics/include/epicsEvent.h \
/opt/codac-6.0/epics/include/caerr.h \
/opt/codac-6.0/epics/include/epicsTypes.h \
/opt/codac-6.0/epics/include/db_access.h \
/opt/codac-6.0/epics/include/epicsTime.h \
/opt/codac-6.0/epics/include/os/Linux/osdTime.h \
/opt/codac-6.0/epics/include/errMdef.h \
/opt/codac-6.0/epics/include/caeventmask.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/ConfigurationDatabase.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/AnyObject.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Architecture/x86_gcc/CompilerTypes.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TypeCharacteristics.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TemplateParametersVerificator.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryDatabase.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectsDatabase.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/StandardHeap.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HeapI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorInformation.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ErrorType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../StreamI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeoutType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeStamp.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Architecture/x86_gcc/HighResolutionTimerA.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimerCalibrator.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeStamp.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../Generic/StandardHeap_Generic.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FastPollingMutexSem.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Atomic.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Architecture/x86_gcc/AtomicA.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Sleep.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItem.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CString.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Introspection.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/IntrospectionEntry.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TypeDescriptor.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BasicType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolderT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/IteratorT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Iterator.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilterT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilter.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilterT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilter.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/LoadableLibrary.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticList.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticListHolder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Matrix.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapManager.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StringHelper.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/CLASSREGISTER.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItemT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilderT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/TypeConversion.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StreamI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamString.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/CharBuffer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/BufferedStreamI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FormatDescriptor.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/IOBuffer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/MemoryOperationsHelper.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamStringIOBuffer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Reference.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilter.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerNode.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilterObjectName.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/StatefulI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/ExecutionInfo.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/Threads.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/ExceptionHandler.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ProcessorType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/EventSem.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/SingleThreadService.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThreadI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThread.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/AdvancedErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamMemoryReference.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/MemoryMapInputBroker.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/MemoryMapBroker.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/BrokerI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/ExecutableI.h
EPICSCAOutput.o: EPICSCAOutput.cpp EPICSCAOutput.h \
/opt/codac-6.0/epics/include/cadef.h \
/opt/codac-6.0/epics/include/epicsThread.h \
/opt/codac-6.0/epics/include/shareLib.h \
/opt/codac-6.0/epics/include/epicsEvent.h \
/opt/codac-6.0/epics/include/os/Linux/osdEvent.h \
/opt/codac-6.0/epics/include/epicsMutex.h \
/opt/codac-6.0/epics/include/epicsAssert.h \
/opt/codac-6.0/epics/include/compilerDependencies.h \
/opt/codac-6.0/epics/include/compiler/gcc/compilerSpecific.h \
/opt/codac-6.0/epics/include/epicsGuard.h \
/opt/codac-6.0/epics/include/os/Linux/osdMutex.h \
/opt/codac-6.0/epics/include/os/Linux/osdThread.h \
/opt/codac-6.0/epics/include/shareLib.h \
/opt/codac-6.0/epics/include/ellLib.h \
/opt/codac-6.0/epics/include/epicsEvent.h \
/opt/codac-6.0/epics/include/caerr.h \
/opt/codac-6.0/epics/include/epicsTypes.h \
/opt/codac-6.0/epics/include/db_access.h \
/opt/codac-6.0/epics/include/epicsTime.h \
/opt/codac-6.0/epics/include/os/Linux/osdTime.h \
/opt/codac-6.0/epics/include/errMdef.h \
/opt/codac-6.0/epics/include/caeventmask.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/ConfigurationDatabase.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/AnyObject.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Architecture/x86_gcc/CompilerTypes.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TypeCharacteristics.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TemplateParametersVerificator.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryDatabase.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectsDatabase.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/StandardHeap.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HeapI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorInformation.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ErrorType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../StreamI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeoutType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeStamp.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Architecture/x86_gcc/HighResolutionTimerA.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimerCalibrator.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../GeneralDefinitions.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeStamp.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../Generic/StandardHeap_Generic.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FastPollingMutexSem.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Atomic.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Architecture/x86_gcc/AtomicA.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HighResolutionTimer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Sleep.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItem.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CString.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Introspection.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/IntrospectionEntry.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TypeDescriptor.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BasicType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolderT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/IteratorT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Iterator.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilterT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilter.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilterT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilter.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/LoadableLibrary.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticList.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticListHolder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Matrix.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapManager.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StringHelper.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/CLASSREGISTER.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItemT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilderT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/TypeConversion.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StreamI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamString.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/CharBuffer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/BufferedStreamI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FormatDescriptor.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/IOBuffer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/MemoryOperationsHelper.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamStringIOBuffer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Reference.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilter.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerNode.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilterObjectName.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/StatefulI.h \
EPICSCAInput.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/ExecutionInfo.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/Threads.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/ExceptionHandler.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ProcessorType.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/EventSem.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/SingleThreadService.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderT.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThreadI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThread.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/AdvancedErrorManagement.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamMemoryReference.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L5GAMs/MemoryMapAsyncOutputBroker.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/MemoryMapBroker.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/BrokerI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \
/home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/ExecutableI.h

View File

@@ -1,132 +0,0 @@
/**
* @file JAESDNTimeCompareGAM.cpp
* @brief Source file for class JAESDNTimeCompareGAM
* @date Nov 26, 2018
* @author aneto
*
* @copyright Copyright 2015 F4E | European Joint Undertaking for ITER and
* the Development of Fusion Energy ('Fusion for Energy').
* Licensed under the EUPL, Version 1.1 or - as soon they will be approved
* by the European Commission - subsequent versions of the EUPL (the "Licence")
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl
*
* @warning Unless required by applicable law or agreed to in writing,
* software distributed under the Licence is distributed on an "AS IS"
* basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the Licence permissions and limitations under the Licence.
* @details This source file contains the definition of all the methods for
* the class JAESDNTimeCompareGAM (public, protected, and private). Be aware that some
* methods, such as those inline could be defined on the header file, instead.
*/
/*---------------------------------------------------------------------------*/
/* Standard header includes */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Project header includes */
/*---------------------------------------------------------------------------*/
#include "JAESDNTimeCompareGAM.h"
#include "AdvancedErrorManagement.h"
/*---------------------------------------------------------------------------*/
/* Static definitions */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Method definitions */
/*---------------------------------------------------------------------------*/
JAESDNTimeCompareGAM::JAESDNTimeCompareGAM() {
//ESDNTime holder
esdntime_previous = 0;
//Input signals.
esdntime = NULL_PTR(MARTe::uint32 *);
//Output signals.
sdn_connection = NULL_PTR(MARTe::uint32 *);
}
JAESDNTimeCompareGAM::~JAESDNTimeCompareGAM() {
if (esdntime != NULL_PTR(MARTe::uint32 *)) {
delete[] esdntime;
}
if (sdn_connection != NULL_PTR(MARTe::uint32 *)) {
delete[] sdn_connection;
}
}
bool JAESDNTimeCompareGAM::Initialise(MARTe::StructuredDataI & data) {
using namespace MARTe;
return GAM::Initialise(data);
}
bool JAESDNTimeCompareGAM::PrepareNextState(const MARTe::char8 * const currentStateName, const MARTe::char8 * const nextStateName) {
return true;
}
bool JAESDNTimeCompareGAM::Setup() {
// Setup memory for input/output signals on the GAM.
using namespace MARTe;
bool ok = (numberOfInputSignals == 1u);
// Do type check for input signals.
if (ok) {
ok = (numberOfOutputSignals == 1u);
if (!ok) {
REPORT_ERROR(ErrorManagement::ParametersError, "Number of output signals shall be the same as "
"number of expected values.");
}
} else {
REPORT_ERROR(ErrorManagement::ParametersError, "Number of input signals shall be the same as "
"number of expected values.");
}
if (ok) {
uint32 c;
for (c = 0u; c < numberOfInputSignals; c++) {
TypeDescriptor inputType = GetSignalType(InputSignals, c);
ok = (inputType == UnsignedInteger32Bit);
if (!ok) {
StreamString signalName;
(void) GetSignalName(InputSignals, c, signalName);
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Signal %s shall be defined as uint32", signalName.Buffer());
}
}
}
if (ok) {
uint32 c;
for (c = 0u; c < numberOfOutputSignals; c++) {
TypeDescriptor outputType = GetSignalType(OutputSignals, c);
ok = (outputType == UnsignedInteger32Bit);
if (!ok) {
StreamString signalName;
(void) GetSignalName(InputSignals, c, signalName);
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Signal %s shall be defined as uint32", signalName.Buffer());
}
}
}
if (ok) {
esdntime = reinterpret_cast<uint32 *>(GetInputSignalMemory(0));
sdn_connection = reinterpret_cast<uint32 *>(GetOutputSignalMemory(0));
}
return ok;
}
bool JAESDNTimeCompareGAM::Execute() {
using namespace MARTe;
bool connected;
connected = !(esdntime_previous == *esdntime);
if (connected) *sdn_connection = 1;
else *sdn_connection = 0;
esdntime_previous = *esdntime;
return true;
}
CLASS_REGISTER(JAESDNTimeCompareGAM, "1.0")

View File

@@ -1,101 +0,0 @@
/**
* @file JAESDNTimeCompareGAM.h
* @brief Header file for class JAESDNTimeCompareGAM
* @date Feb, 2021
* @author ksakakida
*
* @copyright Copyright 2015 F4E | European Joint Undertaking for ITER and
* the Development of Fusion Energy ('Fusion for Energy').
* Licensed under the EUPL, Version 1.1 or - as soon they will be approved
* by the European Commission - subsequent versions of the EUPL (the "Licence")
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl
*
* @warning Unless required by applicable law or agreed to in writing,
* software distributed under the Licence is distributed on an "AS IS"
* basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the Licence permissions and limitations under the Licence.
* @details This header file contains the declaration of the class JAESDNTimeCompareGAM
* with all of its public, protected and private members. It may also include
* definitions for inline methods which need to be visible to the compiler.
*/
#ifndef GAMS_JAESDNTimeCompareGAM_H_
#define GAMS_JAESDNTimeCompareGAM_H_
/*---------------------------------------------------------------------------*/
/* Standard header includes */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Project header includes */
/*---------------------------------------------------------------------------*/
#include "GAM.h"
/*---------------------------------------------------------------------------*/
/* Class declaration */
/*---------------------------------------------------------------------------*/
/**
* @brief GAM that sends a message when one-cycle before ESDNTime and current one are same. This GAM is based on JAMessageGAM.
* @details Sample
*
* The configuration syntax is:
*
* <pre>
* +SDNTimeCompareGAM = {
* Class = JAESDNTimeCompareGAM
* InputSignals = {
* ESDNTime = {
* DataSource = "DDB1"
* Type = uint32
* }
* }
* OutputSignals = {
* SDN_Connection = {
* DataSource = "DDB1"
* Type = uint32
* }
* }
* }
* </pre>
*/
class JAESDNTimeCompareGAM : public MARTe::GAM, public MARTe::StatefulI {
public:
CLASS_REGISTER_DECLARATION()
JAESDNTimeCompareGAM();
virtual ~JAESDNTimeCompareGAM();
virtual bool Initialise(MARTe::StructuredDataI & data);
virtual bool Setup();
virtual bool Execute();
virtual bool PrepareNextState(const MARTe::char8 * const currentStateName,
const MARTe::char8 * const nextStateName);
private:
// ESDNTime holder
MARTe::uint32 esdntime_previous;
// Input signals
MARTe::uint32 *esdntime;
// Output signals
MARTe::uint32 *sdn_connection; // 0: disconnected, 1: connected
};
/*---------------------------------------------------------------------------*/
/* Inline method definitions */
/*---------------------------------------------------------------------------*/
#endif /* GAMS_JAESDNTimeCompareGAM_H_ */

View File

@@ -1,55 +0,0 @@
#############################################################
#
# Copyright 2015 F4E | European Joint Undertaking for ITER
# and the Development of Fusion Energy ('Fusion for Energy')
#
# Licensed under the EUPL, Version 1.1 or - as soon they
# will be approved by the European Commission - subsequent
# versions of the EUPL (the "Licence");
# You may not use this work except in compliance with the
# Licence.
# You may obtain a copy of the Licence at:
#
# http://ec.europa.eu/idabc/eupl
#
# Unless required by applicable law or agreed to in
# writing, software distributed under the Licence is
# distributed on an "AS IS" basis,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
# express or implied.
# See the Licence for the specific language governing
# permissions and limitations under the Licence.
#
# $Id: Makefile.inc 3 2012-01-15 16:26:07Z aneto $
#
#############################################################
OBJSX=JAESDNTimeCompareGAM.x
PACKAGE=GAMs
ROOT_DIR=../../
MAKEDEFAULTDIR=$(MARTe2_DIR)/MakeDefaults
include $(MAKEDEFAULTDIR)/MakeStdLibDefs.$(TARGET)
INCLUDES += -I.
INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L0Types
INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L1Portability
INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L2Objects
INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L3Streams
INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L4Messages
INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L4Configuration
INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L5GAMs
INCLUDES += -I$(MARTe2_DIR)/Source/Core/Scheduler/L1Portability
INCLUDES += -I$(MARTe2_DIR)/Source/Core/Scheduler/L3Services
INCLUDES += -I$(MARTe2_DIR)/Source/Core/Scheduler/L4Messages
INCLUDES += -I$(MARTe2_DIR)/Source/Core/FileSystem/L1Portability
INCLUDES += -I$(MARTe2_DIR)/Source/Core/FileSystem/L3Streams
all: $(OBJS) $(SUBPROJ) \
$(BUILD_DIR)/JAESDNTimeCompareGAM$(LIBEXT) \
$(BUILD_DIR)/JAESDNTimeCompareGAM$(DLLEXT)
echo $(OBJS)
include $(MAKEDEFAULTDIR)/MakeStdLibRules.$(TARGET)

View File

@@ -120,7 +120,7 @@ bool JAModeControlGAM::Execute() {
rfonTime = *inputSignals[9];
resetRemainingTime = false;
pulseLengthLimit = CalcPulseLengthLimit(inputSignals);
//REPORT_ERROR(ErrorManagement::Debug, "Pulse Length was set to Limit:%d", pulseLengthLimit);
REPORT_ERROR(ErrorManagement::Debug, "Pulse Length was set to Limit:%d", pulseLengthLimit);
}
// Turn on the flag during RFON if the pulse legth over the limit.
if ((*inputSignals[9] - rfonTime <= pulseLengthLimit) && (previousState == 1u)) {

View File

@@ -0,0 +1,411 @@
/**
* @file JARTStateMachineGAM.cpp
* @brief Source file for class JARTStateMachineGAM
* @date Nov 26, 2018
* @author aneto
*
* @copyright Copyright 2015 F4E | European Joint Undertaking for ITER and
* the Development of Fusion Energy ('Fusion for Energy').
* Licensed under the EUPL, Version 1.1 or - as soon they will be approved
* by the European Commission - subsequent versions of the EUPL (the "Licence")
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl
*
* @warning Unless required by applicable law or agreed to in writing,
* software distributed under the Licence is distributed on an "AS IS"
* basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the Licence permissions and limitations under the Licence.
* @details This source file contains the definition of all the methods for
* the class JARTStateMachineGAM (public, protected, and private). Be aware that some
* methods, such as those inline could be defined on the header file, instead.
*/
/*---------------------------------------------------------------------------*/
/* Standard header includes */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Project header includes */
/*---------------------------------------------------------------------------*/
#include "JARTStateMachineGAM.h"
#include "AdvancedErrorManagement.h"
/*---------------------------------------------------------------------------*/
/* Static definitions */
/*---------------------------------------------------------------------------*/
static MARTe::uint64 getCurrentTimeUs() {
using namespace MARTe;
return static_cast<uint64>(HighResolutionTimer::Counter() * HighResolutionTimer::Period() * 1e6f + 0.5f);
}
/*---------------------------------------------------------------------------*/
/* Method definitions */
/*---------------------------------------------------------------------------*/
JARTStateMachineGAM::JARTStateMachineGAM() {
currentState = WaitTrigger; // Set Entry state.
plcOnTime = 0; // Triggered time holder.
//Output and condition in a given state.
conditionTrigger = 1;
aps_hvon = 0;
aps_swon = 0;
bps_hvon = 0;
bps_swon = 0;
mhvps_hvon = 0;
// Parameters which get from Input signals.
triggerSignal = NULL_PTR(MARTe::uint32 *);
currentTime = NULL_PTR(MARTe::uint32 *);
turn_off_delay = 2000; //us
triggerDelay_mhvps_hvon = NULL_PTR(MARTe::uint32 *);
triggerDelay_aps_hvon = NULL_PTR(MARTe::uint32 *);
triggerDelay_aps_swon = NULL_PTR(MARTe::uint32 *);
triggerDelay_bps_hvon = NULL_PTR(MARTe::uint32 *);
triggerDelay_bps_swon = NULL_PTR(MARTe::uint32 *);
triggerDelay_shotlen = NULL_PTR(MARTe::uint32 *);
stopRequest = NULL_PTR(MARTe::uint32 *);
modePulseLengthLimit = NULL_PTR(MARTe::uint32 *);
short_pulse_mode = NULL_PTR(MARTe::uint32 *);
modulation = NULL_PTR(MARTe::uint32 *);
// write out target.
outputSignal = NULL_PTR(MARTe::uint32 *);
outputBeamON = NULL_PTR(MARTe::uint32 *);
outputHVArmed = NULL_PTR(MARTe::uint32 *);
outputHVInjection = NULL_PTR(MARTe::uint32 *);
outputRFON = NULL_PTR(MARTe::uint32 *);
outputBeamONTime = NULL_PTR(MARTe::uint32 *);
outputRFONTime = NULL_PTR(MARTe::uint32 *);
shotCounter = NULL_PTR(MARTe::uint32 *);
mhvps_hvon_is_on = false;
aps_hvon_is_on = false;
aps_swon_is_on = false;
bps_hvon_is_on = false;
bps_swon_is_on = false;
apsSwonHighResolutionTime = 0;
aps_hvon_state=0;
aps_swon_state=0;
mhvps_hvon_state=0;
bps_hvon_state=0;
bps_swon_state=0;
}
JARTStateMachineGAM::~JARTStateMachineGAM() {
}
bool JARTStateMachineGAM::Initialise(MARTe::StructuredDataI & data) {
using namespace MARTe;
bool ok = GAM::Initialise(data);
if (ok) {
ok = data.Read("ConditionTrigger", conditionTrigger);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The Condition1 shall be specified");
}
}
if (ok) {
ok = data.Read("mhvps_hvon", mhvps_hvon);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The mhvps_hvon shall be specified");
}
}
if (ok) {
ok = data.Read("aps_hvon", aps_hvon);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The aps_hvon shall be specified");
}
}
if (ok) {
ok = data.Read("aps_swon", aps_swon);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The aps_swon shall be specified");
}
}
if (ok) {
ok = data.Read("bps_hvon", bps_hvon);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The bps_hvon shall be specified");
}
}
if (ok) {
ok = data.Read("bps_swon", bps_swon);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The bps_swon shall be specified");
}
}
return ok;
}
bool JARTStateMachineGAM::PrepareNextState(const MARTe::char8 * const currentStateName, const MARTe::char8 * const nextStateName) {
return true;
}
bool JARTStateMachineGAM::Setup() {
using namespace MARTe;
bool ok = (numberOfInputSignals == 12u);
if (ok) {
ok = (numberOfOutputSignals == 16u);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Seven output signals shall be defined %d",numberOfOutputSignals);
}
}
else {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Nine input signals shall be defined");
}
if (ok) {
uint32 c;
for (c = 0u; c < numberOfInputSignals; c++) {
TypeDescriptor inputType = GetSignalType(InputSignals, c);
ok = (inputType == UnsignedInteger32Bit);
if (!ok) {
StreamString signalName;
(void) GetSignalName(InputSignals, c, signalName);
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Signal %s shall be defined as uint32", signalName.Buffer());
}
}
}
if (ok) {
uint32 c;
for (c = 0u; c < numberOfOutputSignals; c++) {
TypeDescriptor outputType = GetSignalType(OutputSignals, c);
ok = (outputType == UnsignedInteger32Bit || outputType == UnsignedInteger8Bit);
if (!ok) {
StreamString signalName;
(void) GetSignalName(InputSignals, c, signalName);
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Signal %s shall be defined as uint32", signalName.Buffer());
}
}
}
if (ok) {
currentTime = reinterpret_cast<uint32 *>(GetInputSignalMemory(0));
triggerSignal = reinterpret_cast<uint32 *>(GetInputSignalMemory(1));
triggerDelay_mhvps_hvon = reinterpret_cast<uint32 *>(GetInputSignalMemory(2));
triggerDelay_aps_hvon = reinterpret_cast<uint32 *>(GetInputSignalMemory(3));
triggerDelay_aps_swon = reinterpret_cast<uint32 *>(GetInputSignalMemory(4));
triggerDelay_bps_hvon = reinterpret_cast<uint32 *>(GetInputSignalMemory(5));
triggerDelay_bps_swon = reinterpret_cast<uint32 *>(GetInputSignalMemory(6));
triggerDelay_shotlen = reinterpret_cast<uint32 *>(GetInputSignalMemory(7));
stopRequest = reinterpret_cast<uint32 *>(GetInputSignalMemory(8));
modePulseLengthLimit = reinterpret_cast<uint32 *>(GetInputSignalMemory(9));
short_pulse_mode = reinterpret_cast<uint32 *>(GetInputSignalMemory(10));
modulation = reinterpret_cast<uint32 *>(GetInputSignalMemory(11));
outputSignal = reinterpret_cast<uint32 *>(GetOutputSignalMemory(0));
outputBeamON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(1));
outputHVArmed = reinterpret_cast<uint32 *>(GetOutputSignalMemory(2));
outputHVInjection = reinterpret_cast<uint32 *>(GetOutputSignalMemory(3));
outputRFON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(4));
outputBeamONTime = reinterpret_cast<uint32 *>(GetOutputSignalMemory(5));
outputRFONTime = reinterpret_cast<uint32 *>(GetOutputSignalMemory(6));
shotCounter = reinterpret_cast<uint32 *>(GetOutputSignalMemory(7));
outputAPSHVON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(8));
outputAPSSWON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(9));
outputBPSHVON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(10));
outputBPSSWON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(11));
outputMHVPSON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(12));
outputSignalNI6259 = reinterpret_cast<uint32 *>(GetOutputSignalMemory(13));
outputSignalNI6528P3 = reinterpret_cast<uint8 *>(GetOutputSignalMemory(14));
outputSignalNI6528P4 = reinterpret_cast<uint8 *>(GetOutputSignalMemory(15));
*shotCounter = 0;
}
return ok;
}
bool JARTStateMachineGAM::Execute() {
using namespace MARTe;
if (currentState == WaitTrigger) {
//State Transition condition
if ((*triggerSignal == conditionTrigger)) {
//REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence at %d.", *currentTime);
plcOnTime = *currentTime; //Save pulse start time.
//*outputBeamON = 0;
//State transition.
currentState = SwitchingHVPS;
}
}
else if (currentState == SwitchingHVPS) {
//Actions in this state.
if (*stopRequest != 0 || *triggerSignal != conditionTrigger) {
*outputSignal = 0;
currentState = HVTerminate;
}
if (*currentTime >= (plcOnTime + *triggerDelay_bps_hvon) && bps_hvon_is_on == false){
//Do action
*outputSignal += bps_hvon;
bps_hvon_is_on = true; bps_hvon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime);
*outputBPSHVON=1;
}
if (*currentTime >= (plcOnTime + *triggerDelay_aps_hvon) && aps_hvon_is_on == false) {
//Do action
*outputSignal += aps_hvon;
aps_hvon_is_on = true; aps_hvon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal at %d.", *currentTime);
*outputAPSHVON=1;
}
if (*currentTime >= (plcOnTime + *triggerDelay_bps_swon) && bps_swon_is_on==false){
//Do action
*outputSignal += bps_swon;
bps_swon_is_on = true; bps_swon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime);
*outputBPSSWON=1;
}
if (*currentTime >= (plcOnTime + *triggerDelay_mhvps_hvon) && mhvps_hvon_is_on==false) {
//Do action
*outputSignal += mhvps_hvon;
mhvps_hvon_is_on = true; mhvps_hvon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime);
*outputMHVPSON=1;
}
if (bps_swon_is_on && mhvps_hvon_is_on && *currentTime >= (plcOnTime + *triggerDelay_aps_swon)){
//Do action
*outputSignal += aps_swon;
aps_swon_is_on = true; aps_swon_state=1;
apsSwonHighResolutionTime = getCurrentTimeUs();
apsSwonTime = *currentTime;
//REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime);
*outputAPSSWON=1;
}
*outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time.
if (bps_hvon_is_on && aps_hvon_is_on){
*outputHVArmed = 1;
}
if (bps_swon_is_on || mhvps_hvon_is_on){
*outputHVInjection = 1;
}
//State transition condition
if (aps_swon_is_on){
currentState = RFON;
*outputRFON = 0;
*outputBeamON = 1;
*shotCounter += 1;
//REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON");
}
}
else if (currentState == RFON) {
//Action in this state.
if (*stopRequest != 0 || *triggerSignal != conditionTrigger) {
//debug
//if((*stopRequest != 0)){
//REPORT_ERROR(ErrorManagement::Debug, "Stop request was called.!!!");
//} else {
//REPORT_ERROR(ErrorManagement::Debug, "PLC_ON was reset.!!!");
//}
*outputSignal -= aps_swon;
mhvps_hvon_is_on = false; mhvps_hvon_state=0;
aps_hvon_is_on = false; aps_hvon_state=0;
aps_swon_is_on = false; aps_swon_state=0;
bps_hvon_is_on = false; bps_hvon_state=0;
bps_swon_is_on = false; bps_swon_state=0;
currentState = HVTerminate;
*outputAPSHVON=0;
*outputAPSSWON=0;
*outputBPSHVON=0;
*outputBPSSWON=0;
*outputMHVPSON=0;
}
uint32 updatePeriod = 100; // in microsecnds (get this from Timer)
if ((*modePulseLengthLimit == 1u) || (getCurrentTimeUs() + updatePeriod >= (apsSwonHighResolutionTime + *triggerDelay_shotlen))) {
// Now we do busy wait
while (getCurrentTimeUs() < (apsSwonHighResolutionTime + *triggerDelay_shotlen)) {
//REPORT_ERROR(ErrorManagement::Debug, "!");
}
// We stop busy waiting #executionOverhead before expected pulse off time
//debug
//if((*modePulseLengthLimit == 1u)){
// REPORT_ERROR(ErrorManagement::Debug, "Mode limit detected.!!!");
//} else {
// REPORT_ERROR(ErrorManagement::Debug, "Shot length reached to the setpoint.!!!");
//}
//debug end.
//Do action
*outputSignal -= aps_swon; //Turn off only APS_SWON first.
mhvps_hvon_is_on = false;
aps_hvon_is_on = false;
aps_swon_is_on = false; aps_swon_state=0;
bps_hvon_is_on = false;
bps_swon_is_on = false;
*outputAPSHVON=0;
*outputAPSSWON=0;
*outputBPSHVON=0;
*outputBPSSWON=0;
*outputMHVPSON=0;
//REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime);
}
*outputRFON = 1;
*outputBeamONTime = *currentTime - plcOnTime;
*outputRFONTime = *currentTime - apsSwonTime;
//State transition condition
if (!aps_swon_is_on && !bps_swon_is_on && !mhvps_hvon_is_on) {
currentState = HVTerminate;
apsSwoffTime = *currentTime;
//REPORT_ERROR(ErrorManagement::Debug, "state was changed to HVTerminate");
}
}
else if (currentState == HVTerminate) {
//In the HVTerminate state, turn APS_SWON off first, and wait 1ms. Finally turn other PS off.
//Action in this state.
*outputBeamON = 0;
*outputHVArmed = 0;
*outputHVInjection = 0;
*outputRFON = 0;
// State transition condition.
if (*currentTime - apsSwoffTime >= turn_off_delay){
*outputSignal = 0;
mhvps_hvon_state=0;
aps_hvon_state=0;
bps_hvon_state=0;
bps_swon_state=0;
}
if (*triggerSignal == false){
//Check PLC_ON is reset
currentState = WaitTrigger;
*outputSignal = 0;
//REPORT_ERROR(ErrorManagement::Debug, "PLC_ON was reset. The State was changed to WaitTrigger at %d.", *currentTime);
}
}
if(*short_pulse_mode == 1){
p3Value = 1*aps_hvon_state + 8*bps_hvon_state +16*bps_swon_state + 64*(*outputBeamON);
*outputSignalNI6259 = 1*aps_swon_state;
*outputSignalNI6528P3 = ~p3Value;
//REPORT_ERROR(ErrorManagement::Debug, "short pulse mode with p3: %d.", p3Value);
} else {
p3Value = 1*aps_hvon_state +2*aps_swon_state + 8*bps_hvon_state +16*bps_swon_state + 64*(*outputBeamON);
*outputSignalNI6528P3 = ~p3Value;
//REPORT_ERROR(ErrorManagement::Debug, "long pulse mode with p3: %d.", p3Value);
}
if (modulation) {
p4Value = 8*mhvps_hvon_state + 32;
}
else {
p4Value = 8*mhvps_hvon_state;
}
//*outputSignalNI6528P4 = ~(*ni6528p4Value | p4Value);
*outputSignalNI6528P4 = ~p4Value;
return true;
}
CLASS_REGISTER(JARTStateMachineGAM, "1.0")

View File

@@ -0,0 +1,262 @@
/**
* @file JARTStateMachineGAM.h
* @brief Header file for class JARTStateMachineGAM
* @date Nov 26, 2018
* @author aneto
*
* @copyright Copyright 2015 F4E | European Joint Undertaking for ITER and
* the Development of Fusion Energy ('Fusion for Energy').
* Licensed under the EUPL, Version 1.1 or - as soon they will be approved
* by the European Commission - subsequent versions of the EUPL (the "Licence")
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl
*
* @warning Unless required by applicable law or agreed to in writing,
* software distributed under the Licence is distributed on an "AS IS"
* basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the Licence permissions and limitations under the Licence.
* @details This header file contains the declaration of the class JARTStateMachineGAM
* with all of its public, protected and private members. It may also include
* definitions for inline methods which need to be visible to the compiler.
*/
#ifndef GAMS_JARTSTATEMACHINEGAM_H_
#define GAMS_JARTSTATEMACHINEGAM_H_
/*---------------------------------------------------------------------------*/
/* Standard header includes */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Project header includes */
/*---------------------------------------------------------------------------*/
#include "GAM.h"
/*---------------------------------------------------------------------------*/
/* Class declaration */
/*---------------------------------------------------------------------------*/
/**
* @brief GAM that provides real-time state machine.
*
* The configuration syntax is (names and signal quantity are only given as an example):
* <pre>
* +GAMRealTimeStateMachine = {
* Class = JARTStateMachineGAM
* ConditionTrigger = 1
* mhvps_hvon = 4
* aps_hvon = 1
* aps_swon = 16
* bps_hvon = 2
* bps_swon = 8
* InputSignals = {
* Time = {
* DataSource = DDB1
* Type = uint32
* }
* PLC_ON = {
* DataSource = DDB1
* Type = uint32
* }
* MHVPS_DT = {
* DataSource = DDB1
* Type = uint32
* }
* APS_HVON_DT = {
* DataSource = DDB1
* Type = uint32
* }
* APS_SWON_DT = {
* DataSource = DDB1
* Type = uint32
* }
* BPS_HVON_DT = {
* DataSource = DDB1
* Type = uint32
* }
* BPS_SWON_DT = {
* DataSource = DDB1
* Type = uint32
* }
* SHOTLEN = {
* DataSource = DDB1
* Type = uint32
* }
* StopRequest = {
* DataSource = DDB1
* Type = uint32
* }
* MODE_SHOTLEN_FLAG = {
* DataSource = DDB1
* Type = uint32
* }
* }
* OutputSignals = {
* Value = {
* DataSource = DDB1
* Type = uint32
* Trigger = 1
* }
* BEAM_ON_STAT = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* HVARMED = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* HVINJECTION = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* RFON = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* BeamONTime = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* RFONTime = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* SHOT_ID = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* }
* }
*
* </pre>
*
*/
class JARTStateMachineGAM : public MARTe::GAM, public MARTe::StatefulI {
public:
CLASS_REGISTER_DECLARATION()
JARTStateMachineGAM();
virtual ~JARTStateMachineGAM();
virtual bool Initialise(MARTe::StructuredDataI & data);
virtual bool Setup();
virtual bool Execute();
virtual bool PrepareNextState(const MARTe::char8 * const currentStateName,
const MARTe::char8 * const nextStateName);
private:
//The list of possible states
enum JARealTimeState {
WaitTrigger = 0,
SwitchingHVPS = 1,
RFON = 2,
HVTerminate = 3
};
//The current rtState
JARealTimeState currentState;
//A given condition
MARTe::uint32 conditionTrigger;
//What to output in a given state and condition
MARTe::uint32 mhvps_hvon;
MARTe::uint32 aps_hvon;
MARTe::uint32 aps_swon;
MARTe::uint32 bps_hvon;
MARTe::uint32 bps_swon;
//The trigger signal (PLC_ON)
MARTe::uint32 *triggerSignal;
//Time signal
MARTe::uint32 *currentTime;
// Input signals for trigger delay parameters
MARTe::uint32 *triggerDelay_mhvps_hvon;
MARTe::uint32 *triggerDelay_aps_hvon;
MARTe::uint32 *triggerDelay_aps_swon;
MARTe::uint32 *triggerDelay_bps_hvon;
MARTe::uint32 *triggerDelay_bps_swon;
MARTe::uint32 *triggerDelay_shotlen;
// Input signal for sequence stop request.
MARTe::uint32 *stopRequest;
// Input signal for pulse length limit by mode.
MARTe::uint32 *modePulseLengthLimit;
// Input signal for short pulse mode.
MARTe::uint32 *short_pulse_mode;
// Input signal for modulation pv.
MARTe::uint32 *modulation;
// Output signal to which the output value will be written.
// One state write One signal.
MARTe::uint32 *outputSignal;
// state notify output
MARTe::uint32 *outputBeamON;
MARTe::uint32 *outputHVArmed;
MARTe::uint32 *outputHVInjection;
MARTe::uint32 *outputRFON;
// elapsed time notify output;
MARTe::uint32 *outputBeamONTime;
MARTe::uint32 *outputRFONTime;
// shot counter (coutup every RFON time.)
MARTe::uint32 *shotCounter;
// Added for HVPS state (20201117)
MARTe::uint32 *outputAPSHVON;
MARTe::uint32 *outputAPSSWON;
MARTe::uint32 *outputBPSHVON;
MARTe::uint32 *outputBPSSWON;
MARTe::uint32 *outputMHVPSON;
// Output signals for NI devices
MARTe::uint32 *outputSignalNI6259;
MARTe::uint8 *outputSignalNI6528P3;
MARTe::uint8 *outputSignalNI6528P4;
//////////////////////////////
//Internal Parameters
//////////////////////////////
//PLC_ON time holder
MARTe::uint32 plcOnTime;
//APS_SWON time holder
MARTe::uint32 apsSwonTime;
MARTe::uint32 apsSwoffTime;
MARTe::uint64 apsSwonHighResolutionTime;
//PS turn off delay
MARTe::uint32 turn_off_delay;
//HVPS state holder
bool mhvps_hvon_is_on;
bool aps_hvon_is_on;
bool aps_swon_is_on;
bool bps_hvon_is_on;
bool bps_swon_is_on;
// terminal values
MARTe::uint8 p3Value;
MARTe::uint8 p4Value;
MARTe::uint8 aps_hvon_state;
MARTe::uint8 aps_swon_state;
MARTe::uint8 mhvps_hvon_state;
MARTe::uint8 bps_hvon_state;
MARTe::uint8 bps_swon_state;
};
/*---------------------------------------------------------------------------*/
/* Inline method definitions */
/*---------------------------------------------------------------------------*/
#endif /* GAMS_JARTSTATEMACHINEGAM_H_ */

View File

@@ -0,0 +1,402 @@
/**
* @file JARTStateMachineGAM.cpp
* @brief Source file for class JARTStateMachineGAM
* @date Nov 26, 2018
* @author aneto
*
* @copyright Copyright 2015 F4E | European Joint Undertaking for ITER and
* the Development of Fusion Energy ('Fusion for Energy').
* Licensed under the EUPL, Version 1.1 or - as soon they will be approved
* by the European Commission - subsequent versions of the EUPL (the "Licence")
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl
*
* @warning Unless required by applicable law or agreed to in writing,
* software distributed under the Licence is distributed on an "AS IS"
* basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the Licence permissions and limitations under the Licence.
* @details This source file contains the definition of all the methods for
* the class JARTStateMachineGAM (public, protected, and private). Be aware that some
* methods, such as those inline could be defined on the header file, instead.
*/
/*---------------------------------------------------------------------------*/
/* Standard header includes */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Project header includes */
/*---------------------------------------------------------------------------*/
#include "JARTStateMachineGAM.h"
#include "AdvancedErrorManagement.h"
/*---------------------------------------------------------------------------*/
/* Static definitions */
/*---------------------------------------------------------------------------*/
static MARTe::uint64 getCurrentTimeUs() {
using namespace MARTe;
return static_cast<uint64>(HighResolutionTimer::Counter() * HighResolutionTimer::Period() * 1e6f + 0.5f);
}
/*---------------------------------------------------------------------------*/
/* Method definitions */
/*---------------------------------------------------------------------------*/
JARTStateMachineGAM::JARTStateMachineGAM() {
currentState = WaitTrigger; // Set Entry state.
plcOnTime = 0; // Triggered time holder.
//Output and condition in a given state.
conditionTrigger = 1;
aps_hvon = 0;
aps_swon = 0;
bps_hvon = 0;
bps_swon = 0;
mhvps_hvon = 0;
// Parameters which get from Input signals.
triggerSignal = NULL_PTR(MARTe::uint32 *);
currentTime = NULL_PTR(MARTe::uint32 *);
turn_off_delay = 2000; //us
triggerDelay_mhvps_hvon = NULL_PTR(MARTe::uint32 *);
triggerDelay_aps_hvon = NULL_PTR(MARTe::uint32 *);
triggerDelay_aps_swon = NULL_PTR(MARTe::uint32 *);
triggerDelay_bps_hvon = NULL_PTR(MARTe::uint32 *);
triggerDelay_bps_swon = NULL_PTR(MARTe::uint32 *);
triggerDelay_shotlen = NULL_PTR(MARTe::uint32 *);
stopRequest = NULL_PTR(MARTe::uint32 *);
modePulseLengthLimit = NULL_PTR(MARTe::uint32 *);
// write out target.
outputSignal = NULL_PTR(MARTe::uint32 *);
outputBeamON = NULL_PTR(MARTe::uint32 *);
outputHVArmed = NULL_PTR(MARTe::uint32 *);
outputHVInjection = NULL_PTR(MARTe::uint32 *);
outputRFON = NULL_PTR(MARTe::uint32 *);
outputBeamONTime = NULL_PTR(MARTe::uint32 *);
outputRFONTime = NULL_PTR(MARTe::uint32 *);
shotCounter = NULL_PTR(MARTe::uint32 *);
mhvps_hvon_is_on = false;
aps_hvon_is_on = false;
aps_swon_is_on = false;
bps_hvon_is_on = false;
bps_swon_is_on = false;
apsSwonHighResolutionTime = 0;
aps_hvon_state=0;
aps_swon_state=0;
mhvps_hvon_state=0;
bps_hvon_state=0;
bps_swon_state=0;
}
JARTStateMachineGAM::~JARTStateMachineGAM() {
}
bool JARTStateMachineGAM::Initialise(MARTe::StructuredDataI & data) {
using namespace MARTe;
bool ok = GAM::Initialise(data);
if (ok) {
ok = data.Read("ConditionTrigger", conditionTrigger);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The Condition1 shall be specified");
}
}
if (ok) {
ok = data.Read("mhvps_hvon", mhvps_hvon);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The mhvps_hvon shall be specified");
}
}
if (ok) {
ok = data.Read("aps_hvon", aps_hvon);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The aps_hvon shall be specified");
}
}
if (ok) {
ok = data.Read("aps_swon", aps_swon);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The aps_swon shall be specified");
}
}
if (ok) {
ok = data.Read("bps_hvon", bps_hvon);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The bps_hvon shall be specified");
}
}
if (ok) {
ok = data.Read("bps_swon", bps_swon);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The bps_swon shall be specified");
}
}
return ok;
}
bool JARTStateMachineGAM::PrepareNextState(const MARTe::char8 * const currentStateName, const MARTe::char8 * const nextStateName) {
return true;
}
bool JARTStateMachineGAM::Setup() {
using namespace MARTe;
bool ok = (numberOfInputSignals == 11u);
if (ok) {
ok = (numberOfOutputSignals == 16u);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Seven output signals shall be defined %d",numberOfOutputSignals);
}
}
else {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Nine input signals shall be defined");
}
if (ok) {
uint32 c;
for (c = 0u; c < numberOfInputSignals; c++) {
TypeDescriptor inputType = GetSignalType(InputSignals, c);
ok = (inputType == UnsignedInteger32Bit);
if (!ok) {
StreamString signalName;
(void) GetSignalName(InputSignals, c, signalName);
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Signal %s shall be defined as uint32", signalName.Buffer());
}
}
}
if (ok) {
uint32 c;
for (c = 0u; c < numberOfOutputSignals; c++) {
TypeDescriptor outputType = GetSignalType(OutputSignals, c);
ok = (outputType == UnsignedInteger32Bit || outputType == UnsignedInteger8Bit);
if (!ok) {
StreamString signalName;
(void) GetSignalName(InputSignals, c, signalName);
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Signal %s shall be defined as uint32", signalName.Buffer());
}
}
}
if (ok) {
currentTime = reinterpret_cast<uint32 *>(GetInputSignalMemory(0));
triggerSignal = reinterpret_cast<uint32 *>(GetInputSignalMemory(1));
triggerDelay_mhvps_hvon = reinterpret_cast<uint32 *>(GetInputSignalMemory(2));
triggerDelay_aps_hvon = reinterpret_cast<uint32 *>(GetInputSignalMemory(3));
triggerDelay_aps_swon = reinterpret_cast<uint32 *>(GetInputSignalMemory(4));
triggerDelay_bps_hvon = reinterpret_cast<uint32 *>(GetInputSignalMemory(5));
triggerDelay_bps_swon = reinterpret_cast<uint32 *>(GetInputSignalMemory(6));
triggerDelay_shotlen = reinterpret_cast<uint32 *>(GetInputSignalMemory(7));
stopRequest = reinterpret_cast<uint32 *>(GetInputSignalMemory(8));
modePulseLengthLimit = reinterpret_cast<uint32 *>(GetInputSignalMemory(9));
short_pulse_mode = reinterpret_cast<uint32 *>(GetInputSignalMemory(10));
outputSignal = reinterpret_cast<uint32 *>(GetOutputSignalMemory(0));
outputBeamON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(1));
outputHVArmed = reinterpret_cast<uint32 *>(GetOutputSignalMemory(2));
outputHVInjection = reinterpret_cast<uint32 *>(GetOutputSignalMemory(3));
outputRFON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(4));
outputBeamONTime = reinterpret_cast<uint32 *>(GetOutputSignalMemory(5));
outputRFONTime = reinterpret_cast<uint32 *>(GetOutputSignalMemory(6));
shotCounter = reinterpret_cast<uint32 *>(GetOutputSignalMemory(7));
outputAPSHVON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(8));
outputAPSSWON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(9));
outputBPSHVON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(10));
outputBPSSWON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(11));
outputMHVPSON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(12));
outputSignalNI6259 = reinterpret_cast<uint32 *>(GetOutputSignalMemory(13));
outputSignalNI6528P3 = reinterpret_cast<uint8 *>(GetOutputSignalMemory(14));
outputSignalNI6528P4 = reinterpret_cast<uint8 *>(GetOutputSignalMemory(15));
*shotCounter = 0;
}
return ok;
}
bool JARTStateMachineGAM::Execute() {
using namespace MARTe;
if (currentState == WaitTrigger) {
//State Transition condition
if ((*triggerSignal == conditionTrigger)) {
//REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence at %d.", *currentTime);
plcOnTime = *currentTime; //Save pulse start time.
//*outputBeamON = 0;
//State transition.
currentState = SwitchingHVPS;
}
}
else if (currentState == SwitchingHVPS) {
//Actions in this state.
if (*stopRequest != 0 || *triggerSignal != conditionTrigger) {
*outputSignal = 0;
currentState = HVTerminate;
}
if (*currentTime >= (plcOnTime + *triggerDelay_bps_hvon) && bps_hvon_is_on == false){
//Do action
*outputSignal += bps_hvon;
bps_hvon_is_on = true; bps_hvon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime);
*outputBPSHVON=1;
}
if (*currentTime >= (plcOnTime + *triggerDelay_aps_hvon) && aps_hvon_is_on == false) {
//Do action
*outputSignal += aps_hvon;
aps_hvon_is_on = true; aps_hvon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal at %d.", *currentTime);
*outputAPSHVON=1;
}
if (*currentTime >= (plcOnTime + *triggerDelay_bps_swon) && bps_swon_is_on==false){
//Do action
*outputSignal += bps_swon;
bps_swon_is_on = true; bps_swon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime);
*outputBPSSWON=1;
}
if (*currentTime >= (plcOnTime + *triggerDelay_mhvps_hvon) && mhvps_hvon_is_on==false) {
//Do action
*outputSignal += mhvps_hvon;
mhvps_hvon_is_on = true; mhvps_hvon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime);
*outputMHVPSON=1;
}
if (bps_swon_is_on && mhvps_hvon_is_on && *currentTime >= (plcOnTime + *triggerDelay_aps_swon)){
//Do action
*outputSignal += aps_swon;
aps_swon_is_on = true; aps_swon_state=1;
apsSwonHighResolutionTime = getCurrentTimeUs();
apsSwonTime = *currentTime;
//REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime);
*outputAPSSWON=1;
}
*outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time.
if (bps_hvon_is_on && aps_hvon_is_on){
*outputHVArmed = 1;
}
if (bps_swon_is_on || mhvps_hvon_is_on){
*outputHVInjection = 1;
}
//State transition condition
if (aps_swon_is_on){
currentState = RFON;
*outputRFON = 0;
*outputBeamON = 1;
*shotCounter += 1;
//REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON");
}
}
else if (currentState == RFON) {
//Action in this state.
if (*stopRequest != 0 || *triggerSignal != conditionTrigger) {
//debug
//if((*stopRequest != 0)){
//REPORT_ERROR(ErrorManagement::Debug, "Stop request was called.!!!");
//} else {
//REPORT_ERROR(ErrorManagement::Debug, "PLC_ON was reset.!!!");
//}
*outputSignal -= aps_swon;
mhvps_hvon_is_on = false; mhvps_hvon_state=0;
aps_hvon_is_on = false; aps_hvon_state=0;
aps_swon_is_on = false; aps_swon_state=0;
bps_hvon_is_on = false; bps_hvon_state=0;
bps_swon_is_on = false; bps_swon_state=0;
currentState = HVTerminate;
*outputAPSHVON=0;
*outputAPSSWON=0;
*outputBPSHVON=0;
*outputBPSSWON=0;
*outputMHVPSON=0;
}
uint32 updatePeriod = 100; // in microsecnds (get this from Timer)
if ((*modePulseLengthLimit == 1u) || (getCurrentTimeUs() + updatePeriod >= (apsSwonHighResolutionTime + *triggerDelay_shotlen))) {
// Now we do busy wait
while (getCurrentTimeUs() < (apsSwonHighResolutionTime + *triggerDelay_shotlen)) {
//REPORT_ERROR(ErrorManagement::Debug, "!");
}
// We stop busy waiting #executionOverhead before expected pulse off time
//debug
//if((*modePulseLengthLimit == 1u)){
// REPORT_ERROR(ErrorManagement::Debug, "Mode limit detected.!!!");
//} else {
// REPORT_ERROR(ErrorManagement::Debug, "Shot length reached to the setpoint.!!!");
//}
//debug end.
//Do action
*outputSignal -= aps_swon; //Turn off only APS_SWON first.
mhvps_hvon_is_on = false;
aps_hvon_is_on = false;
aps_swon_is_on = false; aps_swon_state=0;
bps_hvon_is_on = false;
bps_swon_is_on = false;
*outputAPSHVON=0;
*outputAPSSWON=0;
*outputBPSHVON=0;
*outputBPSSWON=0;
*outputMHVPSON=0;
//REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime);
}
*outputRFON = 1;
*outputBeamONTime = *currentTime - plcOnTime;
*outputRFONTime = *currentTime - apsSwonTime;
//State transition condition
if (!aps_swon_is_on && !bps_swon_is_on && !mhvps_hvon_is_on) {
currentState = HVTerminate;
apsSwoffTime = *currentTime;
//REPORT_ERROR(ErrorManagement::Debug, "state was changed to HVTerminate");
}
}
else if (currentState == HVTerminate) {
//In the HVTerminate state, turn APS_SWON off first, and wait 1ms. Finally turn other PS off.
//Action in this state.
*outputBeamON = 0;
*outputHVArmed = 0;
*outputHVInjection = 0;
*outputRFON = 0;
// State transition condition.
if (*currentTime - apsSwoffTime >= turn_off_delay){
*outputSignal = 0;
mhvps_hvon_state=0;
aps_hvon_state=0;
bps_hvon_state=0;
bps_swon_state=0;
}
if (*triggerSignal == false){
//Check PLC_ON is reset
currentState = WaitTrigger;
*outputSignal = 0;
//REPORT_ERROR(ErrorManagement::Debug, "PLC_ON was reset. The State was changed to WaitTrigger at %d.", *currentTime);
}
}
if(*short_pulse_mode == 1){
p3Value = 1*aps_hvon_state + 8*bps_hvon_state +16*bps_swon_state + 64*(*outputBeamON);
*outputSignalNI6259 = 1*aps_swon_state;
*outputSignalNI6528P3 = ~p3Value;
//REPORT_ERROR(ErrorManagement::Debug, "short pulse mode with p3: %d.", p3Value);
} else {
p3Value = 1*aps_hvon_state +2*aps_swon_state + 8*bps_hvon_state +16*bps_swon_state + 64*(*outputBeamON);
*outputSignalNI6528P3 = ~p3Value;
//REPORT_ERROR(ErrorManagement::Debug, "long pulse mode with p3: %d.", p3Value);
}
p4Value = 8*mhvps_hvon_state;
//*outputSignalNI6528P4 = ~(*ni6528p4Value | p4Value);
*outputSignalNI6528P4 = ~p4Value;
return true;
}
CLASS_REGISTER(JARTStateMachineGAM, "1.0")

View File

@@ -0,0 +1,260 @@
/**
* @file JARTStateMachineGAM.h
* @brief Header file for class JARTStateMachineGAM
* @date Nov 26, 2018
* @author aneto
*
* @copyright Copyright 2015 F4E | European Joint Undertaking for ITER and
* the Development of Fusion Energy ('Fusion for Energy').
* Licensed under the EUPL, Version 1.1 or - as soon they will be approved
* by the European Commission - subsequent versions of the EUPL (the "Licence")
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl
*
* @warning Unless required by applicable law or agreed to in writing,
* software distributed under the Licence is distributed on an "AS IS"
* basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the Licence permissions and limitations under the Licence.
* @details This header file contains the declaration of the class JARTStateMachineGAM
* with all of its public, protected and private members. It may also include
* definitions for inline methods which need to be visible to the compiler.
*/
#ifndef GAMS_JARTSTATEMACHINEGAM_H_
#define GAMS_JARTSTATEMACHINEGAM_H_
/*---------------------------------------------------------------------------*/
/* Standard header includes */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Project header includes */
/*---------------------------------------------------------------------------*/
#include "GAM.h"
/*---------------------------------------------------------------------------*/
/* Class declaration */
/*---------------------------------------------------------------------------*/
/**
* @brief GAM that provides real-time state machine.
*
* The configuration syntax is (names and signal quantity are only given as an example):
* <pre>
* +GAMRealTimeStateMachine = {
* Class = JARTStateMachineGAM
* ConditionTrigger = 1
* mhvps_hvon = 4
* aps_hvon = 1
* aps_swon = 16
* bps_hvon = 2
* bps_swon = 8
* InputSignals = {
* Time = {
* DataSource = DDB1
* Type = uint32
* }
* PLC_ON = {
* DataSource = DDB1
* Type = uint32
* }
* MHVPS_DT = {
* DataSource = DDB1
* Type = uint32
* }
* APS_HVON_DT = {
* DataSource = DDB1
* Type = uint32
* }
* APS_SWON_DT = {
* DataSource = DDB1
* Type = uint32
* }
* BPS_HVON_DT = {
* DataSource = DDB1
* Type = uint32
* }
* BPS_SWON_DT = {
* DataSource = DDB1
* Type = uint32
* }
* SHOTLEN = {
* DataSource = DDB1
* Type = uint32
* }
* StopRequest = {
* DataSource = DDB1
* Type = uint32
* }
* MODE_SHOTLEN_FLAG = {
* DataSource = DDB1
* Type = uint32
* }
* }
* OutputSignals = {
* Value = {
* DataSource = DDB1
* Type = uint32
* Trigger = 1
* }
* BEAM_ON_STAT = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* HVARMED = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* HVINJECTION = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* RFON = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* BeamONTime = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* RFONTime = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* SHOT_ID = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint32
* }
* }
* }
*
* </pre>
*
*/
class JARTStateMachineGAM : public MARTe::GAM, public MARTe::StatefulI {
public:
CLASS_REGISTER_DECLARATION()
JARTStateMachineGAM();
virtual ~JARTStateMachineGAM();
virtual bool Initialise(MARTe::StructuredDataI & data);
virtual bool Setup();
virtual bool Execute();
virtual bool PrepareNextState(const MARTe::char8 * const currentStateName,
const MARTe::char8 * const nextStateName);
private:
//The list of possible states
enum JARealTimeState {
WaitTrigger = 0,
SwitchingHVPS = 1,
RFON = 2,
HVTerminate = 3
};
//The current rtState
JARealTimeState currentState;
//A given condition
MARTe::uint32 conditionTrigger;
//What to output in a given state and condition
MARTe::uint32 mhvps_hvon;
MARTe::uint32 aps_hvon;
MARTe::uint32 aps_swon;
MARTe::uint32 bps_hvon;
MARTe::uint32 bps_swon;
//The trigger signal (PLC_ON)
MARTe::uint32 *triggerSignal;
//Time signal
MARTe::uint32 *currentTime;
// Input signals for trigger delay parameters
MARTe::uint32 *triggerDelay_mhvps_hvon;
MARTe::uint32 *triggerDelay_aps_hvon;
MARTe::uint32 *triggerDelay_aps_swon;
MARTe::uint32 *triggerDelay_bps_hvon;
MARTe::uint32 *triggerDelay_bps_swon;
MARTe::uint32 *triggerDelay_shotlen;
// Input signal for sequence stop request.
MARTe::uint32 *stopRequest;
// Input signal for pulse length limit by mode.
MARTe::uint32 *modePulseLengthLimit;
// Input signal for short pulse mode.
MARTe::uint32 *short_pulse_mode;
// Output signal to which the output value will be written.
// One state write One signal.
MARTe::uint32 *outputSignal;
// state notify output
MARTe::uint32 *outputBeamON;
MARTe::uint32 *outputHVArmed;
MARTe::uint32 *outputHVInjection;
MARTe::uint32 *outputRFON;
// elapsed time notify output;
MARTe::uint32 *outputBeamONTime;
MARTe::uint32 *outputRFONTime;
// shot counter (coutup every RFON time.)
MARTe::uint32 *shotCounter;
// Added for HVPS state (20201117)
MARTe::uint32 *outputAPSHVON;
MARTe::uint32 *outputAPSSWON;
MARTe::uint32 *outputBPSHVON;
MARTe::uint32 *outputBPSSWON;
MARTe::uint32 *outputMHVPSON;
// Output signals for NI devices
MARTe::uint32 *outputSignalNI6259;
MARTe::uint8 *outputSignalNI6528P3;
MARTe::uint8 *outputSignalNI6528P4;
//////////////////////////////
//Internal Parameters
//////////////////////////////
//PLC_ON time holder
MARTe::uint32 plcOnTime;
//APS_SWON time holder
MARTe::uint32 apsSwonTime;
MARTe::uint32 apsSwoffTime;
MARTe::uint64 apsSwonHighResolutionTime;
//PS turn off delay
MARTe::uint32 turn_off_delay;
//HVPS state holder
bool mhvps_hvon_is_on;
bool aps_hvon_is_on;
bool aps_swon_is_on;
bool bps_hvon_is_on;
bool bps_swon_is_on;
// terminal values
MARTe::uint8 p3Value;
MARTe::uint8 p4Value;
MARTe::uint8 aps_hvon_state;
MARTe::uint8 aps_swon_state;
MARTe::uint8 mhvps_hvon_state;
MARTe::uint8 bps_hvon_state;
MARTe::uint8 bps_swon_state;
};
/*---------------------------------------------------------------------------*/
/* Inline method definitions */
/*---------------------------------------------------------------------------*/
#endif /* GAMS_JARTSTATEMACHINEGAM_H_ */

View File

@@ -36,10 +36,7 @@
/*---------------------------------------------------------------------------*/
/* Static definitions */
/*---------------------------------------------------------------------------*/
static MARTe::uint64 getCurrentTimeUs() {
using namespace MARTe;
return static_cast<uint64>(HighResolutionTimer::Counter() * HighResolutionTimer::Period() * 1e6f + 0.5f);
}
/*---------------------------------------------------------------------------*/
/* Method definitions */
/*---------------------------------------------------------------------------*/
@@ -67,9 +64,7 @@ JASDNRTStateMachineGAM::JASDNRTStateMachineGAM() {
triggerDelay_shotlen = NULL_PTR(MARTe::uint32 *);
stopRequest = NULL_PTR(MARTe::uint32 *);
modePulseLengthLimit = NULL_PTR(MARTe::uint32 *);
Command = NULL_PTR(MARTe::uint16 *);
Command2 = NULL_PTR(MARTe::uint16 *);
sdnStatus = NULL_PTR(MARTe::uint8 *);
sdnCommand = NULL_PTR(MARTe::uint16 *);
// write out target.
outputSignal = NULL_PTR(MARTe::uint32 *);
@@ -86,17 +81,6 @@ JASDNRTStateMachineGAM::JASDNRTStateMachineGAM() {
aps_swon_is_on = false;
bps_hvon_is_on = false;
bps_swon_is_on = false;
sdnCommand = 0;
groupFix = 0;
apsSwonHighResolutionTime = 0;
aps_hvon_state=0;
aps_swon_state=0;
mhvps_hvon_state=0;
bps_hvon_state=0;
bps_swon_state=0;
}
JASDNRTStateMachineGAM::~JASDNRTStateMachineGAM() {
@@ -151,21 +135,21 @@ bool JASDNRTStateMachineGAM::PrepareNextState(const MARTe::char8 * const current
bool JASDNRTStateMachineGAM::Setup() {
using namespace MARTe;
bool ok = (numberOfInputSignals == 13u);
bool ok = (numberOfInputSignals == 11u);
if (ok) {
ok = (numberOfOutputSignals == 15u);
ok = (numberOfOutputSignals == 8u);
if (!ok) {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "15 output signals shall be defined");
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Seven output signals shall be defined");
}
}
else {
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "13 input signals shall be defined");
REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Nine input signals shall be defined");
}
if (ok) {
uint32 c;
for (c = 0u; c < numberOfInputSignals; c++) {
TypeDescriptor inputType = GetSignalType(InputSignals, c);
ok = (inputType == UnsignedInteger32Bit || inputType == UnsignedInteger16Bit || inputType == UnsignedInteger8Bit);
ok = (inputType == UnsignedInteger32Bit || inputType == UnsignedInteger16Bit);
if (!ok) {
StreamString signalName;
(void) GetSignalName(InputSignals, c, signalName);
@@ -178,7 +162,7 @@ bool JASDNRTStateMachineGAM::Setup() {
uint32 c;
for (c = 0u; c < numberOfOutputSignals; c++) {
TypeDescriptor outputType = GetSignalType(OutputSignals, c);
ok = (outputType == UnsignedInteger32Bit || outputType == UnsignedInteger8Bit);
ok = (outputType == UnsignedInteger32Bit);
if (!ok) {
StreamString signalName;
(void) GetSignalName(InputSignals, c, signalName);
@@ -197,9 +181,7 @@ bool JASDNRTStateMachineGAM::Setup() {
triggerDelay_shotlen = reinterpret_cast<uint32 *>(GetInputSignalMemory(7));
stopRequest = reinterpret_cast<uint32 *>(GetInputSignalMemory(8));
modePulseLengthLimit = reinterpret_cast<uint32 *>(GetInputSignalMemory(9));
Command = reinterpret_cast<uint16 *>(GetInputSignalMemory(10));
Command2 = reinterpret_cast<uint16 *>(GetInputSignalMemory(11));
sdnStatus = reinterpret_cast<uint8 *>(GetInputSignalMemory(12));
sdnCommand = reinterpret_cast<uint16 *>(GetInputSignalMemory(10));
outputSignal = reinterpret_cast<uint32 *>(GetOutputSignalMemory(0));
outputBeamON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(1));
@@ -209,15 +191,6 @@ bool JASDNRTStateMachineGAM::Setup() {
outputBeamONTime = reinterpret_cast<uint32 *>(GetOutputSignalMemory(5));
outputRFONTime = reinterpret_cast<uint32 *>(GetOutputSignalMemory(6));
shotCounter = reinterpret_cast<uint32 *>(GetOutputSignalMemory(7));
outputAPSHVON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(8));
outputAPSSWON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(9));
outputBPSHVON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(10));
outputBPSSWON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(11));
outputMHVPSON = reinterpret_cast<uint32 *>(GetOutputSignalMemory(12));
outputSignalNI6528P3 = reinterpret_cast<uint8 *>(GetOutputSignalMemory(13));
outputSignalNI6528P4 = reinterpret_cast<uint8 *>(GetOutputSignalMemory(14));
*shotCounter = 0;
}
return ok;
@@ -225,19 +198,11 @@ bool JASDNRTStateMachineGAM::Setup() {
bool JASDNRTStateMachineGAM::Execute() {
using namespace MARTe;
if (!groupFix && (*triggerSignal != false)) {
sdnCommand = (1 - *sdnStatus)*(*Command) + (*sdnStatus)*(*Command2);
groupFix = 1;
sdnStatusFix = *sdnStatus;
}
else {
sdnCommand = (1 - sdnStatusFix)*(*Command) + sdnStatusFix*(*Command2);
}
if (currentState == WaitTrigger) {
//State Transition condition
if ((*triggerSignal == conditionTrigger)) {
//REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence in SDN mode.");
REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence in SDN mode.");
plcOnTime = *currentTime; //Save pulse start time.
*outputBeamON = 0;
//State transition.
@@ -248,22 +213,20 @@ bool JASDNRTStateMachineGAM::Execute() {
//Actions in this state.
if (*stopRequest != 0 || *triggerSignal != conditionTrigger) {
*outputSignal = 0;
*outputSignal -= aps_swon;
currentState = HVTerminate;
}
if (*currentTime >= (plcOnTime + *triggerDelay_bps_hvon) && bps_hvon_is_on == false){
//Do action
*outputSignal += bps_hvon;
bps_hvon_is_on = true; bps_hvon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime);
*outputBPSHVON=1;
bps_hvon_is_on = true;
REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime);
}
if (*currentTime >= (plcOnTime + *triggerDelay_aps_hvon) && aps_hvon_is_on == false) {
//Do action
*outputSignal += aps_hvon;
aps_hvon_is_on = true; aps_hvon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal.");
*outputAPSHVON=1;
aps_hvon_is_on = true;
REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal.");
}
*outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time.
@@ -279,7 +242,7 @@ bool JASDNRTStateMachineGAM::Execute() {
*outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time.
// State change conditions
if (sdnCommand == 1){
if (*sdnCommand == 1){
sdnTriggerTime = *currentTime;
currentState = SwitchingHVPS_SWON;
}
@@ -299,80 +262,68 @@ bool JASDNRTStateMachineGAM::Execute() {
if (*currentTime >= (sdnTriggerTime + *triggerDelay_bps_swon) && bps_swon_is_on==false){
//Do action
*outputSignal += bps_swon;
bps_swon_is_on = true; bps_swon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime);
*outputBPSSWON=1;
bps_swon_is_on = true;
REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime);
}
if (*currentTime >= (sdnTriggerTime + *triggerDelay_mhvps_hvon) && mhvps_hvon_is_on==false) {
//Do action
*outputSignal += mhvps_hvon;
mhvps_hvon_is_on = true; mhvps_hvon_state=1;
//REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime);
*outputMHVPSON=1;
mhvps_hvon_is_on = true;
REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime);
}
if (bps_swon_is_on && mhvps_hvon_is_on && *currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon)){
//Do action
*outputSignal += aps_swon;
aps_swon_is_on = true; aps_swon_state=1;
apsSwonHighResolutionTime = getCurrentTimeUs();
aps_swon_is_on = true;
apsSwonTime = *currentTime;
//REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime);
*outputAPSSWON=1;
REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime);
}
*outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time.
if (bps_swon_is_on || mhvps_hvon_is_on){
*outputHVInjection = 1;
*outputHVInjection = 0;
}
//State transition condition
if (aps_swon_is_on){
currentState = RFON;
*outputRFON = 0;
*outputBeamON = 1;
*shotCounter += 1;
//REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON");
REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON");
}
}
else if (currentState == RFON) {
//SDN command processing.
if (sdnCommand == 4 && aps_swon_is_on) {
if (*sdnCommand == 4 && aps_swon_is_on) {
*outputSignal -= aps_swon;
aps_swon_is_on = false; aps_swon_state=0;
//REPORT_ERROR(ErrorManagement::Debug, "sdn command was 4");
*outputAPSSWON=0;
aps_swon_is_on = false;
REPORT_ERROR(ErrorManagement::Debug, "sdn command was 4");
}
if (sdnCommand == 3 && !aps_swon_is_on) {
if (*sdnCommand == 3 && !aps_swon_is_on) {
*outputSignal += aps_swon;
aps_swon_is_on = true; aps_swon_state=0;
//REPORT_ERROR(ErrorManagement::Debug, "sdn command was 3");
*outputAPSSWON=1;
aps_swon_is_on = true;
REPORT_ERROR(ErrorManagement::Debug, "sdn command was 3");
}
//Action in this state.
if ((sdnCommand == 2) || (*modePulseLengthLimit == 1u) || (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen))) {
//REPORT_ERROR(ErrorManagement::Debug, "shotlen: %d", *triggerDelay_shotlen);
if (sdnCommand == 2) {
//REPORT_ERROR(ErrorManagement::Information, "sdn command was 2");
if ((*sdnCommand == 2) || (*modePulseLengthLimit == 1u) || (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen))) {
REPORT_ERROR(ErrorManagement::Debug, "shotlen: %d", *triggerDelay_shotlen);
if (*sdnCommand == 2) {
REPORT_ERROR(ErrorManagement::Information, "sdn command was 2");
} else if (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen)){
//REPORT_ERROR(ErrorManagement::Information, "pulse length reached setpoint.");
REPORT_ERROR(ErrorManagement::Information, "pulse length reached setpoint.");
}
//Do action
*outputSignal -= aps_swon; //Turn off only aps_swon
mhvps_hvon_is_on = false;
aps_hvon_is_on = false;
aps_swon_is_on = false; aps_swon_state=0;
aps_swon_is_on = false;
bps_hvon_is_on = false;
bps_swon_is_on = false;
*outputAPSHVON=0;
*outputAPSSWON=0;
*outputBPSHVON=0;
*outputBPSSWON=0;
*outputMHVPSON=0;
//REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime);
REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime);
}
*outputRFON = 1;
*outputRFON = 0;
*outputBeamONTime = *currentTime - plcOnTime;
*outputRFONTime = *currentTime - apsSwonTime;
@@ -381,37 +332,29 @@ bool JASDNRTStateMachineGAM::Execute() {
if (!aps_swon_is_on && !bps_swon_is_on && !mhvps_hvon_is_on) {
currentState = HVTerminate;
apsSwoffTime = *currentTime;
//REPORT_ERROR(ErrorManagement::Information, "state was changed to HVTerminate");
REPORT_ERROR(ErrorManagement::Information, "state was changed to HVTerminate");
}
}
else if (currentState == HVTerminate) {
//Action in this state.
*outputBeamON = 0;
*outputHVArmed = 0;
*outputHVInjection = 0;
*outputRFON = 0;
*outputBeamON = 1;
*outputHVArmed = 1;
*outputHVInjection = 1;
*outputRFON = 1;
// State transition condition.
if (*currentTime - apsSwoffTime >= turn_off_delay){
*outputSignal = 0;
mhvps_hvon_state=0;
aps_hvon_state=0;
bps_hvon_state=0;
bps_swon_state=0;
}
if (*triggerSignal == false){
//Check PLC_ON is reset
currentState = WaitTrigger;
*outputSignal = 0;
groupFix = 0;
//REPORT_ERROR(ErrorManagement::Debug, "state was changed to WaitTrigger");
REPORT_ERROR(ErrorManagement::Debug, "state was changed to WaitTrigger");
}
}
p3Value = 1*aps_hvon_state +2*aps_swon_state + 8*bps_hvon_state +16*bps_swon_state + 64*(*outputBeamON);
*outputSignalNI6528P3 = ~p3Value;
p4Value = 8*mhvps_hvon_state;
*outputSignalNI6528P4 = ~p4Value;
return true;
}

View File

@@ -92,18 +92,10 @@
* DataSource = DDB1
* Type = uint32
* }
* Command = {//from packet x
* Command = {
* DataSource = RealTimeThreadAsyncBridge
* Type = uint16
* }
* Command2 = {//from packet y
* DataSource = RealTimeThreadAsyncBridge
* Type = uint16
* }
* ESDNStatus = {// 0 or 1. If 0, packet x is used, elif 1, packet y is used.
* DataSource = RealTimeThreadAsyncBridge
* Type = uint8
* }
* }
* OutputSignals = {
* Value = {
@@ -207,12 +199,8 @@ private:
MARTe::uint32 *stopRequest;
// Input signal for pulse length limit by mode.
MARTe::uint32 *modePulseLengthLimit;
// Input signal for SDN commands from packet x.
MARTe::uint16 *Command;
// Input signal for SDN commands from packet y.
MARTe::uint16 *Command2;
// Input signal for SDN status.
MARTe::uint8 *sdnStatus;
// Input signal for SDN commands.
MARTe::uint16 *sdnCommand;
/////////////////////////////////////////////////////////////
// Output signal to which the output value will be written.
@@ -230,17 +218,6 @@ private:
// shot counter (coutup every RFON time.)
MARTe::uint32 *shotCounter;
// Added for HVPS state (20210602)
MARTe::uint32 *outputAPSHVON;
MARTe::uint32 *outputAPSSWON;
MARTe::uint32 *outputBPSHVON;
MARTe::uint32 *outputBPSSWON;
MARTe::uint32 *outputMHVPSON;
// Output signals for NI devices
MARTe::uint8 *outputSignalNI6528P3;
MARTe::uint8 *outputSignalNI6528P4;
//////////////////////////////
//Internal Parameters
//////////////////////////////
@@ -249,7 +226,6 @@ private:
//APS_SWON time holder
MARTe::uint32 apsSwonTime;
MARTe::uint32 apsSwoffTime;
MARTe::uint64 apsSwonHighResolutionTime;
//PS turn off delay
MARTe::uint32 turn_off_delay;
@@ -263,22 +239,6 @@ private:
bool bps_hvon_is_on;
bool bps_swon_is_on;
//command x or y
MARTe::uint16 sdnCommand;
//packet group must not be changed during real time operation
MARTe::uint16 groupFix; //0: packet group is not fixed yet, 1: fixed.
//when packet group is fixed, sdnStatus is copied to this variable.
MARTe::uint8 sdnStatusFix;
// terminal values
MARTe::uint8 p3Value;
MARTe::uint8 p4Value;
MARTe::uint8 aps_hvon_state;
MARTe::uint8 aps_swon_state;
MARTe::uint8 mhvps_hvon_state;
MARTe::uint8 bps_hvon_state;
MARTe::uint8 bps_swon_state;
};

View File

@@ -27,8 +27,7 @@
SPB = JAMessageGAM.x JAPreProgrammedGAM.x JAModeControlGAM.x \
JAWFRecordGAM.x JATriangleWaveGAM.x JARampupGAM.x \
JARTStateMachineGAM.x JASDNRTStateMachineGAM.x JATerminalInterfaceGAM.x \
JABitSumGAM.x JAConditionalSignalUpdateGAM.x JASourceChoiseGAM.x JABitReverseGAM.x \
JAESDNTimeCompareGAM.x
JABitSumGAM.x JAConditionalSignalUpdateGAM.x JASourceChoiseGAM.x JABitReverseGAM.x
MAKEDEFAULTDIR=$(MARTe2_DIR)/MakeDefaults

View File

@@ -123,7 +123,6 @@ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JATerminalInterfaceGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JABitSumGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JASourceChoiseGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JABitReverseGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JAESDNTimeCompareGAM/
### Add EPICS lib path
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$EPICS_BASE/lib/$EPICS_HOST_ARCH
#LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/FilterDownsamplingGAM/

View File

@@ -1,4 +0,0 @@
#!/bin/sh
taskset -c 8-11 ./Main.sh -f ../Configurations/JAGyro_Test.cfg -l RealTimeLoader -m StateMachine:Start

View File

@@ -60,7 +60,6 @@ while(1):
8: SYNC mode operation
9: GYA / Async mode --- operator set delay and pulse length on HMI
10: GYB / Async mode --- operator set delay and pulse length on HMI
11: GYA / Async mode several times --- operator set delay and pulse length on HMI
'''
inpval = raw_input()
@@ -84,10 +83,8 @@ while(1):
test_async.test_async_GYA_manual()
elif inpval == "10":
test_async.test_async_GYB_manual()
elif inpval == "11":
test_async.test_async_GYA_times()
else:
print 'invalid value. Enter 1 to 11!'
print 'invalid value. Enter 1 to 10!'
continue
print '..... End of test code .....'

View File

@@ -147,7 +147,7 @@ def test_async_shortpulse():
res = subprocess.call('caput EC-GN-P01-PMF:STAT-DT-HVON 300', shell=True)
res = subprocess.call('caput EC-GN-P01-PB1F:STAT-DT-SWON 400', shell=True)
res = subprocess.call('caput EC-GN-P01-PA1F:STAT-DT-SWON 800', shell=True) #Should be grater than 1ms.
res = subprocess.call('caput EC-GN-P01-GAF:STAT-DT-SHOTLEN 100', shell=True)
res = subprocess.call('caput EC-GN-P01-GAF:STAT-DT-SHOTLEN 500', shell=True)
print '2.Write PERMIT'
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM.SVAL 1', shell=True)
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM 1', shell=True)
@@ -412,43 +412,3 @@ def test_async_GYB_manual():
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY2PRM.SVAL 0', shell=True)
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY2PRM 0', shell=True)
print "end of async, non-prepro mode test!"
def test_async_GYA_times():
""""
Test GYA operation with Async mode several times.
"""
print '1.. Set delays and pulse length on HMI\n and set sleep time here:'
inp_val = raw_input()
try:
sleep_time = float(inp_val)
except:
return
print 'How many times is the pulse generated?'
times = raw_input()
for i in range(1, int(times) + 1):
# turn on permit
print '2.. set PulseLengthLimitMode to 1 flag'
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-MD1.SVAL 1', shell = True)
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-MD1 1', shell = True)
res = subprocess.call('caput EC-GN-P01-GPF:STAT-MD1-LIM 1000000', shell = True)
time.sleep(1)
print '3. Write PERMIT'
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM.SVAL 1', shell=True)
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM 1', shell=True)
time.sleep(1)
# trun on HVON trigger
print '4. Write HVON'
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-ST3R.SVAL 1', shell=True)
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-ST3R 1', shell=True) #HVON signal from PLC
time.sleep(sleep_time)
print '5. Confirm generated pulse'
print '6. Reset HVON'
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-ST3R.SVAL 0', shell=True)
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-ST3R 0', shell=True)
time.sleep(1)
print '7. Reset PERMIT'
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM.SVAL 0', shell=True)
res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM 0', shell=True)
print '%d times beam-on complete' % i
res = subprocess.call('caget EC-GN-P01-GAF:STAT-BEAMON-TIME >> BEAMON-TIME.log', shell=True)
print "end of async, non-prepro mode test!"

File diff suppressed because it is too large Load Diff

View File

@@ -4,12 +4,24 @@
PROJ=EC-GN-P01-PCF
CFG=$1
SRC=${CODAC_CONF}/${PROJ}/${CFG}
SRC=${CODAC_CONF}/${PROJ}
FOLDER=${CODAC_VAR}/${PROJ}
if [[ ! -d ${FOLDER} ]]; then
mkdir -p ${FOLDER}
fi
/bin/cp -f ${SRC} ${FOLDER}
/bin/cp -rf ${SRC}/* ${FOLDER}
${MARTe2_DIR}/Bin/MARTeApp.ex -f ${FOLDER}/${CFG} -l RealTimeLoader -m StateMachine:Start
cd ${FOLDER}
make -f Makefile.cfg clean
make -f Makefile.cfg
CFG_FILE=${FOLDER}/${CFG}_Gen.cfg
#TODO
#/bin/sed -i "s/SDN_IFACE/$PON_INTERFACE_NAME/g" ${CFG_FILE}
#/bin/sed -i "s/TH1_CPU/$TH1_CPU/g" ${CFG_FILE}
#/bin/sed -i "s/TH2_CPU/$TH2_CPU/g" ${CFG_FILE}
#/bin/sed -i "s/TH3_CPU/$TH3_CPU/g" ${CFG_FILE}
#/bin/sed -i "s/TH4_CPU/$TH4_CPU/g" ${CFG_FILE}
${MARTe2_DIR}/Bin/MARTeApp.ex -f ${CFG_FILE} -l RealTimeLoader -m StateMachine:Start

View File

@@ -23,7 +23,7 @@
<groupId>org.iter.codac.units</groupId>
<artifactId>EC-GN-JA-PCF</artifactId>
<packaging>codac</packaging>
<version>1.0.2</version>
<version>1.0.3</version>
<name>CODAC Core System EC-GN-JA-PCF subsystem</name>
<description>CODAC Core System EC-GN-JA-PCF subsystem</description>
<url>https://git.iter.org/scm/ec/ec-gn-ja-pcf.git@%(git rev-parse HEAD)</url>