From 1f4dc1f94e37fe897658f6d24cd61f856ec0749d Mon Sep 17 00:00:00 2001
From: Rolf Bork <rbork@caltech.edu>
Date: Fri, 7 Jun 2019 10:08:01 -0500
Subject: [PATCH] Modifications for IOP I/O.

---
 src/epics/util/feCodeGen.pl         |  6 ++++++
 src/epics/util/lib/Dac18.pm         | 18 ------------------
 src/epics/util/lib/Dac20.pm         | 18 ------------------
 src/epics/util/lib/medmGenGdsTp.pm  |  2 +-
 src/fe/controllerIop.c              |  1 +
 src/include/drv/iop_dac_functions.c |  3 +++
 6 files changed, 11 insertions(+), 37 deletions(-)

diff --git a/src/epics/util/feCodeGen.pl b/src/epics/util/feCodeGen.pl
index 5f0fe678a..67b2f3527 100755
--- a/src/epics/util/feCodeGen.pl
+++ b/src/epics/util/feCodeGen.pl
@@ -1289,6 +1289,12 @@ for($ii=0;$ii<$dacCnt;$ii++)
 	print EPICS "OUTVARIABLE FEC\_$dcuId\_DAC_STAT_$ii epicsOutput.statDac\[$ii\] int ao 0\n";
 }
 
+print OUTH "\tint buffDac[$dacCnt];\n";
+for($ii=0;$ii<$dacCnt;$ii++)
+{
+	print EPICS "OUTVARIABLE FEC\_$dcuId\_DAC_BUFF_$ii epicsOutput.buffDac\[$ii\] int ao 0\n";
+}
+
 print OUTH "\tint overflowDac[$dacCnt][16];\n";
 for($ii=0;$ii<$dacCnt;$ii++)
 {
diff --git a/src/epics/util/lib/Dac18.pm b/src/epics/util/lib/Dac18.pm
index 90a08692a..3ba482978 100644
--- a/src/epics/util/lib/Dac18.pm
+++ b/src/epics/util/lib/Dac18.pm
@@ -276,15 +276,6 @@ sub createDac18Medm
         # Add FIFO Status Monitor
         $xpos = 26; $ypos = 112; $width = 12; $height = 12;
         $medmdata .= ("CDS::medmGen::medmGenByte") -> ($xpos,$ypos,$width,$height,"$site\:FEC-$dcuid\_DAC_STAT_$dacNum","3","3",$ecolors{green},$ecolors{red});
-        # Add FIFO EMPTY Monitor
-        $xpos = 58; $ypos = 132; $width = 12; $height = 12;
-        $medmdata .= ("CDS::medmGen::medmGenByte") -> ($xpos,$ypos,$width,$height,"$site\:FEC-$dcuid\_DAC_STAT_$dacNum","5","5",$ecolors{red},$ecolors{green});
-        # Add FIFO HI QTR Monitor
-        $xpos = 58; $ypos = 147; $width = 12; $height = 12;
-        $medmdata .= ("CDS::medmGen::medmGenByte") -> ($xpos,$ypos,$width,$height,"$site\:FEC-$dcuid\_DAC_STAT_$dacNum","6","6",$ecolors{red},$ecolors{green});
-        # Add FIFO FULL Monitor
-        $xpos = 58; $ypos = 162; $width = 12; $height = 12;
-        $medmdata .= ("CDS::medmGen::medmGenByte") -> ($xpos,$ypos,$width,$height,"$site\:FEC-$dcuid\_DAC_STAT_$dacNum","7","7",$ecolors{red},$ecolors{green});
 	# Add ON LINE Label
         $xpos = 51; $ypos = 52; $width = 100; $height = 15;
         $medmdata .= ("CDS::medmGen::medmGenTextLeft") -> ($xpos,$ypos,$width,$height,"ON LINE",$ecolors{black});
@@ -302,15 +293,6 @@ sub createDac18Medm
 	# Add FIFO STATUS Label
         $xpos = 51; $ypos = 112; $width = 100; $height = 15;
         $medmdata .= ("CDS::medmGen::medmGenTextLeft") -> ($xpos,$ypos,$width,$height,"FIFO STATUS",$ecolors{black});
-	# Add FIFO EMPTY Label
-        $xpos = 81; $ypos = 132; $width = 100; $height = 15;
-        $medmdata .= ("CDS::medmGen::medmGenTextLeft") -> ($xpos,$ypos,$width,$height,"EMPTY",$ecolors{black});
-	# Add FIFO HI QTR Label
-        $xpos = 81; $ypos = 147; $width = 100; $height = 15;
-        $medmdata .= ("CDS::medmGen::medmGenTextLeft") -> ($xpos,$ypos,$width,$height,"HIGH QUARTER",$ecolors{black});
-	# Add FIFO FULL Label
-        $xpos = 81; $ypos = 162; $width = 100; $height = 15;
-        $medmdata .= ("CDS::medmGen::medmGenTextLeft") -> ($xpos,$ypos,$width,$height,"FULL",$ecolors{black});
 	}
 
 print OUTMEDM "$medmdata \n";
