Ben Franksen has proposed merging ~bfrk/epics-base:reformat-dbAccess into epics-base:7.0.
Requested reviews:
EPICS Core Developers (epics-core)
For more details, see:
https://code.launchpad.net/~bfrk/epics-base/+git/epics-base/+merge/381153
--
Your team EPICS Core Developers is requested to review the proposed merge of ~bfrk/epics-base:reformat-dbAccess into epics-base:7.0.
diff --git a/modules/database/src/ioc/db/dbAccess.c b/modules/database/src/ioc/db/dbAccess.c
index 19f6038..cf1dd62 100644
--- a/modules/database/src/ioc/db/dbAccess.c
+++ b/modules/database/src/ioc/db/dbAccess.c
@@ -34,7 +34,7 @@
#include "errlog.h"
#include "errMdef.h"
-#include "epicsExport.h" /* #define epicsExportSharedSymbols */
+#include "epicsExport.h" /* #define epicsExportSharedSymbols */
#include "caeventmask.h"
#include "callback.h"
#include "dbAccessDefs.h"
@@ -63,7 +63,7 @@
#include "special.h"
epicsShareDef struct dbBase *pdbbase = 0;
-epicsShareDef volatile int interruptAccept=FALSE;
+epicsShareDef volatile int interruptAccept = FALSE;
epicsShareDef int dbAccessDebugPUTF = 0;
epicsExportAddress(int, dbAccessDebugPUTF);
@@ -73,24 +73,24 @@ epicsExportAddress(int, dbAccessDebugPUTF);
epicsShareDef DB_LOAD_RECORDS_HOOK_ROUTINE dbLoadRecordsHook = NULL;
static short mapDBFToDBR[DBF_NTYPES] = {
- /* DBF_STRING => */ DBR_STRING,
- /* DBF_CHAR => */ DBR_CHAR,
- /* DBF_UCHAR => */ DBR_UCHAR,
- /* DBF_SHORT => */ DBR_SHORT,
- /* DBF_USHORT => */ DBR_USHORT,
- /* DBF_LONG => */ DBR_LONG,
- /* DBF_ULONG => */ DBR_ULONG,
- /* DBF_INT64 => */ DBR_INT64,
- /* DBF_UINT64 => */ DBR_UINT64,
- /* DBF_FLOAT => */ DBR_FLOAT,
- /* DBF_DOUBLE => */ DBR_DOUBLE,
- /* DBF_ENUM, => */ DBR_ENUM,
- /* DBF_MENU, => */ DBR_ENUM,
- /* DBF_DEVICE => */ DBR_ENUM,
- /* DBF_INLINK => */ DBR_STRING,
- /* DBF_OUTLINK => */ DBR_STRING,
- /* DBF_FWDLINK => */ DBR_STRING,
- /* DBF_NOACCESS => */ DBR_NOACCESS
+ /* DBF_STRING => */ DBR_STRING,
+ /* DBF_CHAR => */ DBR_CHAR,
+ /* DBF_UCHAR => */ DBR_UCHAR,
+ /* DBF_SHORT => */ DBR_SHORT,
+ /* DBF_USHORT => */ DBR_USHORT,
+ /* DBF_LONG => */ DBR_LONG,
+ /* DBF_ULONG => */ DBR_ULONG,
+ /* DBF_INT64 => */ DBR_INT64,
+ /* DBF_UINT64 => */ DBR_UINT64,
+ /* DBF_FLOAT => */ DBR_FLOAT,
+ /* DBF_DOUBLE => */ DBR_DOUBLE,
+ /* DBF_ENUM, => */ DBR_ENUM,
+ /* DBF_MENU, => */ DBR_ENUM,
+ /* DBF_DEVICE => */ DBR_ENUM,
+ /* DBF_INLINK => */ DBR_STRING,
+ /* DBF_OUTLINK => */ DBR_STRING,
+ /* DBF_FWDLINK => */ DBR_STRING,
+ /* DBF_NOACCESS => */ DBR_NOACCESS
};
/*
@@ -109,217 +109,219 @@ void dbSpcAsRegisterCallback(SPC_ASCALLBACK func)
spcAsCallback = func;
}
-long dbPutSpecial(DBADDR *paddr,int pass)
+long dbPutSpecial(DBADDR *paddr, int pass)
{
- long int (*pspecial)()=NULL;
- rset *prset;
- dbCommon *precord = paddr->precord;
- long status=0;
- long special=paddr->special;
+ long int (*pspecial) () = NULL;
+ rset *prset;
+ dbCommon *precord = paddr->precord;
+ long status = 0;
+ long special = paddr->special;
prset = dbGetRset(paddr);
- if(special<100) { /*global processing*/
- if((special==SPC_NOMOD) && (pass==0)) {
- status = S_db_noMod;
- recGblDbaddrError(status,paddr,"dbPut");
- return(status);
- }else if(special==SPC_SCAN){
- if(pass==0)
- scanDelete(precord);
- else
- scanAdd(precord);
- }else if((special==SPC_AS) && (pass==1)) {
- if(spcAsCallback) (*spcAsCallback)(precord);
- }
- }else {
- if( prset && (pspecial = (prset->special))) {
- status=(*pspecial)(paddr,pass);
- if(status) return(status);
- } else if(pass==0){
- recGblRecSupError(S_db_noSupport,paddr,"dbPut", "special");
- return(S_db_noSupport);
- }
+ if (special < 100) { /*global processing */
+ if ((special == SPC_NOMOD) && (pass == 0)) {
+ status = S_db_noMod;
+ recGblDbaddrError(status, paddr, "dbPut");
+ return (status);
+ } else if (special == SPC_SCAN) {
+ if (pass == 0)
+ scanDelete(precord);
+ else
+ scanAdd(precord);
+ } else if ((special == SPC_AS) && (pass == 1)) {
+ if (spcAsCallback)
+ (*spcAsCallback) (precord);
+ }
+ } else {
+ if (prset && (pspecial = (prset->special))) {
+ status = (*pspecial) (paddr, pass);
+ if (status)
+ return (status);
+ } else if (pass == 0) {
+ recGblRecSupError(S_db_noSupport, paddr, "dbPut", "special");
+ return (S_db_noSupport);
+ }
}
- return(0);
+ return (0);
}
static void get_enum_strs(DBADDR *paddr, char **ppbuffer,
- rset *prset,long *options)
+ rset * prset, long *options)
{
- short field_type=paddr->field_type;
- dbFldDes *pdbFldDes = paddr->pfldDes;
- dbMenu *pdbMenu;
- dbDeviceMenu *pdbDeviceMenu;
- char **papChoice;
- unsigned long no_str;
- char *ptemp;
- struct dbr_enumStrs *pdbr_enumStrs=(struct dbr_enumStrs*)(*ppbuffer);
+ short field_type = paddr->field_type;
+ dbFldDes *pdbFldDes = paddr->pfldDes;
+ dbMenu *pdbMenu;
+ dbDeviceMenu *pdbDeviceMenu;
+ char **papChoice;
+ unsigned long no_str;
+ char *ptemp;
+ struct dbr_enumStrs *pdbr_enumStrs = (struct dbr_enumStrs *)(*ppbuffer);
unsigned int i;
- memset(pdbr_enumStrs,'\0',dbr_enumStrs_size);
- switch(field_type) {
- case DBF_ENUM:
- if( prset && prset->get_enum_strs ) {
- (*prset->get_enum_strs)(paddr,pdbr_enumStrs);
- } else {
- *options = (*options)^DBR_ENUM_STRS;/*Turn off option*/
- }
- break;
- case DBF_MENU:
- pdbMenu = (dbMenu *)pdbFldDes->ftPvt;
- no_str = pdbMenu->nChoice;
- papChoice= pdbMenu->papChoiceValue;
- goto choice_common;
- case DBF_DEVICE:
- pdbDeviceMenu = (dbDeviceMenu *)pdbFldDes->ftPvt;
- if(!pdbDeviceMenu) {
- *options = (*options)^DBR_ENUM_STRS;/*Turn off option*/
- break;
- }
- no_str = pdbDeviceMenu->nChoice;
- papChoice = pdbDeviceMenu->papChoice;
- goto choice_common;
-choice_common:
- i = sizeof(pdbr_enumStrs->strs)/
- sizeof(pdbr_enumStrs->strs[0]);
- if(i<no_str) no_str = i;
- pdbr_enumStrs->no_str = no_str;
- ptemp = &(pdbr_enumStrs->strs[0][0]);
- for (i=0; i<no_str; i++) {
- if(papChoice[i]==NULL) *ptemp=0;
- else {
- strncpy(ptemp,papChoice[i],
- sizeof(pdbr_enumStrs->strs[0]));
- *(ptemp+sizeof(pdbr_enumStrs->strs[0])-1) = 0;
- }
- ptemp += sizeof(pdbr_enumStrs->strs[0]);
- }
- break;
- default:
- *options = (*options)^DBR_ENUM_STRS;/*Turn off option*/
- break;
- }
- *ppbuffer = ((char *)*ppbuffer) + dbr_enumStrs_size;
- return;
+ memset(pdbr_enumStrs, '\0', dbr_enumStrs_size);
+ switch (field_type) {
+ case DBF_ENUM:
+ if (prset && prset->get_enum_strs) {
+ (*prset->get_enum_strs) (paddr, pdbr_enumStrs);
+ } else {
+ *options = (*options) ^ DBR_ENUM_STRS; /*Turn off option */
+ }
+ break;
+ case DBF_MENU:
+ pdbMenu = (dbMenu *) pdbFldDes->ftPvt;
+ no_str = pdbMenu->nChoice;
+ papChoice = pdbMenu->papChoiceValue;
+ goto choice_common;
+ case DBF_DEVICE:
+ pdbDeviceMenu = (dbDeviceMenu *) pdbFldDes->ftPvt;
+ if (!pdbDeviceMenu) {
+ *options = (*options) ^ DBR_ENUM_STRS; /*Turn off option */
+ break;
+ }
+ no_str = pdbDeviceMenu->nChoice;
+ papChoice = pdbDeviceMenu->papChoice;
+ goto choice_common;
+ choice_common:
+ i = sizeof(pdbr_enumStrs->strs) / sizeof(pdbr_enumStrs->strs[0]);
+ if (i < no_str)
+ no_str = i;
+ pdbr_enumStrs->no_str = no_str;
+ ptemp = &(pdbr_enumStrs->strs[0][0]);
+ for (i = 0; i < no_str; i++) {
+ if (papChoice[i] == NULL)
+ *ptemp = 0;
+ else {
+ strncpy(ptemp, papChoice[i], sizeof(pdbr_enumStrs->strs[0]));
+ *(ptemp + sizeof(pdbr_enumStrs->strs[0]) - 1) = 0;
+ }
+ ptemp += sizeof(pdbr_enumStrs->strs[0]);
+ }
+ break;
+ default:
+ *options = (*options) ^ DBR_ENUM_STRS; /*Turn off option */
+ break;
+ }
+ *ppbuffer = ((char *)*ppbuffer) + dbr_enumStrs_size;
+ return;
}
static void get_graphics(DBADDR *paddr, char **ppbuffer,
- rset *prset,long *options)
+ rset * prset, long *options)
{
- struct dbr_grDouble grd;
- int got_data=FALSE;
-
- grd.upper_disp_limit = grd.lower_disp_limit = 0.0;
- if( prset && prset->get_graphic_double ) {
- (*prset->get_graphic_double)(paddr,&grd);
- got_data=TRUE;
- }
- if( (*options) & (DBR_GR_LONG) ) {
- char *pbuffer=*ppbuffer;
-
- if(got_data) {
- struct dbr_grLong *pgr=(struct dbr_grLong*)pbuffer;
- pgr->upper_disp_limit = (epicsInt32)grd.upper_disp_limit;
- pgr->lower_disp_limit = (epicsInt32)grd.lower_disp_limit;
- } else {
- memset(pbuffer,'\0',dbr_grLong_size);
- *options = (*options) ^ DBR_GR_LONG; /*Turn off option*/
- }
- *ppbuffer = ((char *)*ppbuffer) + dbr_grLong_size;
- }
- if( (*options) & (DBR_GR_DOUBLE) ) {
- char *pbuffer=*ppbuffer;
-
- if(got_data) {
- struct dbr_grDouble *pgr=(struct dbr_grDouble*)pbuffer;
- pgr->upper_disp_limit = grd.upper_disp_limit;
- pgr->lower_disp_limit = grd.lower_disp_limit;
- } else {
- memset(pbuffer,'\0',dbr_grDouble_size);
- *options = (*options) ^ DBR_GR_DOUBLE; /*Turn off option*/
- }
- *ppbuffer = ((char *)*ppbuffer) + dbr_grDouble_size;
- }
- return;
+ struct dbr_grDouble grd;
+ int got_data = FALSE;
+
+ grd.upper_disp_limit = grd.lower_disp_limit = 0.0;
+ if (prset && prset->get_graphic_double) {
+ (*prset->get_graphic_double) (paddr, &grd);
+ got_data = TRUE;
+ }
+ if ((*options) & (DBR_GR_LONG)) {
+ char *pbuffer = *ppbuffer;
+
+ if (got_data) {
+ struct dbr_grLong *pgr = (struct dbr_grLong *)pbuffer;
+ pgr->upper_disp_limit = (epicsInt32) grd.upper_disp_limit;
+ pgr->lower_disp_limit = (epicsInt32) grd.lower_disp_limit;
+ } else {
+ memset(pbuffer, '\0', dbr_grLong_size);
+ *options = (*options) ^ DBR_GR_LONG; /*Turn off option */
+ }
+ *ppbuffer = ((char *)*ppbuffer) + dbr_grLong_size;
+ }
+ if ((*options) & (DBR_GR_DOUBLE)) {
+ char *pbuffer = *ppbuffer;
+
+ if (got_data) {
+ struct dbr_grDouble *pgr = (struct dbr_grDouble *)pbuffer;
+ pgr->upper_disp_limit = grd.upper_disp_limit;
+ pgr->lower_disp_limit = grd.lower_disp_limit;
+ } else {
+ memset(pbuffer, '\0', dbr_grDouble_size);
+ *options = (*options) ^ DBR_GR_DOUBLE; /*Turn off option */
+ }
+ *ppbuffer = ((char *)*ppbuffer) + dbr_grDouble_size;
+ }
+ return;
}
static void get_control(DBADDR *paddr, char **ppbuffer,
- rset *prset,long *options)
+ rset * prset, long *options)
{
- struct dbr_ctrlDouble ctrld;
- int got_data=FALSE;
-
- ctrld.upper_ctrl_limit = ctrld.lower_ctrl_limit = 0.0;
- if( prset && prset->get_control_double ) {
- (*prset->get_control_double)(paddr,&ctrld);
- got_data=TRUE;
- }
- if( (*options) & (DBR_CTRL_LONG) ) {
- char *pbuffer=*ppbuffer;
-
- if(got_data) {
- struct dbr_ctrlLong *pctrl=(struct dbr_ctrlLong*)pbuffer;
- pctrl->upper_ctrl_limit = (epicsInt32)ctrld.upper_ctrl_limit;
- pctrl->lower_ctrl_limit = (epicsInt32)ctrld.lower_ctrl_limit;
- } else {
- memset(pbuffer,'\0',dbr_ctrlLong_size);
- *options = (*options) ^ DBR_CTRL_LONG; /*Turn off option*/
- }
- *ppbuffer = ((char *)*ppbuffer) + dbr_ctrlLong_size;
- }
- if( (*options) & (DBR_CTRL_DOUBLE) ) {
- char *pbuffer=*ppbuffer;
-
- if(got_data) {
- struct dbr_ctrlDouble *pctrl=(struct dbr_ctrlDouble*)pbuffer;
- pctrl->upper_ctrl_limit = ctrld.upper_ctrl_limit;
- pctrl->lower_ctrl_limit = ctrld.lower_ctrl_limit;
- } else {
- memset(pbuffer,'\0',dbr_ctrlDouble_size);
- *options = (*options) ^ DBR_CTRL_DOUBLE; /*Turn off option*/
- }
- *ppbuffer = ((char *)*ppbuffer) + dbr_ctrlDouble_size;
- }
- return;
+ struct dbr_ctrlDouble ctrld;
+ int got_data = FALSE;
+
+ ctrld.upper_ctrl_limit = ctrld.lower_ctrl_limit = 0.0;
+ if (prset && prset->get_control_double) {
+ (*prset->get_control_double) (paddr, &ctrld);
+ got_data = TRUE;
+ }
+ if ((*options) & (DBR_CTRL_LONG)) {
+ char *pbuffer = *ppbuffer;
+
+ if (got_data) {
+ struct dbr_ctrlLong *pctrl = (struct dbr_ctrlLong *)pbuffer;
+ pctrl->upper_ctrl_limit = (epicsInt32) ctrld.upper_ctrl_limit;
+ pctrl->lower_ctrl_limit = (epicsInt32) ctrld.lower_ctrl_limit;
+ } else {
+ memset(pbuffer, '\0', dbr_ctrlLong_size);
+ *options = (*options) ^ DBR_CTRL_LONG; /*Turn off option */
+ }
+ *ppbuffer = ((char *)*ppbuffer) + dbr_ctrlLong_size;
+ }
+ if ((*options) & (DBR_CTRL_DOUBLE)) {
+ char *pbuffer = *ppbuffer;
+
+ if (got_data) {
+ struct dbr_ctrlDouble *pctrl = (struct dbr_ctrlDouble *)pbuffer;
+ pctrl->upper_ctrl_limit = ctrld.upper_ctrl_limit;
+ pctrl->lower_ctrl_limit = ctrld.lower_ctrl_limit;
+ } else {
+ memset(pbuffer, '\0', dbr_ctrlDouble_size);
+ *options = (*options) ^ DBR_CTRL_DOUBLE; /*Turn off option */
+ }
+ *ppbuffer = ((char *)*ppbuffer) + dbr_ctrlDouble_size;
+ }
+ return;
}
static void get_alarm(DBADDR *paddr, char **ppbuffer,
- rset *prset, long *options)
+ rset * prset, long *options)
{
char *pbuffer = *ppbuffer;
- struct dbr_alDouble ald = {epicsNAN, epicsNAN, epicsNAN, epicsNAN};
+ struct dbr_alDouble ald = { epicsNAN, epicsNAN, epicsNAN, epicsNAN };
long no_data = TRUE;
if (prset && prset->get_alarm_double)
no_data = prset->get_alarm_double(paddr, &ald);
if (*options & DBR_AL_LONG) {
- struct dbr_alLong *pal = (struct dbr_alLong*) pbuffer;
+ struct dbr_alLong *pal = (struct dbr_alLong *)pbuffer;
- pal->upper_alarm_limit = finite(ald.upper_alarm_limit) ?
+ pal->upper_alarm_limit = finite(ald.upper_alarm_limit) ?
(epicsInt32) ald.upper_alarm_limit : 0;
pal->upper_warning_limit = finite(ald.upper_warning_limit) ?
(epicsInt32) ald.upper_warning_limit : 0;
pal->lower_warning_limit = finite(ald.lower_warning_limit) ?
(epicsInt32) ald.lower_warning_limit : 0;
- pal->lower_alarm_limit = finite(ald.lower_alarm_limit) ?
+ pal->lower_alarm_limit = finite(ald.lower_alarm_limit) ?
(epicsInt32) ald.lower_alarm_limit : 0;
if (no_data)
- *options ^= DBR_AL_LONG; /*Turn off option*/
+ *options ^= DBR_AL_LONG; /*Turn off option */
*ppbuffer += dbr_alLong_size;
}
if (*options & DBR_AL_DOUBLE) {
- struct dbr_alDouble *pal = (struct dbr_alDouble*) pbuffer;
+ struct dbr_alDouble *pal = (struct dbr_alDouble *)pbuffer;
- pal->upper_alarm_limit = ald.upper_alarm_limit;
+ pal->upper_alarm_limit = ald.upper_alarm_limit;
pal->upper_warning_limit = ald.upper_warning_limit;
pal->lower_warning_limit = ald.lower_warning_limit;
- pal->lower_alarm_limit = ald.lower_alarm_limit;
+ pal->lower_alarm_limit = ald.lower_alarm_limit;
if (no_data)
- *options ^= DBR_AL_DOUBLE; /*Turn off option*/
+ *options ^= DBR_AL_DOUBLE; /*Turn off option */
*ppbuffer += dbr_alDouble_size;
}
@@ -330,88 +332,89 @@ static void get_alarm(DBADDR *paddr, char **ppbuffer,
* blocks only changing the buffer pointer in a way that does not break alignment.
*/
static void getOptions(DBADDR *paddr, char **poriginal, long *options,
- void *pflin)
+ void *pflin)
{
- db_field_log *pfl= (db_field_log *)pflin;
- rset *prset;
- short field_type;
- dbCommon *pcommon;
- char *pbuffer = *poriginal;
-
- if (!pfl || pfl->type == dbfl_type_rec)
- field_type = paddr->field_type;
- else
- field_type = pfl->field_type;
- prset=dbGetRset(paddr);
- /* Process options */
- pcommon = paddr->precord;
- if( (*options) & DBR_STATUS ) {
- unsigned short *pushort = (unsigned short *)pbuffer;
-
- if (!pfl || pfl->type == dbfl_type_rec) {
- *pushort++ = pcommon->stat;
- *pushort++ = pcommon->sevr;
- } else {
- *pushort++ = pfl->stat;
- *pushort++ = pfl->sevr;
- }
- *pushort++ = pcommon->acks;
- *pushort++ = pcommon->ackt;
- pbuffer = (char *)pushort;
- }
- if( (*options) & DBR_UNITS ) {
- memset(pbuffer,'\0',dbr_units_size);
- if( prset && prset->get_units ){
- (*prset->get_units)(paddr, pbuffer);
- pbuffer[DB_UNITS_SIZE-1] = '\0';
- } else {
- *options ^= DBR_UNITS; /*Turn off DBR_UNITS*/
- }
- pbuffer += dbr_units_size;
- }
- if( (*options) & DBR_PRECISION ) {
- memset(pbuffer, '\0', dbr_precision_size);
- if((field_type==DBF_FLOAT || field_type==DBF_DOUBLE)
- && prset && prset->get_precision ){
- (*prset->get_precision)(paddr,(long *)pbuffer);
- } else {
- *options ^= DBR_PRECISION; /*Turn off DBR_PRECISION*/
- }
- pbuffer += dbr_precision_size;
- }
- if( (*options) & DBR_TIME ) {
- epicsUInt32 *ptime = (epicsUInt32 *)pbuffer;
-
- if (!pfl || pfl->type == dbfl_type_rec) {
- *ptime++ = pcommon->time.secPastEpoch;
- *ptime++ = pcommon->time.nsec;
- } else {
- *ptime++ = pfl->time.secPastEpoch;
- *ptime++ = pfl->time.nsec;
- }
- pbuffer = (char *)ptime;
- }
- if( (*options) & DBR_ENUM_STRS )
- get_enum_strs(paddr, &pbuffer, prset, options);
- if( (*options) & (DBR_GR_LONG|DBR_GR_DOUBLE ))
- get_graphics(paddr, &pbuffer, prset, options);
- if((*options) & (DBR_CTRL_LONG | DBR_CTRL_DOUBLE ))
- get_control(paddr, &pbuffer, prset, options);
- if((*options) & (DBR_AL_LONG | DBR_AL_DOUBLE ))
- get_alarm(paddr, &pbuffer, prset, options);
- *poriginal = pbuffer;
+ db_field_log *pfl = (db_field_log *) pflin;
+ rset *prset;
+ short field_type;
+ dbCommon *pcommon;
+ char *pbuffer = *poriginal;
+
+ if (!pfl || pfl->type == dbfl_type_rec)
+ field_type = paddr->field_type;
+ else
+ field_type = pfl->field_type;
+ prset = dbGetRset(paddr);
+ /* Process options */
+ pcommon = paddr->precord;
+ if ((*options) & DBR_STATUS) {
+ unsigned short *pushort = (unsigned short *)pbuffer;
+
+ if (!pfl || pfl->type == dbfl_type_rec) {
+ *pushort++ = pcommon->stat;
+ *pushort++ = pcommon->sevr;
+ } else {
+ *pushort++ = pfl->stat;
+ *pushort++ = pfl->sevr;
+ }
+ *pushort++ = pcommon->acks;
+ *pushort++ = pcommon->ackt;
+ pbuffer = (char *)pushort;
+ }
+ if ((*options) & DBR_UNITS) {
+ memset(pbuffer, '\0', dbr_units_size);
+ if (prset && prset->get_units) {
+ (*prset->get_units) (paddr, pbuffer);
+ pbuffer[DB_UNITS_SIZE - 1] = '\0';
+ } else {
+ *options ^= DBR_UNITS; /*Turn off DBR_UNITS */
+ }
+ pbuffer += dbr_units_size;
+ }
+ if ((*options) & DBR_PRECISION) {
+ memset(pbuffer, '\0', dbr_precision_size);
+ if ((field_type == DBF_FLOAT || field_type == DBF_DOUBLE)
+ && prset && prset->get_precision) {
+ (*prset->get_precision) (paddr, (long *)pbuffer);
+ } else {
+ *options ^= DBR_PRECISION; /*Turn off DBR_PRECISION */
+ }
+ pbuffer += dbr_precision_size;
+ }
+ if ((*options) & DBR_TIME) {
+ epicsUInt32 *ptime = (epicsUInt32 *) pbuffer;
+
+ if (!pfl || pfl->type == dbfl_type_rec) {
+ *ptime++ = pcommon->time.secPastEpoch;
+ *ptime++ = pcommon->time.nsec;
+ } else {
+ *ptime++ = pfl->time.secPastEpoch;
+ *ptime++ = pfl->time.nsec;
+ }
+ pbuffer = (char *)ptime;
+ }
+ if ((*options) & DBR_ENUM_STRS)
+ get_enum_strs(paddr, &pbuffer, prset, options);
+ if ((*options) & (DBR_GR_LONG | DBR_GR_DOUBLE))
+ get_graphics(paddr, &pbuffer, prset, options);
+ if ((*options) & (DBR_CTRL_LONG | DBR_CTRL_DOUBLE))
+ get_control(paddr, &pbuffer, prset, options);
+ if ((*options) & (DBR_AL_LONG | DBR_AL_DOUBLE))
+ get_alarm(paddr, &pbuffer, prset, options);
+ *poriginal = pbuffer;
}
-rset * dbGetRset(const struct dbAddr *paddr)
+rset *dbGetRset(const struct dbAddr *paddr)
{
- struct dbFldDes *pfldDes = paddr->pfldDes;
+ struct dbFldDes *pfldDes = paddr->pfldDes;
- if(!pfldDes) return(0);
- return(pfldDes->pdbRecordType->prset);
+ if (!pfldDes)
+ return (0);
+ return (pfldDes->pdbRecordType->prset);
}
-long dbPutAttribute(
- const char *recordTypename, const char *name, const char *value)
+long dbPutAttribute(const char *recordTypename, const char *name,
+ const char *value)
{
DBENTRY dbEntry;
DBENTRY *pdbEntry = &dbEntry;
@@ -430,7 +433,7 @@ long dbPutAttribute(
if (!status)
status = dbPutRecordAttribute(pdbEntry, name, value);
dbFinishEntry(pdbEntry);
-done:
+ done:
if (status)
errMessage(status, "dbPutAttribute failure");
return status;
@@ -458,7 +461,7 @@ int dbGetFieldIndex(const struct dbAddr *paddr)
* 5. Run the process routine specific to the record type.
* 6. Check to see if record contents should be automatically printed.
*/
-long dbProcess(dbCommon *precord)
+long dbProcess(dbCommon * precord)
{
rset *prset = precord->rset;
dbRecordType *pdbRecordType = precord->rdes;
@@ -466,7 +469,7 @@ long dbProcess(dbCommon *precord)
char context[40] = "";
long status = 0;
int *ptrace;
- int set_trace = FALSE;
+ int set_trace = FALSE;
dbFldDes *pdbFldDes;
int callNotifyCompletion = FALSE;
@@ -492,7 +495,7 @@ long dbProcess(dbCommon *precord)
goto all_done;
}
- /* check for trace processing*/
+ /* check for trace processing */
if (tpro) {
if (!*ptrace) {
*ptrace = 1;
@@ -519,19 +522,17 @@ long dbProcess(dbCommon *precord)
/* raise scan alarm after MAX_LOCK times */
if ((precord->stat == SCAN_ALARM) ||
- (precord->lcnt++ < MAX_LOCK) ||
- (precord->sevr >= INVALID_ALARM)) goto all_done;
+ (precord->lcnt++ < MAX_LOCK) || (precord->sevr >= INVALID_ALARM))
+ goto all_done;
recGblSetSevr(precord, SCAN_ALARM, INVALID_ALARM);
monitor_mask = recGblResetAlarms(precord);
- monitor_mask |= DBE_VALUE|DBE_LOG;
+ monitor_mask |= DBE_VALUE | DBE_LOG;
pdbFldDes = pdbRecordType->papFldDes[pdbRecordType->indvalFlddes];
db_post_events(precord,
- (void *)(((char *)precord) + pdbFldDes->offset),
- monitor_mask);
+ (void *)(((char *)precord) + pdbFldDes->offset), monitor_mask);
goto all_done;
- }
- else
+ } else
precord->lcnt = 0;
/*
@@ -547,7 +548,7 @@ long dbProcess(dbCommon *precord)
printf("%s: dbProcess of Disabled '%s'\n",
context, precord->name);
- /*take care of caching and notifyCompletion*/
+ /*take care of caching and notifyCompletion */
precord->rpro = FALSE;
precord->putf = FALSE;
callNotifyCompletion = TRUE;
@@ -564,8 +565,8 @@ long dbProcess(dbCommon *precord)
db_post_events(precord, &precord->sevr, DBE_VALUE);
pdbFldDes = pdbRecordType->papFldDes[pdbRecordType->indvalFlddes];
db_post_events(precord,
- (void *)(((char *)precord) + pdbFldDes->offset),
- DBE_VALUE|DBE_ALARM);
+ (void *)(((char *)precord) + pdbFldDes->offset),
+ DBE_VALUE | DBE_ALARM);
goto all_done;
}
@@ -573,7 +574,7 @@ long dbProcess(dbCommon *precord)
/* FIXME: put this in iocInit() !!! */
if (!prset || !prset->process) {
callNotifyCompletion = TRUE;
- precord->pact = 1;/*set pact so error is issued only once*/
+ precord->pact = 1; /*set pact so error is issued only once */
recGblRecordError(S_db_noRSET, (void *)precord, "dbProcess");
status = S_db_noRSET;
if (*ptrace)
@@ -592,7 +593,7 @@ long dbProcess(dbCommon *precord)
dbPrint(precord);
}
-all_done:
+ all_done:
if (set_trace)
*ptrace = 0;
if (callNotifyCompletion && precord->ppn)
@@ -601,7 +602,7 @@ all_done:
return status;
}
-long dbEntryToAddr(const DBENTRY *pdbentry, DBADDR *paddr)
+long dbEntryToAddr(const DBENTRY * pdbentry, DBADDR *paddr)
{
dbFldDes *pflddes = pdbentry->pflddes;
short dbfType = pflddes->field_type;
@@ -610,9 +611,9 @@ long dbEntryToAddr(const DBENTRY *pdbentry, DBADDR *paddr)
paddr->pfield = pdbentry->pfield;
paddr->pfldDes = pflddes;
paddr->no_elements = 1;
- paddr->field_type = dbfType;
- paddr->field_size = pflddes->size;
- paddr->special = pflddes->special;
+ paddr->field_type = dbfType;
+ paddr->field_size = pflddes->size;
+ paddr->special = pflddes->special;
paddr->dbr_field_type = mapDBFToDBR[dbfType];
if (paddr->special == SPC_DBADDR) {
@@ -643,16 +644,20 @@ long dbNameToAddr(const char *pname, DBADDR *paddr)
dbInitEntry(pdbbase, &dbEntry);
status = dbFindRecordPart(&dbEntry, &pname);
- if (status) goto finish;
+ if (status)
+ goto finish;
- if (*pname == '.') ++pname;
+ if (*pname == '.')
+ ++pname;
status = dbFindFieldPart(&dbEntry, &pname);
if (status == S_dbLib_fieldNotFound)
status = dbGetAttributePart(&dbEntry, &pname);
- if (status) goto finish;
+ if (status)
+ goto finish;
status = dbEntryToAddr(&dbEntry, paddr);
- if (status) goto finish;
+ if (status)
+ goto finish;
/* Handle field modifiers */
if (*pname++ == '$') {
@@ -664,29 +669,27 @@ long dbNameToAddr(const char *pname, DBADDR *paddr)
paddr->field_type = DBF_CHAR;
paddr->field_size = 1;
paddr->dbr_field_type = DBR_CHAR;
- }
- else if (dbfType >= DBF_INLINK && dbfType <= DBF_FWDLINK) {
+ } else if (dbfType >= DBF_INLINK && dbfType <= DBF_FWDLINK) {
/* Clients see a char array, but keep original dbfType */
paddr->no_elements = PVLINK_STRINGSZ;
paddr->field_size = 1;
paddr->dbr_field_type = DBR_CHAR;
- }
- else {
+ } else {
status = S_dbLib_fieldNotFound;
}
}
-finish:
+ finish:
dbFinishEntry(&dbEntry);
return status;
}
-void dbInitEntryFromAddr(struct dbAddr *paddr, DBENTRY *pdbentry)
+void dbInitEntryFromAddr(struct dbAddr *paddr, DBENTRY * pdbentry)
{
struct dbCommon *prec = paddr->precord;
dbCommonPvt *ppvt = dbRec2Pvt(prec);
- memset((char *)pdbentry,'\0',sizeof(DBENTRY));
+ memset((char *)pdbentry, '\0', sizeof(DBENTRY));
pdbentry->pdbbase = pdbbase;
pdbentry->precordType = prec->rdes;
@@ -696,24 +699,24 @@ void dbInitEntryFromAddr(struct dbAddr *paddr, DBENTRY *pdbentry)
pdbentry->indfield = paddr->pfldDes->indRecordType;
}
-void dbInitEntryFromRecord(struct dbCommon *prec, DBENTRY *pdbentry)
+void dbInitEntryFromRecord(struct dbCommon *prec, DBENTRY * pdbentry)
{
dbCommonPvt *ppvt = dbRec2Pvt(prec);
- memset((char *)pdbentry,'\0',sizeof(DBENTRY));
+ memset((char *)pdbentry, '\0', sizeof(DBENTRY));
pdbentry->pdbbase = pdbbase;
pdbentry->precordType = prec->rdes;
pdbentry->precnode = ppvt->recnode;
}
-struct link* dbGetDevLink(struct dbCommon* prec)
+struct link *dbGetDevLink(struct dbCommon *prec)
{
DBLINK *plink = 0;
DBENTRY entry;
dbInitEntryFromRecord(prec, &entry);
- if(dbFindField(&entry, "INP")==0 || dbFindField(&entry, "OUT")==0) {
- plink = (DBLINK*)entry.pfield;
+ if (dbFindField(&entry, "INP") == 0 || dbFindField(&entry, "OUT") == 0) {
+ plink = (DBLINK *) entry.pfield;
}
dbFinishEntry(&entry);
return plink;
@@ -723,41 +726,53 @@ long dbValueSize(short dbr_type)
{
/* sizes for value associated with each DBR request type */
static long size[] = {
- MAX_STRING_SIZE, /* STRING */
- sizeof(epicsInt8), /* CHAR */
- sizeof(epicsUInt8), /* UCHAR */
- sizeof(epicsInt16), /* SHORT */
- sizeof(epicsUInt16), /* USHORT */
- sizeof(epicsInt32), /* LONG */
- sizeof(epicsUInt32), /* ULONG */
- sizeof(epicsInt64), /* INT64 */
- sizeof(epicsUInt64), /* UINT64 */
- sizeof(epicsFloat32), /* FLOAT */
- sizeof(epicsFloat64), /* DOUBLE */
- sizeof(epicsEnum16)}; /* ENUM */
-
- return(size[dbr_type]);
+ MAX_STRING_SIZE, /* STRING */
+ sizeof(epicsInt8), /* CHAR */
+ sizeof(epicsUInt8), /* UCHAR */
+ sizeof(epicsInt16), /* SHORT */
+ sizeof(epicsUInt16), /* USHORT */
+ sizeof(epicsInt32), /* LONG */
+ sizeof(epicsUInt32), /* ULONG */
+ sizeof(epicsInt64), /* INT64 */
+ sizeof(epicsUInt64), /* UINT64 */
+ sizeof(epicsFloat32), /* FLOAT */
+ sizeof(epicsFloat64), /* DOUBLE */
+ sizeof(epicsEnum16)
+ }; /* ENUM */
+
+ return (size[dbr_type]);
}
-
long dbBufferSize(short dbr_type, long options, long no_elements)
{
- long nbytes=0;
+ long nbytes = 0;
nbytes += dbValueSize(dbr_type) * no_elements;
- if (options & DBR_STATUS) nbytes += dbr_status_size;
- if (options & DBR_UNITS) nbytes += dbr_units_size;
- if (options & DBR_PRECISION) nbytes += dbr_precision_size;
- if (options & DBR_TIME) nbytes += dbr_time_size;
- if (options & DBR_ENUM_STRS) nbytes += dbr_enumStrs_size;
- if (options & DBR_GR_LONG) nbytes += dbr_grLong_size;
- if (options & DBR_GR_DOUBLE) nbytes += dbr_grDouble_size;
- if (options & DBR_CTRL_LONG) nbytes += dbr_ctrlLong_size;
- if (options & DBR_CTRL_DOUBLE) nbytes += dbr_ctrlDouble_size;
- if (options & DBR_AL_LONG) nbytes += dbr_alLong_size;
- if (options & DBR_AL_DOUBLE) nbytes += dbr_alDouble_size;
- return(nbytes);
+ if (options & DBR_STATUS)
+ nbytes += dbr_status_size;
+ if (options & DBR_UNITS)
+ nbytes += dbr_units_size;
+ if (options & DBR_PRECISION)
+ nbytes += dbr_precision_size;
+ if (options & DBR_TIME)
+ nbytes += dbr_time_size;
+ if (options & DBR_ENUM_STRS)
+ nbytes += dbr_enumStrs_size;
+ if (options & DBR_GR_LONG)
+ nbytes += dbr_grLong_size;
+ if (options & DBR_GR_DOUBLE)
+ nbytes += dbr_grDouble_size;
+ if (options & DBR_CTRL_LONG)
+ nbytes += dbr_ctrlLong_size;
+ if (options & DBR_CTRL_DOUBLE)
+ nbytes += dbr_ctrlDouble_size;
+ if (options & DBR_AL_LONG)
+ nbytes += dbr_alLong_size;
+ if (options & DBR_AL_DOUBLE)
+ nbytes += dbr_alDouble_size;
+ return (nbytes);
}
+
int dbLoadDatabase(const char *file, const char *path, const char *subs)
{
if (!file) {
@@ -767,7 +782,7 @@ int dbLoadDatabase(const char *file, const char *path, const char *subs)
return dbReadDatabase(&pdbbase, file, path, subs);
}
-int dbLoadRecords(const char* file, const char* subs)
+int dbLoadRecords(const char *file, const char *subs)
{
int status;
@@ -781,7 +796,6 @@ int dbLoadRecords(const char* file, const char* subs)
return status;
}
-
static long getLinkValue(DBADDR *paddr, short dbrType,
char *pbuf, long *nRequest)
{
@@ -797,7 +811,7 @@ static long getLinkValue(DBADDR *paddr, short dbrType,
* valid DBADDR, so no point to check again.
* Request for zero elements always succeeds
*/
- if(!nReq)
+ if (!nReq)
return 0;
switch (dbrType) {
@@ -806,8 +820,9 @@ static long getLinkValue(DBADDR *paddr, short dbrType,
nReq = 1;
break;
- case DBR_DOUBLE: /* Needed for dbCa links */
- if (nRequest) *nRequest = 1;
+ case DBR_DOUBLE: /* Needed for dbCa links */
+ if (nRequest)
+ *nRequest = 1;
*(double *)pbuf = epicsNAN;
return 0;
@@ -821,27 +836,30 @@ static long getLinkValue(DBADDR *paddr, short dbrType,
dbInitEntry(pdbbase, &dbEntry);
status = dbFindRecord(&dbEntry, precord->name);
- if (!status) status = dbFindField(&dbEntry, pfldDes->name);
+ if (!status)
+ status = dbFindField(&dbEntry, pfldDes->name);
if (!status) {
const char *rtnString = dbGetString(&dbEntry);
- strncpy(pbuf, rtnString, maxlen-1);
- pbuf[maxlen-1] = 0;
- if(dbrType!=DBR_STRING)
- nReq = strlen(pbuf)+1;
- if(nRequest) *nRequest = nReq;
+ strncpy(pbuf, rtnString, maxlen - 1);
+ pbuf[maxlen - 1] = 0;
+ if (dbrType != DBR_STRING)
+ nReq = strlen(pbuf) + 1;
+ if (nRequest)
+ *nRequest = nReq;
}
dbFinishEntry(&dbEntry);
return status;
}
static long getAttrValue(DBADDR *paddr, short dbrType,
- char *pbuf, long *nRequest)
+ char *pbuf, long *nRequest)
{
int maxlen;
long nReq = nRequest ? *nRequest : 1;
- if (!paddr->pfield) return S_db_badField;
+ if (!paddr->pfield)
+ return S_db_badField;
switch (dbrType) {
case DBR_STRING:
@@ -859,15 +877,16 @@ static long getAttrValue(DBADDR *paddr, short dbrType,
return S_db_badDbrtype;
}
- strncpy(pbuf, paddr->pfield, maxlen-1);
- pbuf[maxlen-1] = 0;
- if(dbrType!=DBR_STRING)
- nReq = strlen(pbuf)+1;
- if(nRequest) *nRequest = nReq;
+ strncpy(pbuf, paddr->pfield, maxlen - 1);
+ pbuf[maxlen - 1] = 0;
+ if (dbrType != DBR_STRING)
+ nReq = strlen(pbuf) + 1;
+ if (nRequest)
+ *nRequest = nReq;
return 0;
}
-long dbGetField(DBADDR *paddr,short dbrType,
+long dbGetField(DBADDR *paddr, short dbrType,
void *pbuffer, long *options, long *nRequest, void *pflin)
{
dbCommon *precord = paddr->precord;
@@ -884,7 +903,7 @@ long dbGet(DBADDR *paddr, short dbrType,
{
char *pbuf = pbuffer;
void *pfieldsave = paddr->pfield;
- db_field_log *pfl = (db_field_log *)pflin;
+ db_field_log *pfl = (db_field_log *) pflin;
short field_type;
long capacity, no_elements, offset;
rset *prset;
@@ -903,8 +922,7 @@ long dbGet(DBADDR *paddr, short dbrType,
* may modify paddr->pfield
*/
if (paddr->pfldDes->special == SPC_DBADDR &&
- (prset = dbGetRset(paddr)) &&
- prset->get_array_info) {
+ (prset = dbGetRset(paddr)) && prset->get_array_info) {
status = prset->get_array_info(paddr, &no_elements, &offset);
} else
offset = 0;
@@ -941,15 +959,15 @@ long dbGet(DBADDR *paddr, short dbrType,
status = dbFastGetConvertRoutine[field_type][dbrType]
(paddr->pfield, pbuf, paddr);
} else {
- DBADDR localAddr = *paddr; /* Structure copy */
+ DBADDR localAddr = *paddr; /* Structure copy */
localAddr.field_type = pfl->field_type;
localAddr.field_size = pfl->field_size;
localAddr.no_elements = pfl->no_elements;
if (pfl->type == dbfl_type_val)
- localAddr.pfield = (char *) &pfl->u.v.field;
+ localAddr.pfield = (char *)&pfl->u.v.field;
else
- localAddr.pfield = (char *) pfl->u.r.field;
+ localAddr.pfield = (char *)pfl->u.r.field;
status = dbFastGetConvertRoutine[field_type][dbrType]
(localAddr.pfield, pbuf, &localAddr);
}
@@ -969,52 +987,54 @@ long dbGet(DBADDR *paddr, short dbrType,
char message[80];
sprintf(message, "dbGet: Missing conversion for [%d][%d]\n",
- field_type, dbrType);
+ field_type, dbrType);
recGblDbaddrError(S_db_badDbrtype, paddr, message);
status = S_db_badDbrtype;
goto done;
}
/* convert data into the caller's buffer */
if (n <= 0) {
- ;/*do nothing*/
+ ; /*do nothing */
} else if (!pfl || pfl->type == dbfl_type_rec) {
status = convert(paddr, pbuf, n, capacity, offset);
} else {
- DBADDR localAddr = *paddr; /* Structure copy */
+ DBADDR localAddr = *paddr; /* Structure copy */
localAddr.field_type = pfl->field_type;
localAddr.field_size = pfl->field_size;
localAddr.no_elements = pfl->no_elements;
if (pfl->type == dbfl_type_val)
- localAddr.pfield = (char *) &pfl->u.v.field;
+ localAddr.pfield = (char *)&pfl->u.v.field;
else
- localAddr.pfield = (char *) pfl->u.r.field;
+ localAddr.pfield = (char *)pfl->u.r.field;
status = convert(&localAddr, pbuf, n, capacity, offset);
}
- if(!status && dbrType==DBF_CHAR && nRequest &&
- paddr->pfldDes && paddr->pfldDes->field_type==DBF_STRING)
- {
+ if (!status && dbrType == DBF_CHAR && nRequest &&
+ paddr->pfldDes && paddr->pfldDes->field_type == DBF_STRING) {
/* long string ensure nil and truncate to actual length */
long nReq = *nRequest;
- pbuf[nReq-1] = '\0';
- *nRequest = strlen(pbuf)+1;
+ pbuf[nReq - 1] = '\0';
+ *nRequest = strlen(pbuf) + 1;
}
}
-done:
+ done:
paddr->pfield = pfieldsave;
return status;
}
-devSup* dbDTYPtoDevSup(dbRecordType *prdes, int dtyp) {
- return (devSup *)ellNth(&prdes->devList, dtyp+1);
+devSup *dbDTYPtoDevSup(dbRecordType * prdes, int dtyp)
+{
+ return (devSup *) ellNth(&prdes->devList, dtyp + 1);
}
-devSup* dbDSETtoDevSup(dbRecordType *prdes, dset *pdset) {
- devSup *pdevSup = (devSup *)ellFirst(&prdes->devList);
+devSup *dbDSETtoDevSup(dbRecordType * prdes, dset * pdset)
+{
+ devSup *pdevSup = (devSup *) ellFirst(&prdes->devList);
while (pdevSup) {
- if (pdset == pdevSup->pdset) return pdevSup;
- pdevSup = (devSup *)ellNext(&pdevSup->node);
+ if (pdset == pdevSup->pdset)
+ return pdevSup;
+ pdevSup = (devSup *) ellNext(&pdevSup->node);
}
return NULL;
}
@@ -1022,24 +1042,24 @@ devSup* dbDSETtoDevSup(dbRecordType *prdes, dset *pdset) {
static long dbPutFieldLink(DBADDR *paddr,
short dbrType, const void *pbuffer, long nRequest)
{
- dbLinkInfo link_info;
- DBADDR *pdbaddr = NULL;
- dbCommon *precord = paddr->precord;
- dbCommon *lockrecs[2];
- dbLocker locker;
- dbFldDes *pfldDes = paddr->pfldDes;
- long special = paddr->special;
+ dbLinkInfo link_info;
+ DBADDR *pdbaddr = NULL;
+ dbCommon *precord = paddr->precord;
+ dbCommon *lockrecs[2];
+ dbLocker locker;
+ dbFldDes *pfldDes = paddr->pfldDes;
+ long special = paddr->special;
struct link *plink = (struct link *)paddr->pfield;
- const char *pstring = (const char *)pbuffer;
+ const char *pstring = (const char *)pbuffer;
struct dsxt *old_dsxt = NULL;
dset *new_dset = NULL;
struct dsxt *new_dsxt = NULL;
- devSup *new_devsup = NULL;
- long status;
- int isDevLink;
- short scan;
+ devSup *new_devsup = NULL;
+ long status;
+ int isDevLink;
+ short scan;
- STATIC_ASSERT(DBLOCKER_NALLOC>=2);
+ STATIC_ASSERT(DBLOCKER_NALLOC >= 2);
switch (dbrType) {
case DBR_CHAR:
@@ -1063,19 +1083,18 @@ static long dbPutFieldLink(DBADDR *paddr,
(link_info.modifiers & (pvlOptCA | pvlOptCP | pvlOptCPP)) == 0) {
DBADDR tempaddr;
- if (dbNameToAddr(link_info.target, &tempaddr)==0) {
+ if (dbNameToAddr(link_info.target, &tempaddr) == 0) {
/* This will become a DB link. */
pdbaddr = malloc(sizeof(*pdbaddr));
if (!pdbaddr) {
status = S_db_noMemory;
goto cleanup;
}
- *pdbaddr = tempaddr; /* struct copy */
+ *pdbaddr = tempaddr; /* struct copy */
}
}
- isDevLink = ellCount(&precord->rdes->devList) > 0 &&
- pfldDes->isDevLink;
+ isDevLink = ellCount(&precord->rdes->devList) > 0 && pfldDes->isDevLink;
memset(&locker, 0, sizeof(locker));
lockrecs[0] = precord;
@@ -1130,17 +1149,19 @@ static long dbPutFieldLink(DBADDR *paddr,
if (dbLinkIsDefined(plink)) {
dbRemoveLink(&locker, plink); /* Clear out old link */
- }
- else if (!isDevLink) {
+ } else if (!isDevLink) {
status = S_db_badHWaddr;
goto restoreScan;
}
- if (special) status = dbPutSpecial(paddr, 0);
+ if (special)
+ status = dbPutSpecial(paddr, 0);
- if (!status) status = dbSetLink(plink, &link_info, new_devsup);
+ if (!status)
+ status = dbSetLink(plink, &link_info, new_devsup);
- if (!status && special) status = dbPutSpecial(paddr, 1);
+ if (!status && special)
+ status = dbPutSpecial(paddr, 1);
if (status) {
if (isDevLink) {
@@ -1163,7 +1184,7 @@ static long dbPutFieldLink(DBADDR *paddr,
}
}
- switch (plink->type) { /* New link type */
+ switch (plink->type) { /* New link type */
case PV_LINK:
case CONSTANT:
case JSON_LINK:
@@ -1173,9 +1194,9 @@ static long dbPutFieldLink(DBADDR *paddr,
case DB_LINK:
case CA_LINK:
case MACRO_LINK:
- break; /* should never get here */
+ break; /* should never get here */
- default: /* Hardware address */
+ default: /* Hardware address */
if (!isDevLink) {
status = S_db_badHWaddr;
goto postScanEvent;
@@ -1184,19 +1205,18 @@ static long dbPutFieldLink(DBADDR *paddr,
}
db_post_events(precord, plink, DBE_VALUE | DBE_LOG);
-restoreScan:
- if (isDevLink &&
- scan == menuScanI_O_Intr) { /* undo scanDelete() */
+ restoreScan:
+ if (isDevLink && scan == menuScanI_O_Intr) { /* undo scanDelete() */
precord->scan = scan;
scanAdd(precord);
}
-postScanEvent:
+ postScanEvent:
if (scan != precord->scan)
db_post_events(precord, &precord->scan, DBE_VALUE | DBE_LOG);
-unlock:
+ unlock:
dbScanUnlockMany(&locker);
dbLockerFinalize(&locker);
-cleanup:
+ cleanup:
free(link_info.target);
return status;
}
@@ -1204,16 +1224,16 @@ cleanup:
long dbPutField(DBADDR *paddr, short dbrType,
const void *pbuffer, long nRequest)
{
- long status = 0;
- long special = paddr->special;
- dbFldDes *pfldDes = paddr->pfldDes;
- dbCommon *precord = paddr->precord;
- short dbfType = paddr->field_type;
+ long status = 0;
+ long special = paddr->special;
+ dbFldDes *pfldDes = paddr->pfldDes;
+ dbCommon *precord = paddr->precord;
+ short dbfType = paddr->field_type;
if (special == SPC_ATTRIBUTE)
return S_db_noMod;
- /*check for putField disabled*/
+ /*check for putField disabled */
if (precord->disp && paddr->pfield != &precord->disp)
return S_db_putDisabled;
@@ -1225,8 +1245,7 @@ long dbPutField(DBADDR *paddr, short dbrType,
if (status == 0) {
if (paddr->pfield == &precord->proc ||
(pfldDes->process_passive &&
- precord->scan == 0 &&
- dbrType < DBR_PUT_ACKT)) {
+ precord->scan == 0 && dbrType < DBR_PUT_ACKT)) {
if (precord->pact) {
if (dbAccessDebugPUTF && precord->tpro)
printf("%s: dbPutField to Active '%s', setting RPRO=1\n",
@@ -1249,11 +1268,11 @@ static long putAckt(DBADDR *paddr, const void *pbuffer, long nRequest,
dbCommon *precord = paddr->precord;
const unsigned short *ptrans = pbuffer;
- if (*ptrans == precord->ackt) return 0;
+ if (*ptrans == precord->ackt)
+ return 0;
precord->ackt = *ptrans;
db_post_events(precord, &precord->ackt, DBE_VALUE | DBE_ALARM);
- if (!precord->ackt &&
- precord->acks > precord->sevr) {
+ if (!precord->ackt && precord->acks > precord->sevr) {
precord->acks = precord->sevr;
db_post_events(precord, &precord->acks, DBE_VALUE | DBE_ALARM);
}
@@ -1275,14 +1294,13 @@ static long putAcks(DBADDR *paddr, const void *pbuffer, long nRequest,
return 0;
}
-long dbPut(DBADDR *paddr, short dbrType,
- const void *pbuffer, long nRequest)
+long dbPut(DBADDR *paddr, short dbrType, const void *pbuffer, long nRequest)
{
dbCommon *precord = paddr->precord;
- short field_type = paddr->field_type;
- long no_elements = paddr->no_elements;
- long special = paddr->special;
- void *pfieldsave = paddr->pfield;
+ short field_type = paddr->field_type;
+ long no_elements = paddr->no_elements;
+ long special = paddr->special;
+ void *pfieldsave = paddr->pfield;
rset *prset = dbGetRset(paddr);
long status = 0;
long offset;
@@ -1306,7 +1324,8 @@ long dbPut(DBADDR *paddr, short dbrType,
if (special) {
status = dbPutSpecial(paddr, 0);
- if (status) return status;
+ if (status)
+ return status;
}
if (paddr->pfldDes->special == SPC_DBADDR &&
@@ -1315,18 +1334,19 @@ long dbPut(DBADDR *paddr, short dbrType,
status = prset->get_array_info(paddr, &dummy, &offset);
/* paddr->pfield may be modified */
- if (status) goto done;
+ if (status)
+ goto done;
} else
offset = 0;
if (no_elements <= 1) {
- status = dbFastPutConvertRoutine[dbrType][field_type](pbuffer,
+ status = dbFastPutConvertRoutine[dbrType][field_type] (pbuffer,
paddr->pfield, paddr);
nRequest = 1;
} else {
if (no_elements < nRequest)
nRequest = no_elements;
- status = dbPutConvertRoutine[dbrType][field_type](paddr, pbuffer,
+ status = dbPutConvertRoutine[dbrType][field_type] (paddr, pbuffer,
nRequest, no_elements, offset);
}
@@ -1340,17 +1360,19 @@ long dbPut(DBADDR *paddr, short dbrType,
/* Always do special processing if needed */
if (special) {
long status2 = dbPutSpecial(paddr, 1);
- if (status2) goto done;
+ if (status2)
+ goto done;
}
- if (status) goto done;
+ if (status)
+ goto done;
/* Propagate monitor events for this field, */
/* unless the field is VAL and PP is true. */
pfldDes = paddr->pfldDes;
isValueField = dbIsValueField(pfldDes);
- if (isValueField) precord->udf = FALSE;
- if (precord->mlis.count &&
- !(isValueField && pfldDes->process_passive))
+ if (isValueField)
+ precord->udf = FALSE;
+ if (precord->mlis.count && !(isValueField && pfldDes->process_passive))
db_post_events(precord, pfieldsave, DBE_VALUE | DBE_LOG);
/* If this field is a property (metadata) field,
* then post a property change event (even if the field
@@ -1358,7 +1380,7 @@ long dbPut(DBADDR *paddr, short dbrType,
*/
if (precord->mlis.count && pfldDes->prop)
db_post_events(precord, NULL, DBE_PROPERTY);
-done:
+ done:
paddr->pfield = pfieldsave;
return status;
}
- Navigate by Date:
- Prev:
Re: [Merge] ~bfrk/epics-base:write-filters-rebased into epics-base:7.0 Ben Franksen via Core-talk
- Next:
Re: write to a single element of an array field Timo Korhonen via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
<2020>
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
[Merge] ~bfrk/epics-base:write-filters-rebased into epics-base:7.0 Ben Franksen via Core-talk
- Next:
How to work with EPICS repo document Timo Korhonen via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
<2020>
2021
2022
2023
2024
|