Add DBR_CLASS_NAME
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user