CigiHotReqV2.cpp

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

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