CigiLosRespV3.cpp

Go to the documentation of this file.
00001 
00062 #define _EXPORT_CCL_
00063 
00064 #include "CigiLosRespV3.h"
00065 #include "CigiSwapping.h"
00066 #include "CigiExceptions.h"
00067 
00068 
00069 // ====================================================================
00070 // Construction/Destruction
00071 // ====================================================================
00072 
00073 
00074 // ================================================
00075 // CigiLosRespV3
00076 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00077 CigiLosRespV3::CigiLosRespV3()
00078 {
00079 
00080    PacketID = CIGI_LOS_RESP_PACKET_ID_V3;
00081    PacketSize = CIGI_LOS_RESP_PACKET_SIZE_V3;
00082    Version = 3;
00083    MinorVersion = 0;
00084 
00085    LosID = 0;
00086    Valid = false;
00087    EntityIDValid = false;
00088    RangeValid = false;
00089    Visible = false;
00090    IntersectionCoordSys = Geodetic;
00091    HostFrame = 0;
00092    RespCount = 0;
00093    EntityID = 0;
00094    Range = 0.0;
00095    LatOrXoff = 0.0;
00096    LonOrYoff = 0.0;
00097    AltOrZoff = 0.0;
00098    Red = 0;
00099    Green = 0;
00100    Blue = 0;
00101    Alpha = 0;
00102    Material = 0;
00103    NormalAz = 0.0;
00104    NormalEl = 0.0;
00105    ValidV1or2 = false;
00106 
00107 }
00108 
00109 // ================================================
00110 // ~CigiLosRespV3
00111 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00112 CigiLosRespV3::~CigiLosRespV3()
00113 {
00114 
00115 }
00116 
00117 // ====================================================================
00118 // Pack and Unpack
00119 // ====================================================================
00120 
00121 // ================================================
00122 // Pack
00123 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00124 int CigiLosRespV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00125 {
00126    PackPointer CDta;
00127 
00128    CigiBaseLosResp * Data = ( CigiBaseLosResp *)Base;
00129 
00130    CDta.c = Buff;
00131 
00132    *CDta.c++ = PacketID;
00133    *CDta.c++ = PacketSize;
00134 
00135    *CDta.s++ = Data->LosID;
00136 
00137    Cigi_uint8 HDta = (Data->Valid) ? 0x01 : 0x00;
00138    HDta |= (Data->EntityIDValid) ? 0x02 : 0x00;
00139    HDta |= (Data->Visible) ? 0x04 : 0x00;
00140    *CDta.c++ = HDta;
00141 
00142    *CDta.c++ = Data->RespCount;
00143    *CDta.s++ = Data->EntityID;
00144    *CDta.d++ = Data->Range;
00145 
00146    return(PacketSize);
00147 
00148 }
00149 
00150 // ================================================
00151 // Unpack
00152 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00153 int CigiLosRespV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00154 {
00155    PackPointer CDta;
00156 
00157    CDta.c = Buff;
00158 
00159    CDta.c += 2;  // Step over packet id and size
00160 
00161    if(!Swap)
00162    {
00163       LosID = *CDta.s++;
00164 
00165       Cigi_uint8 HDta = *CDta.c++;
00166       Valid = ((HDta & 0x01) != 0);
00167       EntityIDValid = ((HDta & 0x02) != 0);
00168       Visible = ((HDta & 0x04) != 0);
00169 
00170       RespCount = *CDta.c++;
00171       EntityID = *CDta.s++;
00172       Range = *CDta.d++;
00173 
00174    }
00175    else
00176    {
00177       CigiSwap2(&LosID, CDta.s++);
00178 
00179       Cigi_uint8 HDta = *CDta.c++;
00180       Valid = ((HDta & 0x01) != 0);
00181       EntityIDValid = ((HDta & 0x02) != 0);
00182       Visible = ((HDta & 0x04) != 0);
00183 
00184       RespCount = *CDta.c++;
00185       CigiSwap2(&EntityID, CDta.s++);
00186       CigiSwap8(&Range, CDta.d++);
00187 
00188    }
00189 
00190 
00191    HostFrame = 0;
00192    LatOrXoff = 0.0;
00193    LonOrYoff = 0.0;
00194    AltOrZoff = 0.0;
00195    Material = 0;
00196 
00197    ValidV1or2 = false;
00198 
00199    return(PacketSize);
00200 
00201 }
00202 
00203 
00204 // ================================================
00205 // GetCnvt
00206 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00207 int CigiLosRespV3::GetCnvt(CigiVersionID &CnvtVersion,
00208                            CigiCnvtInfoType::Type &CnvtInfo)
00209 {
00210    CnvtInfo.ProcID = CigiProcessType::ProcStd;
00211 
00212    // Note:
00213    // CIGI_LOS_RESP_PACKET_ID_V1 &
00214    // CIGI_LOS_RESP_PACKET_ID_V2 are the same
00215    // CIGI_LOS_RESP_PACKET_ID_V3 &
00216    // CIGI_LOS_RESP_PACKET_ID_V3_2 are the same
00217    if(CnvtVersion.CigiMajorVersion < 3)
00218       CnvtInfo.CnvtPacketID = CIGI_LOS_RESP_PACKET_ID_V2;
00219    else
00220       CnvtInfo.CnvtPacketID = CIGI_LOS_RESP_PACKET_ID_V3;
00221 
00222    return(CIGI_SUCCESS);
00223 }
00224 
00225 
00226 
00227 // ====================================================================
00228 // Accessors
00229 // ====================================================================
00230 
00231 
00232 

Generated on Wed Apr 29 08:59:58 2009 for CCL by  doxygen 1.4.7