Replaced dbr_value_size with dbrValueSize in dbAccess

This commit is contained in:
Janet B. Anderson
1992-03-10 10:07:59 +00:00
parent 4a5a562049
commit ad12130ee2
+42 -21
View File
@@ -37,6 +37,7 @@
* Fixed bug in special processing of SPC_MOD (100)
* .07 12-02-91 jba Writing to PROC will always force record process
* .08 02-05-92 jba Changed function arguments from paddr to precord
* .09 03-02-92 jba Added function dbrValueSize to replace db_value_size
*/
/* This is a major revision of the original implementation of database access.*/
@@ -98,15 +99,21 @@
* long options;
* long no_elements;
* returns: number of bytes as a long
*
* dbrValueSize(dbr_type)
* short dbr_type;
* returns: sizeof DBR request type as a long
*/
#include <vxWorks.h>
#include <types.h>
#include <memLib.h>
#include <stdarg.h>
#include <fioLib.h>
#include <strLib.h>
#include <stdioLib.h>
#include <string.h>
#include <taskLib.h>
#include <vxLib.h>
#include <tickLib.h>
#include <fast_lock.h>
#include <alarm.h>
@@ -318,7 +325,7 @@ long dbNameToAddr(pname,paddr)
}
*precName = 0;
if (pvdGetRec(&recName[0],&(paddr->record_type),&record_number) < 0){
(long)(paddr->precord) = -1;
paddr->precord = (void *)-1;
paddr->record_type = -1;
return(S_db_notFound);
}
@@ -332,7 +339,7 @@ long dbNameToAddr(pname,paddr)
}
if (!(pfldDes=pvdGetFld(paddr->record_type,pfieldName))){
paddr->field_type = -1;
(long)(paddr->pfield) = -1;
paddr->pfield = (void *)-1;
paddr->field_size = -1;
return(S_db_notFound);
}
@@ -438,6 +445,26 @@ long dbPutField(
dbScanUnlock(paddr->precord);
return(status);
}
long dbrValueSize(
short dbr_type
)
{
/* sizes for value associated with each DBR request type */
static long size[] = {
MAX_STRING_SIZE, /* STRING */
sizeof(char), /* CHAR */
sizeof(unsigned char), /* UCHAR */
sizeof(short), /* SHORT */
sizeof(unsigned short), /* USHORT */
sizeof(long), /* LONG */
sizeof(unsigned long), /* ULONG */
sizeof(float), /* FLOAT */
sizeof(double), /* DOUBLE */
sizeof(unsigned short)}; /* ENUM */
return(size[dbr_type]);
}
long dbBufferSize(
short dbr_type,
@@ -447,7 +474,7 @@ long dbBufferSize(
{
long nbytes=0;
nbytes += dbr_value_size[dbr_type] * no_elements;
nbytes += dbrValueSize(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;
@@ -3016,7 +3043,7 @@ void *pflin
if( prset && prset->get_units ){
(*prset->get_units)(paddr,pbuffer);
} else {
bzero(pbuffer,dbr_units_size);
memset(pbuffer,'\0',dbr_units_size);
*options = (*options) ^ DBR_UNITS; /*Turn off DBR_UNITS*/
}
pbuffer += dbr_units_size;
@@ -3029,7 +3056,7 @@ void *pflin
if(pdbr_precision->field_width<=0)
pdbr_precision->field_width = pdbr_precision->precision + 5;
} else {
bzero(pbuffer,dbr_precision_size);
memset(pbuffer,'\0',dbr_precision_size);
*options = (*options) ^ DBR_PRECISION; /*Turn off DBR_PRECISION*/
}
pbuffer += dbr_precision_size;
@@ -3083,7 +3110,7 @@ GET_DATA:
if(pfl!=NULL) {
struct dbAddr localAddr;
bcopy(paddr,&localAddr,sizeof(localAddr));
memcpy(&localAddr,paddr,sizeof(localAddr));
/*Use longest field size*/
localAddr.pfield = (char *)&pfl->field;
status=(*pconvert_routine)(&localAddr,pbuffer,*nRequest,
@@ -3112,7 +3139,7 @@ long *options;
struct dbr_enumStrs *pdbr_enumStrs=(struct dbr_enumStrs*)(*ppbuffer);
int i;
bzero(pdbr_enumStrs,dbr_enumStrs_size);
memset(pdbr_enumStrs,'\0',dbr_enumStrs_size);
switch(field_type) {
case DBF_ENUM:
if( prset && prset->get_enum_strs ) {
@@ -3185,10 +3212,8 @@ char **ppbuffer;
struct rset *prset;
long *options;
{
short field_type=paddr->field_type;
struct dbr_grDouble grd;
int got_data=FALSE;
long ltemp;/*vxWorks does not support double to unsigned long*/
if( prset && prset->get_graphic_double ) {
(*prset->get_graphic_double)(paddr,&grd);
@@ -3202,7 +3227,7 @@ long *options;
pgr->upper_disp_limit = grd.upper_disp_limit;
pgr->lower_disp_limit = grd.lower_disp_limit;
} else {
bzero(pbuffer,dbr_grLong_size);
memset(pbuffer,'\0',dbr_grLong_size);
*options = (*options) ^ DBR_GR_LONG; /*Turn off option*/
}
*ppbuffer += dbr_grLong_size;
@@ -3215,7 +3240,7 @@ long *options;
pgr->upper_disp_limit = grd.upper_disp_limit;
pgr->lower_disp_limit = grd.lower_disp_limit;
} else {
bzero(pbuffer,dbr_grDouble_size);
memset(pbuffer,'\0',dbr_grDouble_size);
*options = (*options) ^ DBR_GR_DOUBLE; /*Turn off option*/
}
*ppbuffer += dbr_grDouble_size;
@@ -3229,10 +3254,8 @@ char **ppbuffer;
struct rset *prset;
long *options;
{
short field_type=paddr->field_type;
struct dbr_ctrlDouble ctrld;
int got_data=FALSE;
long ltemp;/*vxWorks does not support double to unsigned long*/
if( prset && prset->get_control_double ) {
(*prset->get_control_double)(paddr,&ctrld);
@@ -3246,7 +3269,7 @@ long *options;
pctrl->upper_ctrl_limit = ctrld.upper_ctrl_limit;
pctrl->lower_ctrl_limit = ctrld.lower_ctrl_limit;
} else {
bzero(pbuffer,dbr_ctrlLong_size);
memset(pbuffer,'\0',dbr_ctrlLong_size);
*options = (*options) ^ DBR_CTRL_LONG; /*Turn off option*/
}
*ppbuffer += dbr_ctrlLong_size;
@@ -3259,7 +3282,7 @@ long *options;
pctrl->upper_ctrl_limit = ctrld.upper_ctrl_limit;
pctrl->lower_ctrl_limit = ctrld.lower_ctrl_limit;
} else {
bzero(pbuffer,dbr_ctrlDouble_size);
memset(pbuffer,'\0',dbr_ctrlDouble_size);
*options = (*options) ^ DBR_CTRL_DOUBLE; /*Turn off option*/
}
*ppbuffer += dbr_ctrlDouble_size;
@@ -3273,10 +3296,8 @@ char **ppbuffer;
struct rset *prset;
long *options;
{
short field_type=paddr->field_type;
struct dbr_alDouble ald;
int got_data=FALSE;
long ltemp;/*vxWorks does not support double to unsigned long*/
if( prset && prset->get_alarm_double ) {
(*prset->get_alarm_double)(paddr,&ald);
@@ -3292,7 +3313,7 @@ long *options;
pal->lower_warning_limit = ald.lower_warning_limit;
pal->lower_alarm_limit = ald.lower_alarm_limit;
} else {
bzero(pbuffer,dbr_alLong_size);
memset(pbuffer,'\0',dbr_alLong_size);
*options = (*options) ^ DBR_AL_LONG; /*Turn off option*/
}
*ppbuffer += dbr_alLong_size;
@@ -3307,7 +3328,7 @@ long *options;
pal->lower_warning_limit = ald.lower_warning_limit;
pal->lower_alarm_limit = ald.lower_alarm_limit;
} else {
bzero(pbuffer,dbr_alDouble_size);
memset(pbuffer,'\0',dbr_alDouble_size);
*options = (*options) ^ DBR_AL_DOUBLE; /*Turn off option*/
}
*ppbuffer += dbr_alDouble_size;