diff --git a/src/epics/util/lib/Dac20.pm b/src/epics/util/lib/Dac20.pm
index 788cc792f..6f13b6292 100644
--- a/src/epics/util/lib/Dac20.pm
+++ b/src/epics/util/lib/Dac20.pm
@@ -278,15 +278,6 @@ sub createDac20Medm
         # Add FIFO Status Monitor
         $xpos = 26; $ypos = 112; $width = 12; $height = 12;
         $medmdata .= ("CDS::medmGen::medmGenByte") -> ($xpos,$ypos,$width,$height,"$site\:FEC-$dcuid\_DAC_STAT_$dacNum","3","3",$ecolors{green},$ecolors{red});
-        # Add FIFO EMPTY Monitor
-        $xpos = 58; $ypos = 132; $width = 12; $height = 12;
-        $medmdata .= ("CDS::medmGen::medmGenByte") -> ($xpos,$ypos,$width,$height,"$site\:FEC-$dcuid\_DAC_STAT_$dacNum","5","5",$ecolors{red},$ecolors{green});
-        # Add FIFO HI QTR Monitor
-        $xpos = 58; $ypos = 147; $width = 12; $height = 12;
-        $medmdata .= ("CDS::medmGen::medmGenByte") -> ($xpos,$ypos,$width,$height,"$site\:FEC-$dcuid\_DAC_STAT_$dacNum","6","6",$ecolors{red},$ecolors{green});
-        # Add FIFO FULL Monitor
-        $xpos = 58; $ypos = 162; $width = 12; $height = 12;
-        $medmdata .= ("CDS::medmGen::medmGenByte") -> ($xpos,$ypos,$width,$height,"$site\:FEC-$dcuid\_DAC_STAT_$dacNum","7","7",$ecolors{red},$ecolors{green});
 	# Add ON LINE Label
         $xpos = 51; $ypos = 52; $width = 100; $height = 15;
         $medmdata .= ("CDS::medmGen::medmGenTextLeft") -> ($xpos,$ypos,$width,$height,"ON LINE",$ecolors{black});
@@ -304,15 +295,6 @@ sub createDac20Medm
 	# Add FIFO STATUS Label
         $xpos = 51; $ypos = 112; $width = 100; $height = 15;
         $medmdata .= ("CDS::medmGen::medmGenTextLeft") -> ($xpos,$ypos,$width,$height,"FIFO STATUS",$ecolors{black});
-	# Add FIFO EMPTY Label
-        $xpos = 81; $ypos = 132; $width = 100; $height = 15;
-        $medmdata .= ("CDS::medmGen::medmGenTextLeft") -> ($xpos,$ypos,$width,$height,"EMPTY",$ecolors{black});
-	# Add FIFO HI QTR Label
-        $xpos = 81; $ypos = 147; $width = 100; $height = 15;
-        $medmdata .= ("CDS::medmGen::medmGenTextLeft") -> ($xpos,$ypos,$width,$height,"HIGH QUARTER",$ecolors{black});
-	# Add FIFO FULL Label
-        $xpos = 81; $ypos = 162; $width = 100; $height = 15;
-        $medmdata .= ("CDS::medmGen::medmGenTextLeft") -> ($xpos,$ypos,$width,$height,"FULL",$ecolors{black});
 	}
 
 print OUTMEDM "$medmdata \n";
