CigiSensorRespV3.cpp

Go to the documentation of this file.
00001 
00052 #define _EXPORT_CCL_
00053 
00054 #include "CigiSensorRespV3.h"
00055 #include "CigiSwapping.h"
00056 #include "CigiExceptions.h"
00057 
00058 
00059 // ====================================================================
00060 // Construction/Destruction
00061 // ====================================================================
00062 
00063 
00064 // ================================================
00065 // CigiSensorRespV3
00066 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00067 CigiSensorRespV3::CigiSensorRespV3()
00068 {
00069 
00070    PacketID = CIGI_SENSOR_RESP_PACKET_ID_V3;
00071    PacketSize = CIGI_SENSOR_RESP_PACKET_SIZE_V3;
00072    Version = 3;
00073    MinorVersion = 0;
00074 
00075    ViewID = 0;
00076    SensorID = 0;
00077    SensorStat = Searching;
00078    EntityTgt = false;
00079    EntityID = 0;
00080    GateSzX = 0;
00081    GateSzY = 0;
00082    GateXoff = 0.0;
00083    GateYoff = 0.0;
00084    FrameCntr = 0;
00085    TrackPntLat = 0.0;
00086    TrackPntLon = 0.0;
00087    TrackPntAlt = 0.0;
00088 
00089 }
00090 
00091 // ================================================
00092 // ~CigiSensorRespV3
00093 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00094 CigiSensorRespV3::~CigiSensorRespV3()
00095 {
00096 
00097 }
00098 
00099 // ====================================================================
00100 // Pack and Unpack
00101 // ====================================================================
00102 
00103 // ================================================
00104 // Pack
00105 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00106 int CigiSensorRespV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00107 {
00108    PackPointer CDta;
00109 
00110    CigiBaseSensorResp * Data = ( CigiBaseSensorResp *)Base;
00111 
00112    CDta.c = Buff;
00113 
00114    *CDta.c++ = PacketID;
00115    *CDta.c++ = PacketSize;
00116 
00117    *CDta.s++ = Data->ViewID;
00118    *CDta.c++ = Data->SensorID;
00119 
00120    Cigi_uint8 HDta = (Data->EntityTgt) ? 0x04 : 0x00;
00121    HDta |= (Cigi_uint8)(Data->SensorStat & 0x03);
00122    *CDta.c++ = HDta;
00123 
00124    *CDta.s++ = 0;
00125    *CDta.s++ = Data->GateSzX;
00126    *CDta.s++ = Data->GateSzY;
00127    *CDta.f++ = Data->GateXoff;
00128    *CDta.f++ = Data->GateYoff;
00129    *CDta.l++ = Data->FrameCntr;
00130 
00131    return(PacketSize);
00132 
00133 }
00134 
00135 // ================================================
00136 // Unpack
00137 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00138 int CigiSensorRespV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00139 {
00140    PackPointer CDta;
00141 
00142    CDta.c = Buff;
00143 
00144    CDta.c += 2;  // Step over packet id and size
00145 
00146    if(!Swap)
00147    {
00148       ViewID = *CDta.s++;
00149       SensorID = *CDta.c++;
00150 
00151       Cigi_uint8 HDta = *CDta.c++;
00152       SensorStat = (SensorStatGrp)(HDta & 0x03);
00153       EntityTgt = ((HDta & 0x04) != 0);
00154 
00155       CDta.s++;
00156 
00157       GateSzX = *CDta.s++;
00158       GateSzY = *CDta.s++;
00159       GateXoff = *CDta.f++;
00160       GateYoff = *CDta.f++;
00161       FrameCntr = *CDta.l++;
00162    }
00163    else
00164    {
00165       CigiSwap2(&ViewID, CDta.s++);
00166       SensorID = *CDta.c++;
00167 
00168       Cigi_uint8 HDta = *CDta.c++;
00169       SensorStat = (SensorStatGrp)(HDta & 0x03);
00170       EntityTgt = ((HDta & 0x04) != 0);
00171 
00172       CDta.s++;
00173 
00174       CigiSwap2(&GateSzX, CDta.s++);
00175       CigiSwap2(&GateSzY, CDta.s++);
00176       CigiSwap4(&GateXoff, CDta.f++);
00177       CigiSwap4(&GateYoff, CDta.f++);
00178       CigiSwap4(&FrameCntr, CDta.l++);
00179    }
00180 
00181    return(PacketSize);
00182 
00183 }
00184 
00185 
00186 
00187 // ====================================================================
00188 // Accessors
00189 // ====================================================================
00190 
00191 

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