File indexing completed on 2025-08-03 08:20:50
0001 #include <packet_cdevbpm.h>
0002 #include <time.h>
0003
0004 Packet_cdevbpm::Packet_cdevbpm(PACKET_ptr data)
0005 : Packet_w4 (data)
0006 {
0007 ps = 0;
0008 }
0009
0010 int *Packet_cdevbpm::decode ( int *nwout)
0011 {
0012
0013 if (ps != 0) return 0;
0014
0015 int il = getDataLength();
0016
0017 no_structures = 4* il / sizeof ( struct cdevBPMData );
0018 std::cout << "no_structures = " << no_structures << std::endl;
0019 int *k = (int *) findPacketDataStart(packet);
0020 if (k == 0)
0021 {
0022 ps = 0;
0023 *nwout = 0;
0024 return 0;
0025 }
0026
0027 ps = ( struct cdevBPMData *) k;
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038 *nwout = 0;
0039
0040 return 0;
0041 }
0042
0043
0044
0045
0046
0047 void Packet_cdevbpm::dump ( OSTREAM &os)
0048 {
0049
0050 int i;
0051
0052 decode (&i);
0053
0054 this->identify(os);
0055
0056 os << "Number of readings: " << iValue(0,"NOREADINGS") << std::endl;
0057
0058 os << "index ";
0059 os << "avgOrbTimeStamp " ;
0060 os << "avgOrbPosition " ;
0061 os << "argOrbVariance " ;
0062 os << "argOrbStat " << std::endl;
0063
0064 for ( i = 0; i < iValue(0,"NOREADINGS") ; i++)
0065 {
0066 os << std::setw(4 ) << i ;
0067 os << std::setw(16) << iValue(i,"avgOrbTimeStamp") ;
0068 os << std::setw(16) << rValue(i,"avgOrbPosition") ;
0069 os << std::setw(16) << rValue(i,"avgOrbVariance") ;
0070 os << std::setw(16) << rValue(i,"avgOrbStat");
0071 os << std::endl;
0072 }
0073
0074
0075
0076 dumpErrorBlock(os);
0077 dumpDebugBlock(os);
0078 }
0079
0080
0081 int Packet_cdevbpm::iValue(const int ich, const char *what)
0082 {
0083
0084
0085 int i;
0086 decode (&i);
0087
0088 if ( ich < 0 || ich >= no_structures ) return 0;
0089
0090
0091 if ( strcmp(what, "NOREADINGS") == 0 ) return no_structures ;
0092 if ( strcmp(what, "avgOrbTimeStamp") == 0 ) return ps[ich].avgOrbTimeStamp ;
0093 if ( strcmp(what, "datavalidMask") == 0 ) return ps[ich].datavalidMask ;
0094
0095 std::cout << "packet_cdevbpm::iValue error unknown datum: " << what << std::endl;
0096 return 0;
0097 }
0098
0099
0100 float Packet_cdevbpm::rValue(const int ich, const char *what)
0101 {
0102
0103
0104
0105 int i;
0106 decode (&i);
0107
0108 if ( ich < 0 || ich >= no_structures ) return 0;
0109
0110
0111 if ( strcmp(what, "avgOrbPosition") == 0 ) return ps[ich].avgOrbPosition ;
0112 if ( strcmp(what, "avgOrbVariance") == 0 ) return ps[ich].avgOrbVariance ;
0113 if ( strcmp(what, "avgOrbStat") == 0 ) return ps[ich].avgOrbStat;
0114
0115 std::cout << "packet_cdevbpm::rValue error unknown datum: " << what << std::endl;
0116 return 0;
0117
0118
0119
0120 }
0121
0122