00001 00056 #if !defined(_CIGI_BASE_IG_MSG_INCLUDED_) 00057 #define _CIGI_BASE_IG_MSG_INCLUDED_ 00058 00059 #include "CigiBaseVariableSizePckt.h" 00060 00061 // ==================================================================== 00062 // preprocessor definitions 00063 // ==================================================================== 00064 00065 #define CIGI_IG_MSG_PACKET_ID_V2 108 00066 00067 #define CIGI_IG_MSG_PACKET_ID_V3 117 00068 00069 00070 class CigiIGMsgV2; 00071 class CigiIGMsgV3; 00072 00073 00074 class CIGI_SPEC CigiBaseIGMsg : public CigiBaseVariableSizePckt 00075 { 00076 00077 friend class CigiIGMsgV2; 00078 friend class CigiIGMsgV3; 00079 00080 public: 00081 00082 //==> Management 00083 00084 //========================================================= 00087 CigiBaseIGMsg() { }; 00088 00089 //========================================================= 00092 virtual ~CigiBaseIGMsg() { }; 00093 00094 00095 //==> Buffer Packing/Unpacking 00096 00097 //========================================================= 00108 virtual int Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const=0; 00109 00110 //========================================================= 00120 virtual int Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec) =0; 00121 00122 //========================================================= 00134 virtual int GetCnvt(CigiVersionID &CnvtVersion, 00135 CigiCnvtInfoType::Type &CnvtInfo) { 00136 CnvtInfo.ProcID = CigiProcessType::ProcStd; 00137 00138 if(CnvtVersion.CigiMajorVersion < 2) 00139 { 00140 CnvtInfo.ProcID = CigiProcessType::ProcNone; 00141 CnvtInfo.CnvtPacketID = 0; 00142 } 00143 else 00144 { 00145 CnvtInfo.ProcID = CigiProcessType::ProcVarSize; 00146 if(CnvtVersion.CigiMajorVersion < 3) 00147 CnvtInfo.CnvtPacketID = CIGI_IG_MSG_PACKET_ID_V2; 00148 else 00149 CnvtInfo.CnvtPacketID = CIGI_IG_MSG_PACKET_ID_V3; 00150 } 00151 00152 return(CIGI_SUCCESS); 00153 } 00154 00155 //========================================================= 00163 virtual int GetTruePacketSize(CigiBaseVariableSizePckt &refPacket) =0; 00164 00165 00166 00167 00168 //==> Accessing Member Variable Values functions 00169 00170 //+> MsgID 00171 00172 //========================================================= 00179 int SetMsgID(const Cigi_uint16 MsgIDIn, bool bndchk=true) 00180 { 00181 MsgID = MsgIDIn; 00182 return(CIGI_SUCCESS); 00183 } 00184 00185 //========================================================= 00188 Cigi_uint16 GetMsgID(void) const { return(MsgID); } 00189 00190 00191 //+> Msg 00192 00193 //========================================================= 00196 Cigi_int8 *GetMsg(void) { return(Msg); } 00197 00198 00199 //+> MsgLen 00200 00201 //========================================================= 00204 int GetMsgLen(void) const { return(MsgLen); } 00205 00206 00207 00208 protected: 00209 00210 //==> Member variables 00211 00212 //========================================================= 00216 Cigi_uint16 MsgID; 00217 00218 //========================================================= 00222 Cigi_int8 Msg[100]; 00223 00224 //========================================================= 00228 int MsgLen; 00229 00230 00231 }; 00232 00233 #endif // #if !defined(_CIGI_BASE_IG_MSG_INCLUDED_)