VR-Forces 4.0.4 Class Documentation
include/vrfmodel/lasingCtlr.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2011 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 
00008 
00009 #pragma once
00010 
00011 #include "vrfobjcore/singleTaskControllerComponent.h"
00012 #include "vrfmodel/vrfmodelDefines.h"
00013 
00014 class DtString;
00015 class DtSimManager;
00016 class DtSimMessage;
00017 class DtLasingControllerDescriptor;
00018 class DtLasingPSR;
00019 class DtBooleanOutputPort;
00020 class DtOutputPortGroup;
00021 class DtSetTargetRequest;
00022 class DtDesignatorPublisher;
00023 class DtEntityListInputPort;
00024 class DtWeaponComponentInterface;
00025 
00030 class DT_DLL_vrfmodel DtLasingController : public DtSingleTaskControllerComponent
00031 {
00032 protected:
00034    DtLasingController();
00035 
00037    DtLasingController(const DtLasingController & 
00038       orig);
00039 
00041    const DtLasingController & operator=(const DtLasingController & orig);
00042 
00043 public:
00044 
00046    DtLasingController(const DtString& name, 
00047       DtVrfObject* owner,
00048       DtSimManager* simManager, 
00049       DtComponentDescriptor* desc = 0,
00050       DtReaderWriterRegistry* parentRegistry = 0);
00051 
00053    virtual ~DtLasingController();
00054 
00055    //Initializes the laser controller
00056    virtual bool init();
00057 
00060    virtual DtString type() const;
00061 
00069    virtual void tick();
00070 
00072    virtual void setDesignatorCode(const int code);
00073    virtual const int designatorCode() const;
00074 
00075    virtual void clearTask();
00076 
00080    virtual bool createProcessSR();
00081 
00083    virtual void startLasing();
00084    virtual void stopLasing();
00085 
00088    virtual void laseTarget(DtVrfObject* targetObject);
00089 
00091    virtual bool lasing();
00092 
00093    //static creator
00094    static DtSimComponent * creator(const DtString& name, 
00095       DtVrfObject* owner,
00096       DtSimManager* simManager, 
00097       DtComponentDescriptor* desc = 0,
00098       DtReaderWriterRegistry* parentRegistry = 0);
00099 
00101    virtual void registerTaskMsgCallbacks();
00102    virtual void registerSetLaseAutonomousMsgCallbacks();
00103    virtual void registerSetLaserCodeRequestMsgCallbacks();
00104 
00105    //static callbacks to register with the radio for commands to lase a target
00106    static void laseTargetTaskCallback(DtSimMessage *msg, void * usrData);
00107    static void setLaseAutonomousRequestCallback(DtSimMessage* msg, void* usrData);
00108    static void setLaserCodeRequestCallback(DtSimMessage* msg, void* usrData);
00109 
00110    //functions to do the work for the static function.
00111    virtual void processLaseTargetTaskMessage(DtSimMessage *msg);
00112    virtual void processSetLaseAutonomousRequestMessage(DtSimMessage* msg);
00113    virtual void processSetLaserCodeRequestMessage(DtSimMessage* msg);
00114 
00115    static void requestLaserCodeCallback(const DtVrfObjectMessage* msg, void* usr);
00116    virtual void processRequestLaserCode(const DtVrfObjectMessage* msg);
00117 
00118 protected:
00120    virtual bool lineOfSight(DtVrfObject* target);
00121 
00122    //updates the designator state and publishes it on the
00123    //network
00124    virtual void tickLaser();
00125 
00127    virtual void setRadio(DtSimBaseRadio * radio);
00128 
00129    virtual bool createPublisher();
00130 
00131    virtual bool createTargetInput();
00132 
00135    virtual double laserPower() const;
00136 
00139    virtual double laserWavelength() const;
00140 
00145    virtual bool laseTargetValid(DtVrfObject* target, DtString& invalidReason);
00146 
00149    virtual DtVrfObject* chooseAutonomousLaseTarget();
00150 
00152    virtual int defaultLaserCode() const;
00153 
00156    static void objectAboutToBeRemovedCallback(DtVrfObject* vrfObject, 
00157       void* usr);
00158 
00161    virtual void processObjectAboutToBeRemovedCallback(DtVrfObject* vrfObject);
00162 
00167    class DtLasingControllerInput
00168    {
00169    private:
00171 
00172       DtLasingControllerInput();
00173       DtLasingControllerInput(const DtLasingControllerInput& orig);
00174       const DtLasingControllerInput& operator=(const DtLasingControllerInput& rhs);
00176    public:
00177       DtLasingControllerInput(DtLasingController*);
00178       ~DtLasingControllerInput();
00179       virtual bool init();
00180       virtual DtVrfObject* getTarget() = 0;
00181    protected:
00182       DtLasingController* myController;
00183    };
00184 
00186    class DtLasingControllerPortInput : public DtLasingControllerInput
00187    {
00188    private:
00190 
00191       DtLasingControllerPortInput();
00192       DtLasingControllerPortInput(const DtLasingControllerPortInput& orig);
00193       const DtLasingControllerPortInput& operator=(const DtLasingControllerPortInput& rhs);
00195 
00196    public:
00197       DtLasingControllerPortInput(DtLasingController*);
00198       ~DtLasingControllerPortInput();
00199       virtual bool init();
00200       virtual DtVrfObject* getTarget();
00201 
00202    protected:
00203       DtEntityListInputPort* myTargetListPort;
00204    };
00205 
00207    class DtLasingControllerWeaponInterfaceInput : public DtLasingControllerInput
00208    {
00209    private:
00211 
00212       DtLasingControllerWeaponInterfaceInput();
00213       DtLasingControllerWeaponInterfaceInput(const DtLasingControllerWeaponInterfaceInput& orig);
00214       const DtLasingControllerWeaponInterfaceInput& operator=(const DtLasingControllerWeaponInterfaceInput& rhs);
00216    public:
00217       DtLasingControllerWeaponInterfaceInput(DtLasingController*);
00218       ~DtLasingControllerWeaponInterfaceInput();
00219       virtual bool init();
00220       virtual DtVrfObject* getTarget();
00221 
00222    protected:
00223       DtWeaponComponentInterface* myInterface;
00224    };
00225 
00226 protected:
00227    DtVrfObject*                    myCurrentLasedTarget;  
00228 
00231    DtLasingPSR*                    myProcessState;
00232 
00233    const DtLasingControllerDescriptor*   myComponentDescriptor;
00234    DtBoolean                       myFirstTick;
00235    DtDesignatorPublisher*          myDesPublisher;
00236 
00240    DtLasingControllerInput* myLasingInput;
00241 };
00242 
00246 int generateLaserCodeFromName(const DtString& objectName);
00247 
00248 
00249 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)