diff --git a/modules/database/src/std/rec/mbbiDirectRecord.c b/modules/database/src/std/rec/mbbiDirectRecord.c index afb59c83f..779b732d4 100644 --- a/modules/database/src/std/rec/mbbiDirectRecord.c +++ b/modules/database/src/std/rec/mbbiDirectRecord.c @@ -51,7 +51,7 @@ static long special(DBADDR *, int); #define get_array_info NULL #define put_array_info NULL #define get_units NULL -#define get_precision NULL +static long get_precision(const DBADDR *, long *); #define get_enum_str NULL #define get_enum_strs NULL #define put_enum_str NULL @@ -204,6 +204,16 @@ static long special(DBADDR *paddr, int after) } } +static long get_precision(const DBADDR *paddr,long *precision) +{ + mbbiDirectRecord *prec=(mbbiDirectRecord *)paddr->precord; + if(dbGetFieldIndex(paddr)==mbbiDirectRecordVAL) + *precision = prec->nobt; + else + recGblGetPrec(paddr,precision); + return 0; +} + static void monitor(mbbiDirectRecord *prec) { epicsUInt16 events = recGblResetAlarms(prec); diff --git a/modules/database/src/std/rec/mbboDirectRecord.c b/modules/database/src/std/rec/mbboDirectRecord.c index 9260fbda1..dcc2b3c33 100644 --- a/modules/database/src/std/rec/mbboDirectRecord.c +++ b/modules/database/src/std/rec/mbboDirectRecord.c @@ -51,7 +51,7 @@ static long special(DBADDR *, int); #define get_array_info NULL #define put_array_info NULL #define get_units NULL -#define get_precision NULL +static long get_precision(const DBADDR *, long *); #define get_enum_str NULL #define get_enum_strs NULL #define put_enum_str NULL @@ -313,6 +313,16 @@ static long special(DBADDR *paddr, int after) return 0; } +static long get_precision(const DBADDR *paddr,long *precision) +{ + mbboDirectRecord *prec=(mbboDirectRecord *)paddr->precord; + if(dbGetFieldIndex(paddr)==mbboDirectRecordVAL) + *precision = prec->nobt; + else + recGblGetPrec(paddr,precision); + return 0; +} + static void monitor(mbboDirectRecord *prec) { epicsUInt16 events = recGblResetAlarms(prec);