CigiHatRespV2.cpp

Go to the documentation of this file.
00001 
00059 #define _EXPORT_CCL_
00060 
00061 #include "CigiHatRespV2.h"
00062 #include "CigiBaseHatHotReq.h"
00063 #include "CigiSwapping.h"
00064 #include "CigiExceptions.h"
00065 
00066 #include <memory.h>
00067 
00068 
00069 #ifdef CIGI_LITTLE_ENDIAN
00070    #define CIGI_SCOPY2 CigiSwap2
00071    #define CIGI_SCOPY4 CigiSwap4
00072    #define CIGI_SCOPY8 CigiSwap8
00073 #else
00074    #define CIGI_SCOPY2 CigiCopy2
00075    #define CIGI_SCOPY4 CigiCopy4
00076    #define CIGI_SCOPY8 CigiCopy8
00077 #endif
00078 
00079 
00080 
00081 
00082 // ====================================================================
00083 // Construction/Destruction
00084 // ====================================================================
00085 
00086 
00087 // ================================================
00088 // CigiHatRespV2
00089 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00090 CigiHatRespV2::CigiHatRespV2()
00091 {
00092 
00093    PacketID = CIGI_HAT_RESP_PACKET_ID_V2;
00094    PacketSize = CIGI_HAT_RESP_PACKET_SIZE_V2;
00095    Version = 2;
00096    MinorVersion = 0;
00097 
00098    HatHotID = 0;
00099    Valid = false;
00100    ReqType = HAT;
00101    HostFrame = 0;
00102    Hat = 0.0;
00103    Hot = 0.0;
00104    Material = 0;
00105    NormAz = 0.0;
00106    NormEl = 0.0;
00107    VldHat = false;
00108    VldHot = false;
00109 
00110 }
00111 
00112 // ================================================
00113 // ~CigiHatRespV2
00114 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00115 CigiHatRespV2::~CigiHatRespV2()
00116 {
00117 
00118 }
00119 
00120 // ====================================================================
00121 // Pack and Unpack
00122 // ====================================================================
00123 
00124 // ================================================
00125 // Pack
00126 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00127 int CigiHatRespV2::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    CigiBaseHatHotResp * Data = ( CigiBaseHatHotResp *)Base;
00136 
00137    CDta.d = DBuf;
00138 
00139    *CDta.c++ = PacketID;
00140    *CDta.c++ = PacketSize;
00141 
00142    CIGI_SCOPY2(CDta.s++, &Data->HatHotID);
00143 
00144    double tHat;
00145 
00146    if(Data->Valid && Data->VldHat)
00147    {
00148       *CDta.c++ = 0x80;
00149       *CDta.c++ = 0;
00150       *CDta.s++ = 0;
00151       tHat = Data->Hat;
00152    }
00153    else
00154    {
00155       *CDta.l++ = 0;
00156       tHat = 0.0;
00157    }
00158 
00159    *CDta.l++ = 0;
00160 
00161    CIGI_SCOPY4(CDta.l++, &Data->Material);
00162    CIGI_SCOPY8(CDta.d++, &tHat);
00163 
00164 
00165    memcpy(Buff,tBuf,CIGI_HAT_RESP_PACKET_SIZE_V2);
00166 
00167    return(PacketSize);
00168 
00169 }
00170 
00171 // ================================================
00172 // Unpack
00173 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00174 int CigiHatRespV2::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00175 {
00176    double DBuf[6];
00177 
00178    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00179 
00180    PackPointer CDta;
00181 
00182    memcpy(tBuf,Buff,CIGI_HAT_RESP_PACKET_SIZE_V2);
00183 
00184    CDta.d = DBuf;
00185 
00186    CDta.c += 2;  // Step over packet id and size
00187 
00188    CIGI_SCOPY2(&HatHotID, CDta.s++);
00189 
00190    Valid = (*CDta.l++ != 0);
00191 
00192    CDta.l++;
00193 
00194    CIGI_SCOPY4(&Material, CDta.l++);
00195    CIGI_SCOPY8(&Hat, CDta.d++);
00196 
00197    Hot = 0.0;
00198    VldHat = Valid;
00199    VldHot = false;
00200 
00201    HostFrame = 0;
00202 
00203    return(PacketSize);
00204 
00205 }
00206 
00207 
00208 // ================================================
00209 // GetCnvt
00210 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00211 int CigiHatRespV2::GetCnvt(CigiVersionID &CnvtVersion,
00212                            CigiCnvtInfoType::Type &CnvtInfo)
00213 {
00214    CnvtInfo.ProcID = CigiProcessType::ProcStd;
00215 
00216    // Note: All HAT and HAT/HOT resp have the same ID
00217    CnvtInfo.CnvtPacketID = CIGI_HAT_HOT_RESP_PACKET_ID_V3;
00218 
00219    return(CIGI_SUCCESS);
00220 }
00221 
00222 
00223 
00224 // ====================================================================
00225 // Accessors
00226 // ====================================================================
00227 
00228 

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