Skip to content
Snippets Groups Projects

DEPFET Q2M1 Power Procedure

Merged Cyril Danilevski requested to merge q2m1_test into main
1 file
+ 2
2
Compare changes
  • Side-by-side
  • Inline
+ 32
5
@@ -7,21 +7,35 @@ PowerProcedure::PowerProcedure(const IPAddress& ipAddr)
stages = new Stage[stagesCount];
stages[0].name = "ASICS";
stages[0].type = SWITCH;
stages[0].size = 9;
stages[0].channels = new int[stages[0].size]{508, 708, 502, 503, 504, 501, 507, 607, 608};
stages[1].name = "HV";
stages[1].type = SWITCH;
stages[1].size = 10;
stages[1].channels = new int[stages[1].size]{1, 2, 101, 103, 102, 104, 105, 106, 107, 108};
stages[2].name = "PLCSOURCE";
stages[2].size = 9;
stages[2].channels = new int[stages[2].size]{701, 801, 802, 803, 804, 301, 302, 303, 304};
stages[2].name = "ISVOLTAGE";
stages[2].type = VOLTAGE;
stages[2].size = 2;
stages[2].channels = new int[stages[2].size]{1, 2};
stages[2].onValue = new float[stages[2].size]{10, 10};
stages[2].offValue = new float[stages[2].size]{2.5, 2.5};
stages[3].name = "PLCSOURCE";
stages[3].type = SWITCH;
stages[3].size = 9;
stages[3].channels = new int[stages[3].size]{701, 801, 802, 803, 804, 301, 302, 303, 304};
}
PowerProcedure::~PowerProcedure() {
for (size_t stageIdx = 0; stageIdx < stagesCount; stageIdx++) {
delete[] stages[stageIdx].channels;
if (stages[stageIdx].type == VOLTAGE) {
delete[] stages[stageIdx].onValue;
delete[] stages[stageIdx].offValue;
}
}
delete[] stages;
}
@@ -33,6 +47,9 @@ String PowerProcedure::toJSON() {
for (size_t stageIdx = 0; stageIdx < stagesCount; stageIdx++) {
Stage* currentStage = &stages[stageIdx];
if (currentStage->type == VOLTAGE) {
continue;
}
json += "{\"name\":\"" + currentStage->name + "\",";
json += "\"channels\":[\n";
@@ -67,7 +84,12 @@ bool PowerProcedure::powerOn(const String& stage) {
Stage* currentStage = &stages[stageIdx];
if (currentStage->name == stage) {
for (size_t chIdx = 0; chIdx < currentStage->size; chIdx++) {
setChannelAndWait(&ipAddr, currentStage->channels[chIdx], 1); // 1 == ON
if (currentStage->type == SWITCH) {
setChannelStateAndWait(&ipAddr, currentStage->channels[chIdx], 1); // 1 == ON
} else if (currentStage->type == VOLTAGE) {
setChannelVoltageAndWait(&ipAddr, currentStage->channels[chIdx],
currentStage->onValue[chIdx]);
}
}
return true;
}
@@ -80,7 +102,12 @@ bool PowerProcedure::powerOff(const String& stage) {
Stage* currentStage = &stages[stageIdx];
if (currentStage->name == stage) {
for (int chIdx = currentStage->size - 1; chIdx >= 0; chIdx--) {
setChannelAndWait(&ipAddr, currentStage->channels[chIdx], 0); // 0 == OFF
if (currentStage->type == SWITCH) {
setChannelStateAndWait(&ipAddr, currentStage->channels[chIdx], 0); // 0 == OFF
} else if (currentStage->type == VOLTAGE) {
setChannelVoltageAndWait(&ipAddr, currentStage->channels[chIdx],
currentStage->offValue[chIdx]);
}
}
return true;
}
Loading