diff --git a/src/ioc/db/dbChannel.c b/src/ioc/db/dbChannel.c index a8bb291bb..4010b7a9d 100644 --- a/src/ioc/db/dbChannel.c +++ b/src/ioc/db/dbChannel.c @@ -469,20 +469,29 @@ short dbChannelSpecial(dbChannel *chan) return chan->addr.special; } -void * dbChannelData(dbChannel *chan) +void * dbChannelField(dbChannel *chan) { void * pdata = chan->addr.pfield; /* FIXME: offer to filters? */ return pdata; } -long dbChannelPut(dbChannel *chan, short type, const void *pbuffer, long nRequest) +long dbChannelGetField(dbChannel *chan, short type, void *pbuffer, + long *options, long *nRequest, void *pfl) +{ + /* FIXME: offer to filters? */ + return dbGetField(&chan->addr, type, pbuffer, options, nRequest, pfl); +} + +long dbChannelPut(dbChannel *chan, short type, const void *pbuffer, + long nRequest) { /* FIXME: offer to filters? */ return dbPut(&chan->addr, type, pbuffer, nRequest); } -long dbChannelPutField(dbChannel *chan, short type, const void *pbuffer, long nRequest) +long dbChannelPutField(dbChannel *chan, short type, const void *pbuffer, + long nRequest) { /* FIXME: offer to filters? */ return dbPutField(&chan->addr, type, pbuffer, nRequest); diff --git a/src/ioc/db/dbChannel.h b/src/ioc/db/dbChannel.h index b42f41410..82c79abb2 100644 --- a/src/ioc/db/dbChannel.h +++ b/src/ioc/db/dbChannel.h @@ -95,7 +95,9 @@ epicsShareFunc short dbChannelFieldType(dbChannel *chan); epicsShareFunc short dbChannelExportType(dbChannel *chan); epicsShareFunc short dbChannelElementSize(dbChannel *chan); epicsShareFunc short dbChannelSpecial(dbChannel *chan); -epicsShareFunc void * dbChannelData(dbChannel *chan); +epicsShareFunc void * dbChannelField(dbChannel *chan); +epicsShareFunc long dbChannelGetField(dbChannel *chan, short type, + void *pbuffer, long *options, long *nRequest, void *pfl); epicsShareFunc long dbChannelPut(dbChannel *chan, short type, const void *pbuffer, long nRequest); epicsShareFunc long dbChannelPutField(dbChannel *chan, short type, diff --git a/src/ioc/db/dbChannelIO.cpp b/src/ioc/db/dbChannelIO.cpp index 9bf9b0d52..e9afafb83 100644 --- a/src/ioc/db/dbChannelIO.cpp +++ b/src/ioc/db/dbChannelIO.cpp @@ -158,7 +158,7 @@ void dbChannelIO::show ( printf ( "\ttype %s, element count %li, field at %p\n", dbf_type_to_text ( dbChannelExportType ( this->dbch ) ), dbChannelElements ( this->dbch ), - dbChannelData ( this->dbch ) ); + dbChannelField ( this->dbch ) ); if ( level > 1u ) { dbChannelFilterShow ( this->dbch, level - 2u ); this->serviceIO.show ( level - 2u ); diff --git a/src/ioc/db/dbEvent.c b/src/ioc/db/dbEvent.c index d53a2e4f2..2280309a8 100644 --- a/src/ioc/db/dbEvent.c +++ b/src/ioc/db/dbEvent.c @@ -730,8 +730,8 @@ static void db_post_single_event_private (struct evSubscrip *event) * address */ memcpy(& pLog->field, - dbChannelData(chan), - dbChannelElementSize(chan)); + dbChannelField(chan), + dbChannelElementSize(chan)); event->pLastLog = pLog; } @@ -778,7 +778,7 @@ unsigned int caEventMask * Only send event msg if they are waiting on the field which * changed or pval==NULL and waiting on alarms and alarms changed */ - if ( (dbChannelData(event->chan) == (void *)pField || pField==NULL) && + if ( (dbChannelField(event->chan) == (void *)pField || pField==NULL) && (caEventMask & event->select) ) { db_post_single_event_private (event); } diff --git a/src/ioc/db/db_access.c b/src/ioc/db/db_access.c index b705e0b35..a0e4fb7b7 100644 --- a/src/ioc/db/db_access.c +++ b/src/ioc/db/db_access.c @@ -168,7 +168,7 @@ int epicsShareAPI dbChannel_get_count( switch(buffer_type) { case(oldDBR_STRING): - status = dbGetField(paddr, DBR_STRING, pbuffer, &zero, nRequest, pfl); + status = dbChannelGetField(chan, DBR_STRING, pbuffer, &zero, nRequest, pfl); break; /* case(oldDBR_INT): */ case(oldDBR_SHORT): @@ -295,7 +295,7 @@ int epicsShareAPI dbChannel_get_count( pold->status = newSt.status; pold->severity = newSt.severity; options = 0; - status = dbGetField(paddr, DBR_DOUBLE, &pold->value, &options, + status = dbChannelGetField(chan, DBR_DOUBLE, &pold->value, &options, nRequest, pfl); } break; @@ -333,7 +333,7 @@ int epicsShareAPI dbChannel_get_count( pold->severity = newSt.severity; pold->stamp = newSt.time; /* structure copy */ options = 0; - status = dbGetField(paddr, DBR_SHORT, &pold->value, &options, + status = dbChannelGetField(chan, DBR_SHORT, &pold->value, &options, nRequest, pfl); } break; @@ -351,7 +351,7 @@ int epicsShareAPI dbChannel_get_count( pold->severity = newSt.severity; pold->stamp = newSt.time; /* structure copy */ options = 0; - status = dbGetField(paddr, DBR_FLOAT, &pold->value, &options, + status = dbChannelGetField(chan, DBR_FLOAT, &pold->value, &options, nRequest, pfl); } break; @@ -369,7 +369,7 @@ int epicsShareAPI dbChannel_get_count( pold->severity = newSt.severity; pold->stamp = newSt.time; /* structure copy */ options = 0; - status = dbGetField(paddr, DBR_ENUM, &pold->value, &options, + status = dbChannelGetField(chan, DBR_ENUM, &pold->value, &options, nRequest, pfl); } break; @@ -387,7 +387,7 @@ int epicsShareAPI dbChannel_get_count( pold->severity = newSt.severity; pold->stamp = newSt.time; /* structure copy */ options = 0; - status = dbGetField(paddr, DBR_CHAR, &pold->value, &options, + status = dbChannelGetField(chan, DBR_CHAR, &pold->value, &options, nRequest, pfl); } break; @@ -405,7 +405,7 @@ int epicsShareAPI dbChannel_get_count( pold->severity = newSt.severity; pold->stamp = newSt.time; /* structure copy */ options = 0; - status = dbGetField(paddr, DBR_LONG, &pold->value, &options, + status = dbChannelGetField(chan, DBR_LONG, &pold->value, &options, nRequest, pfl); } break; @@ -423,7 +423,7 @@ int epicsShareAPI dbChannel_get_count( pold->severity = newSt.severity; pold->stamp = newSt.time; /* structure copy */ options = 0; - status = dbGetField(paddr, DBR_DOUBLE, &pold->value, &options, + status = dbChannelGetField(chan, DBR_DOUBLE, &pold->value, &options, nRequest, pfl); } break; @@ -453,7 +453,7 @@ int epicsShareAPI dbChannel_get_count( pold->lower_warning_limit = newSt.lower_warning_limit; pold->lower_alarm_limit = newSt.lower_alarm_limit; options = 0; - status = dbGetField(paddr, DBR_SHORT, &pold->value, &options, + status = dbChannelGetField(chan, DBR_SHORT, &pold->value, &options, nRequest, pfl); } break; @@ -483,7 +483,7 @@ int epicsShareAPI dbChannel_get_count( pold->upper_warning_limit = epicsConvertDoubleToFloat(newSt.upper_warning_limit); pold->lower_warning_limit = epicsConvertDoubleToFloat(newSt.lower_warning_limit); options = 0; - status = dbGetField(paddr, DBR_FLOAT, &pold->value, &options, + status = dbChannelGetField(chan, DBR_FLOAT, &pold->value, &options, nRequest, pfl); } break; @@ -511,7 +511,7 @@ int epicsShareAPI dbChannel_get_count( pold->lower_warning_limit = newSt.lower_warning_limit; pold->lower_alarm_limit = newSt.lower_alarm_limit; options = 0; - status = dbGetField(paddr, DBR_UCHAR, &pold->value, &options, + status = dbChannelGetField(chan, DBR_UCHAR, &pold->value, &options, nRequest, pfl); } break; @@ -538,7 +538,7 @@ int epicsShareAPI dbChannel_get_count( pold->lower_warning_limit = newSt.lower_warning_limit; pold->lower_alarm_limit = newSt.lower_alarm_limit; options = 0; - status = dbGetField(paddr, DBR_LONG, &pold->value, &options, + status = dbChannelGetField(chan, DBR_LONG, &pold->value, &options, nRequest, pfl); } break; @@ -568,7 +568,7 @@ int epicsShareAPI dbChannel_get_count( pold->lower_warning_limit = newSt.lower_warning_limit; pold->lower_alarm_limit = newSt.lower_alarm_limit; options = 0; - status = dbGetField(paddr, DBR_DOUBLE, &pold->value, &options, + status = dbChannelGetField(chan, DBR_DOUBLE, &pold->value, &options, nRequest, pfl); } break; @@ -601,7 +601,7 @@ int epicsShareAPI dbChannel_get_count( pold->upper_ctrl_limit = newSt.upper_ctrl_limit; pold->lower_ctrl_limit = newSt.lower_ctrl_limit; options = 0; - status = dbGetField(paddr, DBR_SHORT, &pold->value, &options, + status = dbChannelGetField(chan, DBR_SHORT, &pold->value, &options, nRequest, pfl); } break; @@ -634,7 +634,7 @@ int epicsShareAPI dbChannel_get_count( pold->upper_ctrl_limit = epicsConvertDoubleToFloat(newSt.upper_ctrl_limit); pold->lower_ctrl_limit = epicsConvertDoubleToFloat(newSt.lower_ctrl_limit); options = 0; - status = dbGetField(paddr, DBR_FLOAT, &pold->value, &options, + status = dbChannelGetField(chan, DBR_FLOAT, &pold->value, &options, nRequest, pfl); } break; @@ -661,7 +661,7 @@ int epicsShareAPI dbChannel_get_count( strncpy(pold->strs[i], newSt.strs[i], sizeof(pold->strs[i])); /*now get values*/ options = 0; - status = dbGetField(paddr, DBR_ENUM, &pold->value, &options, + status = dbChannelGetField(chan, DBR_ENUM, &pold->value, &options, nRequest, pfl); } break; @@ -692,7 +692,7 @@ int epicsShareAPI dbChannel_get_count( pold->upper_ctrl_limit = newSt.upper_ctrl_limit; pold->lower_ctrl_limit = newSt.lower_ctrl_limit; options = 0; - status = dbGetField(paddr, DBR_UCHAR, &pold->value, &options, + status = dbChannelGetField(chan, DBR_UCHAR, &pold->value, &options, nRequest, pfl); } break; @@ -723,7 +723,7 @@ int epicsShareAPI dbChannel_get_count( pold->upper_ctrl_limit = newSt.upper_ctrl_limit; pold->lower_ctrl_limit = newSt.lower_ctrl_limit; options = 0; - status = dbGetField(paddr, DBR_LONG, &pold->value, &options, + status = dbChannelGetField(chan, DBR_LONG, &pold->value, &options, nRequest, pfl); } break; @@ -756,7 +756,7 @@ int epicsShareAPI dbChannel_get_count( pold->upper_ctrl_limit = newSt.upper_ctrl_limit; pold->lower_ctrl_limit = newSt.lower_ctrl_limit; options = 0; - status = dbGetField(paddr, DBR_DOUBLE, &pold->value, &options, + status = dbChannelGetField(chan, DBR_DOUBLE, &pold->value, &options, nRequest, pfl); } break; @@ -775,7 +775,7 @@ int epicsShareAPI dbChannel_get_count( pold->ackt = newSt.ackt; pold->acks = newSt.acks; options = 0; - status = dbGetField(paddr, DBR_STRING, pold->value, + status = dbChannelGetField(chan, DBR_STRING, pold->value, &options, nRequest, pfl); } break; @@ -791,7 +791,7 @@ int epicsShareAPI dbChannel_get_count( break; } dbInitEntry(pdbbase, &dbEntry); - status = dbFindRecord(&dbEntry, paddr->precord->name); + status = dbFindRecord(&dbEntry, dbChannelRecord(chan)->name); if (!status) name = dbGetRecordTypeName(&dbEntry); dbFinishEntry(&dbEntry); if (status) break; @@ -813,160 +813,159 @@ int epicsShareAPI dbChannel_get_count( int dbChannel_put(struct dbChannel *chan, int src_type, const void *psrc, long no_elements) { - dbAddr *paddr = & chan->addr; long status; switch (src_type) { case(oldDBR_STRING): - status = dbPutField(paddr, DBR_STRING, psrc, no_elements); + status = dbChannelPutField(chan, DBR_STRING, psrc, no_elements); break; /* case(oldDBR_INT): */ case(oldDBR_SHORT): - status = dbPutField(paddr, DBR_SHORT, psrc, no_elements); + status = dbChannelPutField(chan, DBR_SHORT, psrc, no_elements); break; case(oldDBR_FLOAT): - status = dbPutField(paddr, DBR_FLOAT, psrc, no_elements); + status = dbChannelPutField(chan, DBR_FLOAT, psrc, no_elements); break; case(oldDBR_ENUM): - status = dbPutField(paddr, DBR_ENUM, psrc, no_elements); + status = dbChannelPutField(chan, DBR_ENUM, psrc, no_elements); break; case(oldDBR_CHAR): - status = dbPutField(paddr, DBR_UCHAR, psrc, no_elements); + status = dbChannelPutField(chan, DBR_UCHAR, psrc, no_elements); break; case(oldDBR_LONG): - status = dbPutField(paddr, DBR_LONG, psrc, no_elements); + status = dbChannelPutField(chan, DBR_LONG, psrc, no_elements); break; case(oldDBR_DOUBLE): - status = dbPutField(paddr, DBR_DOUBLE, psrc, no_elements); + status = dbChannelPutField(chan, DBR_DOUBLE, psrc, no_elements); break; case(oldDBR_STS_STRING): - status = dbPutField(paddr, DBR_STRING, + status = dbChannelPutField(chan, DBR_STRING, ((const struct dbr_sts_string *)psrc)->value, no_elements); break; /* case(oldDBR_STS_INT): */ case(oldDBR_STS_SHORT): - status = dbPutField(paddr, DBR_SHORT, + status = dbChannelPutField(chan, DBR_SHORT, &((const struct dbr_sts_short *)psrc)->value, no_elements); break; case(oldDBR_STS_FLOAT): - status = dbPutField(paddr, DBR_FLOAT, + status = dbChannelPutField(chan, DBR_FLOAT, &((const struct dbr_sts_float *)psrc)->value, no_elements); break; case(oldDBR_STS_ENUM): - status = dbPutField(paddr, DBR_ENUM, + status = dbChannelPutField(chan, DBR_ENUM, &((const struct dbr_sts_enum *)psrc)->value, no_elements); break; case(oldDBR_STS_CHAR): - status = dbPutField(paddr, DBR_UCHAR, + status = dbChannelPutField(chan, DBR_UCHAR, &((const struct dbr_sts_char *)psrc)->value, no_elements); break; case(oldDBR_STS_LONG): - status = dbPutField(paddr, DBR_LONG, + status = dbChannelPutField(chan, DBR_LONG, &((const struct dbr_sts_long *)psrc)->value, no_elements); break; case(oldDBR_STS_DOUBLE): - status = dbPutField(paddr, DBR_DOUBLE, + status = dbChannelPutField(chan, DBR_DOUBLE, &((const struct dbr_sts_double *)psrc)->value, no_elements); break; case(oldDBR_TIME_STRING): - status = dbPutField(paddr, DBR_TIME, + status = dbChannelPutField(chan, DBR_TIME, ((const struct dbr_time_string *)psrc)->value, no_elements); break; /* case(oldDBR_TIME_INT): */ case(oldDBR_TIME_SHORT): - status = dbPutField(paddr, DBR_SHORT, + status = dbChannelPutField(chan, DBR_SHORT, &((const struct dbr_time_short *)psrc)->value, no_elements); break; case(oldDBR_TIME_FLOAT): - status = dbPutField(paddr, DBR_FLOAT, + status = dbChannelPutField(chan, DBR_FLOAT, &((const struct dbr_time_float *)psrc)->value, no_elements); break; case(oldDBR_TIME_ENUM): - status = dbPutField(paddr, DBR_ENUM, + status = dbChannelPutField(chan, DBR_ENUM, &((const struct dbr_time_enum *)psrc)->value, no_elements); break; case(oldDBR_TIME_CHAR): - status = dbPutField(paddr, DBR_UCHAR, + status = dbChannelPutField(chan, DBR_UCHAR, &((const struct dbr_time_char *)psrc)->value, no_elements); break; case(oldDBR_TIME_LONG): - status = dbPutField(paddr, DBR_LONG, + status = dbChannelPutField(chan, DBR_LONG, &((const struct dbr_time_long *)psrc)->value, no_elements); break; case(oldDBR_TIME_DOUBLE): - status = dbPutField(paddr, DBR_DOUBLE, + status = dbChannelPutField(chan, DBR_DOUBLE, &((const struct dbr_time_double *)psrc)->value, no_elements); break; case(oldDBR_GR_STRING): /* no struct dbr_gr_string - use dbr_sts_string instead */ - status = dbPutField(paddr, DBR_STRING, + status = dbChannelPutField(chan, DBR_STRING, ((const struct dbr_sts_string *)psrc)->value, no_elements); break; /* case(oldDBR_GR_INT): */ case(oldDBR_GR_SHORT): - status = dbPutField(paddr, DBR_SHORT, + status = dbChannelPutField(chan, DBR_SHORT, &((const struct dbr_gr_short *)psrc)->value, no_elements); break; case(oldDBR_GR_FLOAT): - status = dbPutField(paddr, DBR_FLOAT, + status = dbChannelPutField(chan, DBR_FLOAT, &((const struct dbr_gr_float *)psrc)->value, no_elements); break; case(oldDBR_GR_ENUM): - status = dbPutField(paddr, DBR_ENUM, + status = dbChannelPutField(chan, DBR_ENUM, &((const struct dbr_gr_enum *)psrc)->value, no_elements); break; case(oldDBR_GR_CHAR): - status = dbPutField(paddr, DBR_UCHAR, + status = dbChannelPutField(chan, DBR_UCHAR, &((const struct dbr_gr_char *)psrc)->value, no_elements); break; case(oldDBR_GR_LONG): - status = dbPutField(paddr, DBR_LONG, + status = dbChannelPutField(chan, DBR_LONG, &((const struct dbr_gr_long *)psrc)->value, no_elements); break; case(oldDBR_GR_DOUBLE): - status = dbPutField(paddr, DBR_DOUBLE, + status = dbChannelPutField(chan, DBR_DOUBLE, &((const struct dbr_gr_double *)psrc)->value, no_elements); break; case(oldDBR_CTRL_STRING): /* no struct dbr_ctrl_string - use dbr_sts_string instead */ - status = dbPutField(paddr, DBR_STRING, + status = dbChannelPutField(chan, DBR_STRING, ((const struct dbr_sts_string *)psrc)->value, no_elements); break; /* case(oldDBR_CTRL_INT): */ case(oldDBR_CTRL_SHORT): - status = dbPutField(paddr, DBR_SHORT, + status = dbChannelPutField(chan, DBR_SHORT, &((const struct dbr_ctrl_short *)psrc)->value, no_elements); break; case(oldDBR_CTRL_FLOAT): - status = dbPutField(paddr, DBR_FLOAT, + status = dbChannelPutField(chan, DBR_FLOAT, &((const struct dbr_ctrl_float *)psrc)->value, no_elements); break; case(oldDBR_CTRL_ENUM): - status = dbPutField(paddr, DBR_ENUM, + status = dbChannelPutField(chan, DBR_ENUM, &((const struct dbr_ctrl_enum *)psrc)->value, no_elements); break; case(oldDBR_CTRL_CHAR): - status = dbPutField(paddr, DBR_UCHAR, + status = dbChannelPutField(chan, DBR_UCHAR, &((const struct dbr_ctrl_char *)psrc)->value, no_elements); break; case(oldDBR_CTRL_LONG): - status = dbPutField(paddr, DBR_LONG, + status = dbChannelPutField(chan, DBR_LONG, &((const struct dbr_ctrl_long *)psrc)->value, no_elements); break; case(oldDBR_CTRL_DOUBLE): - status = dbPutField(paddr, DBR_DOUBLE, + status = dbChannelPutField(chan, DBR_DOUBLE, &((const struct dbr_ctrl_double *)psrc)->value, no_elements); break; case(oldDBR_PUT_ACKT): - status = dbPutField(paddr, DBR_PUT_ACKT, psrc, no_elements); + status = dbChannelPutField(chan, DBR_PUT_ACKT, psrc, no_elements); break; case(oldDBR_PUT_ACKS): - status = dbPutField(paddr, DBR_PUT_ACKS, psrc, no_elements); + status = dbChannelPutField(chan, DBR_PUT_ACKS, psrc, no_elements); break; default: diff --git a/src/ioc/db/db_test.c b/src/ioc/db/db_test.c index 57c325907..352d0b285 100644 --- a/src/ioc/db/db_test.c +++ b/src/ioc/db/db_test.c @@ -53,7 +53,7 @@ int gft(char *pname) printf(" Record Name: %s\n", precord->name); printf("Record Address: 0x%p\n", precord); printf(" Export Type: %d\n", type); - printf(" Field Address: 0x%p\n", dbChannelData(chan)); + printf(" Field Address: 0x%p\n", dbChannelField(chan)); printf(" Field Size: %d\n", dbChannelElementSize(chan)); printf(" No Elements: %ld\n", elements); @@ -107,7 +107,7 @@ int epicsShareAPI pft(char *pname, char *pvalue) printf(" Record Name: %s\n", precord->name); printf("Record Address: 0x%p\n", precord); printf(" Export Type: %d\n", type); - printf(" Field Address: 0x%p\n", dbChannelData(chan)); + printf(" Field Address: 0x%p\n", dbChannelField(chan)); printf(" Field Size: %d\n", dbChannelElementSize(chan)); printf(" No Elements: %ld\n", elements);