CigiHatReqV2.cpp

Go to the documentation of this file.
00001 
00059 #define _EXPORT_CCL_
00060 
00061 #include "CigiHatReqV2.h"
00062 #include "CigiSwapping.h"
00063 #include "CigiExceptions.h"
00064 
00065 #include <memory.h>
00066 
00067 
00068 #ifdef CIGI_LITTLE_ENDIAN
00069    #define CIGI_SCOPY2 CigiSwap2
00070    #define CIGI_SCOPY4 CigiSwap4
00071    #define CIGI_SCOPY8 CigiSwap8
00072 #else
00073    #define CIGI_SCOPY2 CigiCopy2
00074    #define CIGI_SCOPY4 CigiCopy4
00075    #define CIGI_SCOPY8 CigiCopy8
00076 #endif
00077 
00078 
00079 
00080 
00081 // ====================================================================
00082 // Construction/Destruction
00083 // ====================================================================
00084 
00085 
00086 // ================================================
00087 // CigiHatReqV2
00088 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00089 CigiHatReqV2::CigiHatReqV2()
00090 {
00091 
00092    PacketID = CIGI_HAT_REQ_PACKET_ID_V2;
00093    PacketSize = CIGI_HAT_REQ_PACKET_SIZE_V2;
00094    Version = 2;
00095    MinorVersion = 0;
00096 
00097    HatHotID = 0;
00098    ReqType = HAT;
00099    SrcCoordSys = Geodetic;
00100    UpdatePeriod = 0;
00101    EntityID = 0;
00102    LatOrXoff = 0.0;
00103    LonOrYoff = 0.0;
00104    AltOrZoff = 0.0;
00105    IsValidV1or2 = true;
00106 
00107 }
00108 
00109 // ================================================
00110 // ~CigiHatReqV2
00111 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00112 CigiHatReqV2::~CigiHatReqV2()
00113 {
00114 
00115 }
00116 
00117 // ====================================================================
00118 // Pack and Unpack
00119 // ====================================================================
00120 
00121 // ================================================
00122 // Pack
00123 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00124 int CigiHatReqV2::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00125 {
00126    double DBuf[6];
00127 
00128    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00129 
00130    PackPointer CDta;
00131 
00132    CigiBaseHatHotReq * Data = ( CigiBaseHatHotReq *)Base;
00133 
00134    if(!Data->IsValidV1or2)
00135       return(0);
00136 
00137    CDta.d = DBuf;
00138 
00139    *CDta.c++ = PacketID;
00140    *CDta.c++ = PacketSize;
00141 
00142    CIGI_SCOPY2(CDta.s++, &Data->HatHotID);
00143 
00144    *CDta.l++ = 0;
00145 
00146    CIGI_SCOPY8(CDta.d++, &Data->AltOrZoff);
00147    CIGI_SCOPY8(CDta.d++, &Data->LatOrXoff);
00148    CIGI_SCOPY8(CDta.d++, &Data->LonOrYoff);
00149 
00150    memcpy(Buff,tBuf,CIGI_HAT_REQ_PACKET_SIZE_V2);
00151 
00152    return(PacketSize);
00153 
00154 }
00155 
00156 // ================================================
00157 // Unpack
00158 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00159 int CigiHatReqV2::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00160 {
00161    double DBuf[6];
00162 
00163    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00164 
00165    PackPointer CDta;
00166 
00167    memcpy(tBuf,Buff,CIGI_HAT_REQ_PACKET_SIZE_V2);
00168 
00169    CDta.d = DBuf;
00170 
00171    CDta.c += 2;  // Step over packet id and size
00172 
00173    CIGI_SCOPY2(&HatHotID, CDta.s++);
00174 
00175    CDta.l++;
00176 
00177    CIGI_SCOPY8(&AltOrZoff, CDta.d++);
00178    CIGI_SCOPY8(&LatOrXoff, CDta.d++);
00179    CIGI_SCOPY8(&LonOrYoff, CDta.d++);
00180 
00181 
00182    SrcCoordSys = Geodetic;
00183    IsValidV1or2 = true;
00184 
00185    UpdatePeriod = 0;
00186 
00187    return(PacketSize);
00188 
00189 }
00190 
00191 
00192 // ================================================
00193 // GetCnvt
00194 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00195 int CigiHatReqV2::GetCnvt(CigiVersionID &CnvtVersion,
00196                           CigiCnvtInfoType::Type &CnvtInfo)
00197 {
00198    CnvtInfo.ProcID = CigiProcessType::ProcStd;
00199 
00200    switch(CnvtVersion.CigiMajorVersion)
00201    {
00202    case 1:
00203       CnvtInfo.CnvtPacketID = CIGI_HAT_REQ_PACKET_ID_V1;
00204       break;
00205    case 2:
00206       CnvtInfo.CnvtPacketID = CIGI_HAT_REQ_PACKET_ID_V2;
00207       break;
00208    default:
00209       // The Packet ID for all V3 HatHotReq are the same ID
00210       CnvtInfo.CnvtPacketID = CIGI_HAT_HOT_REQ_PACKET_ID_V3;
00211       break;
00212    }
00213 
00214    return(CIGI_SUCCESS);
00215 }
00216 
00217 
00218 
00219 // ====================================================================
00220 // Accessors
00221 // ====================================================================
00222 
00223 

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