diff --git a/src/epics/util/feCodeGen.pl b/src/epics/util/feCodeGen.pl index ad68c40322977150033e738033b009158bda25dc..06f53ebe9b3532ede142003dff1b5e811975f0fe 100755 --- a/src/epics/util/feCodeGen.pl +++ b/src/epics/util/feCodeGen.pl @@ -3614,6 +3614,7 @@ $adcMedm[3] = "$mxpt"; $adcMedm[6] = "$mypt"; $adcMedm[15] = "$ii"; $adcMedm[21] = "$adcCardNum[$ii]\" \n"; +$byteMedm[19] = "\tebit=2 \n"; if($ii>=$adcCnt) { if ($dacType[$dacSnum] eq "GSC_18AO8") { @@ -3621,11 +3622,13 @@ if($ii>=$adcCnt) $dsed_arg .= "s/CHNUM/$dacSnum/g;"; $dsed_arg .= "s/CNUM/$dacCardNum[$dacMedm]/g;"; system("cat $rcg_src_dir/src/epics/util/DAC_MONITOR_8.adl | sed '$dsed_arg' > $epicsScreensDir/$sysname" . "_DAC_MONITOR_" . $dacSnum . ".adl"); + $byteMedm[19] = "\tebit=4 \n"; } else { $dsed_arg = $sed_arg; $dsed_arg .= "s/CHNUM/$dacSnum/g;"; $dsed_arg .= "s/CNUM/$dacCardNum[$dacMedm]/g;"; system("cat $rcg_src_dir/src/epics/util/DAC_MONITOR_16.adl | sed '$dsed_arg' > $epicsScreensDir/$sysname" . "_DAC_MONITOR_" . $dacSnum . ".adl"); + $byteMedm[19] = "\tebit=3 \n"; } $adcMedm[14] = "/medm/MEDMDIR/FBID_DAC_MONITOR_"; $adcMedm[15] = "$dacSnum"; @@ -3642,18 +3645,17 @@ $byteMedm[6] = "$mbypt"; $byteMedm[13] = "$ii"; $byteMedm[18] = "\tsbit=0 \n"; #$byteMedm[19] = ""; -$byteMedm[19] = "\tebit=2 \n"; if($ii>=$adcCnt) { $byteMedm[12] = "\t\tchan=\"SITE_NAME:SYSTEM_NAME-DCU_NODE_ID_DAC_STAT_"; $byteMedm[13] = "$dacMedm"; - $byteMedm[19] = "\tebit=3 \n"; + #$byteMedm[19] = "\tebit=3 \n"; $byteMedm[8] = "\t\twidth=28 \n"; if($modelType ne "MASTER") { $byteMedm[18] = "\tsbit=1 \n"; - $byteMedm[19] = "\tebit=1 \n"; - $byteMedm[8] = "\t\twidth=7 \n"; + $byteMedm[19] = "\tebit=2 \n"; + $byteMedm[8] = "\t\twidth=14 \n"; } $dacMedm ++; } diff --git a/src/fe/controller.c b/src/fe/controller.c index e9886a4f02660b3d149943e5c0db699cba1c234d..8a234819c7822896b5d92566edc0cf5320ba5a6d 100644 --- a/src/fe/controller.c +++ b/src/fe/controller.c @@ -335,6 +335,7 @@ int adcHoldTimeAvg; int adcHoldTimeAvgPerSec; int usrTime; // Time spent in user app code int usrHoldTime; // Max time spent in user app code +int cardCountErr = 0; #if defined(SERVO64K) unsigned int cycleHist[16]; unsigned int cycleHistMax[16]; @@ -2127,6 +2128,7 @@ if(clock16K == 17) if(clock16K == 200) { + if(cardCountErr) feStatus |= FE_ERROR_IO; pLocalEpics->epicsOutput.ovAccum = overflowAcc; for(jj=0;jj<cdsPciModules.adcCount;jj++) { @@ -2247,8 +2249,12 @@ if(clock16K == 17) volatile GSA_18BIT_DAC_REG *dac18bitPtr = dacPtr[jj]; dacWDread = dac18bitPtr->digital_io_ports; if(((dacWDread >> 8) & 1) > 0) - pLocalEpics->epicsOutput.statDac[jj] &= ~(16); - else pLocalEpics->epicsOutput.statDac[jj] |= 16; + { + pLocalEpics->epicsOutput.statDac[jj] &= ~(16); + feStatus |= FE_ERROR_IO; + } + else + pLocalEpics->epicsOutput.statDac[jj] |= 16; } } @@ -2701,6 +2707,7 @@ int main(int argc, char **argv) cdsPciModules.cDio6464lCount ++; cdsPciModules.pci_do[kk] = ioMemData->ipc[ii]; cdsPciModules.doInstance[kk] = doCnt; + status ++; } break; case CON_32DO: @@ -2750,6 +2757,11 @@ int main(int argc, char **argv) //cdsPciModules.dacCount = ioMemData->dacCount; #endif printf("%d PCI cards found \n",status); + if(cards != status) + { + printf(" ERROR **** Did not find correct number of cards! Expected %d and Found %d\n",cards,status); + cardCountErr = 1; + } // Print out all the I/O information printf("***************************************************************************\n");