- Start of TASUB --> RITA2

This commit is contained in:
koennecke
2005-10-20 12:41:56 +00:00
parent 09f977f191
commit f6005c7c9b

252
tcl/makehmskel Executable file
View File

@ -0,0 +1,252 @@
#!/usr/bin/tclsh
#-----------------------------------------------------------------------
# script which creates the skeleton of a histogram memory driver
#
# Mark Koennecke, October 2005
#-----------------------------------------------------------------------
if { [llength $argv] < 2} {
puts stdout "Usage:\n\tmakehmskel prefix datastruct\n"
exit 1
}
set prefix [lindex $argv 0]
set ds [lindex $argv 1]
#------------------ preamble
puts stdout "#include <sics.h>"
puts stdout "#include <countdriv.h>"
puts stdout "#include <counter.h>"
puts stdout "#include <HistMem.h>"
puts stdout "#include <stringdict.h>"
puts stdout "#include <HistDriv.i>"
puts stdout ""
puts stdout "typedef struct { }*${ds};"
puts stdout ""
#-------------------Configure
puts stdout "/*-------------------------------------------------------------------"
puts stdout " Configures the HM from the options in pOpt and the HM data structure"
puts stdout " Returns 1 on success, 0 on failure"
puts stdout "---------------------------------------------------------------------*/"
puts stdout "static int ${prefix}Configure(pHistDriver self, SConnection *pCon,"
puts stdout " pStringDict pOpt, SicsInterp *pSics){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return 1;"
puts stdout "}"
#----------------Start
puts stdout "/*--------------------------------------------------------------------"
puts stdout " Start histogramming, Returns HWFault on failure, 1 on success"
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static int ${prefix}Start(pHistDriver self,SConnection *pCon){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return 1;"
puts stdout "}"
#--------------- Halt
puts stdout "/*--------------------------------------------------------------------"
puts stdout " Stops histogramming, Returns HWFault on failure, 1 on success"
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static int ${prefix}Halt(pHistDriver self){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return 1;"
puts stdout "}"
#--------------- Status
puts stdout "/*--------------------------------------------------------------------"
puts stdout " Checks histogramming status, Returns HWFault on failure, "
puts stdout " HWIdle when finished, HWBusy when counting "
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static int ${prefix}CountStatus(pHistDriver self,SConnection *pCon){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return HWIdle;"
puts stdout "}"
#------------ GetError
puts stdout "/*--------------------------------------------------------------------"
puts stdout " Get info on error after last HWFault, returns 1 always."
puts stdout " Puts an int error code into *code and errLen chars of"
puts stdout " error description into error"
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static int ${prefix}GetError(pHistDriver self,int *code, "
puts stdout " char *error, int errLen){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return 1;"
puts stdout "}"
#-------- FixIt
puts stdout "/*--------------------------------------------------------------------"
puts stdout " Try to fix the HM error in code. Returns COREDO when the last"
puts stdout " operation needs to be redone, COTERM when the error cannot be"
puts stdout " fixed."
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static int ${prefix}FixIt(pHistDriver self,int code){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return COTERM;"
puts stdout "}"
#------------- GetData
puts stdout "/*--------------------------------------------------------------------"
puts stdout " GetData reads updates the internal cache of monitor values"
puts stdout " from the hardware, Returns 1 or HWFault"
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static int ${prefix}GetData(pHistDriver self,SConnection *pCon){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return 1;"
puts stdout "}"
#------------- GetMonitor
puts stdout "/*--------------------------------------------------------------------"
puts stdout " GetMonitor reads the monitor value i. Returns either the monitor "
puts stdout " value or -9999 if no such monitor exists or an error occurred"
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static long ${prefix}GetMonitor(pHistDriver self,int i, SConnection *pCon){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return -9999;"
puts stdout "}"
#------------- GetTime
puts stdout "/*--------------------------------------------------------------------"
puts stdout " GetTime reads the total counting time. Returns either the "
puts stdout " value or -9999.99 if no such value exists or an error occurred"
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static float ${prefix}GetTime(pHistDriver self,SConnection *pCon){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return -9999.99;"
puts stdout "}"
#--------------- Pause
puts stdout "/*--------------------------------------------------------------------"
puts stdout " Pause histogramming, Returns HWFault on failure, 1 on success"
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static int ${prefix}Pause(pHistDriver self,SConnection *pCon){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return 1;"
puts stdout "}"
#--------------- Continue
puts stdout "/*--------------------------------------------------------------------"
puts stdout " Continue histogramming, Returns HWFault on failure, 1 on success"
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static int ${prefix}Continue(pHistDriver self,SConnection *pCon){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return 1;"
puts stdout "}"
#--------------- Free
puts stdout "/*--------------------------------------------------------------------"
puts stdout " Free the data associated with the private data structure of the driver"
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static int ${prefix}Free(pHistDriver self){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout "}"
#------------ SetHistogram
puts stdout "/*--------------------------------------------------------------------"
puts stdout " Set The HM data or a subset of it. Returns HWFault or 1"
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static int ${prefix}SetHistogram(pHistDriver self,"
puts stdout " SConnection *pCon,"
puts stdout " int i, int iStart, int iEnd, HistInt *pData){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return 1;"
puts stdout "}"
#--------------- Preset
puts stdout "/*--------------------------------------------------------------------"
puts stdout " Set HM to a preset value, Returns HWFault on failure, 1 on success"
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static int ${prefix}Preset(pHistDriver self,SConnection *pCon,"
puts stdout " HistInt value){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return 1;"
puts stdout "}"
#------------ GetHistogram
puts stdout "/*--------------------------------------------------------------------"
puts stdout " get The HM data or a subset of it. Returns HWFault or 1"
puts stdout "----------------------------------------------------------------------*/"
puts stdout "static int ${prefix}GetHistogram(pHistDriver self,"
puts stdout " SConnection *pCon,"
puts stdout " int i, int iStart, int iEnd, HistInt *pData){"
puts stdout " $ds pPriv = NULL;"
puts stdout " "
puts stdout " pPriv =($ds)self->pPriv;"
puts stdout " return 1;"
puts stdout "}"
#-------------- MkeHM
puts stdout "/*--------------------------------------------------------------------"
puts stdout " Make the HMDriver, returns a driver or NULL on failure"
puts stdout "----------------------------------------------------------------------*/"
puts stdout "pHistDriver Make${prefix}HM(pStringDict pOption){"
puts stdout " pHistDriver pNew = NULL;"
puts stdout " $ds pPriv = NULL;"
puts stdout ""
puts stdout " /* create the general driver */"
puts stdout " pNew = CreateHistDriver(pOption);"
puts stdout " if(!pNew){"
puts stdout " return NULL;"
puts stdout " }"
puts stdout ""
puts stdout " /*Create private data structure*/"
puts stdout " pPriv = NULL; "
puts stdout " pNew->pPriv = pPriv;"
puts stdout " "
puts stdout " /* add our options */"
puts stdout " StringDictAddPair(pOption,\"example\",\"example\");"
puts stdout ""
puts stdout " /* configure all those functions */"
puts stdout " pNew->Configure = ${prefix}Configure;"
puts stdout " pNew->Start = ${prefix}Start;"
puts stdout " pNew->Halt = ${prefix}Halt;"
puts stdout " pNew->GetCountStatus = ${prefix}CountStatus;"
puts stdout " pNew->GetError = ${prefix}GetError;"
puts stdout " pNew->TryAndFixIt = ${prefix}FixIt;"
puts stdout " pNew->GetData = ${prefix}GetData;"
puts stdout " pNew->GetHistogram = ${prefix}GetHistogram;"
puts stdout " pNew->SetHistogram = ${prefix}SetHistogram;"
puts stdout " pNew->GetMonitor = ${prefix}GetMonitor;"
puts stdout " pNew->GetTime = ${prefix}GetTime;"
puts stdout " pNew->Preset = ${prefix}Preset; "
puts stdout " pNew->FreePrivate = ${prefix}Free;"
puts stdout " pNew->Pause = ${prefix}Pause;"
puts stdout " pNew->Continue = ${prefix}Continue;"
puts stdout ""
puts stdout " return pNew;"
puts stdout "}"