CigiSensorRespV1 Class Reference

#include <CigiSensorRespV1.h>

Inheritance diagram for CigiSensorRespV1:

CigiBaseSensorResp CigiBasePacket List of all members.

Public Member Functions

 CigiSensorRespV1 ()
virtual ~CigiSensorRespV1 ()
virtual int Pack (CigiBasePacket *Base, Cigi_uint8 *Buff, void *Spec) const
virtual int Unpack (Cigi_uint8 *Buff, bool Swap, void *Spec)
int SetViewID (const Cigi_uint16 ViewIDIn, bool bndchk=true)
Cigi_uint16 GetViewID (void) const

Detailed Description

Definition at line 61 of file CigiSensorRespV1.h.


Constructor & Destructor Documentation

CigiSensorRespV1::CigiSensorRespV1 (  ) 

General Constructor

Definition at line 85 of file CigiSensorRespV1.cpp.

References CIGI_SENSOR_RESP_PACKET_ID_V1, CIGI_SENSOR_RESP_PACKET_SIZE_V1, CigiBaseSensorResp::EntityID, CigiBaseSensorResp::EntityTgt, CigiBaseSensorResp::FrameCntr, CigiBaseSensorResp::GateSzX, CigiBaseSensorResp::GateSzY, CigiBaseSensorResp::GateXoff, CigiBaseSensorResp::GateYoff, CigiBasePacket::MinorVersion, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseSensorResp::Searching, CigiBaseSensorResp::SensorID, CigiBaseSensorResp::SensorStat, CigiBaseSensorResp::TrackPntAlt, CigiBaseSensorResp::TrackPntLat, CigiBaseSensorResp::TrackPntLon, CigiBasePacket::Version, and CigiBaseSensorResp::ViewID.

00086 {
00087 
00088    PacketID = CIGI_SENSOR_RESP_PACKET_ID_V1;
00089    PacketSize = CIGI_SENSOR_RESP_PACKET_SIZE_V1;
00090    Version = 1;
00091    MinorVersion = 0;
00092 
00093    ViewID = 0;
00094    SensorID = 0;
00095    SensorStat = Searching;
00096    EntityTgt = false;
00097    EntityID = 0;
00098    GateSzX = 0;
00099    GateSzY = 0;
00100    GateXoff = 0.0;
00101    GateYoff = 0.0;
00102    FrameCntr = 0;
00103    TrackPntLat = 0.0;
00104    TrackPntLon = 0.0;
00105    TrackPntAlt = 0.0;
00106 
00107 }

CigiSensorRespV1::~CigiSensorRespV1 (  )  [virtual]

General Destructor

Definition at line 112 of file CigiSensorRespV1.cpp.

00113 {
00114 
00115 }


Member Function Documentation

Cigi_uint16 CigiSensorRespV1::GetViewID ( void   )  const [inline]

Gets the ViewID value.

Returns:
the current ViewID.

Definition at line 124 of file CigiSensorRespV1.h.

00124 { return(ViewID); }

int CigiSensorRespV1::Pack ( CigiBasePacket Base,
Cigi_uint8 Buff,
void *  Spec 
) const [virtual]

The virtual Pack function for CIGI 1

Parameters:
Base - A pointer to the instance of the packet to be packed. (Downcast to CigiBasePacket)
Buff - A pointer to the current pack point.
Spec - A pointer to special data - This is not used in this class.
Returns:
This returns CIGI_SUCCESS or an error code defined in CigiErrorCodes.h

Implements CigiBaseSensorResp.

Definition at line 124 of file CigiSensorRespV1.cpp.

References PackPointerUnion::c, CIGI_FLOAT_TO_BA, CIGI_SCOPY2, CIGI_SENSOR_RESP_PACKET_SIZE_V1, PackPointerUnion::d, CigiBaseSensorResp::GateSzX, CigiBaseSensorResp::GateSzY, CigiBaseSensorResp::GateXoff, CigiBaseSensorResp::GateYoff, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, PackPointerUnion::s, CigiBaseSensorResp::SensorID, CigiBaseSensorResp::SensorStat, and CigiBaseSensorResp::ViewID.

