Skip to content
Snippets Groups Projects
Commit 43fde3f8 authored by Rolf Bork's avatar Rolf Bork
Browse files

Fix for SDF monitoring of RampMuxMatrix settings, as reported in bugzilla #850.

This change also checked into branch-2.9 for release 2.9.3.


git-svn-id: https://redoubt.ligo-wa.caltech.edu/svn/advLigoRTS/trunk@4006 6dcd42c9-f523-4c6d-aada-af552506706e
parent da6833ca
No related branches found
No related tags found
No related merge requests found
......@@ -13,6 +13,10 @@ Changes for 2.10
- Request (691): DAQ builds now detect EPICS, framecpp installs
- Request (854): DAQ builds put labels on thread, can set real-time priority, CPU affinity
==================================================================================================
Changes for 2.9.3 release
==================================================================================================
- Bug Fix (850): Fix to RampMuxMatrix part of bug report.:
==================================================================================================
Changes for 2.9.2 release
==================================================================================================
- Bug Fix: IPC errors when using RFM DMA mode. Modified controller.c to verify that RFM DMA
......
......@@ -632,7 +632,6 @@ while (<IN>) {
} else {
$vardb .= "grecord(${ve_type},\"%IFO%:%SYS%-%SUBSYS%${v_name}\")\n";
}
} elsif (substr($_,0,6) eq "MATRIX") {
die "Unspecified EPICS parameters" unless $epics_specified;
($junk, $m_name, $m_dims, $m_var ) = split(/\s+/, $_);
......@@ -640,6 +639,10 @@ while (<IN>) {
($x, $y) = split (/x/, $m_dims);
# print "$x $y\n";
$xXy = $x * $y;
$rect = "ai";
if (substr($_,0,9) eq "MATRIX_RD") {
$rect = "ao";
}
$mdecl .= "double matrix${m_name}[$xXy];\n";
$mdecl .= "assign matrix${m_name} to { \n";
......@@ -653,20 +656,35 @@ while (<IN>) {
$minit .= "%% }\n";
$mupdate .= "%% {\n";
$mupdate .= "%% unsigned int __lcl_msk = pEpics->${m_var}_mask;\n";
$mupdate .= "%% for (ii = 0; ii < ${x}; ii++)\n";
$mupdate .= "%% for (jj = 0; jj < ${y}; jj++) {\n";
$mupdate .= "%% ij = ii * ${y} + jj;\n";
$mupdate .= "%% if (__lcl_msk) {\n";
$mupdate .= "%% matrix${m_name}[ij] = pEpics->${m_var}[ii][jj];\n";
$mupdate .= " pvPut(matrix${m_name}[ij]);\n";
$mupdate .= "%% } else {\n";
$mupdate .= " pvGet(matrix${m_name}[ij]);\n";
$mupdate .= "%% rfm_assign(pEpics->${m_var}[ii][jj], matrix${m_name}[ij]);\n";
$mupdate .= "%% } \n";
$mupdate .= "%% }\n";
$mupdate .= "%% }\n";
if (substr($_,0,10) eq "MATRIX_SPM" || substr($_,0,9) eq "MATRIX_RD") {
$mupdate .= "%% {\n";
$mupdate .= "%% for (ii = 0; ii < ${x}; ii++)\n";
$mupdate .= "%% for (jj = 0; jj < ${y}; jj++) {\n";
$mupdate .= "%% ij = ii * ${y} + jj;\n";
$mupdate .= " pvGet(matrix${m_name}[ij]);\n";
$mupdate .= "%% if(matrix${m_name}[ij] != pEpics->${m_var}[ii][jj]) {\n";
$mupdate .= "%% matrix${m_name}[ij] = pEpics->${m_var}[ii][jj];\n";
$mupdate .= " pvPut(matrix${m_name}[ij]);\n";
$mupdate .= "%% }\n";
$mupdate .= "%% }\n";
$mupdate .= "%% }\n";
} else {
$mupdate .= "%% {\n";
$mupdate .= "%% unsigned int __lcl_msk = pEpics->${m_var}_mask;\n";
$mupdate .= "%% for (ii = 0; ii < ${x}; ii++)\n";
$mupdate .= "%% for (jj = 0; jj < ${y}; jj++) {\n";
$mupdate .= "%% ij = ii * ${y} + jj;\n";
$mupdate .= "%% if (__lcl_msk) {\n";
$mupdate .= "%% matrix${m_name}[ij] = pEpics->${m_var}[ii][jj];\n";
$mupdate .= " pvPut(matrix${m_name}[ij]);\n";
$mupdate .= "%% } else {\n";
$mupdate .= " pvGet(matrix${m_name}[ij]);\n";
$mupdate .= "%% rfm_assign(pEpics->${m_var}[ii][jj], matrix${m_name}[ij]);\n";
$mupdate .= "%% } \n";
$mupdate .= "%% }\n";
$mupdate .= "%% }\n";
}
my $top_name = is_top_name($m_name);
my $tv_name;
......@@ -701,9 +719,9 @@ while (<IN>) {
}
if ($top_name) {
$matdb .= "grecord(ai,\"%IFO%:${tv_name}" . sprintf("%i_%i\")\n", $i, $j);
$matdb .= "grecord($rect,\"%IFO%:${tv_name}" . sprintf("%i_%i\")\n", $i, $j);
} else {
$matdb .= "grecord(ai,\"%IFO%:%SYS%-%SUBSYS%${m_name}" . sprintf("%i_%i\")\n", $i, $j);
$matdb .= "grecord($rect,\"%IFO%:%SYS%-%SUBSYS%${m_name}" . sprintf("%i_%i\")\n", $i, $j);
}
$matdb .= "{\n";
$matdb .= " field(PREC,\"5\")\n";
......
......@@ -53,9 +53,9 @@ sub printEpics {
my ($i) = @_;
my $matOuts = $::partOutputs[$::partOutNum[$i][0]];
my $matIns = $::partInCnt[$::partInNum[$i][0]];
print ::EPICS "MATRIX $::xpartName[$i]_ $matOuts" . "x$matIns $::systemName\.$::xpartName[$i]\n";
print ::EPICS "MATRIX_SPM $::xpartName[$i]_ $matOuts" . "x$matIns $::systemName\.$::xpartName[$i]\n";
print ::EPICS "MATRIX $::xpartName[$i]_SETTING_ $matOuts" . "x$matIns $::systemName\.$::xpartName[$i]_SETTING\n";
print ::EPICS "MATRIX $::xpartName[$i]_RAMPING_ $matOuts" . "x$matIns $::systemName\.$::xpartName[$i]_RAMPING\n";
print ::EPICS "MATRIX_RD $::xpartName[$i]_RAMPING_ $matOuts" . "x$matIns $::systemName\.$::xpartName[$i]_RAMPING\n";
print ::EPICS "MOMENTARY $::xpartName[$i]_LOAD_MATRIX $::systemName\.$::xpartName[$i]_LOAD_MATRIX double ao 0\n";
print ::EPICS "INVARIABLE $::xpartName[$i]\_TRAMP $::systemName\.$::xpartName[$i]\_TRAMP double ai 0 field(PREC,\"1\")\n";
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment