CigiShortArtPartCtrlV3.cpp

Go to the documentation of this file.
00001 
00052 #define _EXPORT_CCL_
00053 
00054 #include "CigiShortArtPartCtrlV3.h"
00055 #include "CigiSwapping.h"
00056 #include "CigiExceptions.h"
00057 
00058 
00059 // ====================================================================
00060 // Construction/Destruction
00061 // ====================================================================
00062 
00063 
00064 // ================================================
00065 // CigiShortArtPartCtrlV3
00066 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00067 CigiShortArtPartCtrlV3::CigiShortArtPartCtrlV3()
00068 {
00069 
00070    PacketID = CIGI_SHORT_ART_PART_CTRL_PACKET_ID_V3;
00071    PacketSize = CIGI_SHORT_ART_PART_CTRL_PACKET_SIZE_V3;
00072    Version = 3;
00073    MinorVersion = 0;
00074 
00075    EntityID = 0;
00076    ArtPart1 = 0;
00077    ArtPart2 = 0;
00078    DofSelect1 = NotUsed;
00079    DofSelect2 = NotUsed;
00080    ArtPart1En = false;
00081    ArtPart2En = false;
00082    Dof1 = 0.0;
00083    Dof2 = 0.0;
00084 
00085 }
00086 
00087 // ================================================
00088 // ~CigiShortArtPartCtrlV3
00089 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00090 CigiShortArtPartCtrlV3::~CigiShortArtPartCtrlV3()
00091 {
00092 
00093 }
00094 
00095 // ====================================================================
00096 // Pack and Unpack
00097 // ====================================================================
00098 
00099 // ================================================
00100 // Pack
00101 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00102 int CigiShortArtPartCtrlV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00103 {
00104    PackPointer CDta;
00105 
00106    CigiBaseShortArtPartCtrl * Data = ( CigiBaseShortArtPartCtrl *)Base;
00107 
00108    CDta.c = Buff;
00109 
00110    *CDta.c++ = PacketID;
00111    *CDta.c++ = PacketSize;
00112 
00113    *CDta.s++ = Data->EntityID;
00114    *CDta.c++ = Data->ArtPart1;
00115    *CDta.c++ = Data->ArtPart2;
00116 
00117    Cigi_uint8 HDta = Data->DofSelect1 & 0x07;
00118    HDta |= (Data->DofSelect2 << 3) & 0x38;
00119    HDta |= (Data->ArtPart1En) ? 0x40 : 0;
00120    HDta |= (Data->ArtPart2En) ? 0x80 : 0;
00121    *CDta.c++ = HDta;
00122 
00123    *CDta.c++ = 0;
00124 
00125    *CDta.f++ = Data->Dof1;
00126    *CDta.f++ = Data->Dof2;
00127 
00128    return(PacketSize);
00129 
00130 }
00131 
00132 // ================================================
00133 // Unpack
00134 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00135 int CigiShortArtPartCtrlV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00136 {
00137    PackPointer CDta;
00138 
00139    CDta.c = Buff;
00140 
00141    CDta.c += 2;  // Step over packet id and size
00142 
00143    if(!Swap)
00144    {
00145       EntityID = *CDta.s++;
00146       ArtPart1 = *CDta.c++;
00147       ArtPart2 = *CDta.c++;
00148 
00149       Cigi_uint8 HDta = *CDta.c++;
00150       DofSelect1 = (DofSelectGrp)(HDta & 0x07);
00151       DofSelect2 = (DofSelectGrp)((HDta >> 3) & 0x07);
00152       ArtPart1En = ((HDta & 0x40) != 0);
00153       ArtPart2En = ((HDta & 0x80) != 0);
00154 
00155       CDta.c++;
00156 
00157       Dof1 = *CDta.f++;
00158       Dof2 = *CDta.f++;
00159    }
00160    else
00161    {
00162       CigiSwap2(&EntityID, CDta.s++);
00163       ArtPart1 = *CDta.c++;
00164       ArtPart2 = *CDta.c++;
00165 
00166       Cigi_uint8 HDta = *CDta.c++;
00167       DofSelect1 = (DofSelectGrp)(HDta & 0x07);
00168       DofSelect2 = (DofSelectGrp)((HDta >> 3) & 0x07);
00169       ArtPart1En = ((HDta & 0x40) != 0);
00170       ArtPart2En = ((HDta & 0x80) != 0);
00171 
00172       CDta.c++;
00173 
00174       CigiSwap4(&Dof1, CDta.f++);
00175       CigiSwap4(&Dof2, CDta.f++);
00176    }
00177 
00178    return(PacketSize);
00179 
00180 }
00181 
00182 
00183 
00184 // ====================================================================
00185 // Accessors
00186 // ====================================================================
00187 
00188 

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