Skip to content
Snippets Groups Projects
Commit 10b024c9 authored by James Batch's avatar James Batch
Browse files

Fix Bugzilla 1022 to allow dataviewer to display trend data for double precision float channels

git-svn-id: https://redoubt.ligo-wa.caltech.edu/svn/advLigoRTS/trunk@4230 6dcd42c9-f523-4c6d-aada-af552506706e
parent e62152ee
No related branches found
No related tags found
No related merge requests found
...@@ -10,6 +10,7 @@ Changes for X.X ...@@ -10,6 +10,7 @@ Changes for X.X
- Bug Fix (1010): Prevent divide-by-zero error in daqd filesys.hh - Bug Fix (1010): Prevent divide-by-zero error in daqd filesys.hh
- Bug Fix (513): Cleanup debug schemes. Also created separate udp_rcvr files, fixed mx_rcvr header - Bug Fix (513): Cleanup debug schemes. Also created separate udp_rcvr files, fixed mx_rcvr header
- Bug Fix (1015): Update daqd,nds build for ldas-tools 2.5 - Bug Fix (1015): Update daqd,nds build for ldas-tools 2.5
- Bug Fix (1022): Allow dataviewer to display trends of double precision channels.
================================================================================================== ==================================================================================================
Changes for 3.0.3 Changes for 3.0.3
================================================================================================== ==================================================================================================
......
# Dataviewer Makefile # Dataviewer Makefile
# Dataviewer 'version' # Dataviewer 'version'
VERSION=3.0 VERSION=3.0.4
# Installation Location # Installation Location
INSTALL_PREFIX=/ligo/apps INSTALL_PREFIX=/ligo/apps
......
...@@ -41,7 +41,10 @@ short Fast = 1; /* 1 or 16 */ ...@@ -41,7 +41,10 @@ short Fast = 1; /* 1 or 16 */
/* Debug fprintf(). */ /* Debug fprintf(). */
void dfprintf(FILE *file, ...) {} void dfprintf(FILE *file, ...) {}
double bsdouble(double in) { #if __BYTE_ORDER == __LITTLE_ENDIAN
inline
double ntohd(double in) {
double retVal; double retVal;
char* p = (char*)&retVal; char* p = (char*)&retVal;
char* i = (char*)∈ char* i = (char*)∈
...@@ -57,6 +60,9 @@ double bsdouble(double in) { ...@@ -57,6 +60,9 @@ double bsdouble(double in) {
return retVal; return retVal;
} }
#else
#define ntohd(a) a
#endif
/* int DataConnect(char* serverName, int serverPort, int lPort, void* read_data()) */ /* JCB */ /* int DataConnect(char* serverName, int serverPort, int lPort, void* read_data()) */ /* JCB */
...@@ -687,8 +693,7 @@ int seconds; ...@@ -687,8 +693,7 @@ int seconds;
break; break;
case 5: /* 64 bit-double */ case 5: /* 64 bit-double */
for ( j=0; j<channelAll[index].rate/Fast; j++ ) { for ( j=0; j<channelAll[index].rate/Fast; j++ ) {
data[j] = *((double *)(DataDaq.tb->data+pos+j*sizeof(double))); data[j] = ntohd(*((double *)(DataDaq.tb->data+pos+j*sizeof(double))));
data[j] = bsdouble(data[j]);
} }
break; break;
case 2: /* 32 bit-integer */ case 2: /* 32 bit-integer */
...@@ -762,8 +767,7 @@ int seconds; ...@@ -762,8 +767,7 @@ int seconds;
case 5: /* 64 bit-double */ case 5: /* 64 bit-double */
for ( j=0; j<chanList[index].rate/Fast; j++ ) { for ( j=0; j<chanList[index].rate/Fast; j++ ) {
if (DataDaq.tb_size >= pos+j*sizeof(double)) { if (DataDaq.tb_size >= pos+j*sizeof(double)) {
data[j] = *((double *)(DataDaq.tb->data+pos+j*sizeof(double))); data[j] = ntohd(*((double *)(DataDaq.tb->data+pos+j*sizeof(double))));
data[j] = bsdouble(data[j]);
} }
} }
break; break;
...@@ -791,29 +795,6 @@ int seconds; ...@@ -791,29 +795,6 @@ int seconds;
} }
} }
#if __BYTE_ORDER == __LITTLE_ENDIAN
inline
double ntohd(double in) {
double retVal;
char* p = (char*)&retVal;
char* i = (char*)&in;
p[0] = i[7];
p[1] = i[6];
p[2] = i[5];
p[3] = i[4];
p[4] = i[3];
p[5] = i[2];
p[6] = i[1];
p[7] = i[0];
return retVal;
}
#else
#define ntohd(a) a
#endif
int DataTrendGetCh(const char* chName, struct DTrend *trend) int DataTrendGetCh(const char* chName, struct DTrend *trend)
{ {
int j, index, pos, typesize; int j, index, pos, typesize;
...@@ -917,9 +898,9 @@ int seconds, secrate; ...@@ -917,9 +898,9 @@ int seconds, secrate;
break; break;
case 5: /* 64 bit-double */ case 5: /* 64 bit-double */
for ( j=0; j<secrate; j++ ) { for ( j=0; j<secrate; j++ ) {
(trend+j)->min = *((double *)( DataDaq.tb->data + pos +j*sizeof(double) )); (trend+j)->min = ntohd(*((double *)( DataDaq.tb->data + pos +j*sizeof(double) )));
(trend+j)->max = *((double *)( DataDaq.tb->data + pos + sizeof(double)*secrate + j*sizeof(double) )); (trend+j)->max = ntohd(*((double *)( DataDaq.tb->data + pos + sizeof(double)*secrate + j*sizeof(double) )));
(trend+j)->mean = *((double *)( DataDaq.tb->data + pos + 2*sizeof(double)*secrate + j*2*sizeof(double) )); (trend+j)->mean = ntohd(*((double *)( DataDaq.tb->data + pos + 2*sizeof(double)*secrate + j*2*sizeof(double) )));
(trend+j)->mean = 0; (trend+j)->mean = 0;
} }
break; break;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment