CigiCollDetSegDefV2 Class Reference

#include <CigiCollDetSegDefV2.h>

Inheritance diagram for CigiCollDetSegDefV2:

CigiBaseCollDetSegDef CigiBasePacket List of all members.

Public Member Functions

 CigiCollDetSegDefV2 ()
virtual ~CigiCollDetSegDefV2 ()
virtual int Pack (CigiBasePacket *Base, Cigi_uint8 *Buff, void *Spec) const
virtual int Unpack (Cigi_uint8 *Buff, bool Swap, void *Spec)
int SetSegmentID (const Cigi_uint8 SegmentIDIn, bool bndchk=true)
Cigi_uint8 GetSegmentID (void) const

Detailed Description

Definition at line 58 of file CigiCollDetSegDefV2.h.


Constructor & Destructor Documentation

CigiCollDetSegDefV2::CigiCollDetSegDefV2 (  ) 

General Constructor

Definition at line 85 of file CigiCollDetSegDefV2.cpp.

References CIGI_COLL_DET_SEG_DEF_PACKET_ID_V2, CIGI_COLL_DET_SEG_DEF_PACKET_SIZE_V2, CigiBaseCollDetSegDef::EntityID, CigiBaseCollDetSegDef::Mask, CigiBasePacket::MinorVersion, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseCollDetSegDef::SegmentEn, CigiBaseCollDetSegDef::SegmentID, CigiBasePacket::Version, CigiBaseCollDetSegDef::X1, CigiBaseCollDetSegDef::X2, CigiBaseCollDetSegDef::Y1, CigiBaseCollDetSegDef::Y2, CigiBaseCollDetSegDef::Z1, and CigiBaseCollDetSegDef::Z2.

00086 {
00087 
00088    PacketID = CIGI_COLL_DET_SEG_DEF_PACKET_ID_V2;
00089    PacketSize = CIGI_COLL_DET_SEG_DEF_PACKET_SIZE_V2;
00090    Version = 2;
00091    MinorVersion = 0;
00092 
00093    EntityID = 0;
00094    SegmentID = 0;
00095    SegmentEn = false;
00096    X1 = 0.0;
00097    Y1 = 0.0;
00098    Z1 = 0.0;
00099    X2 = 0.0;
00100    Y2 = 0.0;
00101    Z2 = 0.0;
00102    Mask = 0;
00103 
00104 }

CigiCollDetSegDefV2::~CigiCollDetSegDefV2 (  )  [virtual]

General Destructor

Definition at line 109 of file CigiCollDetSegDefV2.cpp.

00110 {
00111 
00112 }


Member Function Documentation

Cigi_uint8 CigiCollDetSegDefV2::GetSegmentID ( void   )  const [inline]

Gets the SegmentID value.

Returns:
the current SegmentID.

Definition at line 121 of file CigiCollDetSegDefV2.h.

00121 { return(SegmentID); }

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

The virtual Pack function for CIGI 2

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 CigiBaseCollDetSegDef.

Definition at line 121 of file CigiCollDetSegDefV2.cpp.

References PackPointerUnion::c, CIGI_COLL_DET_SEG_DEF_PACKET_SIZE_V2, CIGI_SCOPY2, CIGI_SCOPY4, PackPointerUnion::d, CigiBaseCollDetSegDef::EntityID, PackPointerUnion::l, CigiBaseCollDetSegDef::Mask, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, PackPointerUnion::s, CigiBaseCollDetSegDef::SegmentEn, CigiBaseCollDetSegDef::SegmentID, CigiBaseCollDetSegDef::X1, CigiBaseCollDetSegDef::X2, CigiBaseCollDetSegDef::Y1, CigiBaseCollDetSegDef::Y2, CigiBaseCollDetSegDef::Z1, and CigiBaseCollDetSegDef::Z2.

00122 {
00123    double DBuf[6];
00124 
00125    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00126 
00127    PackPointer CDta;
00128 
00129    CigiBaseCollDetSegDef * Data = ( CigiBaseCollDetSegDef *)Base;
00130 
00131    CDta.d = DBuf;
00132 
00133    *CDta.c++ = PacketID;
00134    *CDta.c++ = PacketSize;
00135 
00136    CIGI_SCOPY2(CDta.s++, &Data->EntityID);
00137 
00138    Cigi_uint8 HDta = Data->SegmentID;
00139    if(HDta > 127)
00140       HDta = 127;
00141 
00142    HDta |= (Data->SegmentEn) ? 0x80 : 0x00;
00143 
00144    *CDta.c++ = HDta;
00145 
00146    *CDta.c++ = 0;
00147    *CDta.s++ = 0;
00148 
00149    CIGI_SCOPY4(CDta.l++, &Data->Mask);
00150 
00151    float tpt;
00152    Cigi_int16 stpt;
00153    
00154    tpt = Data->X1 / 0.015625f;
00155    if(tpt > 32767.0f)
00156       stpt = 32767;
00157    else if(tpt < -32768.0f)
00158       stpt = -32768;
00159    else
00160       stpt = (Cigi_int16)tpt;
00161 
00162    CIGI_SCOPY2(CDta.s++, &stpt);
00163 
00164    tpt = Data->Y1 / 0.015625f;
00165    if(tpt > 32767.0f)
00166       stpt = 32767;
00167    else if(tpt < -32768.0f)
00168       stpt = -32768;
00169    else
00170       stpt = (Cigi_int16)tpt;
00171 
00172    CIGI_SCOPY2(CDta.s++, &stpt);
00173 
00174    tpt = Data->Z1 / 0.015625f;
00175    if(tpt > 32767.0f)
00176       stpt = 32767;
00177    else if(tpt < -32768.0f)
00178       stpt = -32768;
00179    else
00180       stpt = (Cigi_int16)tpt;
00181 
00182    CIGI_SCOPY2(CDta.s++, &stpt);
00183 
00184    tpt = Data->X2 / 0.015625f;
00185    if(tpt > 32767.0f)
00186       stpt = 32767;
00187    else if(tpt < -32768.0f)
00188       stpt = -32768;
00189    else
00190       stpt = (Cigi_int16)tpt;
00191 
00192    CIGI_SCOPY2(CDta.s++, &stpt);
00193 
00194    tpt = Data->Y2 / 0.015625f;
00195    if(tpt > 32767.0f)
00196       stpt = 32767;
00197    else if(tpt < -32768.0f)
00198       stpt = -32768;
00199    else
00200       stpt = (Cigi_int16)tpt;
00201 
00202    CIGI_SCOPY2(CDta.s++, &stpt);
00203 
00204    tpt = Data->Z2 / 0.015625f;
00205    if(tpt > 32767.0f)
00206       stpt = 32767;
00207    else if(tpt < -32768.0f)
00208       stpt = -32768;
00209    else
00210       stpt = (Cigi_int16)tpt;
00211 
00212    CIGI_SCOPY2(CDta.s++, &stpt);
00213 
00214 
00215    memcpy(Buff,tBuf,CIGI_COLL_DET_SEG_DEF_PACKET_SIZE_V2);
00216 
00217    return(PacketSize);
00218 
00219 }

