static long readData (dbCommon *record, format_t *format) { scalcoutRecord *sco = (scalcoutRecord *) record; switch (format->type) { case DBF_DOUBLE: { return streamScanf (record, format, &sco->val); } case DBF_LONG: case DBF_ENUM: { long lval; if (streamScanf (record, format, &lval)) return ERROR; sco->val = lval; return OK; } case DBF_STRING: { return (streamScanfN (record, format, sco->sval, sizeof(sco->val))); } } return ERROR; }
static long readData (dbCommon *record, format_t *format) { stringinRecord *si = (stringinRecord *) record; if (format->type == DBF_STRING) { return streamScanfN (record, format, si->val, sizeof(si->val)); } return ERROR; }
static long readData (dbCommon *record, format_t *format) { mbboRecord *mbbo = (mbboRecord *) record; long val; int i; switch (format->type) { case DBF_LONG: { if (streamScanf (record, format, &val)) return ERROR; /* read VAL or RBV? Look if any value is defined */ if (mbbo->sdef) for (i=0; i<16; i++) { if ((&mbbo->zrvl)[i]) { if (mbbo->mask) val &= mbbo->mask; mbbo->rbv = val; if (INIT_RUN) mbbo->rval = val; return OK; } } mbbo->val = (short)val; return DO_NOT_CONVERT; } case DBF_ENUM: { if (streamScanf (record, format, &val)) return ERROR; mbbo->val = (short)val; return DO_NOT_CONVERT; } case DBF_STRING: { char buffer[sizeof(mbbo->zrst)]; if (streamScanfN (record, format, buffer, sizeof(buffer))) return ERROR; for (val = 0; val < 16; val++) { if (strcmp ((&mbbo->zrst)[val], buffer) == 0) { mbbo->val = (short)val; return DO_NOT_CONVERT; } } } } return ERROR; }
static long readData(dbCommon *record, format_t *format) { lsiRecord *lsi = (lsiRecord *)record; ssize_t length; if (format->type != DBF_STRING) return ERROR; if ((length = streamScanfN(record, format, lsi->val, (long)lsi->sizv)) == ERROR) { return ERROR; } if (length < (ssize_t)lsi->sizv) { lsi->val[length] = 0; } lsi->len = length; return OK; }
static long readData(dbCommon *record, format_t *format) { biRecord *bi = (biRecord *)record; unsigned long val; switch (format->type) { case DBF_ULONG: case DBF_LONG: { if (streamScanf(record, format, &val) == ERROR) return ERROR; if (bi->mask) val &= bi->mask; bi->rval = val; return OK; } case DBF_ENUM: { if (streamScanf(record, format, &val) == ERROR) return ERROR; bi->val = (val != 0); return DO_NOT_CONVERT; } case DBF_STRING: { char buffer[sizeof(bi->znam)]; if (streamScanfN(record, format, buffer, sizeof(buffer)) == ERROR) return ERROR; if (strcmp (bi->znam, buffer) == 0) { bi->val = 0; return DO_NOT_CONVERT; } if (strcmp (bi->onam, buffer) == 0) { bi->val = 1; return DO_NOT_CONVERT; } } } return ERROR; }
static long readData (dbCommon *record, format_t *format) { waveformRecord *wf = (waveformRecord *) record; double dval; long lval; wf->rarm = 0; for (wf->nord = 0; wf->nord < wf->nelm; wf->nord++) { switch (format->type) { case DBF_DOUBLE: { if (streamScanf (record, format, &dval) != OK) { return wf->nord ? OK : ERROR; } switch (wf->ftvl) { case DBF_DOUBLE: ((epicsFloat64 *)wf->bptr)[wf->nord] = (epicsFloat64)dval; break; case DBF_FLOAT: ((epicsFloat32 *)wf->bptr)[wf->nord] = (epicsFloat32)dval; break; default: errlogSevPrintf (errlogFatal, "readData %s: can't convert from double to %s\n", record->name, pamapdbfType[wf->ftvl].strvalue); return ERROR; } break; } case DBF_LONG: case DBF_ENUM: { if (streamScanf (record, format, &lval) != OK) { return wf->nord ? OK : ERROR; } switch (wf->ftvl) { case DBF_DOUBLE: ((epicsFloat64 *)wf->bptr)[wf->nord] = (epicsFloat64)lval; break; case DBF_FLOAT: ((epicsFloat32 *)wf->bptr)[wf->nord] = (epicsFloat32)lval; break; case DBF_LONG: case DBF_ULONG: ((epicsInt32 *)wf->bptr)[wf->nord] = (epicsInt32)lval; break; case DBF_SHORT: case DBF_USHORT: case DBF_ENUM: ((epicsInt16 *)wf->bptr)[wf->nord] = (epicsInt16)lval; break; case DBF_CHAR: case DBF_UCHAR: ((epicsInt8 *)wf->bptr)[wf->nord] = (epicsInt8)lval; break; default: errlogSevPrintf (errlogFatal, "readData %s: can't convert from long to %s\n", record->name, pamapdbfType[wf->ftvl].strvalue); return ERROR; } break; } case DBF_STRING: { switch (wf->ftvl) { case DBF_STRING: if (streamScanfN (record, format, (char *)wf->bptr + wf->nord * MAX_STRING_SIZE, MAX_STRING_SIZE) != OK) { return wf->nord ? OK : ERROR; } break; case DBF_CHAR: case DBF_UCHAR: memset (wf->bptr, 0, wf->nelm); wf->nord = 0; if (streamScanfN (record, format, (char *)wf->bptr, wf->nelm) != OK) { return ERROR; } ((char*)wf->bptr)[wf->nelm] = 0; for (lval = wf->nelm; lval >= 0 && ((char*)wf->bptr)[lval] == 0; lval--); wf->nord = lval+1; return OK; default: errlogSevPrintf (errlogFatal, "readData %s: can't convert from string to %s\n", record->name, pamapdbfType[wf->ftvl].strvalue); return ERROR; } break; } default: { errlogSevPrintf (errlogMajor, "readData %s: can't convert from %s to %s\n", record->name, pamapdbfType[format->type].strvalue, pamapdbfType[wf->ftvl].strvalue); return ERROR; } } } return OK; }