![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2007 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: vrfRadio.h,v $ $Revision: 1.6 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00013 00014 #ifndef vrfRadio_h 00015 #define vrfRadio_h 00016 00017 #include "tdbutil/stringKeyFactory.h" 00018 #include "vrfobjcore/vrfobjcoreDefines.h" 00019 #include "vrfmsgs/vrfObjectMessageExecutive.h" 00020 #include "vrfmsgs/vrfObjectMessage.h" 00021 #include <deque> 00022 00023 class DtVrfObject; 00024 class DtVrfRadio; 00025 class DtVrfRadioDescriptor; 00026 class DtVrfObjectMessageExecutive; 00027 class DtCommModel; 00028 class DtVrfRadioTransmitter; 00029 class DtSettingsObject; 00030 00032 struct DtRadioCreationParams 00033 { 00034 DtVrfObject* vrfObject; 00035 const DtVrfRadioDescriptor* radioDescriptor; 00037 int radioId; 00038 }; 00039 00041 typedef DtStringKeyFactoryWithParam<DtVrfRadio, DtRadioCreationParams&> DtVrfRadioFactory; 00042 00047 class DT_DLL_vrfobjcore DtVrfRadio 00048 { 00049 private: 00051 00052 DtVrfRadio(); 00053 DtVrfRadio(const DtVrfRadio& orig); 00054 DtVrfRadio& operator=(const DtVrfRadio& orig); 00056 00057 public: 00058 DtVrfRadio(DtRadioCreationParams& params); 00059 virtual ~DtVrfRadio(); 00060 00062 virtual bool init(); 00063 00066 virtual DtString type() const; 00067 00071 virtual bool sendMessage(DtVrfObjectMessage* message); 00072 00075 00076 virtual void addMessageCallback(DtVrfObjectMessageCallbackFcn fcn, void* usr); 00077 virtual void removeMessageCallback(DtVrfObjectMessageCallbackFcn fcn, void* usr); 00079 00082 00083 virtual void addMessageCallback(int type, DtVrfObjectMessageCallbackFcn fcn, void* usr); 00084 virtual void removeMessageCallback(int type, DtVrfObjectMessageCallbackFcn fcn, void* usr); 00086 00092 virtual bool readyToSend() const; 00093 00096 virtual void tick(); 00097 00101 virtual void receiveMessage(const DtVrfObjectMessage* message); 00102 00105 virtual void setReadyToSend(bool val); 00106 00108 virtual DtVrfObject* vrfObject(); 00109 00111 virtual int radioId() const; 00112 00115 virtual double sampleRate() const; 00116 00121 00122 virtual const DtVrfRadioTransmitter* radioTransmitter() const; 00123 virtual DtVrfRadioTransmitter* radioTransmitter(); 00125 00127 static DtVrfRadio* create(DtRadioCreationParams& params); 00128 00130 static void setFactory(DtVrfRadioFactory* factory); 00132 static DtVrfRadio* createRadio(const DtString& typeString, DtVrfObject* vrfObject, 00133 const DtVrfRadioDescriptor* descriptor, int radioId); 00134 00144 static void readCommModelSettingsCallback( 00145 const DtSettingsObject* settings, void* usr); 00146 virtual void processReadCommModelSettings(const DtSettingsObject* settings); 00147 00148 protected: 00149 static DtVrfRadioFactory* theFactory; 00150 00151 DtVrfObject* myVrfObject; 00152 const DtVrfRadioDescriptor& myRadioDescriptor; 00153 DtVrfObjectMessageExecutive myMessageExecutive; 00155 DtCommModel* myCommModel; 00156 DtVrfRadioTransmitter* myRadioTransmitter; 00157 int myRadioId; 00158 bool myReadyToSend; 00159 typedef std::deque<DtVrfObjectMessagePtr> DtMessageQueue; 00160 DtMessageQueue myMessageQueuedToSend; 00161 }; 00162 00163 #endif