diff --git a/src/dv/Th/datasrv.c b/src/dv/Th/datasrv.c index e9a49d03ce20fcf93f1fe7509f57486a12c444a5..ec3c778cf6ad5431c17866bfee2749f90c206356 100644 --- a/src/dv/Th/datasrv.c +++ b/src/dv/Th/datasrv.c @@ -5,18 +5,19 @@ /*----------------------------------------------------------------------*/ +#include <string.h> /* declarations of strcpy and others.*/ #include "datasrv.h" #include "UTC_GPS/leapsecs.h" #include "UTC_GPS/tai.h" #include "UTC_GPS/caltime.h" #include "math.h" -#include <string.h> /* Pick up declarations of strcat, strcpy */ struct caltime ctin; struct caltime ctout; struct gps gpsTime; struct gps gps; +static int debug = 0 ; /* For debugging - JCB */ #define COMMANDSIZE 2048 @@ -37,21 +38,28 @@ daq_channel_t channelAll[MAX_CHANNELS]; short Fast = 1; /* 1 or 16 */ +/* Debug fprintf(). */ void dfprintf(FILE *file, ...) {} -int DataConnect(char* serverName, int serverPort, int lPort, void* read_data()) +/* int DataConnect(char* serverName, int serverPort, int lPort, void* read_data()) */ /* JCB */ +int DataConnect(char* serverName, int serverPort, int lPort, void* (*read_data)()) { -int j; + int j; + + if (debug != 0) fprintf(stderr, "DataConnect()\n") ; /* JCB */ listenerPort = lPort; + if (debug != 0) fprintf(stderr, "DataConnect() - calling daq_initialize()\n") ; /* JCB */ if (0 == daq_initialize(&DataDaq, &listenerPort, read_data)) { perror("Couldn't initialize DAQ threads"); return 1; } + if (debug != 0) fprintf(stderr, "DataConnect() - calling daq_connect()\n") ; /* JCB */ if ( daq_connect(&DataDaq, serverName, serverPort) ) { //perror( "ERROR: Couldn't connect to the NDS server" ); return 1; } + if (debug != 0) fprintf(stderr, "DataConnect() - calling daq_recv_channels()\n") ; /* JCB */ if ( daq_recv_channels(&DataDaq, channelAll, MAX_CHANNELS, &NchannelAll) ) { //perror( "ERROR: Failed to receive channel information" ); return 1; @@ -64,12 +72,15 @@ int j; /*for ( j = 0; j<NchannelAll; j++ ) fprintf ( stderr, "%s\t%d\n", channelAll[j].name, channelAll[j].rate );*/ + if (debug != 0) fprintf(stderr, " protocol revision = %d\n", DataDaq.rev) ; /* JCB */ + if (debug != 0) fprintf(stderr, "DataConnect() - returning\n") ; /* JCB */ + return 0; } int DataSimpleConnect(char* serverName, int serverPort) { -int j; + int j; if ( daq_connect(&DataDaq, serverName, serverPort) ) { //perror( "ERROR: Couldn't connect to the NDS server" ); @@ -87,7 +98,7 @@ int j; int DataReConnect(char* serverName, int serverPort) { -int j; + int j; daq_disconnect(&DataDaq); //sleep(1); @@ -122,7 +133,7 @@ void DataQuit() /* returns total channel number in the list */ int DataChanAdd(const char* chName, int dataRate) { -int index, j; + int index, j; if ( all == 1 ) return NchannelAll; @@ -179,7 +190,7 @@ int index, j; /* returns total channel number in the list */ int DataChanDelete(const char* chName) { -int j, pos=-1; + int j, pos=-1; if ( strcmp(chName, "all") == 0 ) { NchanList = 0; @@ -209,10 +220,10 @@ int j, pos=-1; unsigned long DataWriteRealtime() { -unsigned long ID; -int j; -char temp[COMMANDSIZE]; -int isend; + unsigned long ID; + int j; + char temp[COMMANDSIZE]; + int isend; if ( all < 0 ) { perror( "datasrv: DataChanSet failed: no channel selected" ); @@ -262,10 +273,10 @@ int isend; unsigned long DataWriteRealtimeFast() { -unsigned long ID; -int j; -char temp[COMMANDSIZE]; -int isend; + unsigned long ID; + int j; + char temp[COMMANDSIZE]; + int isend; if ( all < 0 ) { perror( "datasrv: DataChanSet failed: no channel selected" ); @@ -315,13 +326,13 @@ int isend; unsigned long DataWrite(char* starttime, int duration, int isgps) { -unsigned long ID; -int j; -char temp[COMMANDSIZE]; + unsigned long ID; + int j; + char temp[COMMANDSIZE]; -long starttimeInsec, mjd; -int yr,mo,da,hr,mn,sc; -int isend; + long starttimeInsec, mjd; + int yr,mo,da,hr,mn,sc; + int isend; if ( isgps == 0 ) { /* UTC time */ sscanf (starttime, "%d-%d-%d-%d-%d-%d", &yr,&mo,&da,&hr,&mn,&sc ); @@ -392,10 +403,10 @@ int isend; unsigned long DataWriteTrendRealtime() { -unsigned long ID; -int j; -char temp[COMMANDSIZE]; -int isend; + unsigned long ID; + int j; + char temp[COMMANDSIZE]; + int isend; if ( all < 0 ) { perror( "datasrv: DataChanSet failed: no channel selected" ); @@ -439,14 +450,15 @@ int isend; unsigned long DataWriteTrend(char* starttime, int duration, int trendlength, int isgps) { -unsigned long ID; -int j; -char temp[COMMANDSIZE]; + unsigned long ID; + int j; + char temp[COMMANDSIZE]; -long starttimeInsec, mjd; -int yr,mo,da,hr,mn,sc; -int isend=0; + long starttimeInsec, mjd; + int yr,mo,da,hr,mn,sc; + int isend=0; + if (debug != 0) fprintf(stderr, "DataWriteTrend()\n") ; /* JCB */ if ( all < 0 ) { perror( "datasrv: DataChanSet failed: no channel selected" ); return -1; @@ -503,6 +515,11 @@ int isend=0; } strcat(configure, ";"); dfprintf ( stderr,"datasrv: configure chan = %s\n", configure ); + if (debug != 0) + { + fprintf(stderr, "DataWriteTrend() - command string = %s\n", configure) ; /* JCB */ + fprintf(stderr, "DataWriteTrend() - Calling daq_send() \n") ; /* JCB */ + } isend = daq_send(&DataDaq, configure); if ( isend ) fprintf ( stderr, "datasrv: DataWriteTrend failed in daq_send().\n" ); @@ -514,10 +531,13 @@ int isend=0; return -2; } else if ( isend ) { + fprintf( stderr, "unknown error returned from daq_send()") ; /* JCB */ return -2; } + if (debug != 0) fprintf(stderr, "DataWriteTrend() - calling daq_recv_id()\n") ; /* JCB */ ID = daq_recv_id (&DataDaq); + if (debug != 0) fprintf(stderr, "DataWriteTrend() - daq_recv_id() returned %lu\n", ID) ; /* JCB */ dfprintf ( stderr,"\n" ); dfprintf ( stderr,"DataWriteTrend ID=%d starttime=%s(%d) duration=%d\n", ID, starttime,starttimeInsec, duration ); return ID; @@ -526,10 +546,10 @@ int isend=0; void DataWriteStop(unsigned long processID) { -char tempstring[COMMANDSIZE]; -int isend; + char tempstring[COMMANDSIZE]; + int isend; - sprintf( tempstring, "kill net-writer %lu;", processID ); + sprintf( tempstring, "kill net-writer %ld;", processID ); dfprintf ( stderr,"kill net-writer %d;\n", processID ); isend = daq_send(&DataDaq, tempstring); #if 0 @@ -544,7 +564,7 @@ int isend; void DataReadStart() { -unsigned long blocknum; + unsigned long blocknum; if ( !(blocknum = daq_recv_block_num(&DataDaq)) ) { dfprintf ( stderr, "receiving data on-line %d \n", blocknum ); @@ -788,7 +808,7 @@ int seconds, secrate; max = *((float *)( DataDaq.tb->data + pos + sizeof(float)*secrate + j*sizeof(float) )); *((unsigned int *)&max) = ntohl(*((unsigned int *)&max)); mean = *((double *)( DataDaq.tb->data + pos + 2*sizeof(float)*secrate + j*2*sizeof(float) )); -#ifdef __linux__ +#if defined __linux__ || defined __APPLE__ mean1 = ntohd(mean); #else mean1 = mean; @@ -837,7 +857,7 @@ int seconds, secrate; ntohl(*((unsigned int *)( DataDaq.tb->data + pos + sizeof(float)*secrate + j*sizeof(float) ))); (trend+j)->max = max; mean = *((double *)( DataDaq.tb->data + pos + 2*sizeof(float)*secrate + j*2*sizeof(float) )); -#ifdef __linux__ +#if defined __linux__ || defined __APPLE__ mean1 = ntohd(mean); #else mean1 = mean; @@ -864,7 +884,7 @@ int seconds, secrate; (trend+j)->max = max1; } mean = *((double *)( DataDaq.tb->data + pos + 2*sizeof(int)*secrate + j*2*sizeof(int) )); -#ifdef __linux__ +#if defined __linux__ || defined __APPLE__ ((unsigned long *)&mean1)[1] = ntohl(((unsigned long *)&mean)[0]); ((unsigned long *)&mean1)[0] = ntohl(((unsigned long *)&mean)[1]); #else @@ -1044,6 +1064,7 @@ long DataUTCtoGPS(char* utctime) long mjd; int yr,mo,da,hr,mn,sc; + if (debug != 0) fprintf(stderr, "DataUTCtoGPS() - utctime = %s\n", utctime) ; /* JCB */ sscanf (utctime, "%d-%d-%d-%d-%d-%d", &yr,&mo,&da,&hr,&mn,&sc ); /*----- enter time in UTC ------------*/ if ( yr == 98 || yr == 99 ) @@ -1056,7 +1077,17 @@ int yr,mo,da,hr,mn,sc; ctin.minute =mn; /* [0,59] */ ctin.second =sc; /* [0,60] */ ctin.offset =0; /* offset in minutes from UTC [-5999,5999] */ + if (debug != 0) + { + fprintf(stderr, " ctin.date.month = %d\n", ctin.date.month) ; /* JCB */ + fprintf(stderr, " ctin.date.day = %d\n", ctin.date.day) ; /* JCB */ + fprintf(stderr, " ctin.hour = %d\n", ctin.hour) ; /* JCB */ + fprintf(stderr, " ctin.minute = %d\n", ctin.minute) ; /* JCB */ + fprintf(stderr, " ctin.second = %d\n", ctin.second) ; /* JCB */ + fprintf(stderr, " ctin.offset = %ld\n", ctin.offset) ; /* JCB */ + } mjd=caldate_mjd(&ctin.date); /* modified Julian day */ + fprintf(stderr, " mjd = %ld\n", mjd) ; utc_to_gps(&ctin,&gps); return gps.sec; }