Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

Messages.cc

Go to the documentation of this file.
00001 /*
00002 
00003     Messaging
00004     Copyright (C) 1999-2002 Jussi Laako
00005 
00006     This program is free software; you can redistribute it and/or modify
00007     it under the terms of the GNU General Public License as published by
00008     the Free Software Foundation; either version 2 of the License, or
00009     (at your option) any later version.
00010 
00011     This program is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014     GNU General Public License for more details.
00015 
00016     You should have received a copy of the GNU General Public License
00017     along with this program; if not, write to the Free Software
00018     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 
00020 */
00021 
00022 
00023 #ifdef HAVE_ENDIAN_H
00024     #include <endian.h>
00025 #endif
00026 #include <stdio.h>
00027 #ifdef USE_G_SNPRINTF
00028     #include <glib.h>
00029 #endif
00030 
00031 #include "Config.h"
00032 #include "Messages.hh"
00033 
00034 
00035 inline void clBaseMsg::EndianConv (float *fpDest, const float *fpSrc)
00036 {
00037     #ifdef LITTLE_ENDIAN
00038         unsigned int *upDest = (unsigned int *) fpDest;
00039         unsigned int *upSrc = (unsigned int *) fpSrc;
00040 
00041         #ifndef __alpha__
00042             asm ("bswap %0" : "=r" (*upDest) : "0" (*upSrc));
00043         #else
00044             #ifndef __G_LIB_H__
00045             #error "glib needed"
00046             #endif
00047             *upDest = GUINT32_SWAP_LE_BE_CONSTANT(*upSrc);
00048         #endif
00049     #else
00050         *fpDest = *fpSrc;
00051     #endif
00052 }
00053 
00054 
00055 inline void clBaseMsg::EndianConv (double *dpDest, const double *dpSrc)
00056 {
00057     #ifdef LITTLE_ENDIAN
00058         #ifndef __alpha__
00059         unsigned int *upDest = (unsigned int *) dpDest;
00060         unsigned int *upSrc = (unsigned int *) dpSrc;
00061 
00062             asm ("bswap %0" : "=r" (upDest[1]) : "0" (upSrc[0]));
00063             asm ("bswap %0" : "=r" (upDest[0]) : "0" (upSrc[1]));
00064         #else
00065             #ifndef __G_LIB_H__
00066             #error "glib needed"
00067             #endif
00068             unsigned long long *upDest = (unsigned long long *) dpDest;
00069             unsigned long long *upSrc = (unsigned long long *) dpSrc;
00070             
00071             *upDest = GUINT64_SWAP_LE_BE_CONSTANT(*upSrc);
00072         #endif
00073     #else
00074         *dpDest = *dpSrc;
00075     #endif
00076 }
00077 
00078 
00079 void clSoundMsg::SetStart (char *cpMsgBuf, const stpSoundStart spSndStart)
00080 {
00081     #ifndef USE_G_SNPRINTF
00082         sprintf(cpMsgBuf, "%i %g %i %i", 
00083             spSndStart->iChannels, 
00084             spSndStart->dSampleRate, 
00085             spSndStart->iFragmentSize,
00086             spSndStart->iCompress);
00087     #else
00088         g_snprintf(cpMsgBuf, GLOBAL_HEADER_LEN, "%i %g %i %i", 
00089             spSndStart->iChannels, 
00090             spSndStart->dSampleRate,
00091             spSndStart->iFragmentSize,
00092             spSndStart->iCompress);
00093     #endif
00094 }
00095 
00096 
00097 void clSoundMsg::GetStart (const char *cpMsgBuf, stpSoundStart spSndStart)
00098 {
00099     sscanf(cpMsgBuf, "%i %lf %i %i", 
00100         &spSndStart->iChannels, 
00101         &spSndStart->dSampleRate,
00102         &spSndStart->iFragmentSize,
00103         &spSndStart->iCompress);
00104 }
00105 
00106 
00107 void clSoundMsg::SetData (void *vpMsgBuf, const struct timeval *spTimeStamp, 
00108     const float *fpData, int iDataLen)
00109 {
00110     int iLoopCntr;
00111     char *cpHdrPtr = (char *) vpMsgBuf;
00112     float *fpDataPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00113     
00114     #ifndef USE_G_SNPRINTF
00115         sprintf(cpHdrPtr, "%li:%li %i", (long) spTimeStamp->tv_sec, 
00116             (long) spTimeStamp->tv_usec, iDataLen);
00117     #else
00118         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN, "%li:%li %i", 
00119             (long) spTimeStamp->tv_sec, (long) spTimeStamp->tv_usec, iDataLen);
00120     #endif
00121     for (iLoopCntr = 0; iLoopCntr < iDataLen; iLoopCntr++)
00122     {
00123         EndianConv(&fpDataPtr[iLoopCntr], &fpData[iLoopCntr]);
00124     }
00125 }
00126 
00127 
00128 void clSoundMsg::SetData (void *vpMsgBuf, const struct timeval *spTimeStamp, 
00129     const double *dpData, int iDataLen)
00130 {
00131     int iLoopCntr;
00132     char *cpHdrPtr = (char *) vpMsgBuf;
00133     double *dpDataPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00134 
00135     #ifndef USE_G_SNPRINTF
00136         sprintf(cpHdrPtr, "%li:%li %i", (long) spTimeStamp->tv_sec, 
00137             (long) spTimeStamp->tv_usec, iDataLen);
00138     #else
00139         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN, "%li:%li %i", 
00140             (long) spTimeStamp->tv_sec, (long) spTimeStamp->tv_usec, iDataLen);
00141     #endif
00142     for (iLoopCntr = 0; iLoopCntr < iDataLen; iLoopCntr++)
00143     {
00144         EndianConv(&dpDataPtr[iLoopCntr], &dpData[iLoopCntr]);
00145     }
00146 }
00147 
00148 
00149 void clSoundMsg::SetData (void *vpMsgBuf, const float *fpData, int iDataLen)
00150 {
00151     int iLoopCntr;
00152     float *fpDataPtr = (float *) vpMsgBuf;
00153 
00154     for (iLoopCntr = 0; iLoopCntr < iDataLen; iLoopCntr++)
00155     {
00156         EndianConv(&fpDataPtr[iLoopCntr], &fpData[iLoopCntr]);
00157     }
00158 }
00159 
00160 
00161 void clSoundMsg::SetData (void *vpMsgBuf, const double *dpData, int iDataLen)
00162 {
00163     int iLoopCntr;
00164     double *dpDataPtr = (double *) vpMsgBuf;
00165 
00166     for (iLoopCntr = 0; iLoopCntr < iDataLen; iLoopCntr++)
00167     {
00168         EndianConv(&dpDataPtr[iLoopCntr], &dpData[iLoopCntr]);
00169     }
00170 }
00171 
00172 
00173 int clSoundMsg::GetData (const void *vpMsgBuf, struct timeval *spTimeStamp, 
00174     float *fpData)
00175 {
00176     int iDataLen;
00177     int iLoopCntr;
00178     const char *cpHdrPtr = (char *) vpMsgBuf;
00179     const float *fpDataPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00180 
00181     #ifndef __QNX__
00182     sscanf(cpHdrPtr, "%li:%li %i", &spTimeStamp->tv_sec, 
00183         &spTimeStamp->tv_usec, &iDataLen);
00184     #else
00185     sscanf(cpHdrPtr, "%i:%i %i", &spTimeStamp->tv_sec,
00186         &spTimeStamp->tv_usec, &iDataLen);
00187     #endif
00188     for (iLoopCntr = 0; iLoopCntr < iDataLen; iLoopCntr++)
00189     {
00190         EndianConv(&fpData[iLoopCntr], &fpDataPtr[iLoopCntr]);
00191     }
00192     return iDataLen;
00193 }
00194 
00195 
00196 int clSoundMsg::GetData (const void *vpMsgBuf, struct timeval *spTimeStamp,
00197     double *dpData)
00198 {
00199     int iDataLen;
00200     int iLoopCntr;
00201     const char *cpHdrPtr = (char *) vpMsgBuf;
00202     const double *dpDataPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00203 
00204     #ifndef __QNX__
00205     sscanf(cpHdrPtr, "%li:%li %i", &spTimeStamp->tv_sec,
00206         &spTimeStamp->tv_usec, &iDataLen);
00207     #else
00208     sscanf(cpHdrPtr, "%i:%i %i", &spTimeStamp->tv_sec,
00209         &spTimeStamp->tv_usec, &iDataLen);
00210     #endif
00211     for (iLoopCntr = 0; iLoopCntr < iDataLen; iLoopCntr++)
00212     {
00213         EndianConv(&dpData[iLoopCntr], &dpDataPtr[iLoopCntr]);
00214     }
00215     return iDataLen;
00216 }
00217 
00218 
00219 void clSoundMsg::GetData (const void *vpMsgBuf, float *fpData, int iDataLen)
00220 {
00221     int iLoopCntr;
00222     const float *fpDataPtr = (float *) vpMsgBuf;
00223 
00224     for (iLoopCntr = 0; iLoopCntr < iDataLen; iLoopCntr++)
00225     {
00226         EndianConv(&fpData[iLoopCntr], &fpDataPtr[iLoopCntr]);
00227     }
00228 }
00229 
00230 
00231 void clSoundMsg::GetData (const void *vpMsgBuf, double *dpData, int iDataLen)
00232 {
00233     int iLoopCntr;
00234     const double *dpDataPtr = (double *) vpMsgBuf;
00235 
00236     for (iLoopCntr = 0; iLoopCntr < iDataLen; iLoopCntr++)
00237     {
00238         EndianConv(&dpData[iLoopCntr], &dpDataPtr[iLoopCntr]);
00239     }
00240 }
00241 
00242 
00243 void clSpectMsg::SetRequest (char *cpReqMsg, const stpSpectReq spSpectReq)
00244 {
00245     int iLinear;
00246     int iNormalize;
00247 
00248     iLinear = (spSpectReq->bLinear) ? MSG_TRUE : MSG_FALSE;
00249     iNormalize = (spSpectReq->bNormalize) ? MSG_TRUE : MSG_FALSE;
00250     #ifndef USE_G_SNPRINTF
00251         sprintf(cpReqMsg, 
00252             "%i %i %i %g %li %i %i %g %g %i %i %i %i %g %li %li %g",
00253             spSpectReq->iChannel,
00254             spSpectReq->iType,
00255             spSpectReq->iWindow,
00256             spSpectReq->fWinParam,
00257             spSpectReq->lLength,
00258             spSpectReq->iLowFreq,
00259             spSpectReq->iHighFreq,
00260             spSpectReq->fGain,
00261             spSpectReq->fSlope,
00262             spSpectReq->iOverlap,
00263             iLinear,
00264             iNormalize,
00265             spSpectReq->iRemoveNoise,
00266             spSpectReq->fAlpha,
00267             spSpectReq->lMeanLength,
00268             spSpectReq->lGapLength,
00269             spSpectReq->fDynRange);
00270     #else
00271         g_snprintf(cpReqMsg, GLOBAL_HEADER_LEN,
00272             "%i %i %i %g %li %i %i %g %g %i %i %i %i %g %li %li %g",
00273             spSpectReq->iChannel,
00274             spSpectReq->iType,
00275             spSpectReq->iWindow,
00276             spSpectReq->fWinParam,
00277             spSpectReq->lLength,
00278             spSpectReq->iLowFreq,
00279             spSpectReq->iHighFreq,
00280             spSpectReq->fGain,
00281             spSpectReq->fSlope,
00282             spSpectReq->iOverlap,
00283             iLinear,
00284             iNormalize,
00285             spSpectReq->iRemoveNoise,
00286             spSpectReq->fAlpha,
00287             spSpectReq->lMeanLength,
00288             spSpectReq->lGapLength,
00289             spSpectReq->fDynRange);
00290     #endif
00291 }
00292 
00293 
00294 void clSpectMsg::GetRequest (const char *cpReqMsg, stpSpectReq spSpectReq)
00295 {
00296     int iLinear;
00297     int iNormalize;
00298 
00299     sscanf(cpReqMsg, "%i %i %i %g %li %i %i %g %g %i %i %i %i %g %li %li %g",
00300         &spSpectReq->iChannel,
00301         &spSpectReq->iType,
00302         &spSpectReq->iWindow,
00303         &spSpectReq->fWinParam,
00304         &spSpectReq->lLength,
00305         &spSpectReq->iLowFreq,
00306         &spSpectReq->iHighFreq,
00307         &spSpectReq->fGain,
00308         &spSpectReq->fSlope,
00309         &spSpectReq->iOverlap,
00310         &iLinear,
00311         &iNormalize,
00312         &spSpectReq->iRemoveNoise,
00313         &spSpectReq->fAlpha,
00314         &spSpectReq->lMeanLength,
00315         &spSpectReq->lGapLength,
00316         &spSpectReq->fDynRange);
00317     spSpectReq->bLinear = (iLinear == MSG_TRUE) ? true : false;
00318     spSpectReq->bNormalize = (iNormalize == MSG_TRUE) ? true : false;
00319 }
00320 
00321 
00322 void clSpectMsg::SetResult (void *vpMsgBuf, const stpSpectRes spSpectHdr, 
00323     const float *fpSpectData)
00324 {
00325     int iLinear;
00326     long lLoopCntr;
00327     char *cpHdrPtr = (char *) vpMsgBuf;
00328     float *fpDataPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00329 
00330     iLinear = (spSpectHdr->bLinear) ? MSG_TRUE : MSG_FALSE;
00331     #ifndef USE_G_SNPRINTF
00332         sprintf(cpHdrPtr, "%li:%li %i %li %i %i %i %i %.3f %.3f",
00333             (long) spSpectHdr->sTimeStamp.tv_sec, 
00334             (long) spSpectHdr->sTimeStamp.tv_usec,
00335             spSpectHdr->iChannel,
00336             spSpectHdr->lLength,
00337             spSpectHdr->iLowFreq,
00338             spSpectHdr->iHighFreq,
00339             spSpectHdr->iSampleRate,
00340             iLinear,
00341             spSpectHdr->fPeakLevel,
00342             spSpectHdr->fLineTime);
00343     #else
00344         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN,
00345             "%li:%li %i %li %i %i %i %i %.3f %.3f",
00346             (long) spSpectHdr->sTimeStamp.tv_sec, 
00347             (long) spSpectHdr->sTimeStamp.tv_usec,
00348             spSpectHdr->iChannel,
00349             spSpectHdr->lLength,
00350             spSpectHdr->iLowFreq,
00351             spSpectHdr->iHighFreq,
00352             spSpectHdr->iSampleRate,
00353             iLinear,
00354             spSpectHdr->fPeakLevel,
00355             spSpectHdr->fLineTime);
00356     #endif
00357     for (lLoopCntr = 0; lLoopCntr < spSpectHdr->lLength; lLoopCntr++)
00358     {
00359         EndianConv(&fpDataPtr[lLoopCntr], &fpSpectData[lLoopCntr]);
00360     }
00361 }
00362 
00363 
00364 void clSpectMsg::SetResult (void *vpMsgBuf, const stpSpectRes spSpectHdr,
00365     const double *dpSpectData)
00366 {
00367     int iLinear;
00368     long lLoopCntr;
00369     char *cpHdrPtr = (char *) vpMsgBuf;
00370     double *dpDataPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00371 
00372     iLinear = (spSpectHdr->bLinear) ? MSG_TRUE : MSG_FALSE;
00373     #ifndef USE_G_SNPRINTF
00374         sprintf(cpHdrPtr, "%li:%li %i %li %i %i %i %i %.3f %.3f",
00375             (long) spSpectHdr->sTimeStamp.tv_sec, 
00376             (long) spSpectHdr->sTimeStamp.tv_usec,
00377             spSpectHdr->iChannel,
00378             spSpectHdr->lLength,
00379             spSpectHdr->iLowFreq,
00380             spSpectHdr->iHighFreq,
00381             spSpectHdr->iSampleRate,
00382             iLinear,
00383             spSpectHdr->fPeakLevel,
00384             spSpectHdr->fLineTime);
00385     #else
00386         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN,
00387             "%li:%li %i %li %i %i %i %i %.3f %.3f",
00388             (long) spSpectHdr->sTimeStamp.tv_sec, 
00389             (long) spSpectHdr->sTimeStamp.tv_usec,
00390             spSpectHdr->iChannel,
00391             spSpectHdr->lLength,
00392             spSpectHdr->iLowFreq,
00393             spSpectHdr->iHighFreq,
00394             spSpectHdr->iSampleRate,
00395             iLinear,
00396             spSpectHdr->fPeakLevel,
00397             spSpectHdr->fLineTime);
00398     #endif
00399     for (lLoopCntr = 0; lLoopCntr < spSpectHdr->lLength; lLoopCntr++)
00400     {
00401         EndianConv(&dpDataPtr[lLoopCntr], &dpSpectData[lLoopCntr]);
00402     }
00403 }
00404 
00405 
00406 void clSpectMsg::GetResult (const void *vpMsgBuf, stpSpectRes spSpectHdr,
00407     float *fpSpectData)
00408 {
00409     int iLinear;
00410     long lLoopCntr;
00411     const char *cpHdrPtr = (char *) vpMsgBuf;
00412     const float *fpDataPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00413 
00414     #ifndef __QNX__
00415     sscanf(cpHdrPtr, "%li:%li %i %li %i %i %i %i %f %f",
00416     #else
00417     sscanf(cpHdrPtr, "%i:%i %i %li %i %i %i %i %f %f",
00418     #endif
00419         &spSpectHdr->sTimeStamp.tv_sec, &spSpectHdr->sTimeStamp.tv_usec,
00420         &spSpectHdr->iChannel,
00421         &spSpectHdr->lLength,
00422         &spSpectHdr->iLowFreq,
00423         &spSpectHdr->iHighFreq,
00424         &spSpectHdr->iSampleRate,
00425         &iLinear,
00426         &spSpectHdr->fPeakLevel,
00427         &spSpectHdr->fLineTime);
00428     spSpectHdr->bLinear = (iLinear == MSG_TRUE) ? true : false;
00429     for (lLoopCntr = 0; lLoopCntr < spSpectHdr->lLength; lLoopCntr++)
00430     {
00431         EndianConv(&fpSpectData[lLoopCntr], &fpDataPtr[lLoopCntr]);
00432     }
00433 }
00434 
00435 
00436 void clSpectMsg::GetResult (const void *vpMsgBuf, stpSpectRes spSpectHdr,
00437     double *dpSpectData)
00438 {
00439     int iLinear;
00440     long lLoopCntr;
00441     const char *cpHdrPtr = (char *) vpMsgBuf;
00442     const double *dpDataPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00443 
00444     #ifndef __QNX__
00445     sscanf(cpHdrPtr, "%li:%li %i %li %i %i %i %i %f %f",
00446     #else
00447     sscanf(cpHdrPtr, "%i:%i %i %li %i %i %i %i %f %f",
00448     #endif
00449         &spSpectHdr->sTimeStamp.tv_sec, &spSpectHdr->sTimeStamp.tv_usec,
00450         &spSpectHdr->iChannel,
00451         &spSpectHdr->lLength,
00452         &spSpectHdr->iLowFreq,
00453         &spSpectHdr->iHighFreq,
00454         &spSpectHdr->iSampleRate,
00455         &iLinear,
00456         &spSpectHdr->fPeakLevel,
00457         &spSpectHdr->fLineTime);
00458     spSpectHdr->bLinear = (iLinear == MSG_TRUE) ? true: false;
00459     for (lLoopCntr = 0; lLoopCntr < spSpectHdr->lLength; lLoopCntr++)
00460     {
00461         EndianConv(&dpSpectData[lLoopCntr], &dpDataPtr[lLoopCntr]);
00462     }
00463 }
00464 
00465 
00466 void clDirMsg::SetRequest (char *cpMsgBuf, const stpDirReq spDirRq)
00467 {
00468     int iNormalize;
00469     int iDisableFilter;
00470 
00471     iNormalize = (spDirRq->bNormalize) ? MSG_TRUE : MSG_FALSE;
00472     iDisableFilter = (spDirRq->bDisableFilter) ? MSG_TRUE : MSG_FALSE;
00473     #ifndef USE_G_SNPRINTF
00474         sprintf(cpMsgBuf, 
00475             "%i %.3f %.3f %.5f %i %.3f %i %.5f %.5f %li %i %g %li %li %i",
00476             spDirRq->iAlgorithm,
00477             spDirRq->fSoundSpeed,
00478             spDirRq->fLowFreqLimit,
00479             spDirRq->fIntegrationTime,
00480             spDirRq->iScaling,
00481             spDirRq->fScalingExp,
00482             iNormalize,
00483             spDirRq->fLeftDir,
00484             spDirRq->fRightDir,
00485             spDirRq->lSectorCount,
00486             spDirRq->iRemoveNoise,
00487             spDirRq->fAlpha,
00488             spDirRq->lMeanLength,
00489             spDirRq->lGapLength,
00490             iDisableFilter);
00491     #else
00492         g_snprintf(cpMsgBuf, GLOBAL_HEADER_LEN,
00493             "%i %.3f %.3f %.5f %i %.3f %i %.5f %.5f %li %i %g %li %li %i",
00494             spDirRq->iAlgorithm,
00495             spDirRq->fSoundSpeed,
00496             spDirRq->fLowFreqLimit,
00497             spDirRq->fIntegrationTime,
00498             spDirRq->iScaling,
00499             spDirRq->fScalingExp,
00500             iNormalize,
00501             spDirRq->fLeftDir,
00502             spDirRq->fRightDir,
00503             spDirRq->lSectorCount,
00504             spDirRq->iRemoveNoise,
00505             spDirRq->fAlpha,
00506             spDirRq->lMeanLength,
00507             spDirRq->lGapLength,
00508             iDisableFilter);
00509     #endif
00510 }
00511 
00512 
00513 void clDirMsg::GetRequest (const char *cpMsgBuf, stpDirReq spDirRq)
00514 {
00515     int iNormalize;
00516     int iDisableFilter;
00517 
00518     sscanf(cpMsgBuf, "%i %f %f %f %i %f %i %f %f %li %i %g %li %li %i",
00519         &spDirRq->iAlgorithm,
00520         &spDirRq->fSoundSpeed,
00521         &spDirRq->fLowFreqLimit,
00522         &spDirRq->fIntegrationTime,
00523         &spDirRq->iScaling,
00524         &spDirRq->fScalingExp,
00525         &iNormalize,
00526         &spDirRq->fLeftDir,
00527         &spDirRq->fRightDir,
00528         &spDirRq->lSectorCount,
00529         &spDirRq->iRemoveNoise,
00530         &spDirRq->fAlpha,
00531         &spDirRq->lMeanLength,
00532         &spDirRq->lGapLength,
00533         &iDisableFilter);
00534     spDirRq->bNormalize = (iNormalize == MSG_TRUE) ? true : false;
00535     spDirRq->bDisableFilter = (iDisableFilter == MSG_TRUE) ? true : false;
00536 }
00537 
00538 
00539 void clDirMsg::SetResult (void *vpMsgBuf, const stpDirRes spResHdr,
00540     const float *fpResData)
00541 {
00542     long lDataCntr;
00543     int i3DArray;
00544     char *cpHdrPtr = (char *) vpMsgBuf;
00545     float *fpDataPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00546 
00547     i3DArray = (spResHdr->b3DArray) ? MSG_TRUE : MSG_FALSE;
00548     #ifndef USE_G_SNPRINTF
00549         sprintf(cpHdrPtr, "%li:%li %.5f %.3f %.3f %li %i",
00550             (long) spResHdr->sTimeStamp.tv_sec, 
00551             (long) spResHdr->sTimeStamp.tv_usec,
00552             spResHdr->fIntegrationTime,
00553             spResHdr->fHighFreqLimit,
00554             spResHdr->fPeakLevel,
00555             spResHdr->lSectorCount,
00556             i3DArray);
00557     #else
00558         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN,
00559             "%li:%li %.5f %.3f %.3f %li %i",
00560             (long) spResHdr->sTimeStamp.tv_sec, 
00561             (long) spResHdr->sTimeStamp.tv_usec,
00562             spResHdr->fIntegrationTime,
00563             spResHdr->fHighFreqLimit,
00564             spResHdr->fPeakLevel,
00565             spResHdr->lSectorCount,
00566             i3DArray);
00567     #endif
00568     for (lDataCntr = 0; lDataCntr < spResHdr->lSectorCount; lDataCntr++)
00569     {
00570         EndianConv(&fpDataPtr[lDataCntr], &fpResData[lDataCntr]);
00571     }
00572 }
00573 
00574 
00575 void clDirMsg::SetResult (void *vpMsgBuf, const stpDirRes spResHdr,
00576     const double *dpResData)
00577 {
00578     long lDataCntr;
00579     int i3DArray;
00580     char *cpHdrPtr = (char *) vpMsgBuf;
00581     double *dpDataPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00582 
00583     i3DArray = (spResHdr->b3DArray) ? MSG_TRUE : MSG_FALSE;
00584     #ifndef USE_G_SNPRINTF
00585         sprintf(cpHdrPtr, "%li:%li %.5f %.3f %.3f %li %i",
00586             (long) spResHdr->sTimeStamp.tv_sec, 
00587             (long) spResHdr->sTimeStamp.tv_usec,
00588             spResHdr->fIntegrationTime,
00589             spResHdr->fHighFreqLimit,
00590             spResHdr->fPeakLevel,
00591             spResHdr->lSectorCount,
00592             i3DArray);
00593     #else
00594         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN,
00595             "%li:%li %.5f %.3f %.3f %li %i",
00596             (long) spResHdr->sTimeStamp.tv_sec, 
00597             (long) spResHdr->sTimeStamp.tv_usec,
00598             spResHdr->fIntegrationTime,
00599             spResHdr->fHighFreqLimit,
00600             spResHdr->fPeakLevel,
00601             spResHdr->lSectorCount,
00602             i3DArray);
00603     #endif
00604     for (lDataCntr = 0; lDataCntr < spResHdr->lSectorCount; lDataCntr++)
00605     {
00606         EndianConv(&dpDataPtr[lDataCntr], &dpResData[lDataCntr]);
00607     }
00608 }
00609 
00610 
00611 void clDirMsg::GetResult (const void *vpMsgBuf, stpDirRes spResHdr,
00612     float *fpResData)
00613 {
00614     long lDataCntr;
00615     int i3DArray;
00616     char *cpHdrPtr = (char *) vpMsgBuf;
00617     float *fpDataPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00618 
00619     #ifndef __QNX__
00620     sscanf(cpHdrPtr, "%li:%li %f %f %f %li %i",
00621     #else
00622     sscanf(cpHdrPtr, "%i:%i %f %f %f %li %i",
00623     #endif
00624         &spResHdr->sTimeStamp.tv_sec, &spResHdr->sTimeStamp.tv_usec,
00625         &spResHdr->fIntegrationTime,
00626         &spResHdr->fHighFreqLimit,
00627         &spResHdr->fPeakLevel,
00628         &spResHdr->lSectorCount,
00629         &i3DArray);
00630     spResHdr->b3DArray = (i3DArray == MSG_TRUE) ? true : false;
00631     for (lDataCntr = 0; lDataCntr < spResHdr->lSectorCount; lDataCntr++)
00632     {
00633         EndianConv(&fpResData[lDataCntr], &fpDataPtr[lDataCntr]);
00634     }
00635 }
00636 
00637 
00638 void clDirMsg::GetResult (const void *vpMsgBuf, stpDirRes spResHdr,
00639     double *dpResData)
00640 {
00641     long lDataCntr;
00642     int i3DArray;
00643     char *cpHdrPtr = (char *) vpMsgBuf;
00644     double *dpDataPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00645 
00646     #ifndef __QNX__
00647     sscanf(cpHdrPtr, "%li:%li %f %f %f %li %i",
00648     #else
00649     sscanf(cpHdrPtr, "%i:%i %f %f %f %li %i",
00650     #endif
00651         &spResHdr->sTimeStamp.tv_sec, &spResHdr->sTimeStamp.tv_usec,
00652         &spResHdr->fIntegrationTime,
00653         &spResHdr->fHighFreqLimit,
00654         &spResHdr->fPeakLevel,
00655         &spResHdr->lSectorCount,
00656         &i3DArray);
00657     spResHdr->b3DArray = (i3DArray == MSG_TRUE) ? true : false;
00658     for (lDataCntr = 0; lDataCntr < spResHdr->lSectorCount; lDataCntr++)
00659     {
00660         EndianConv(&dpResData[lDataCntr], &dpDataPtr[lDataCntr]);
00661     }
00662 }
00663 
00664 
00665 void clDirMsg2::SetRequest (char *cpMsgBuf, const stpDirReq2 spDirRq)
00666 {
00667     #ifndef USE_G_SNPRINTF
00668         sprintf(cpMsgBuf, 
00669             "%li %.3f %.3f %.5f %i %.3f %i %g %li %li",
00670             spDirRq->lWindowSize,
00671             spDirRq->fSoundSpeed,
00672             spDirRq->fLowFreqLimit,
00673             spDirRq->fIntegrationTime,
00674             spDirRq->iScaling,
00675             spDirRq->fScalingExp,
00676             spDirRq->iRemoveNoise,
00677             spDirRq->fAlpha,
00678             spDirRq->lMeanLength,
00679             spDirRq->lGapLength);
00680     #else
00681         g_snprintf(cpMsgBuf, GLOBAL_HEADER_LEN,
00682             "%li %.3f %.3f %.5f %i %.3f %i %g %li %li",
00683             spDirRq->lWindowSize,
00684             spDirRq->fSoundSpeed,
00685             spDirRq->fLowFreqLimit,
00686             spDirRq->fIntegrationTime,
00687             spDirRq->iScaling,
00688             spDirRq->fScalingExp,
00689             spDirRq->iRemoveNoise,
00690             spDirRq->fAlpha,
00691             spDirRq->lMeanLength,
00692             spDirRq->lGapLength);
00693     #endif
00694 }
00695 
00696 
00697 void clDirMsg2::GetRequest (const char *cpMsgBuf, stpDirReq2 spDirRq)
00698 {
00699     sscanf(cpMsgBuf,
00700         "%li %f %f %f %i %f %i %g %li %li",
00701         &spDirRq->lWindowSize,
00702         &spDirRq->fSoundSpeed,
00703         &spDirRq->fLowFreqLimit,
00704         &spDirRq->fIntegrationTime,
00705         &spDirRq->iScaling,
00706         &spDirRq->fScalingExp,
00707         &spDirRq->iRemoveNoise,
00708         &spDirRq->fAlpha,
00709         &spDirRq->lMeanLength,
00710         &spDirRq->lGapLength);
00711 }
00712 
00713 
00714 void clDirMsg2::SetResult (void *vpMsgBuf, const stpDirRes2 spDirHdr,
00715     const float *fpLevRes, const float *fpDirRes)
00716 {
00717     long lDataCntr;
00718     char *cpHdrPtr = (char *) vpMsgBuf;
00719     float *fpLevResPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00720     float *fpDirResPtr = (float *) &fpLevResPtr[spDirHdr->lResultCount];
00721 
00722     #ifndef USE_G_SNPRINTF
00723         sprintf(cpHdrPtr, 
00724             "%li:%li %li %li %g %li %.3f %.5f",
00725             (long) spDirHdr->sTimeStamp.tv_sec,
00726             (long) spDirHdr->sTimeStamp.tv_usec,
00727             spDirHdr->lMinBin,
00728             spDirHdr->lMaxBin,
00729             spDirHdr->fFreqResolution,
00730             spDirHdr->lResultCount,
00731             spDirHdr->fPeakLevel,
00732             spDirHdr->fIntegrationTime);
00733     #else
00734         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN, 
00735             "%li:%li %li %li %g %li %.3f %.5f",
00736             (long) spDirHdr->sTimeStamp.tv_sec,
00737             (long) spDirHdr->sTimeStamp.tv_usec,
00738             spDirHdr->lMinBin,
00739             spDirHdr->lMaxBin,
00740             spDirHdr->fFreqResolution,
00741             spDirHdr->lResultCount,
00742             spDirHdr->fPeakLevel,
00743             spDirHdr->fIntegrationTime);
00744     #endif
00745     for (lDataCntr = 0; lDataCntr < spDirHdr->lResultCount; lDataCntr++)
00746     {
00747         EndianConv(&fpLevResPtr[lDataCntr], &fpLevRes[lDataCntr]);
00748         EndianConv(&fpDirResPtr[lDataCntr], &fpDirRes[lDataCntr]);
00749     }
00750 }
00751 
00752 
00753 void clDirMsg2::SetResult (void *vpMsgBuf, const stpDirRes2 spDirHdr,
00754     const double *dpLevRes, const double *dpDirRes)
00755 {
00756     long lDataCntr;
00757     char *cpHdrPtr = (char *) vpMsgBuf;
00758     double *dpLevResPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00759     double *dpDirResPtr = (double *) &dpLevResPtr[spDirHdr->lResultCount];
00760 
00761     #ifndef USE_G_SNPRINTF
00762         sprintf(cpHdrPtr,
00763             "%li:%li %li %li %g %li %.3f %.5f",
00764             (long) spDirHdr->sTimeStamp.tv_sec,
00765             (long) spDirHdr->sTimeStamp.tv_usec,
00766             spDirHdr->lMinBin,
00767             spDirHdr->lMaxBin,
00768             spDirHdr->fFreqResolution,
00769             spDirHdr->lResultCount,
00770             spDirHdr->fPeakLevel,
00771             spDirHdr->fIntegrationTime);
00772     #else
00773         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN,
00774             "%li:%li %li %li %g %li %.3f %.5f",
00775             (long) spDirHdr->sTimeStamp.tv_sec,
00776             (long) spDirHdr->sTimeStamp.tv_usec,
00777             spDirHdr->lMinBin,
00778             spDirHdr->lMaxBin,
00779             spDirHdr->fFreqResolution,
00780             spDirHdr->lResultCount,
00781             spDirHdr->fPeakLevel,
00782             spDirHdr->fIntegrationTime);
00783     #endif
00784     for (lDataCntr = 0; lDataCntr < spDirHdr->lResultCount; lDataCntr++)
00785     {
00786         EndianConv(&dpLevResPtr[lDataCntr], &dpLevRes[lDataCntr]);
00787         EndianConv(&dpDirResPtr[lDataCntr], &dpDirRes[lDataCntr]);
00788     }
00789 }
00790 
00791 
00792 void clDirMsg2::GetResult (const void *vpMsgBuf, stpDirRes2 spDirHdr,
00793     float *fpLevRes, float *fpDirRes)
00794 {
00795     long lDataCntr;
00796     char *cpHdrPtr = (char *) vpMsgBuf;
00797 
00798     sscanf(cpHdrPtr,
00799         #ifndef __QNX__
00800         "%li:%li %li %li %g %li %f %f",
00801         #else
00802         "%i:%i %li %li %g %li %f %f",
00803         #endif
00804         &spDirHdr->sTimeStamp.tv_sec,
00805         &spDirHdr->sTimeStamp.tv_usec,
00806         &spDirHdr->lMinBin,
00807         &spDirHdr->lMaxBin,
00808         &spDirHdr->fFreqResolution,
00809         &spDirHdr->lResultCount,
00810         &spDirHdr->fPeakLevel,
00811         &spDirHdr->fIntegrationTime);
00812     
00813     float *fpLevResPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00814     float *fpDirResPtr = (float *) &fpLevResPtr[spDirHdr->lResultCount];
00815     for (lDataCntr = 0; lDataCntr < spDirHdr->lResultCount; lDataCntr++)
00816     {
00817         EndianConv(&fpLevRes[lDataCntr], &fpLevResPtr[lDataCntr]);
00818         EndianConv(&fpDirRes[lDataCntr], &fpDirResPtr[lDataCntr]);
00819     }
00820 }
00821 
00822 
00823 void clDirMsg2::GetResult (const void *vpMsgBuf, stpDirRes2 spDirHdr,
00824     double *dpLevRes, double *dpDirRes)
00825 {
00826     long lDataCntr;
00827     char *cpHdrPtr = (char *) vpMsgBuf;
00828 
00829     sscanf(cpHdrPtr,
00830         #ifndef __QNX__
00831         "%li:%li %li %li %g %li %f %f",
00832         #else
00833         "%i:%i %li %li %g %li %f %f",
00834         #endif
00835         &spDirHdr->sTimeStamp.tv_sec,
00836         &spDirHdr->sTimeStamp.tv_usec,
00837         &spDirHdr->lMinBin,
00838         &spDirHdr->lMaxBin,
00839         &spDirHdr->fFreqResolution,
00840         &spDirHdr->lResultCount,
00841         &spDirHdr->fPeakLevel,
00842         &spDirHdr->fIntegrationTime);
00843 
00844     double *dpLevResPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00845     double *dpDirResPtr = (double *) &dpLevResPtr[spDirHdr->lResultCount];
00846     for (lDataCntr = 0; lDataCntr < spDirHdr->lResultCount; lDataCntr++)
00847     {
00848         EndianConv(&dpLevRes[lDataCntr], &dpLevResPtr[lDataCntr]);
00849         EndianConv(&dpDirRes[lDataCntr], &dpDirResPtr[lDataCntr]);
00850     }
00851 }
00852 
00853 
00854 void clLofarMsg::SetRequest (char *cpMsgBuf, const stpLofarReq spLofarRq)
00855 {
00856     int iLinear;
00857     int iDemon;
00858 
00859     iLinear = (spLofarRq->bLinear) ? MSG_TRUE : MSG_FALSE;
00860     iDemon = (spLofarRq->bDemon) ? MSG_TRUE : MSG_FALSE;
00861     #ifndef USE_G_SNPRINTF
00862         sprintf(cpMsgBuf, 
00863             "%i %i %i %g %li %.3f %.3f %i %i %i %g %li %li %i %i %li",
00864             spLofarRq->iChannel,
00865             spLofarRq->iType,
00866             spLofarRq->iWindow,
00867             spLofarRq->fWinParameter,
00868             spLofarRq->lWinLength,
00869             spLofarRq->fLowFreq,
00870             spLofarRq->fHighFreq,
00871             spLofarRq->iOverlap,
00872             iLinear,
00873             spLofarRq->iRemoveNoise,
00874             spLofarRq->fAlpha,
00875             spLofarRq->lMeanLength,
00876             spLofarRq->lGapLength,
00877             iDemon,
00878             spLofarRq->iClip,
00879             spLofarRq->lAvgCount);
00880     #else
00881         g_snprintf(cpMsgBuf, GLOBAL_HEADER_LEN,
00882             "%i %i %i %g %li %.3f %.3f %i %i %i %g %li %li %i %i %li",
00883             spLofarRq->iChannel,
00884             spLofarRq->iType,
00885             spLofarRq->iWindow,
00886             spLofarRq->fWinParameter,
00887             spLofarRq->lWinLength,
00888             spLofarRq->fLowFreq,
00889             spLofarRq->fHighFreq,
00890             spLofarRq->iOverlap,
00891             iLinear,
00892             spLofarRq->iRemoveNoise,
00893             spLofarRq->fAlpha,
00894             spLofarRq->lMeanLength,
00895             spLofarRq->lGapLength,
00896             iDemon,
00897             spLofarRq->iClip,
00898             spLofarRq->lAvgCount);
00899     #endif
00900 }
00901 
00902 
00903 void clLofarMsg::GetRequest (const char *cpMsgBuf, stpLofarReq spLofarRq)
00904 {
00905     int iLinear;
00906     int iDemon;
00907 
00908     sscanf(cpMsgBuf, "%i %i %i %g %li %f %f %i %i %i %g %li %li %i %i %li",
00909         &spLofarRq->iChannel,
00910         &spLofarRq->iType,
00911         &spLofarRq->iWindow,
00912         &spLofarRq->fWinParameter,
00913         &spLofarRq->lWinLength,
00914         &spLofarRq->fLowFreq,
00915         &spLofarRq->fHighFreq,
00916         &spLofarRq->iOverlap,
00917         &iLinear,
00918         &spLofarRq->iRemoveNoise,
00919         &spLofarRq->fAlpha,
00920         &spLofarRq->lMeanLength,
00921         &spLofarRq->lGapLength,
00922         &iDemon,
00923         &spLofarRq->iClip,
00924         &spLofarRq->lAvgCount);
00925     spLofarRq->bLinear = (iLinear == MSG_TRUE) ? true : false;
00926     spLofarRq->bDemon = (iDemon == MSG_TRUE) ? true : false;
00927 }
00928 
00929 
00930 void clLofarMsg::SetResult (void *vpMsgBuf, const stpLofarRes spResHdr,
00931     const float *fpResData)
00932 {
00933     long lDataCntr;
00934     char *cpHdrPtr = (char *) vpMsgBuf;
00935     float *fpDataPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00936 
00937     #ifndef USE_G_SNPRINTF
00938         sprintf(cpHdrPtr, "%li:%li %li %.3f %.3f %.3f %g %.3f",
00939             (long) spResHdr->sTimeStamp.tv_sec,
00940             (long) spResHdr->sTimeStamp.tv_usec,
00941             spResHdr->lSpectLength,
00942             spResHdr->fLowFreq,
00943             spResHdr->fHighFreq,
00944             spResHdr->fDemonBand,
00945             spResHdr->fLineTime,
00946             spResHdr->fPeakLevel);
00947     #else
00948         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN,
00949             "%li:%li %li %.3f %.3f %.3f %g %.3f",
00950             (long) spResHdr->sTimeStamp.tv_sec,
00951             (long) spResHdr->sTimeStamp.tv_usec,
00952             spResHdr->lSpectLength,
00953             spResHdr->fLowFreq,
00954             spResHdr->fHighFreq,
00955             spResHdr->fDemonBand,
00956             spResHdr->fLineTime,
00957             spResHdr->fPeakLevel);
00958     #endif
00959     for (lDataCntr = 0; lDataCntr < spResHdr->lSpectLength; lDataCntr++)
00960     {
00961         EndianConv(&fpDataPtr[lDataCntr], &fpResData[lDataCntr]);
00962     }
00963 }
00964 
00965 
00966 void clLofarMsg::SetResult (void *vpMsgBuf, const stpLofarRes spResHdr,
00967     const double *dpResData)
00968 {
00969     long lDataCntr;
00970     char *cpHdrPtr = (char *) vpMsgBuf;
00971     double *dpDataPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
00972 
00973     #ifndef USE_G_SNPRINTF
00974         sprintf(cpHdrPtr, "%li:%li %li %.3f %.3f %.3f %g %.3f",
00975             (long) spResHdr->sTimeStamp.tv_sec,
00976             (long) spResHdr->sTimeStamp.tv_usec,
00977             spResHdr->lSpectLength,
00978             spResHdr->fLowFreq,
00979             spResHdr->fHighFreq,
00980             spResHdr->fDemonBand,
00981             spResHdr->fLineTime,
00982             spResHdr->fPeakLevel);
00983     #else
00984         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN,
00985             "%li:%li %li %.3f %.3f %.3f %g %.3f",
00986             (long) spResHdr->sTimeStamp.tv_sec,
00987             (long) spResHdr->sTimeStamp.tv_usec,
00988             spResHdr->lSpectLength,
00989             spResHdr->fLowFreq,
00990             spResHdr->fHighFreq,
00991             spResHdr->fDemonBand,
00992             spResHdr->fLineTime,
00993             spResHdr->fPeakLevel);
00994     #endif
00995     for (lDataCntr = 0; lDataCntr < spResHdr->lSpectLength; lDataCntr++)
00996     {
00997         EndianConv(&dpDataPtr[lDataCntr], &dpResData[lDataCntr]);
00998     }
00999 }
01000 
01001 
01002 void clLofarMsg::GetResult (const void *vpMsgBuf, stpLofarRes spResHdr,
01003     float *fpResData)
01004 {
01005     long lDataCntr;
01006     char *cpHdrPtr = (char *) vpMsgBuf;
01007     float *fpDataPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
01008 
01009     #ifndef __QNX__
01010     sscanf(cpHdrPtr, "%li:%li %li %f %f %f %g %f",
01011     #else
01012     sscanf(cpHdrPtr, "%i:%i %li %f %f %f %g %f",
01013     #endif
01014         &spResHdr->sTimeStamp.tv_sec,
01015         &spResHdr->sTimeStamp.tv_usec,
01016         &spResHdr->lSpectLength,
01017         &spResHdr->fLowFreq,
01018         &spResHdr->fHighFreq,
01019         &spResHdr->fDemonBand,
01020         &spResHdr->fLineTime,
01021         &spResHdr->fPeakLevel);
01022     for (lDataCntr = 0; lDataCntr < spResHdr->lSpectLength; lDataCntr++)
01023     {
01024         EndianConv(&fpResData[lDataCntr], &fpDataPtr[lDataCntr]);
01025     }
01026 }
01027 
01028 
01029 void clLofarMsg::GetResult (const void *vpMsgBuf, stpLofarRes spResHdr,
01030     double *dpResData)
01031 {
01032     long lDataCntr;
01033     char *cpHdrPtr = (char *) vpMsgBuf;
01034     double *dpDataPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
01035 
01036     #ifndef __QNX__
01037     sscanf(cpHdrPtr, "%li:%li %li %f %f %f %g %f",
01038     #else
01039     sscanf(cpHdrPtr, "%i:%i %li %f %f %f %g %f",
01040     #endif
01041         &spResHdr->sTimeStamp.tv_sec,
01042         &spResHdr->sTimeStamp.tv_usec,
01043         &spResHdr->lSpectLength,
01044         &spResHdr->fLowFreq,
01045         &spResHdr->fHighFreq,
01046         &spResHdr->fDemonBand,
01047         &spResHdr->fLineTime,
01048         &spResHdr->fPeakLevel);
01049     for (lDataCntr = 0; lDataCntr < spResHdr->lSpectLength; lDataCntr++)
01050     {
01051         EndianConv(&dpResData[lDataCntr], &dpDataPtr[lDataCntr]);
01052     }
01053 }
01054 
01055 
01056 void clBeamAudioMsg::SetRequest (char *cpMsgBuf, 
01057     const stpBeamAudioReq spReqHdr)
01058 {
01059     int iHighFreq;
01060 
01061     iHighFreq = (spReqHdr->bHighFreq) ? MSG_TRUE : MSG_FALSE;
01062     #ifndef USE_G_SNPRINTF
01063         sprintf(cpMsgBuf, "%f %.2f %i", 
01064             spReqHdr->fDirection,
01065             spReqHdr->fSoundSpeed,
01066             iHighFreq);
01067     #else
01068         g_snprintf(cpMsgBuf, GLOBAL_HEADER_LEN, "%f %.2f %i", 
01069             spReqHdr->fDirection,
01070             spReqHdr->fSoundSpeed,
01071             iHighFreq);
01072     #endif
01073 }
01074 
01075 
01076 void clBeamAudioMsg::GetRequest (const char *cpMsgBuf, 
01077     stpBeamAudioReq spReqHdr)
01078 {
01079     int iHighFreq;
01080 
01081     sscanf(cpMsgBuf, "%f %f %i", 
01082         &spReqHdr->fDirection,
01083         &spReqHdr->fSoundSpeed,
01084         &iHighFreq);
01085     spReqHdr->bHighFreq = (iHighFreq == MSG_TRUE) ? true : false;
01086 }
01087 
01088 
01089 void clBeamAudioMsg::SetFirst (char *cpMsgBuf, 
01090     const stpBeamAudioFirst spFirst)
01091 {
01092     #ifndef USE_G_SNPRINTF
01093         sprintf(cpMsgBuf, "%li %i", 
01094             spFirst->lBufLength,
01095             spFirst->iSampleRate);
01096     #else
01097         g_snprintf(cpMsgBuf, GLOBAL_HEADER_LEN, "%li %i", 
01098             spFirst->lBufLength,
01099             spFirst->iSampleRate);
01100     #endif
01101 }
01102 
01103 
01104 void clBeamAudioMsg::GetFirst (const char *cpMsgBuf,
01105     stpBeamAudioFirst spFirst)
01106 {
01107     sscanf(cpMsgBuf, "%li %i", 
01108         &spFirst->lBufLength,
01109         &spFirst->iSampleRate);
01110 }
01111 
01112 
01113 void clBeamAudioMsg::SetResult (void *vpMsgBuf, 
01114     const stpBeamAudioRes spResHdr, const float *fpResData)
01115 {
01116     long lDataCntr;
01117     char *cpHdrPtr = (char *) vpMsgBuf;
01118     float *fpDataPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
01119 
01120     #ifndef USE_G_SNPRINTF
01121         sprintf(cpHdrPtr, "%li:%li %li %.3f %f", 
01122             (long) spResHdr->sTimeStamp.tv_sec,
01123             (long) spResHdr->sTimeStamp.tv_usec,
01124             spResHdr->lBufLength,
01125             spResHdr->fPeakLevel,
01126             spResHdr->fDirection);
01127     #else
01128         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN, "%li:%li %li %.3f %f",
01129             (long) spResHdr->sTimeStamp.tv_sec,
01130             (long) spResHdr->sTimeStamp.tv_usec,
01131             spResHdr->lBufLength,
01132             spResHdr->fPeakLevel,
01133             spResHdr->fDirection);
01134     #endif
01135     for (lDataCntr = 0; lDataCntr < spResHdr->lBufLength; lDataCntr++)
01136     {
01137         EndianConv(&fpDataPtr[lDataCntr], &fpResData[lDataCntr]);
01138     }
01139 }
01140 
01141 
01142 void clBeamAudioMsg::SetResult (void *vpMsgBuf,
01143     const stpBeamAudioRes spResHdr, const double *dpResData)
01144 {
01145     long lDataCntr;
01146     char *cpHdrPtr = (char *) vpMsgBuf;
01147     double *dpDataPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
01148 
01149     #ifndef USE_G_SNPRINTF
01150         sprintf(cpHdrPtr, "%li:%li %li %.3f %f",
01151             (long) spResHdr->sTimeStamp.tv_sec,
01152             (long) spResHdr->sTimeStamp.tv_usec,
01153             spResHdr->lBufLength,
01154             spResHdr->fPeakLevel,
01155             spResHdr->fDirection);
01156     #else
01157         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN, "%li:%li %li %.3f %f",
01158             (long) spResHdr->sTimeStamp.tv_sec,
01159             (long) spResHdr->sTimeStamp.tv_usec,
01160             spResHdr->lBufLength,
01161             spResHdr->fPeakLevel,
01162             spResHdr->fDirection);
01163     #endif
01164     for (lDataCntr = 0; lDataCntr < spResHdr->lBufLength; lDataCntr++)
01165     {
01166         EndianConv(&dpDataPtr[lDataCntr], &dpResData[lDataCntr]);
01167     }
01168 }
01169 
01170 
01171 void clBeamAudioMsg::GetResult (const void *vpMsgBuf,
01172     stpBeamAudioRes spResHdr, float *fpResData)
01173 {
01174     long lDataCntr;
01175     char *cpHdrPtr = (char *) vpMsgBuf;
01176     float *fpDataPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
01177 
01178     #ifndef __QNX__
01179     sscanf(cpHdrPtr, "%li:%li %li %f %f",
01180     #else
01181     sscanf(cpHdrPtr, "%i:%i %li %f %f",
01182     #endif
01183         &spResHdr->sTimeStamp.tv_sec,
01184         &spResHdr->sTimeStamp.tv_usec,
01185         &spResHdr->lBufLength,
01186         &spResHdr->fPeakLevel,
01187         &spResHdr->fDirection);
01188     for (lDataCntr = 0; lDataCntr < spResHdr->lBufLength; lDataCntr++)
01189     {
01190         EndianConv(&fpResData[lDataCntr], &fpDataPtr[lDataCntr]);
01191     }
01192 }
01193 
01194 
01195 void clBeamAudioMsg::GetResult (const void *vpMsgBuf,
01196     stpBeamAudioRes spResHdr, double *dpResData)
01197 {
01198     long lDataCntr;
01199     char *cpHdrPtr = (char *) vpMsgBuf;
01200     double *dpDataPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
01201 
01202     #ifndef __QNX__
01203     sscanf(cpHdrPtr, "%li:%li %li %f %f",
01204     #else
01205     sscanf(cpHdrPtr, "%i:%i %li %f %f",
01206     #endif
01207         &spResHdr->sTimeStamp.tv_sec,
01208         &spResHdr->sTimeStamp.tv_usec,
01209         &spResHdr->lBufLength,
01210         &spResHdr->fPeakLevel,
01211         &spResHdr->fDirection);
01212     for (lDataCntr = 0; lDataCntr < spResHdr->lBufLength; lDataCntr++)
01213     {
01214         EndianConv(&dpResData[lDataCntr], &dpDataPtr[lDataCntr]);
01215     }
01216 }
01217 
01218 
01219 void clLevelMsg::SetRequest (char *cpRequest, const stpLevelReq spRequest)
01220 {
01221     #ifndef USE_G_SNPRINTF
01222         sprintf(cpRequest, "%i %i %f %.3f %.3f",
01223             spRequest->iChannel,
01224             spRequest->iAlgorithm,
01225             spRequest->fIntegrationTime,
01226             spRequest->fLowFrequency,
01227             spRequest->fHighFrequency);
01228     #else
01229         g_snprintf(cpRequest, GLOBAL_HEADER_LEN, "%i %i %f %.3f %.3f",
01230             spRequest->iChannel,
01231             spRequest->iAlgorithm,
01232             spRequest->fIntegrationTime,
01233             spRequest->fLowFrequency,
01234             spRequest->fHighFrequency);
01235     #endif
01236 }
01237 
01238 
01239 void clLevelMsg::GetRequest (const char *cpRequest, stpLevelReq spRequest)
01240 {
01241     sscanf(cpRequest, "%i %i %f %f %f",
01242         &spRequest->iChannel,
01243         &spRequest->iAlgorithm,
01244         &spRequest->fIntegrationTime,
01245         &spRequest->fLowFrequency,
01246         &spRequest->fHighFrequency);
01247 }
01248 
01249 
01250 void clLevelMsg::SetResult (void *vpMsgBuf, const stpLevelRes spResHdr)
01251 {
01252     char *cpHeader = (char *) vpMsgBuf;
01253 
01254     #ifndef USE_G_SNPRINTF
01255         sprintf(cpHeader, "%li:%li %f %.3f %g",
01256             (long) spResHdr->sTimeStamp.tv_sec,
01257             (long) spResHdr->sTimeStamp.tv_usec,
01258             spResHdr->fIntegrationTime,
01259             spResHdr->fPeakLevel,
01260             spResHdr->fResult);
01261     #else
01262         g_snprintf(cpHeader, GLOBAL_HEADER_LEN, "%li:%li %f %.3f %g",
01263             (long) spResHdr->sTimeStamp.tv_sec,
01264             (long) spResHdr->sTimeStamp.tv_usec,
01265             spResHdr->fIntegrationTime,
01266             spResHdr->fPeakLevel,
01267             spResHdr->fResult);
01268     #endif
01269 }
01270 
01271 
01272 void clLevelMsg::GetResult (const void *vpMsgBuf, stpLevelRes spResHdr)
01273 {
01274     char *cpHeader = (char *) vpMsgBuf;
01275 
01276     #ifndef __QNX__
01277     sscanf(cpHeader, "%li:%li %f %f %f",
01278     #else
01279         sscanf(cpHeader, "%i:%i %f %f %f",
01280     #endif
01281         &spResHdr->sTimeStamp.tv_sec,
01282         &spResHdr->sTimeStamp.tv_usec,
01283         &spResHdr->fIntegrationTime,
01284         &spResHdr->fPeakLevel,
01285         &spResHdr->fResult);
01286 }
01287 
01288 
01289 void clLocateMsg::SetHeader (char *cpMsgBuf, const stpLocateHdr spHdr)
01290 {
01291     #ifndef USE_G_SNPRINTF
01292         sprintf(cpMsgBuf, "%i %i",
01293             spHdr->iWidth,
01294             spHdr->iHeight);
01295     #else
01296         g_snprintf(cpMsgBuf, GLOBAL_HEADER_LEN, 
01297             "%i %i",
01298             spHdr->iWidth,
01299             spHdr->iHeight);
01300     #endif
01301 }
01302 
01303 
01304 void clLocateMsg::GetHeader (const char *cpMsgBuf, stpLocateHdr spHdr)
01305 {
01306     sscanf(cpMsgBuf, "%i %i",
01307         &spHdr->iWidth,
01308         &spHdr->iHeight);
01309 }
01310 
01311 
01312 void clLocateMsg::SetResult (void *vpMsgBuf, const stpLocateRes spResHdr,
01313     const float *fpResData)
01314 {
01315     long lDataCntr;
01316     char *cpHdrPtr = (char *) vpMsgBuf;
01317     float *fpDataPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
01318 
01319     #ifndef USE_G_SNPRINTF
01320         sprintf(cpHdrPtr,
01321             "%li",
01322             spResHdr->lPointCount);
01323     #else
01324         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN,
01325             "%li",
01326             spResHdr->lPointCount);
01327     #endif
01328     for (lDataCntr = 0; lDataCntr < spResHdr->lPointCount; lDataCntr++)
01329     {
01330         EndianConv(&fpDataPtr[lDataCntr], &fpResData[lDataCntr]);
01331     }
01332 }
01333 
01334 
01335 void clLocateMsg::SetResult (void *vpMsgBuf, const stpLocateRes spResHdr,
01336     const double *dpResData)
01337 {
01338     long lDataCntr;
01339     char *cpHdrPtr = (char *) vpMsgBuf;
01340     double *dpDataPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
01341 
01342     #ifndef USE_G_SNPRINTF
01343         sprintf(cpHdrPtr,
01344             "%li",
01345             spResHdr->lPointCount);
01346     #else
01347         g_snprintf(cpHdrPtr, GLOBAL_HEADER_LEN,
01348             "%li",
01349             spResHdr->lPointCount);
01350     #endif
01351     for (lDataCntr = 0; lDataCntr < spResHdr->lPointCount; lDataCntr++)
01352     {
01353         EndianConv(&dpDataPtr[lDataCntr], &dpResData[lDataCntr]);
01354     }
01355 }
01356 
01357 
01358 void clLocateMsg::GetResult (const void *vpMsgBuf, stpLocateRes spResHdr,
01359     float *fpResData)
01360 {
01361     long lDataCntr;
01362     char *cpHdrPtr = (char *) vpMsgBuf;
01363     float *fpDataPtr = (float *) &cpHdrPtr[GLOBAL_HEADER_LEN];
01364 
01365     sscanf(cpHdrPtr,
01366         "%li",
01367         &spResHdr->lPointCount);
01368     for (lDataCntr = 0; lDataCntr < spResHdr->lPointCount; lDataCntr++)
01369     {
01370         EndianConv(&fpResData[lDataCntr], &fpDataPtr[lDataCntr]);
01371     }
01372 }
01373 
01374 
01375 void clLocateMsg::GetResult (const void *vpMsgBuf, stpLocateRes spResHdr,
01376     double *dpResData)
01377 {
01378     long lDataCntr;
01379     char *cpHdrPtr = (char *) vpMsgBuf;
01380     double *dpDataPtr = (double *) &cpHdrPtr[GLOBAL_HEADER_LEN];
01381 
01382     sscanf(cpHdrPtr,
01383         "%li",
01384         &spResHdr->lPointCount);
01385     for (lDataCntr = 0; lDataCntr < spResHdr->lPointCount; lDataCntr++)
01386     {
01387         EndianConv(&dpResData[lDataCntr], &dpDataPtr[lDataCntr]);
01388     }
01389 }
01390 

Generated on Sun Oct 26 19:11:21 2003 for HASAS by doxygen 1.3.3