CigiCollDetVolRespV2.cpp

Go to the documentation of this file.
00001 
00052 #define _EXPORT_CCL_
00053 
00054 #include "CigiCollDetVolRespV2.h"
00055 #include "CigiSwapping.h"
00056 #include "CigiExceptions.h"
00057 
00058 #include <memory.h>
00059 
00060 
00061 #ifdef CIGI_LITTLE_ENDIAN
00062    #define CIGI_SCOPY2 CigiSwap2
00063    #define CIGI_SCOPY4 CigiSwap4
00064    #define CIGI_SCOPY8 CigiSwap8
00065 #else
00066    #define CIGI_SCOPY2 CigiCopy2
00067    #define CIGI_SCOPY4 CigiCopy4
00068    #define CIGI_SCOPY8 CigiCopy8
00069 #endif
00070 
00071 
00072 
00073 
00074 // ====================================================================
00075 // Construction/Destruction
00076 // ====================================================================
00077 
00078 
00079 // ================================================
00080 // CigiCollDetVolRespV2
00081 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00082 CigiCollDetVolRespV2::CigiCollDetVolRespV2()
00083 {
00084 
00085    PacketID = CIGI_COLL_DET_VOL_RESP_PACKET_ID_V2;
00086    PacketSize = CIGI_COLL_DET_VOL_RESP_PACKET_SIZE_V2;
00087    Version = 2;
00088    MinorVersion = 0;
00089 
00090    EntityID = 0;
00091    VolID = 0;
00092    CollType = NonEntity;
00093    CollEntityID = 0;
00094    CollVolID = 0;
00095 
00096 }
00097 
00098 // ================================================
00099 // ~CigiCollDetVolRespV2
00100 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00101 CigiCollDetVolRespV2::~CigiCollDetVolRespV2()
00102 {
00103 
00104 }
00105 
00106 // ====================================================================
00107 // Pack and Unpack
00108 // ====================================================================
00109 
00110 // ================================================
00111 // Pack
00112 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00113 int CigiCollDetVolRespV2::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00114 {
00115    double DBuf[6];
00116 
00117    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00118 
00119    PackPointer CDta;
00120 
00121    CigiBaseCollDetVolResp * Data = ( CigiBaseCollDetVolResp *)Base;
00122 
00123    CDta.d = DBuf;
00124 
00125    *CDta.c++ = PacketID;
00126    *CDta.c++ = PacketSize;
00127 
00128    CIGI_SCOPY2(CDta.s++, &Data->EntityID);
00129 
00130    Cigi_uint8 HDta = (Data->VolID << 1) & 0xfe;
00131    HDta |= (Cigi_uint16)(Data->CollType & 0x01);
00132    *CDta.c++ = HDta;
00133 
00134    *CDta.c++ = 0;
00135 
00136    CIGI_SCOPY2(CDta.s++, &Data->CollEntityID);
00137 
00138    memcpy(Buff,tBuf,CIGI_COLL_DET_VOL_RESP_PACKET_SIZE_V2);
00139 
00140    return(PacketSize);
00141 
00142 }
00143 
00144 // ================================================
00145 // Unpack
00146 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00147 int CigiCollDetVolRespV2::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00148 {
00149    double DBuf[6];
00150 
00151    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00152 
00153    PackPointer CDta;
00154 
00155    memcpy(tBuf,Buff,CIGI_COLL_DET_VOL_RESP_PACKET_SIZE_V2);
00156 
00157    CDta.d = DBuf;
00158 
00159    CDta.c += 2;  // Step over packet id and size
00160 
00161    CIGI_SCOPY2(&EntityID, CDta.s++);
00162 
00163    Cigi_uint8 HDta = *CDta.c++;
00164    VolID = (HDta >> 1) & 0x7f;
00165    CollType = (CollTypeGrp)(HDta & 0x01);
00166 
00167    CDta.c++;
00168 
00169    CIGI_SCOPY2(&CollEntityID, CDta.s++);
00170 
00171    return(PacketSize);
00172 
00173 }
00174 
00175 
00176 
00177 // ====================================================================
00178 // Accessors
00179 // ====================================================================
00180 
00181 
00182 // ================================================
00183 // VolID
00184 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00185 int CigiCollDetVolRespV2::SetVolID(const Cigi_uint8 VolIDIn, bool bndchk)
00186 {
00187 
00188 #ifndef CIGI_NO_BND_CHK
00189    if(bndchk && ((VolIDIn < 0)||(VolIDIn > 127)))
00190    {
00191 #ifndef CIGI_NO_EXCEPT
00192       throw CigiValueOutOfRangeException("VolID",(Cigi_uint8)VolIDIn,0,127);
00193 #endif
00194       return(CIGI_ERROR_VALUE_OUT_OF_RANGE);
00195    }
00196 #endif
00197 
00198    VolID = VolIDIn;
00199    return(CIGI_SUCCESS);
00200 
00201 }
00202 
00203 

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