#include <CigiSensorRespV1.h>
Inheritance diagram for CigiSensorRespV1:
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 |
Definition at line 61 of file CigiSensorRespV1.h.
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] |
Cigi_uint16 CigiSensorRespV1::GetViewID | ( | void | ) | const [inline] |
Gets the ViewID value.
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
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 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
ViewIDIn | - View ID | |
bndchk | - Enables (true) or disables (false) bounds checking. |
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
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 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 }