CigiShortSymbolCtrlV3_3.cpp

Go to the documentation of this file.
00001 
00043 #define _EXPORT_CCL_
00044 
00045 
00046 #include "CigiShortSymbolCtrlV3_3.h"
00047 #include "CigiSwapping.h"
00048 #include "CigiExceptions.h"
00049 
00050 
00051 
00052 // ====================================================================
00053 // Construction/Destruction
00054 // ====================================================================
00055 
00056 // ================================================
00057 // CigiBaseEntityCtrl
00058 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00059 CigiShortSymbolCtrlV3_3::CigiShortSymbolCtrlV3_3(void)
00060 {
00061    PacketID = CIGI_SHORT_SYMBOL_CONTROL_PACKET_ID_V3_3;
00062    PacketSize = CIGI_SHORT_SYMBOL_CONTROL_PACKET_SIZE_V3_3;
00063    Version = 3;
00064    MinorVersion = 3;
00065 
00066    SymbolID = 0;
00067    SymbolState = CigiBaseSymbolCtrl::Hidden;
00068    AttachState = CigiBaseSymbolCtrl::Detach;
00069    FlashCtrl = CigiBaseSymbolCtrl::Continue;
00070    InheritColor = CigiBaseSymbolCtrl::NotInherit;
00071    DatumType[0] = None;
00072    DatumType[1] = None;
00073    Datum[0].UIntValue = 0;
00074    Datum[1].UIntValue = 0;
00075 
00076 }
00077 
00078 // ================================================
00079 // ~CigiBaseEntityCtrl
00080 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00081 CigiShortSymbolCtrlV3_3::~CigiShortSymbolCtrlV3_3(void)
00082 {
00083 }
00084 
00085 
00086 
00087 // ====================================================================
00088 // Pack and Unpack
00089 // ====================================================================
00090 
00091 // ================================================
00092 // Pack
00093 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00094 int CigiShortSymbolCtrlV3_3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00095 {
00096    PackPointer CDta;
00097 
00098    CigiShortSymbolCtrlV3_3 * Data =
00099       ( CigiShortSymbolCtrlV3_3 *)Base;
00100 
00101    CDta.c = Buff;
00102 
00103    *CDta.c++ = PacketID;
00104    *CDta.c++ = PacketSize;
00105 
00106    *CDta.s++ = Data->SymbolID;
00107 
00108    unsigned char HDta = 0;
00109    HDta |= (Data->SymbolState & 0x03);
00110    HDta |= ((Data->AttachState << 2) & 0x04);
00111    HDta |= ((Data->FlashCtrl << 3) & 0x08);
00112    HDta |= ((Data->InheritColor << 4) & 0x10);
00113    *CDta.c++ = HDta;
00114 
00115    *CDta.c++ = 0;
00116 
00117    *CDta.c++ = Data->DatumType[0];
00118    *CDta.c++ = Data->DatumType[1];
00119    *CDta.l++ = Data->Datum[0].UIntValue;
00120    *CDta.l++ = Data->Datum[1].UIntValue;
00121 
00122 
00123    return(PacketSize);
00124 
00125 }
00126 
00127 // ================================================
00128 // Unpack
00129 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00130 int CigiShortSymbolCtrlV3_3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00131 {
00132    PackPointer CDta;
00133    unsigned char HDta = 0;
00134 
00135    CDta.c = Buff;
00136 
00137    CDta.c += 2;  // Step over packet id and size
00138 
00139    if(!Swap)
00140    {
00141 
00142       SymbolID = *CDta.s++;
00143 
00144       HDta = *CDta.c++;
00145 
00146       CDta.c++;
00147 
00148       DatumType[0] = (DatumTypeGrp)*CDta.c++;
00149       DatumType[1] = (DatumTypeGrp)*CDta.c++;
00150       Datum[0].UIntValue = *CDta.l++;
00151       Datum[1].UIntValue = *CDta.l++;
00152 
00153    }
00154    else
00155    {
00156 
00157       CigiSwap2(&SymbolID, CDta.s++);
00158 
00159       HDta = *CDta.c++;
00160 
00161       CDta.c++;
00162 
00163       DatumType[0] = (DatumTypeGrp)*CDta.c++;
00164       DatumType[1] = (DatumTypeGrp)*CDta.c++;
00165       CigiSwap4(&Datum[0].UIntValue, CDta.l++);
00166       CigiSwap4(&Datum[1].UIntValue, CDta.l++);
00167 
00168    }
00169 
00170    SymbolState = (CigiBaseSymbolCtrl::SymbolStateGrp)(HDta & 0x03);
00171    AttachState = (CigiBaseSymbolCtrl::AttachStateGrp)((HDta >> 2) & 0x01);
00172    FlashCtrl = (CigiBaseSymbolCtrl::FlashCtrlGrp)((HDta >> 3) & 0x01);
00173    InheritColor = (CigiBaseSymbolCtrl::InheritColorGrp)((HDta >> 4) & 0x01);
00174 
00175    return(PacketSize);
00176 
00177 }
00178 
00179 
00180 
00181 

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