pass amsg/utag through dbGet() options
This commit is contained in:
@@ -359,6 +359,14 @@ static void getOptions(DBADDR *paddr, char **poriginal, long *options,
|
||||
*pushort++ = pcommon->acks;
|
||||
*pushort++ = pcommon->ackt;
|
||||
pbuffer = (char *)pushort;
|
||||
if (!pfl || pfl->type == dbfl_type_rec) {
|
||||
STATIC_ASSERT(sizeof(pcommon->amsg)==sizeof(pfl->amsg));
|
||||
strncpy(pbuffer, pcommon->amsg, sizeof(pcommon->amsg)-1);
|
||||
} else {
|
||||
strncpy(pbuffer, pfl->amsg,sizeof(pfl->amsg)-1);
|
||||
}
|
||||
pbuffer[sizeof(pcommon->amsg)-1] = '\0';
|
||||
pbuffer += sizeof(pcommon->amsg);
|
||||
}
|
||||
if( (*options) & DBR_UNITS ) {
|
||||
memset(pbuffer,'\0',dbr_units_size);
|
||||
@@ -386,10 +394,13 @@ static void getOptions(DBADDR *paddr, char **poriginal, long *options,
|
||||
if (!pfl) {
|
||||
*ptime++ = pcommon->time.secPastEpoch;
|
||||
*ptime++ = pcommon->time.nsec;
|
||||
*ptime++ = pcommon->utag;
|
||||
} else {
|
||||
*ptime++ = pfl->time.secPastEpoch;
|
||||
*ptime++ = pfl->time.nsec;
|
||||
*ptime++ = pfl->utag;
|
||||
}
|
||||
*ptime++ = 0; /* padding */
|
||||
pbuffer = (char *)ptime;
|
||||
}
|
||||
if( (*options) & DBR_ENUM_STRS )
|
||||
|
||||
@@ -99,7 +99,8 @@ DBCORE_API extern int dbAccessDebugPUTF;
|
||||
epicsUInt16 status; /* alarm status */\
|
||||
epicsUInt16 severity; /* alarm severity*/\
|
||||
epicsUInt16 acks; /* alarm ack severity*/\
|
||||
epicsUInt16 ackt; /* Acknowledge transient alarms?*/
|
||||
epicsUInt16 ackt; /* Acknowledge transient alarms?*/\
|
||||
char amsg[40];
|
||||
#define DB_UNITS_SIZE 16
|
||||
#define DBRunits \
|
||||
char units[DB_UNITS_SIZE]; /* units */
|
||||
@@ -112,7 +113,9 @@ DBCORE_API extern int dbAccessDebugPUTF;
|
||||
* too late to change now. DBRprecision must be padded to
|
||||
* maintain 8-byte alignment. */
|
||||
#define DBRtime \
|
||||
epicsTimeStamp time; /* time stamp*/
|
||||
epicsTimeStamp time; /* time stamp*/\
|
||||
epicsInt32 utag;\
|
||||
epicsInt32 padTime;
|
||||
#define DBRenumStrs \
|
||||
epicsUInt32 no_str; /* number of strings*/\
|
||||
epicsInt32 padenumStrs; /*padding to force 8 byte align*/\
|
||||
|
||||
@@ -675,7 +675,10 @@ static db_field_log* db_create_field_log (struct dbChannel *chan, int use_val)
|
||||
struct dbCommon *prec = dbChannelRecord(chan);
|
||||
pLog->stat = prec->stat;
|
||||
pLog->sevr = prec->sevr;
|
||||
strncpy(pLog->amsg, prec->amsg, sizeof(pLog->amsg)-1);
|
||||
pLog->amsg[sizeof(pLog->amsg)-1] = '\0';
|
||||
pLog->time = prec->time;
|
||||
pLog->utag = prec->utag;
|
||||
pLog->field_type = dbChannelFieldType(chan);
|
||||
pLog->field_size = dbChannelFieldSize(chan);
|
||||
pLog->no_elements = dbChannelElements(chan);
|
||||
|
||||
@@ -113,8 +113,10 @@ typedef struct db_field_log {
|
||||
unsigned char mask; /* DBE_* mask */
|
||||
/* the following are used for value and reference types */
|
||||
epicsTimeStamp time; /* Time stamp */
|
||||
epicsInt32 utag;
|
||||
unsigned short stat; /* Alarm Status */
|
||||
unsigned short sevr; /* Alarm Severity */
|
||||
char amsg[40];
|
||||
short field_type; /* DBF type of data */
|
||||
short field_size; /* Size of a single element */
|
||||
long no_elements; /* No of valid array elements */
|
||||
|
||||
Reference in New Issue
Block a user