]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
*** empty log message ***
authorhades <hades>
Wed, 16 Aug 2000 13:01:24 +0000 (13:01 +0000)
committerhades <hades>
Wed, 16 Aug 2000 13:01:24 +0000 (13:01 +0000)
allParam/ca/Makefile
allParam/ca/caParam.h
allParam/tcl/Makefile
allParam/tcl/tclParam.c
allParam/tcl/tclParam.h

index 71fd06194ff629b4818478ff23cf4620068a0888..876e015261f30232925f215f7d85e732d0ca95d4 100644 (file)
@@ -2,7 +2,7 @@ EPICS_BASE = $(HOME)/hades/epics/base
 CFLAGS = -g -I$(HOME)/include \
   -I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/$(HOST_ARCH)
 
-libcaParam.a : param.o
+libncaParam.a : param.o
        $(AR) $(ARFLAGS) $@ $<
 
 param.o : param.c param.h
index caeb86fe93d47405e209f47574cd51498593d135..633efe92507749711fe76d4a5a1cdaca950a08aa 100644 (file)
@@ -58,6 +58,7 @@ void desParam(Param *);
 
 #define PARAM_RV_NO_SUCH_PARAMETER 0
 #define PARAM_RV_FAILED -1
+#define PARAM_RV_NO_INT -2
 
 #define PARAM_MAX_VALUE_LEN 128
 
index 933187a283dd931ba599b8ec408aed6cc9ccaf94..1e8363e29da86ddfa7346fc35abcc098224c93a6 100644 (file)
@@ -1,12 +1,9 @@
 CXXFLAGS = -g -I../param
 CFLAGS = -g
 
-libtclParam.a : param.o
+libntclParam.a : param.o
        $(AR) $(ARFLAGS) $@ $<
 
-tclParam.o : tclParam.cc tclParam.h structParam.h ../param/enhParam.h
-structParam.o : structParam.c structParam.h
-
 param.o : param.c param.h
 
 clean :
index e3ce3f0e5e2c81708faffd9de8af95a30db2b40e..eef46d7a4cf218b73bb6c52c18ff1b1839bc805e 100644 (file)
 #define _POSIX_C_SOURCE 199509L
 
+#include <unistd.h>
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
 #include "param.h"
 
 int conParam(Param *my)
 {
-       return 0;
+       int retVal;
+       char *fileName;
+       int code;
+
+       fileName = getenv("DAQSLOW_PARAM_FILE");
+       if (fileName == NULL) {
+               fileName = "param.tcl";
+       }
+       my->interp = Tcl_CreateInterp();
+       code = Tcl_EvalFile(my->interp, fileName);
+       if (*my->interp->result != 0) {
+               fprintf(stderr, "opening param file: %s\n", my->interp->result);
+               retVal = -1;
+       } else {
+               if (code != TCL_OK) {
+                       retVal = -1;
+               } else {
+                       retVal = 0;
+               }
+       }
+       return retVal;
 }
 
 void desParam(Param *my)
 {
+       Tcl_DeleteInterp(my->interp);
 }
 
-int Param_getInt(const Param *my, const char *n, const char *i, int *v)
+int Param_getInt(const Param *my, const char *name, const char *idx, int *val)
 {
-       return Param_getIntArray(my, n, i, 1, v);
+       int status;
+       char valstr[PARAM_MAX_VALUE_LEN];
+       char *endptr;
+       if ((status = Param_getString(my, name, idx, valstr)) != 1) {
+               msglog(LOG_ERR, "Error: cannot get Parameter %s as a string", idx);
+               return status;
+       }
+       *val = strtoul(valstr, &endptr, 0);
+       if (*endptr == '\0') {
+               return PARAM_RV_NO_INT;
+       }
+       return 1;
 }
 
-int Param_getString(const Param *my, const char *n, const char *i, char *v)
+int Param_getString(const Param *my, const char *name, const char *idx, char *val)
 {
-       return Param_getStringArray(my, n, i, 1, &v);
+       strcpy(val, Tcl_GetVar2(my->interp, (char *) name, (char *) idx, 0));
+       if (val == NULL) {
+               val = "";
+               fprintf(stderr,
+                       "Parameter %s(%s) not found, default is \"\"\n", name, idx);
+               return 0;
+       }
+       return 1;
 }
 
-int Param_getIntArray(const Param *my, const char *n, const char *i, int num, int *v)
+int Param_getIntArray(const Param *my, const char *name, const char *idx, int num, int *val)
 {
-       for (int i = 0 ; i<num ; i++) {
-               v[i] = 0;
+       int status;
+       int tmp;
+       char index[PARAM_MAX_NAME_LEN];
+       for (int i = 0 ; i < num ; i++) {
+               sprintf(index,"%s%d", idx, i);
+               if ((tmp = Param_getInt(my, name, index, val[i]) == 1) && (status >= 0)) {
+                       status++;
+               } else {
+                       status = tmp;
+               }
        }
-       return num;
+
+       return status;
 }
 
-int Param_getStringArray(const Param *my, const char *n, const char *i, int num, char **v)
+int Param_getStringArray(const Param *my, const char *name, const char *idx, int num, char **val)
 {
-       for (int i = 0 ; i<num ; i++) {
-               v[i] = "Blub";
+       int status;
+       int tmp;
+       char index[PARAM_MAX_NAME_LEN];
+       for (int i = 0 ; i < num ; i++) {
+               sprintf(index,"%s%d", idx, i);
+               if ((tmp = Param_getString(my, name, index, val[i]) == 1) && (status >= 0)) {
+                       status++;
+               } else {
+                       status = tmp;
+               }
        }
-       return num;
+
+       return status;
 }
 
index ea8515ceb1d1f0e35ebc4ba4fdc763ad05bfccdd..1c9913da02708feead7675c344ac8e219dc2a9a9 100644 (file)
@@ -5,7 +5,10 @@
  * Section containing struct Param (different in the different param.h's) *
  **************************************************************************/
 
+#include <tcl.h>
+
 typedef struct ParamS {
+       Tcl_Interp *interp;
 } Param;
 
 /******************************************************************
@@ -46,7 +49,9 @@ void desParam(Param *);
 
 #define PARAM_RV_NO_SUCH_PARAMETER 0
 #define PARAM_RV_FAILED -1
+#define PARAM_RV_NO_INT -2
 
+#define PARAM_MAX_NAME_LEN 128
 #define PARAM_MAX_VALUE_LEN 128
 
 int Param_getInt(const Param *, const char *, const char *, unsigned long int *);