From 2d999ed858ed2bb1da6d4504ea4db8e932757eb8 Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Tue, 15 Oct 1996 19:22:07 +0000 Subject: [PATCH] The form for FWDLINK PV fields does not work correctly. --- src/dbStatic/dbStaticLib.c | 84 +++++++++++++++++++++++++++----------- src/dbStatic/dbStaticLib.h | 8 +--- 2 files changed, 63 insertions(+), 29 deletions(-) diff --git a/src/dbStatic/dbStaticLib.c b/src/dbStatic/dbStaticLib.c index 383f88753..26e64d21f 100644 --- a/src/dbStatic/dbStaticLib.c +++ b/src/dbStatic/dbStaticLib.c @@ -89,8 +89,8 @@ static char *promptOUTLINK[] = { "NPP PP CA:", "NMS or MS:"}; static char *promptFWDLINK[] = { - " PV Name:", - " PP CA:"}; + " PV Name:", + " CA:"}; static char *promptVME_IO[] = { " card:", "signal:", @@ -219,6 +219,8 @@ long dbNextFielddes(DBENTRY *pdbentry,int dctonly) {return dbNextField(pdbentry,dctonly);} char **dbGetChoices(DBENTRY *pdbentry) {return dbGetMenuChoices(pdbentry);} +void dbDumpRecDes(DBBASE *pdbbase,char *recordTypeName) + {dbDumpRecordType(pdbbase,recordTypeName);} /* internal routines*/ void copyEntry(DBENTRY *pfrom,DBENTRY *pto) @@ -1682,15 +1684,16 @@ char *dbGetString(DBENTRY *pdbentry) short pvlMask; pvlMask = plink->value.pv_link.pvlMask; - if(pvlMask&pvlOptPP) ppind=1; - else if(pvlMask&pvlOptCA) ppind=2; + if(pvlMask&pvlOptCA) ppind=2; else ppind=0; if(plink->value.pv_link.pvname) strcpy(message,plink->value.pv_link.pvname); else strcpy(message,""); - strcat(message," "); - strcat(message,ppstring[ppind]); + if(ppind) { + strcat(message," "); + strcat(message,ppstring[ppind]); + } break; } default : @@ -1831,16 +1834,42 @@ long dbPutString(DBENTRY *pdbentry,char *pstring) if(plink->type==CONSTANT) dbCvtLinkToPvlink(pdbentry); end = strchr(pstr,' '); if(end) { - if(strstr(end,"NPP")) ppOpt = 0; - else if(strstr(end,"CPP")) ppOpt = pvlOptCPP; - else if(strstr(end,"PP")) ppOpt = pvlOptPP; - else if(strstr(end,"CA")) ppOpt = pvlOptCA; - else if(strstr(end,"CP")) ppOpt = pvlOptCP; - else ppOpt = 0; - if(strstr(end,"NMS")) msOpt = 0; - else if(strstr(end,"MS")) msOpt = pvlOptMS; - else msOpt = 0; - *end = 0; + switch (pflddes->field_type) { + case DBF_INLINK: { + if(strstr(end,"NPP")) ppOpt = 0; + else if(strstr(end,"CPP")) ppOpt = pvlOptCPP; + else if(strstr(end,"PP")) ppOpt = pvlOptPP; + else if(strstr(end,"CA")) ppOpt = pvlOptCA; + else if(strstr(end,"CP")) ppOpt = pvlOptCP; + else ppOpt = 0; + if(strstr(end,"NMS")) msOpt = 0; + else if(strstr(end,"MS")) msOpt = pvlOptMS; + else msOpt = 0; + *end = 0; + } + break; + case DBF_OUTLINK: { + if(strstr(end,"NPP")) ppOpt = 0; + else if(strstr(end,"PP")) ppOpt = pvlOptPP; + else if(strstr(end,"CA")) ppOpt = pvlOptCA; + else ppOpt = 0; + if(strstr(end,"NMS")) msOpt = 0; + else if(strstr(end,"MS")) msOpt = pvlOptMS; + else msOpt = 0; + *end = 0; + } + break; + case DBF_FWDLINK: { + if(strstr(end,"NPP")) ppOpt = 0; + else if(strstr(end,"CA")) ppOpt = pvlOptCA; + else ppOpt = 0; + msOpt = 0; + *end = 0; + } + break; + default: + epicsPrintf("dbPutString: Logic Error\n"); + } } status = putPvLink(pdbentry,ppOpt|msOpt,pstr); return(0); @@ -2435,7 +2464,7 @@ char **dbGetFormValue(DBENTRY *pdbentry) if(plink->value.pv_link.pvname) strcpy(*value,plink->value.pv_link.pvname); else - strcpy(*value,"\0"); + strcpy(*value,""); value++; if(pvlMask&pvlOptPP) strcpy(*value,"PP"); else if(pvlMask&pvlOptCA) strcpy(*value,"CA"); @@ -2454,7 +2483,7 @@ char **dbGetFormValue(DBENTRY *pdbentry) if(plink->value.pv_link.pvname) strcpy(*value,plink->value.pv_link.pvname); else - strcpy(*value,"\0"); + strcpy(*value,""); value++; if(pvlMask&pvlOptPP) strcpy(*value,"PP"); else if(pvlMask&pvlOptCA) strcpy(*value,"CA"); @@ -2466,11 +2495,15 @@ char **dbGetFormValue(DBENTRY *pdbentry) } break; case FORM_FWDLINK: { + short pvlMask = plink->value.pv_link.pvlMask; + if(plink->value.pv_link.pvname) strcpy(*value,plink->value.pv_link.pvname); else - strcpy(*value,"\0"); + strcpy(*value,""); value++; + if(pvlMask&pvlOptCA) strcpy(*value,"CA"); + else strcpy(*value,""); } break; case FORM_VME_IO: @@ -2620,7 +2653,7 @@ long dbPutForm(DBENTRY *pdbentry,char **value) **verify = 0; value++; verify++; **verify = 0; /*Initialize verify to NULL*/ - if(!(*value)) ppOpt = 0; + if((*value==NULL) || (strcmp(*value,"")==0)) ppOpt = 0; else if(strstr(*value,"NPP")) ppOpt = 0; else if(strstr(*value,"PP")) ppOpt = pvlOptPP; else if(strstr(*value,"CA")) ppOpt = pvlOptCA; @@ -2629,7 +2662,7 @@ long dbPutForm(DBENTRY *pdbentry,char **value) else strcpy(*verify,"Illegal. Chose a value"); value++; verify++; **verify = 0; /*Initialize verify to NULL*/ - if(!(*value)) msOpt = 0; + if((*value==NULL) || (strcmp(*value,"")==0)) msOpt = 0; else if(strstr(*value,"NMS")) msOpt = 0; else if(strstr(*value,"MS")) msOpt = pvlOptMS; else strcpy(*verify,"Illegal. Chose a value"); @@ -2656,14 +2689,14 @@ long dbPutForm(DBENTRY *pdbentry,char **value) **verify = 0; value++; verify++; **verify = 0; /*Initialize verify to NULL*/ - if(!(*value)) ppOpt = 0; + if((*value==NULL) || (strcmp(*value,"")==0)) ppOpt = 0; else if(strstr(*value,"NPP")) ppOpt = 0; else if(strstr(*value,"PP")) ppOpt = pvlOptPP; else if(strstr(*value,"CA")) ppOpt = pvlOptCA; else strcpy(*verify,"Illegal. Chose a value"); value++; verify++; **verify = 0; /*Initialize verify to NULL*/ - if(!(*value)) msOpt = 0; + if((*value==NULL) || (strcmp(*value,"")==0)) msOpt = 0; else if(strstr(*value,"NMS")) msOpt = 0; else if(strstr(*value,"MS")) msOpt = pvlOptMS; else strcpy(*verify,"Illegal. Chose a value"); @@ -2686,6 +2719,11 @@ long dbPutForm(DBENTRY *pdbentry,char **value) pstr = *value; **verify = 0; + value++; verify++; + **verify = 0; /*Initialize verify to NULL*/ + if((*value==NULL) || (strcmp(*value,"")==0)) ppOpt = 0; + else if(strstr(*value,"CA")) ppOpt = pvlOptCA; + else strcpy(*verify,"Illegal. Chose a value"); putPvLink(pdbentry,ppOpt|msOpt,pstr); } break; diff --git a/src/dbStatic/dbStaticLib.h b/src/dbStatic/dbStaticLib.h index 1e1605c2b..4f176581e 100644 --- a/src/dbStatic/dbStaticLib.h +++ b/src/dbStatic/dbStaticLib.h @@ -34,12 +34,7 @@ #define INCdbStaticLibh 1 #include -#include #include -#include -#include -#include -#include #include #include #include @@ -118,6 +113,7 @@ int dbGetNRecdes(DBENTRY *pdbentry); long dbFirstFielddes(DBENTRY *pdbentry,int dctonly); long dbNextFielddes(DBENTRY *pdbentry,int dctonly); char **dbGetChoices(DBENTRY *pdbentry); +void dbDumpRecDes(DBBASE *pdbbase,char *recordTypeName); /*End obsolete routines*/ long dbFindRecordType(DBENTRY *pdbentry,char *recordTypename); @@ -207,6 +203,6 @@ extern int dbStaticDebug; #define S_dbLib_nameLength (M_dbLib|17) /*Record Name is too long*/ #define S_dbLib_noRecSup (M_dbLib|19) /*Record support not found*/ #define S_dbLib_strLen (M_dbLib|21) /*String is too long*/ -#define S_dbLib_noSizeOffset (M_dbLib|23) /*Missing SizeOffset Routine*/ +#define S_dbLib_noSizeOffset (M_dbLib|23) /*Missing SizeOffset Routine - No record support?*/ #define S_dbLib_noForm (M_dbLib|25) /*dbAllocForm was not called*/ #endif /*INCdbStaticLibh*/