CigiHatRespV1.cpp

Go to the documentation of this file.
00001 
00059 #define _EXPORT_CCL_
00060 
00061 #include "CigiHatRespV1.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 // CigiHatRespV1
00089 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00090 CigiHatRespV1::CigiHatRespV1()
00091 {
00092 
00093    PacketID = CIGI_HAT_RESP_PACKET_ID_V1;
00094    PacketSize = CIGI_HAT_RESP_PACKET_SIZE_V1;
00095    Version = 1;
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 // ~CigiHatRespV1
00114 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00115 CigiHatRespV1::~CigiHatRespV1()
00116 {
00117 
00118 }
00119 
00120 // ====================================================================
00121 // Pack and Unpack
00122 // ====================================================================
00123 
00124 // ================================================
00125 // Pack
00126 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00127 int CigiHatRespV1::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    float tHat;
00145 
00146    if(Data->Valid && Data->VldHat)
00147    {
00148       *CDta.c++ = 0x80;
00149       *CDta.c++ = 0;
00150       *CDta.s++ = 0;
00151       tHat = (float)Data->Hat;
00152    }
00153    else
00154    {
00155       *CDta.l++ = 0;
00156       tHat = 0.0f;
00157    }
00158       
00159    CIGI_SCOPY4(CDta.l++, &Data->Material);
00160    CIGI_SCOPY4(CDta.f++, &tHat);
00161 
00162    memcpy(Buff,tBuf,CIGI_HAT_RESP_PACKET_SIZE_V1);
00163 
00164    return(PacketSize);
00165 
00166 }
00167 
00168 // ================================================
00169 // Unpack
00170 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00171 int CigiHatRespV1::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00172 {
00173    double DBuf[6];
00174 
00175    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00176 
00177    PackPointer CDta;
00178 
00179    memcpy(tBuf,Buff,CIGI_HAT_RESP_PACKET_SIZE_V1);
00180 
00181    CDta.d = DBuf;
00182 
00183    CDta.c += 2;  // Step over packet id and size
00184 
00185    CIGI_SCOPY2(&HatHotID, CDta.s++);
00186 
00187    Valid = (*CDta.c++ != 0);
00188 
00189    CDta.c += 3;
00190 
00191    CIGI_SCOPY4(&Material, CDta.l++);
00192 
00193    float tHat;
00194    CIGI_SCOPY4(&tHat, CDta.f++);
00195    Hat = (double) tHat;
00196 
00197    Hot = 0.0;
00198 
00199    VldHat = Valid;
00200    VldHot = false;
00201 
00202    HostFrame = 0;
00203 
00204    return(PacketSize);
00205 
00206 }
00207 
00208 
00209 // ================================================
00210 // GetCnvt
00211 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00212 int CigiHatRespV1::GetCnvt(CigiVersionID &CnvtVersion,
00213                            CigiCnvtInfoType::Type &CnvtInfo)
00214 {
00215    CnvtInfo.ProcID = CigiProcessType::ProcStd;
00216 
00217    // Note: All HAT and HAT/HOT resp have the same ID
00218    CnvtInfo.CnvtPacketID = CIGI_HAT_HOT_RESP_PACKET_ID_V3;
00219 
00220    return(CIGI_SUCCESS);
00221 }
00222 
00223 
00224 
00225 // ====================================================================
00226 // Accessors
00227 // ====================================================================
00228 
00229 

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