28 #include "dbCommonPvt.h" 37 static long do_nothing(
struct dbCommon *precord) {
return 0; }
49 pdevSup->
pdset = pdset;
54 pthisDevSup = pdevSup;
63 errlogPrintf(
"devExtend() called outside of dbInitDevSup()\n");
65 pthisDevSup->
pdsxt = pdsxt;
82 printf(
"\t*** Did you run x_RegisterRecordDeviceDriver(pdbbase) yet? ***\n");
83 epicsPrintf(
"dbAllocRecord(%s) with %s rec_size = 0\n",
84 precordName, pdbRecordType->
name);
86 }
else if(pdbRecordType->
rec_size<
sizeof(*precord)) {
87 printf(
"\t*** Recordtype %s must include \"dbCommon.dbd\"\n", pdbRecordType->
name);
88 epicsPrintf(
"dbAllocRecord(%s) with %s rec_size = %d\n",
89 precordName, pdbRecordType->
name, pdbRecordType->
rec_size);
93 precord = &ppvt->common;
94 ppvt->recnode = precnode;
95 precord->rdes = pdbRecordType;
99 epicsPrintf(
"dbAllocRecord pflddes for NAME not found\n");
103 assert(pflddes->
size ==
sizeof(precord->name));
104 if(strlen(precordName) >=
sizeof(precord->name)) {
105 epicsPrintf(
"dbAllocRecord: NAME(%s) too long\n",precordName);
108 strcpy(precord->name, precordName);
109 for(i=1; i<pdbRecordType->
no_fields; i++) {
112 if(!pflddes)
continue;
113 pfield = (
char*)precord + pflddes->
offset;
114 pdbentry->
pfield = (
void *)pfield;
124 strcpy(pfield,pflddes->
initial);
145 epicsPrintf(
"Error initializing %s.%s initial %s\n",
168 epicsPrintf(
"dbAllocRecord: Illegal field type\n");
182 free(dbRec2Pvt(precnode->
precord));
196 if(!precnode->
precord)
return(0);
208 if(!pdbRecordType)
return(0);
209 if(!precnode)
return(0);
210 if(!precnode->
precord)
return(0);
211 precord = (
char *)precnode->
precord;
213 if(!pflddes)
return(
NULL);
214 return(precord + pflddes->
offset);
222 void *pfield = pdbentry->
pfield;
224 if (!pflddes || !pfield)
229 char *p = (
char *)pfield;
356 epicsPrintf(
"dbIsDefaultValue: pdbRecordType is NULL??\n");
364 struct link *plink = (
struct link *)pfield;
386 void *pfield = pdbentry->
pfield;
395 if (pstring[0] ==
'\0')
486 if (value > index && index > 0 && value < USHRT_MAX)
504 void *pfield = pdbentry->
pfield;
506 if (!pflddes || !pfield)
514 epicsPrintf(
"dbGetMenuIndex: Called for field type %d\n",
536 if (index < 0 || index >= pdbMenu->
nChoice)
548 if (index < 0 || index >= pdbDeviceMenu->
nChoice)
dbDeviceMenu * dbGetDeviceMenu(DBENTRY *pdbentry)
epicsExportAddress(int, dbConvertStrict)
#define S_dbLib_recNotFound
long dbGetFieldAddress(DBENTRY *pdbentry)
#define assert(exp)
Declare that a condition should be true.
#define ellCount(PLIST)
Report the number of nodes in a list.
dbRecordType * precordType
void devExtend(dsxt *pdsxt)
LIBCOM_API int epicsParseInt64(const char *str, epicsInt64 *to, int base, char **units)
unsigned short epicsUInt16
#define S_dbLib_flddesNotFound
LIBCOM_API int epicsParseInt8(const char *str, epicsInt8 *to, int base, char **units)
int dbGetMenuIndexFromString(DBENTRY *pdbentry, const char *choice)
int dbIsMacroOk(DBENTRY *pdbentry)
Miscellaneous macro definitions.
LIBCOM_API int epicsParseUInt8(const char *str, epicsUInt8 *to, int base, char **units)
unsigned long long epicsUInt64
void dbInitDevSup(devSup *pdevSup, dset *pdset)
A doubly-linked list library.
int dbGetNMenuChoices(DBENTRY *pdbentry)
LIBCOM_API int epicsParseUInt64(const char *str, epicsUInt64 *to, int base, char **units)
long dbAllocRecord(DBENTRY *pdbentry, const char *precordName)
int errlogPrintf(const char *pFormat,...)
#define epicsParseFloat32(str, to, units)
LIBCOM_API int epicsParseInt32(const char *str, epicsInt32 *to, int base, char **units)
long dbPutStringNum(DBENTRY *pdbentry, const char *pstring)
long dbFreeRecord(DBENTRY *pdbentry)
#define dbCalloc(nobj, size)
LIBCOM_API int epicsParseUInt32(const char *str, epicsUInt32 *to, int base, char **units)
char * dbRecordName(DBENTRY *pdbentry)
LIBCOM_API int epicsParseInt16(const char *str, epicsInt16 *to, int base, char **units)
#define S_dbLib_menuNotFound
epicsShareFunc int dbGetMenuIndex(DBENTRY *pdbentry)
LIBCOM_API int epicsParseUInt16(const char *str, epicsUInt16 *to, int base, char **units)
long dbPutString(DBENTRY *pdbentry, const char *pstring)
#define S_dbLib_fieldNotFound
#define S_dbLib_nameLength
epicsShareFunc int dbIsDefaultValue(DBENTRY *pdbentry)
epicsShareFunc long dbPutMenuIndex(DBENTRY *pdbentry, int index)
#define S_dbLib_recordTypeNotFound
#define epicsParseFloat64(str, to, units)