CigiHatReqV1.cpp

Go to the documentation of this file.
00001 
00059 #define _EXPORT_CCL_
00060 
00061 #include "CigiHatReqV1.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 // CigiHatReqV1
00088 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00089 CigiHatReqV1::CigiHatReqV1()
00090 {
00091 
00092    PacketID = CIGI_HAT_REQ_PACKET_ID_V1;
00093    PacketSize = CIGI_HAT_REQ_PACKET_SIZE_V1;
00094    Version = 1;
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 // ~CigiHatReqV1
00111 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00112 CigiHatReqV1::~CigiHatReqV1()
00113 {
00114 
00115 }
00116 
00117 // ====================================================================
00118 // Pack and Unpack
00119 // ====================================================================
00120 
00121 // ================================================
00122 // Pack
00123 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00124 int CigiHatReqV1::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    float talt = (float)Data->AltOrZoff;
00145    CIGI_SCOPY4(CDta.f++, &talt);
00146 
00147    CIGI_SCOPY8(CDta.d++, &Data->LatOrXoff);
00148    CIGI_SCOPY8(CDta.d++, &Data->LonOrYoff);
00149 
00150    memcpy(Buff,tBuf,CIGI_HAT_REQ_PACKET_SIZE_V1);
00151 
00152    return(PacketSize);
00153 
00154 }
00155 
00156 // ================================================
00157 // Unpack
00158 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00159 int CigiHatReqV1::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_V1);
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    float talt;
00176    CIGI_SCOPY4(&talt, CDta.f++);
00177    AltOrZoff = (double)talt;
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 CigiHatReqV1::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_HAT_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