00125 {
00126    double DBuf[6];
00127 
00128    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00129 
00130    Cigi_int16  tsCnvt;
00131    Cigi_int32   tlCnvt;
00132    double tdCnvt;
00133 
00134    union Conversion_short
00135    {
00136       Cigi_uint16 u;
00137       Cigi_int16 s;
00138    } tuCnvt;
00139 
00140    PackPointer CDta;
00141 
00142    CigiBaseSensorResp * Data = ( CigiBaseSensorResp *)Base;
00143 
00144    CDta.d = DBuf;
00145 
00146    *CDta.c++ = PacketID;
00147    *CDta.c++ = PacketSize;
00148 
00149    Cigi_uint8 HDta = (Cigi_uint8)((Data->ViewID << 3) & 0x00f8);
00150    HDta |= (Cigi_uint8)((Data->SensorStat << 1) & 0x06);
00151    *CDta.c++ = HDta;
00152 
00153    *CDta.c++ = Data->SensorID;
00154 
00155    tdCnvt = (double)Data->GateXoff;
00156    if(tdCnvt < 0.0)
00157       tdCnvt += 360.0;
00158    tlCnvt = CIGI_FLOAT_TO_BA(tdCnvt);
00159    if((tlCnvt > 65535)||(tlCnvt < 0))
00160       tsCnvt = 0;
00161    else
00162    {
00163       tuCnvt.u = (Cigi_uint16)tlCnvt;
00164       tsCnvt = tuCnvt.s;
00165    }
00166    CIGI_SCOPY2(CDta.s++, &tsCnvt);
00167 
00168    tdCnvt = (double)Data->GateYoff;
00169    if(tdCnvt < 0.0)
00170       tdCnvt += 360.0;
00171    tlCnvt = CIGI_FLOAT_TO_BA(tdCnvt);
00172    if((tlCnvt > 65535)||(tlCnvt < 0))
00173       tsCnvt = 0;
00174    else
00175    {
00176       tuCnvt.u = (Cigi_uint16)tlCnvt;
00177       tsCnvt = tuCnvt.s;
00178    }
00179    CIGI_SCOPY2(CDta.s++, &tsCnvt);
00180 
00181    CIGI_SCOPY2(CDta.s++, &Data->GateSzX);
00182    CIGI_SCOPY2(CDta.s++, &Data->GateSzY);
00183 
00184    memcpy(Buff,tBuf,CIGI_SENSOR_RESP_PACKET_SIZE_V1);
00185 
00186    return(PacketSize);
00187 
00188 }

int CigiSensorRespV1::SetViewID ( const Cigi_uint16  ViewIDIn,
bool  bndchk = true 
)

Sets the ViewID with bound checking control

Parameters:
ViewIDIn - View ID
bndchk - Enables (true) or disables (false) bounds checking.
Returns:
This returns CIGI_SUCCESS or an error code defined in CigiErrorCodes.h

Definition at line 241 of file CigiSensorRespV1.cpp.

References CIGI_ERROR_VALUE_OUT_OF_RANGE, CIGI_SUCCESS, and CigiBaseSensorResp::ViewID.

00242 {
00243 
00244 #ifndef CIGI_NO_BND_CHK
00245    if(bndchk && ((ViewIDIn < 0)||(ViewIDIn > 32)))
00246    {
00247 #ifndef CIGI_NO_EXCEPT
00248       throw CigiValueOutOfRangeException("ViewID",(Cigi_uint16)ViewIDIn,0,32);
00249 #endif
00250       return(CIGI_ERROR_VALUE_OUT_OF_RANGE);
00251    }
00252 #endif
00253 
00254    ViewID = ViewIDIn;
00255    return(CIGI_SUCCESS);
00256 
00257 }

int CigiSensorRespV1::Unpack ( Cigi_uint8 Buff,
bool  Swap,
void *  Spec 
) [virtual]

The virtual Unpack function for CIGI 1

Parameters:
Buff - A pointer to the current pack point.
Swap - N/A for V1 & V2
Spec - A pointer to special data - This is not used in this class.
Returns:
This returns CIGI_SUCCESS or an error code defined in CigiErrorCodes.h

Implements CigiBaseSensorResp.

Definition at line 193 of file CigiSensorRespV1.cpp.

References PackPointerUnion::c, CIGI_BA_TO_FLOAT, CIGI_SCOPY2, CIGI_SENSOR_RESP_PACKET_SIZE_V1, PackPointerUnion::d, CigiBaseSensorResp::GateSzX, CigiBaseSensorResp::GateSzY, CigiBaseSensorResp::GateXoff, CigiBaseSensorResp::GateYoff, CigiBasePacket::PacketSize, PackPointerUnion::s, CigiBaseSensorResp::SensorID, CigiBaseSensorResp::SensorStat, and CigiBaseSensorResp::ViewID.

00194 {
00195    double DBuf[6];
00196 
00197    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00198 
00199    Cigi_int16  tsCnvt;
00200 
00201    PackPointer CDta;
00202 
00203    memcpy(tBuf,Buff,CIGI_SENSOR_RESP_PACKET_SIZE_V1);
00204 
00205    CDta.d = DBuf;
00206 
00207    CDta.c += 2;  // Step over packet id and size
00208 
00209    Cigi_uint8 HDta = *CDta.c++;
00210    ViewID = (Cigi_uint16)((HDta >> 3) & 0x1f);
00211    SensorStat = (SensorStatGrp)((HDta >> 1) & 0x03);
00212    SensorID = *CDta.c++;
00213 
00214    CIGI_SCOPY2(&tsCnvt, CDta.s++);
00215    GateXoff = (float)CIGI_BA_TO_FLOAT(tsCnvt);
00216    if(GateXoff > 180.0)
00217       GateXoff -= 360.0;
00218 
00219    CIGI_SCOPY2(&tsCnvt, CDta.s++);
00220    GateYoff = (float)CIGI_BA_TO_FLOAT(tsCnvt);
00221    if(GateYoff > 180.0)
00222       GateYoff -= 360.0;
00223 
00224    CIGI_SCOPY2(&GateSzX, CDta.s++);
00225    CIGI_SCOPY2(&GateSzY, CDta.s++);
00226 
00227    return(PacketSize);
00228 
00229 }


The documentation for this class was generated from the following files:
Generated on Wed Apr 29 09:00:10 2009 for CCL by  doxygen 1.4.7