int CigiCollDetSegDefV2::SetSegmentID ( const Cigi_uint8  SegmentIDIn,
bool  bndchk = true 
)

Sets the SegmentID with bound checking control

Parameters:
SegmentIDIn - Segment 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 289 of file CigiCollDetSegDefV2.cpp.

References CIGI_ERROR_VALUE_OUT_OF_RANGE, CIGI_SUCCESS, and CigiBaseCollDetSegDef::SegmentID.

00290 {
00291 
00292 #ifndef CIGI_NO_BND_CHK
00293    if(bndchk && ((SegmentIDIn < 0)||(SegmentIDIn > 127)))
00294    {
00295 #ifndef CIGI_NO_EXCEPT
00296       throw CigiValueOutOfRangeException("SegmentID",(Cigi_uint8)SegmentIDIn,0,127);
00297 #endif
00298       return(CIGI_ERROR_VALUE_OUT_OF_RANGE);
00299    }
00300 #endif
00301 
00302    SegmentID = SegmentIDIn;
00303    return(CIGI_SUCCESS);
00304 
00305 }

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

The virtual Unpack function for CIGI 2

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 CigiBaseCollDetSegDef.

Definition at line 224 of file CigiCollDetSegDefV2.cpp.

References PackPointerUnion::c, CIGI_COLL_DET_SEG_DEF_PACKET_SIZE_V2, CIGI_SCOPY2, CIGI_SCOPY4, PackPointerUnion::d, CigiBaseCollDetSegDef::EntityID, PackPointerUnion::l, CigiBaseCollDetSegDef::Mask, CigiBasePacket::PacketSize, PackPointerUnion::s, CigiBaseCollDetSegDef::SegmentEn, CigiBaseCollDetSegDef::SegmentID, CigiBaseCollDetSegDef::X1, CigiBaseCollDetSegDef::X2, CigiBaseCollDetSegDef::Y1, CigiBaseCollDetSegDef::Y2, CigiBaseCollDetSegDef::Z1, and CigiBaseCollDetSegDef::Z2.

00225 {
00226    double DBuf[6];
00227 
00228    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00229 
00230    PackPointer CDta;
00231 
00232    memcpy(tBuf,Buff,CIGI_COLL_DET_SEG_DEF_PACKET_SIZE_V2);
00233 
00234    CDta.d = DBuf;
00235 
00236    CDta.c += 2;  // Step over packet id and size
00237 
00238    CIGI_SCOPY2(&EntityID, CDta.s++);
00239 
00240    Cigi_uint8 HDta = *CDta.c++;
00241    SegmentID = HDta & 0x7f;
00242    SegmentEn = ((HDta & 0x80) != 0);
00243 
00244    CDta.c += 3;
00245 
00246    CIGI_SCOPY4(&Mask, CDta.l++);
00247 
00248    Cigi_int16 stpt;
00249    float tpt;
00250 
00251    CIGI_SCOPY2(&stpt, CDta.s++);
00252    tpt = (float)stpt;
00253    X1 = tpt * 0.015625f;
00254 
00255    CIGI_SCOPY2(&stpt, CDta.s++);
00256    tpt = (float)stpt;
00257    Y1 = tpt * 0.015625f;
00258 
00259    CIGI_SCOPY2(&stpt, CDta.s++);
00260    tpt = (float)stpt;
00261    Z1 = tpt * 0.015625f;
00262 
00263    CIGI_SCOPY2(&stpt, CDta.s++);
00264    tpt = (float)stpt;
00265    X2 = tpt * 0.015625f;
00266 
00267    CIGI_SCOPY2(&stpt, CDta.s++);
00268    tpt = (float)stpt;
00269    Y2 = tpt * 0.015625f;
00270 
00271    CIGI_SCOPY2(&stpt, CDta.s++);
00272    tpt = (float)stpt;
00273    Z2 = tpt * 0.015625f;
00274 
00275    return(PacketSize);
00276 
00277 }


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