#include <CigiCollDetSegDefV2.h>
Inheritance diagram for CigiCollDetSegDefV2:
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 |
Definition at line 58 of file CigiCollDetSegDefV2.h.
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] |
Cigi_uint8 CigiCollDetSegDefV2::GetSegmentID | ( | void | ) | const [inline] |
Gets the SegmentID value.
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
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. |
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
SegmentIDIn | - Segment ID | |
bndchk | - Enables (true) or disables (false) bounds checking. |
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
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. |
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 }