handle new 64 bit data types
This commit is contained in:
@ -967,10 +967,11 @@ getFieldAddress(const char* fieldname, StreamBuffer& address)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const unsigned char dbfMapping[] =
|
static const unsigned char dbfMapping[] =
|
||||||
|
#ifdef DBF_INT64
|
||||||
|
{0, DBF_UINT64, DBF_INT64, DBF_ENUM, DBF_DOUBLE, DBF_STRING};
|
||||||
|
#else
|
||||||
{0, DBF_ULONG, DBF_LONG, DBF_ENUM, DBF_DOUBLE, DBF_STRING};
|
{0, DBF_ULONG, DBF_LONG, DBF_ENUM, DBF_DOUBLE, DBF_STRING};
|
||||||
static const short typeSize[] =
|
#endif
|
||||||
{0, sizeof(epicsUInt32), sizeof(epicsInt32), sizeof(epicsUInt16),
|
|
||||||
sizeof(epicsFloat64), MAX_STRING_SIZE};
|
|
||||||
|
|
||||||
bool Stream::
|
bool Stream::
|
||||||
formatValue(const StreamFormat& format, const void* fieldaddress)
|
formatValue(const StreamFormat& format, const void* fieldaddress)
|
||||||
@ -1018,7 +1019,7 @@ formatValue(const StreamFormat& format, const void* fieldaddress)
|
|||||||
|
|
||||||
/* convert type to LONG, ENUM, DOUBLE, or STRING */
|
/* convert type to LONG, ENUM, DOUBLE, or STRING */
|
||||||
long nelem = pdbaddr->no_elements;
|
long nelem = pdbaddr->no_elements;
|
||||||
size_t size = nelem * typeSize[format.type];
|
size_t size = nelem * dbValueSize(fmt.type);
|
||||||
|
|
||||||
/* print (U)CHAR arrays as string */
|
/* print (U)CHAR arrays as string */
|
||||||
if (format.type == string_format &&
|
if (format.type == string_format &&
|
||||||
@ -1137,7 +1138,7 @@ matchValue(const StreamFormat& format, const void* fieldaddress)
|
|||||||
DBADDR* pdbaddr = (DBADDR*)fieldaddress;
|
DBADDR* pdbaddr = (DBADDR*)fieldaddress;
|
||||||
long nord;
|
long nord;
|
||||||
long nelem = pdbaddr->no_elements;
|
long nelem = pdbaddr->no_elements;
|
||||||
size_t size = nelem * typeSize[format.type];
|
size_t size = nelem * dbValueSize(fmt.type);
|
||||||
buffer = fieldBuffer.clear().reserve(size);
|
buffer = fieldBuffer.clear().reserve(size);
|
||||||
for (nord = 0; nord < nelem; nord++)
|
for (nord = 0; nord < nelem; nord++)
|
||||||
{
|
{
|
||||||
|
@ -73,6 +73,12 @@ static long readData (dbCommon *record, format_t *format)
|
|||||||
case DBF_FLOAT:
|
case DBF_FLOAT:
|
||||||
((epicsFloat32 *)aai->bptr)[aai->nord] = (epicsFloat32)lval;
|
((epicsFloat32 *)aai->bptr)[aai->nord] = (epicsFloat32)lval;
|
||||||
break;
|
break;
|
||||||
|
#ifdef DBF_INT64
|
||||||
|
case DBF_INT64:
|
||||||
|
case DBF_UINT64:
|
||||||
|
((epicsInt64 *)aai->bptr)[aai->nord] = (epicsInt64)lval;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case DBF_LONG:
|
case DBF_LONG:
|
||||||
case DBF_ULONG:
|
case DBF_ULONG:
|
||||||
((epicsInt32 *)aai->bptr)[aai->nord] = (epicsInt32)lval;
|
((epicsInt32 *)aai->bptr)[aai->nord] = (epicsInt32)lval;
|
||||||
@ -163,6 +169,14 @@ static long writeData (dbCommon *record, format_t *format)
|
|||||||
case DBF_FLOAT:
|
case DBF_FLOAT:
|
||||||
dval = ((epicsFloat32 *)aai->bptr)[nowd];
|
dval = ((epicsFloat32 *)aai->bptr)[nowd];
|
||||||
break;
|
break;
|
||||||
|
#ifdef DBF_INT64
|
||||||
|
case DBF_INT64:
|
||||||
|
dval = ((epicsInt64 *)aai->bptr)[nowd];
|
||||||
|
break;
|
||||||
|
case DBF_UINT64:
|
||||||
|
dval = ((epicsUInt64 *)aai->bptr)[nowd];
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case DBF_LONG:
|
case DBF_LONG:
|
||||||
dval = ((epicsInt32 *)aai->bptr)[nowd];
|
dval = ((epicsInt32 *)aai->bptr)[nowd];
|
||||||
break;
|
break;
|
||||||
@ -198,6 +212,14 @@ static long writeData (dbCommon *record, format_t *format)
|
|||||||
{
|
{
|
||||||
switch (aai->ftvl)
|
switch (aai->ftvl)
|
||||||
{
|
{
|
||||||
|
#ifdef DBF_INT64
|
||||||
|
case DBF_INT64:
|
||||||
|
lval = ((epicsInt64 *)aao->bptr)[nowd];
|
||||||
|
break;
|
||||||
|
case DBF_UINT64:
|
||||||
|
lval = ((epicsUInt64 *)aao->bptr)[nowd];
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case DBF_LONG:
|
case DBF_LONG:
|
||||||
lval = ((epicsInt32 *)aai->bptr)[nowd];
|
lval = ((epicsInt32 *)aai->bptr)[nowd];
|
||||||
break;
|
break;
|
||||||
@ -274,10 +296,9 @@ static long writeData (dbCommon *record, format_t *format)
|
|||||||
|
|
||||||
static long initRecord (dbCommon *record)
|
static long initRecord (dbCommon *record)
|
||||||
{
|
{
|
||||||
static const int typesize[] = {MAX_STRING_SIZE,1,1,2,2,4,4,4,8,2};
|
|
||||||
aaiRecord *aai = (aaiRecord *) record;
|
aaiRecord *aai = (aaiRecord *) record;
|
||||||
|
|
||||||
aai->bptr = calloc(aai->nelm, typesize[aai->ftvl]);
|
aai->bptr = calloc(aai->nelm, dbValueSize(aai->ftvl));
|
||||||
if (aai->bptr == NULL)
|
if (aai->bptr == NULL)
|
||||||
{
|
{
|
||||||
errlogSevPrintf (errlogFatal,
|
errlogSevPrintf (errlogFatal,
|
||||||
|
@ -73,6 +73,12 @@ static long readData (dbCommon *record, format_t *format)
|
|||||||
case DBF_FLOAT:
|
case DBF_FLOAT:
|
||||||
((epicsFloat32 *)aao->bptr)[aao->nord] = (epicsFloat32)lval;
|
((epicsFloat32 *)aao->bptr)[aao->nord] = (epicsFloat32)lval;
|
||||||
break;
|
break;
|
||||||
|
#ifdef DBF_INT64
|
||||||
|
case DBF_INT64:
|
||||||
|
case DBF_UINT64:
|
||||||
|
((epicsInt64 *)aao->bptr)[aao->nord] = (epicsInt64)lval;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case DBF_LONG:
|
case DBF_LONG:
|
||||||
case DBF_ULONG:
|
case DBF_ULONG:
|
||||||
((epicsInt32 *)aao->bptr)[aao->nord] = (epicsInt32)lval;
|
((epicsInt32 *)aao->bptr)[aao->nord] = (epicsInt32)lval;
|
||||||
@ -163,6 +169,14 @@ static long writeData (dbCommon *record, format_t *format)
|
|||||||
case DBF_FLOAT:
|
case DBF_FLOAT:
|
||||||
dval = ((epicsFloat32 *)aao->bptr)[nowd];
|
dval = ((epicsFloat32 *)aao->bptr)[nowd];
|
||||||
break;
|
break;
|
||||||
|
#ifdef DBF_INT64
|
||||||
|
case DBF_INT64:
|
||||||
|
dval = ((epicsInt64 *)aao->bptr)[nowd];
|
||||||
|
break;
|
||||||
|
case DBF_UINT64:
|
||||||
|
dval = ((epicsUInt64 *)aao->bptr)[nowd];
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case DBF_LONG:
|
case DBF_LONG:
|
||||||
dval = ((epicsInt32 *)aao->bptr)[nowd];
|
dval = ((epicsInt32 *)aao->bptr)[nowd];
|
||||||
break;
|
break;
|
||||||
@ -198,6 +212,14 @@ static long writeData (dbCommon *record, format_t *format)
|
|||||||
{
|
{
|
||||||
switch (aao->ftvl)
|
switch (aao->ftvl)
|
||||||
{
|
{
|
||||||
|
#ifdef DBF_INT64
|
||||||
|
case DBF_INT64:
|
||||||
|
lval = ((epicsInt64 *)aao->bptr)[nowd];
|
||||||
|
break;
|
||||||
|
case DBF_UINT64:
|
||||||
|
lval = ((epicsUInt64 *)aao->bptr)[nowd];
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case DBF_LONG:
|
case DBF_LONG:
|
||||||
lval = ((epicsInt32 *)aao->bptr)[nowd];
|
lval = ((epicsInt32 *)aao->bptr)[nowd];
|
||||||
break;
|
break;
|
||||||
@ -274,10 +296,9 @@ static long writeData (dbCommon *record, format_t *format)
|
|||||||
|
|
||||||
static long initRecord (dbCommon *record)
|
static long initRecord (dbCommon *record)
|
||||||
{
|
{
|
||||||
static const int typesize[] = {MAX_STRING_SIZE,1,1,2,2,4,4,4,8,2};
|
|
||||||
aaoRecord *aao = (aaoRecord *) record;
|
aaoRecord *aao = (aaoRecord *) record;
|
||||||
|
|
||||||
aao->bptr = calloc(aao->nelm, typesize[aao->ftvl]);
|
aao->bptr = calloc(aao->nelm, dbValueSize(aao->ftvl));
|
||||||
if (aao->bptr == NULL)
|
if (aao->bptr == NULL)
|
||||||
{
|
{
|
||||||
errlogSevPrintf (errlogFatal,
|
errlogSevPrintf (errlogFatal,
|
||||||
|
@ -73,6 +73,12 @@ static long readData (dbCommon *record, format_t *format)
|
|||||||
case DBF_FLOAT:
|
case DBF_FLOAT:
|
||||||
((epicsFloat32 *)wf->bptr)[wf->nord] = (epicsFloat32)lval;
|
((epicsFloat32 *)wf->bptr)[wf->nord] = (epicsFloat32)lval;
|
||||||
break;
|
break;
|
||||||
|
#ifdef DBF_INT64
|
||||||
|
case DBF_INT64:
|
||||||
|
case DBF_UINT64:
|
||||||
|
((epicsInt64 *)wf->bptr)[aao->nord] = (epicsInt64)lval;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case DBF_LONG:
|
case DBF_LONG:
|
||||||
case DBF_ULONG:
|
case DBF_ULONG:
|
||||||
((epicsInt32 *)wf->bptr)[wf->nord] = (epicsInt32)lval;
|
((epicsInt32 *)wf->bptr)[wf->nord] = (epicsInt32)lval;
|
||||||
@ -163,6 +169,14 @@ static long writeData (dbCommon *record, format_t *format)
|
|||||||
case DBF_FLOAT:
|
case DBF_FLOAT:
|
||||||
dval = ((epicsFloat32 *)wf->bptr)[nowd];
|
dval = ((epicsFloat32 *)wf->bptr)[nowd];
|
||||||
break;
|
break;
|
||||||
|
#ifdef DBF_INT64
|
||||||
|
case DBF_INT64:
|
||||||
|
dval = ((epicsInt64 *)wf->bptr)[nowd];
|
||||||
|
break;
|
||||||
|
case DBF_UINT64:
|
||||||
|
dval = ((epicsUInt64 *)wf->bptr)[nowd];
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case DBF_LONG:
|
case DBF_LONG:
|
||||||
dval = ((epicsInt32 *)wf->bptr)[nowd];
|
dval = ((epicsInt32 *)wf->bptr)[nowd];
|
||||||
break;
|
break;
|
||||||
@ -197,6 +211,14 @@ static long writeData (dbCommon *record, format_t *format)
|
|||||||
{
|
{
|
||||||
switch (wf->ftvl)
|
switch (wf->ftvl)
|
||||||
{
|
{
|
||||||
|
#ifdef DBF_INT64
|
||||||
|
case DBF_INT64:
|
||||||
|
lval = ((epicsInt64 *)wf->bptr)[nowd];
|
||||||
|
break;
|
||||||
|
case DBF_UINT64:
|
||||||
|
lval = ((epicsUInt64 *)wf->bptr)[nowd];
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case DBF_LONG:
|
case DBF_LONG:
|
||||||
lval = ((epicsInt32 *)wf->bptr)[nowd];
|
lval = ((epicsInt32 *)wf->bptr)[nowd];
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user