00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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