CigiIGCtrlV3.cpp

Go to the documentation of this file.
00001 
00063 #define _EXPORT_CCL_
00064 
00065 #include "CigiIGCtrlV3.h"
00066 #include "CigiSwapping.h"
00067 
00068 
00069 // ====================================================================
00070 // Construction/Destruction
00071 // ====================================================================
00072 
00073 // ================================================
00074 // CigiIGCtrlV3
00075 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00076 CigiIGCtrlV3::CigiIGCtrlV3()
00077 {
00078 
00079    PacketID = CIGI_IG_CTRL_PACKET_ID_V3;
00080    PacketSize = CIGI_IG_CTRL_PACKET_SIZE_V3;
00081    Version = 3;
00082    MinorVersion = 0;
00083 
00084    BSwapEn = false;
00085    DatabaseID = 0;
00086    FrameCntr = 0;
00087    TimeStampV1 = 0;
00088    TimeStampV2 = 0.0f;
00089    TimeStampV3 = 0;
00090    ByteSwap = 0x8000;
00091    IGMode = Standby;
00092    TrackDeviceEn = Disable;
00093    BoresightTrackDevice = false;
00094    TimestampValid = false;
00095    SmoothingEn = false;
00096    LastRcvdIGFrame = 0;
00097 
00098 }
00099 
00100 // ================================================
00101 // ~CigiIGCtrlV3
00102 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00103 CigiIGCtrlV3::~CigiIGCtrlV3()
00104 {
00105 
00106 }
00107 
00108 
00109 // ====================================================================
00110 // Pack and Unpack
00111 // ====================================================================
00112 
00113 // ================================================
00114 // Pack
00115 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00116 int CigiIGCtrlV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00117 {
00118    PackPointer CDta;
00119 
00120    CigiBaseIGCtrl *Data = ( CigiBaseIGCtrl *) Base;
00121 
00122 
00123    CDta.c = Buff;
00124 
00125    *CDta.c++ = PacketID;
00126    *CDta.c++ = PacketSize;
00127    *CDta.c++ = Version;
00128 
00129    *CDta.b++ = Data->DatabaseID;
00130 
00131    Cigi_uint8 HDta = (Data->TimestampValid) ? 0x04 : 0;
00132    HDta |= (Cigi_uint8)(Data->IGMode & 0x03);
00133 
00134    *CDta.c++ = HDta;
00135    *CDta.c++ = 0;
00136    *CDta.s++ = 0x8000;  // Byte Swap value
00137 
00138    *CDta.l++ = Data->FrameCntr;
00139    *CDta.l++ = Data->TimeStampV3;
00140 
00141    return(PacketSize);
00142 
00143 }
00144 
00145 
00146 // ================================================
00147 // Unpack
00148 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00149 int CigiIGCtrlV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00150 {
00151 
00152    PackPointer CDta;
00153 
00154    CDta.c = Buff;
00155 
00156    CDta.c += 3;
00157 
00158    DatabaseID = *CDta.b++;
00159 
00160    Cigi_uint8 HDta = *CDta.c++;
00161 
00162    IGMode = (IGModeGrp)(HDta & 0x03);
00163    TimestampValid = ((HDta & 0x04) != 0);
00164 
00165    CDta.c++;
00166 
00167    ByteSwap = *CDta.s++;
00168    BSwapEn = (ByteSwap == 0x0080);
00169 
00170 
00171    if(!BSwapEn)
00172    {
00173       FrameCntr = *CDta.l++;
00174       TimeStampV3 = *CDta.l++;
00175    }
00176    else
00177    {
00178       CigiSwap4(&FrameCntr, CDta.l++);
00179       CigiSwap4(&TimeStampV3, CDta.l++);
00180    }
00181 
00182    TimeStampV1 = TimeStampV3 / 10;
00183    TimeStampV2 = (float)TimeStampV1;
00184 
00185    LastRcvdIGFrame = FrameCntr;
00186 
00187    return(CIGI_SUCCESS);
00188 
00189 }
00190 
00191 
00192 // ====================================================================
00193 // Accessors
00194 // ====================================================================
00195 
00196 
00197 
00198 // ================================================
00199 // SetTimeStamp
00200 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00201 int CigiIGCtrlV3::SetTimeStamp(const Cigi_uint32 TimeStamp, bool bndchk)
00202 {
00203 
00204    TimeStampV3 = TimeStamp;
00205    TimeStampV1 = TimeStampV3 / 10;
00206    TimeStampV2 = (float)TimeStampV1;
00207 
00208    return(CIGI_SUCCESS);
00209 
00210 }
00211 
00212 

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