CigiSOFV2.cpp

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

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