CigiSOFV1.cpp

Go to the documentation of this file.
00001 
00055 #define _EXPORT_CCL_
00056 
00057 #include "CigiSOFV1.h"
00058 #include "CigiExceptions.h"
00059 #include "CigiSwapping.h"
00060 #include <memory.h>
00061 
00062 
00063 #ifdef CIGI_LITTLE_ENDIAN
00064    #define CIGI_SCOPY2 CigiSwap2
00065    #define CIGI_SCOPY4 CigiSwap4
00066    #define CIGI_SCOPY8 CigiSwap8
00067 #else
00068    #define CIGI_SCOPY2 CigiCopy2
00069    #define CIGI_SCOPY4 CigiCopy4
00070    #define CIGI_SCOPY8 CigiCopy8
00071 #endif
00072 
00073 
00074 // ====================================================================
00075 // Construction/Destruction
00076 // ====================================================================
00077 
00078 // ================================================
00079 // CigiSOFV1
00080 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00081 CigiSOFV1::CigiSOFV1()
00082 {
00083 
00084    PacketID = CIGI_SOF_PACKET_ID_V1;
00085    PacketSize = CIGI_SOF_PACKET_SIZE_V1;
00086    Version = 1;
00087    MinorVersion = 0;
00088 
00089    BSwapEn = false;
00090    DatabaseID = 0;
00091    FrameCntr = 0;
00092    TimeStampV2 = 0.0f;
00093    TimeStampV3 = 0;
00094    ByteSwap = 0x8000;
00095    IGMode = Standby;
00096    TimestampValid = false;
00097    EarthRefModel = WGS84;
00098    LastRcvdHostFrame = 0;
00099 
00100 }
00101 
00102 // ================================================
00103 // ~CigiSOFV1
00104 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00105 CigiSOFV1::~CigiSOFV1()
00106 {
00107 
00108 }
00109 
00110 
00111 
00112 // ====================================================================
00113 // Pack and Unpack
00114 // ====================================================================
00115 
00116 // ================================================
00117 // Pack
00118 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00119 int CigiSOFV1::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00120 {
00121    PackPointer CDta;
00122 
00123    CigiBaseSOF *Data = ( CigiBaseSOF *) Base;
00124 
00125 
00126    CDta.c = Buff;
00127 
00128    *CDta.c++ = PacketID;
00129    *CDta.c++ = PacketSize;
00130    *CDta.c++ = Version;
00131 
00132    *CDta.b++ = Data->DatabaseID;
00133    *CDta.c++ = Data->IGStatus;
00134 
00135    Cigi_uint8 HDta = (Cigi_uint8)((Data->IGMode << 6) & 0xc0);
00136 
00137    *CDta.c++ = HDta;
00138    *CDta.c++ = 0;
00139    *CDta.c++ = 0;
00140 
00141    CIGI_SCOPY4(CDta.l++, &Data->FrameCntr);
00142 
00143    return(PacketSize);
00144 
00145 }
00146 
00147 
00148 // ================================================
00149 // Unpack
00150 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00151 int CigiSOFV1::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00152 {
00153 
00154    PackPointer CDta;
00155 
00156    CDta.c = Buff;
00157 
00158    CDta.c += 3;
00159 
00160    DatabaseID = *CDta.b++;
00161    IGStatus = *CDta.c++;
00162 
00163    Cigi_uint8 HDta = *CDta.c++;
00164 
00165    IGMode = (IGModeGrp)((HDta >> 6) & 0x03);
00166 
00167    CDta.s++;
00168 
00169    CIGI_SCOPY4(&FrameCntr,CDta.l++);
00170 
00171    LastRcvdHostFrame = FrameCntr;
00172 
00173    // Timestamp & timestamp valid are not handled in this version.
00174 
00175 
00176    Swap = false;
00177 
00178    return(CIGI_SUCCESS);
00179 
00180 }
00181 
00182 

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