Add DBR_CLASS_NAME

This commit is contained in:
Marty Kraimer
1998-03-16 16:21:05 +00:00
parent b9dc729011
commit c62b683f13
2 changed files with 36 additions and 2 deletions

View File

@@ -55,6 +55,7 @@
#include "dbDefs.h"
#include "errlog.h"
#include "dbStaticLib.h"
#include "dbAccess.h"
#include "dbCommon.h"
#include "errMdef.h"
@@ -62,6 +63,8 @@
#include "alarm.h"
extern struct dbBase *pdbbase;
#ifndef NULL
#define NULL 0
#endif
@@ -120,6 +123,7 @@
#define oldDBR_PUT_ACKT oldDBR_CTRL_DOUBLE + 1
#define oldDBR_PUT_ACKS oldDBR_PUT_ACKT + 1
#define oldDBR_STSACK_STRING oldDBR_PUT_ACKS + 1
#define oldDBR_CLASS_NAME oldDBR_STSACK_STRING + 1
/*Following is defined in db_access.h*/
extern unsigned short dbDBRnewToDBRold[DBR_ENUM+1];
@@ -1407,7 +1411,29 @@ void *pfl
for(i=nRequest; i<no_elements; i++) pvalue[i][0] = 0;
}
break;
case(oldDBR_CLASS_NAME):
{
DBENTRY dbEntry;
char *name = 0;
char *pto = (char *)pbuffer;
if(!pdbbase) {
status = S_db_notFound;
break;
}
dbInitEntry(pdbbase,&dbEntry);
status = dbFindRecord(&dbEntry,paddr->precord->name);
if(!status) name = dbGetRecordTypeName(&dbEntry);
dbFinishEntry(&dbEntry);
if(status) break;
if(!name) {
status = S_dbLib_recordTypeNotFound;
break;
}
pto[MAX_STRING_SIZE-1] = 0;
strncpy(pto,name,MAX_STRING_SIZE-1);
}
break;
default:
return(-1);
}

View File

@@ -181,7 +181,8 @@ typedef epicsUInt16 dbr_put_acks_t;
#define DBR_PUT_ACKT DBR_CTRL_DOUBLE + 1
#define DBR_PUT_ACKS DBR_PUT_ACKT + 1
#define DBR_STSACK_STRING DBR_PUT_ACKS + 1
#define LAST_BUFFER_TYPE DBR_STSACK_STRING
#define DBR_CLASS_NAME DBR_STSACK_STRING + 1
#define LAST_BUFFER_TYPE DBR_CLASS_NAME
#define VALID_DB_REQ(x) ((x >= 0) && (x <= LAST_BUFFER_TYPE))
#define INVALID_DB_REQ(x) ((x < 0) || (x > LAST_BUFFER_TYPE))
@@ -305,6 +306,7 @@ epicsShareDef READONLY epicsType DBR_XXXXToEpicsType [LAST_BUFFER_TYPE+1] = {
epicsUInt16T,
epicsUInt16T,
epicsOldStringT,
epicsOldStringT
};
#else
@@ -751,6 +753,7 @@ epicsShareDef READONLY unsigned short dbr_size[LAST_BUFFER_TYPE+1] = {
sizeof(dbr_put_ackt_t), /* put ackt */
sizeof(dbr_put_acks_t), /* put acks */
sizeof(struct dbr_stsack_string),/* string field with status/ack*/
sizeof(dbr_string_t), /* string max size */
};
#endif
@@ -797,6 +800,7 @@ epicsShareDef READONLY unsigned short dbr_value_size[LAST_BUFFER_TYPE+1] = {
sizeof(dbr_ushort_t), /* put_ackt */
sizeof(dbr_ushort_t), /* put_acks */
sizeof(dbr_string_t), /* string max size */
sizeof(dbr_string_t), /* string max size */
};
#endif
@@ -853,6 +857,7 @@ epicsShareDef READONLY enum dbr_value_class dbr_value_class[LAST_BUFFER_TYPE+1]
dbr_class_int,
dbr_class_int,
dbr_class_string,
dbr_class_string, /* string max size */
};
#endif
@@ -917,6 +922,7 @@ epicsShareDef READONLY unsigned short dbr_value_offset[LAST_BUFFER_TYPE+1] = {
0, /* put ackt */
0, /* put acks */
BYTE_OS(struct dbr_stsack_string,value[0]),/* string field with status */
0, /* string */
};
#endif
@@ -961,6 +967,7 @@ union db_access_val{
dbr_put_ackt_t putackt; /* item number */
dbr_put_acks_t putacks; /* item number */
struct dbr_sts_string sastrval; /* string field with status */
dbr_string_t classname; /* string max size */
};
/*----------------------------------------------------------------------------
@@ -1148,9 +1155,10 @@ union db_access_val{
"DBR_PUT_ACKT",
"DBR_PUT_ACKS",
"DBR_STSACK_STRING",
"DBR_CLASS_NAME",
};
epicsShareDef READONLY char * dbr_text_invalid = "DBR_invalid";
epicsShareDef READONLY short dbr_text_dim = (sizeof dbr_text)/(sizeof (char *));
epicsShareDef READONLY short dbr_text_dim = (sizeof dbr_text)/(sizeof (char *)) + 1;
#endif
#ifdef __cplusplus