diff --git a/src/epics/util/lib/medmGenGdsTp.pm b/src/epics/util/lib/medmGenGdsTp.pm
index ee5f67830..aa4d8bf57 100644
--- a/src/epics/util/lib/medmGenGdsTp.pm
+++ b/src/epics/util/lib/medmGenGdsTp.pm
@@ -427,7 +427,7 @@ sub createGdsMedm
 			$medmdata .= ("CDS::medmGen::medmGenRelDisp") -> ($xpos,$ypos,$width,$height,$relDisp,$ecolors{black},$ecolors{ltblue},"D$::dacCardNum[$ii]");
 			if($adcMaster == 1)
 			{
-				$medmdata .= ("CDS::medmGen::medmGenByte") -> ($bxpos,$bypos,$bwidth,$bheight,"$site\:FEC-$dcuid\_DAC_STAT_$ii","0","3",$ecolors{green},$ecolors{red});
+				$medmdata .= ("CDS::medmGen::medmGenByte") -> ($bxpos,$bypos,$bwidth,$bheight,"$site\:FEC-$dcuid\_DAC_STAT_$ii","0","4",$ecolors{green},$ecolors{red});
 			} else {
 				$medmdata .= ("CDS::medmGen::medmGenByte") -> ($bxpos,$bypos,$b1width,$bheight,"$site\:FEC-$dcuid\_DAC_STAT_$ii","1","2",$ecolors{green},$ecolors{red});
 			}
diff --git a/src/fe/controllerIop.c b/src/fe/controllerIop.c
index f084b215b..defb2d250 100644
--- a/src/fe/controllerIop.c
+++ b/src/fe/controllerIop.c
@@ -412,6 +412,7 @@ adcInfo_t *padcinfo = (adcInfo_t *)&adcinfo;
       gsc16ai64Enable(cdsPciModules.adcCount);
       /// - ----  Arm DAC outputs
       gsc18ao8Enable(&cdsPciModules);
+      gsc20ao8Enable(&cdsPciModules);
       gsc16ao16Enable(&cdsPciModules);
       // Set synched flag so later code will not check for 1PPS
       sync21pps = 1;
diff --git a/src/include/drv/iop_dac_functions.c b/src/include/drv/iop_dac_functions.c
index 2d035848e..93ef385e4 100644
--- a/src/include/drv/iop_dac_functions.c
+++ b/src/include/drv/iop_dac_functions.c
@@ -229,6 +229,7 @@ inline int check_dac_buffers (int cycleNum)
 			dac18bitPtr = (volatile GSA_18BIT_DAC_REG *)(dacPtr[jj]);
 			out_buf_size = dac18bitPtr->OUT_BUF_SIZE;
 			dacOutBufSize[jj] = out_buf_size;
+			pLocalEpics->epicsOutput.buffDac[jj] = out_buf_size;
 			if(!dacTimingError) {
 				if((out_buf_size < 8) || (out_buf_size > 24))
 				{
@@ -257,6 +258,8 @@ inline int check_dac_buffers (int cycleNum)
             dac20bitPtr = (volatile GSA_20BIT_DAC_REG *)(dacPtr[jj]);
             out_buf_size = dac20bitPtr->OUT_BUF_SIZE;
             dacOutBufSize[jj] = out_buf_size;
+	    pLocalEpics->epicsOutput.buffDac[jj] = out_buf_size;
+			pLocalEpics->epicsOutput.buffDac[jj] = out_buf_size;
             if((out_buf_size > 24))
             {
                 pLocalEpics->epicsOutput.statDac[jj] &= ~(DAC_FIFO_BIT);
-- 
GitLab