CigiHotRespV2.cpp

Go to the documentation of this file.
00001 
00059 #define _EXPORT_CCL_
00060 
00061 #include "CigiHotRespV2.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 // CigiHotRespV2
00089 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00090 CigiHotRespV2::CigiHotRespV2()
00091 {
00092 
00093    PacketID = CIGI_HOT_RESP_PACKET_ID_V2;
00094    PacketSize = CIGI_HOT_RESP_PACKET_SIZE_V2;
00095    Version = 2;
00096    MinorVersion = 0;
00097 
00098    HatHotID = 0;
00099    Valid = false;
00100    ReqType = HOT;
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 // ~CigiHotRespV2
00114 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00115 CigiHotRespV2::~CigiHotRespV2()
00116 {
00117 
00118 }
00119 
00120 // ====================================================================
00121 // Pack and Unpack
00122 // ====================================================================
00123 
00124 // ================================================
00125 // Pack
00126 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00127 int CigiHotRespV2::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 tHot;
00145 
00146    if(Data->Valid && Data->VldHot)
00147    {
00148       *CDta.c++ = 0x80;
00149       *CDta.c++ = 0;
00150       *CDta.s++ = 0;
00151       tHot = Data->Hot;
00152    }
00153    else
00154    {
00155       *CDta.l++ = 0;
00156       tHot = 0.0;
00157    }
00158 
00159    *CDta.l++ = 0;
00160 
00161    CIGI_SCOPY4(CDta.l++, &Data->Material);
00162    CIGI_SCOPY8(CDta.d++, &tHot);
00163 
00164    memcpy(Buff,tBuf,CIGI_HOT_RESP_PACKET_SIZE_V2);
00165 
00166    return(PacketSize);
00167 
00168 }
00169 
00170 // ================================================
00171 // Unpack
00172 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00173 int CigiHotRespV2::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00174 {
00175    double DBuf[6];
00176 
00177    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00178 
00179    PackPointer CDta;
00180 
00181    memcpy(tBuf,Buff,CIGI_HOT_RESP_PACKET_SIZE_V2);
00182 
00183    CDta.d = DBuf;
00184 
00185    CDta.c += 2;  // Step over packet id and size
00186 
00187    CIGI_SCOPY2(&HatHotID, CDta.s++);
00188 
00189    Valid = (*CDta.l++ != 0);
00190 
00191    CDta.l++;
00192 
00193    CIGI_SCOPY4(&Material, CDta.l++);
00194    CIGI_SCOPY8(&Hot, CDta.d++);
00195 
00196    Hat = 0.0;
00197 
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 CigiHotRespV2::GetCnvt(CigiVersionID &CnvtVersion,
00212                            CigiCnvtInfoType::Type &CnvtInfo)
00213 {
00214    CnvtInfo.ProcID = CigiProcessType::ProcStd;
00215 
00216    switch(CnvtVersion.CigiMajorVersion)
00217    {
00218    case 1:
00219       // Note:  This does not provide a good conversion
00220       // This actually ends up being a HOT; however,
00221       // there is no way of actually providing a HAT.
00222       CnvtInfo.CnvtPacketID = CIGI_HAT_RESP_PACKET_ID_V1;
00223       break;
00224    case 2:
00225       CnvtInfo.CnvtPacketID = CIGI_HOT_RESP_PACKET_ID_V2;
00226       break;
00227    default:
00228       // The Packet ID for all V3 HatHotReq are the same ID
00229       CnvtInfo.CnvtPacketID = CIGI_HAT_HOT_RESP_PACKET_ID_V3;
00230       break;
00231    }
00232 
00233    return(CIGI_SUCCESS);
00234 }
00235 
00236 
00237 
00238 // ====================================================================
00239 // Accessors
00240 // ====================================================================
00241 
00242 

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