示例#1
0
bool CMOOSSerialPort::Configure(STRING_LIST sParams)
{
    MOOSTrace("CMOOSSerialPort::Configure() : ");
    
    STRING_LIST::iterator p;
    
    for(p=sParams.begin();p!=sParams.end();++p)
    {
        std::string sLine = *p;
        
        std::string sTok = MOOSChomp(sLine,"=");
        
        std::string sVal = sLine;
        
        
        if(MOOSStrCmp(sTok,"PORT"))
        {
            m_sPort = sVal;
            MOOSTrace("%s,",m_sPort.c_str());
        }
        else if(MOOSStrCmp(sTok,"BAUDRATE"))
        {
            m_nBaudRate = atoi(sVal.c_str());
            
            if(m_nBaudRate==0)
            {
                m_nBaudRate = DEFAULT_BAUDRATE;
            }
            MOOSTrace("%d,",m_nBaudRate);
            
        }
        else if(MOOSStrCmp(sTok,"HANDSHAKING"))
        {
            if(MOOSStrCmp(sVal,"TRUE"))
            {
                m_bHandShaking = true;
            }
            else
            {
                m_bHandShaking = false;
            }
        }
        else if(MOOSStrCmp(sTok,"VERBOSE"))
        {
            
            if(MOOSStrCmp(sVal,"TRUE"))
            {
                m_bVerbose = true;
            }
            else
            {
                m_bVerbose = false;
            }
        }
        else if(MOOSStrCmp(sTok,"STREAMING"))
        {
            
            if(MOOSStrCmp(sVal,"TRUE"))
            {
                m_bStreaming = true;
            }
            else
            {
                m_bStreaming = false;
            }
            MOOSTrace("%s,",m_bStreaming?"streaming":"standard");
            
        }

        // ARH 14/05/2005 Added to allow use of the 500kbaud CSM PCMCIA card
        else if (MOOSStrCmp(sTok, "USECSMEXT"))
        {
            if (MOOSStrCmp(sVal, "TRUE"))
            {
                m_bUseCsmExt = true;
            }
            else
            {
                m_bUseCsmExt = false;
            }
        }
    }
    
    
    bool bSuccess = Create(m_sPort.c_str(),m_nBaudRate);
    
    if(bSuccess)
    {
        Flush();
        if(m_bStreaming)
        {
            bSuccess = StartThreads();
        }
    }
    
    MOOSTrace("%s\n",bSuccess?"OK":"FAILED");
    
    return bSuccess;
    
    
    
}
示例#2
0
bool CMOOSNavEngine::Initialise(STRING_LIST  sParams)
{

    //make a store for observations..
    m_pStore = new CMOOSNavObsStore;

    //we may be being asked to map thrust to velocity
    string sVal;
    if(MOOSGetValueFromToken(sParams,"THRUST2VELOCITY",sVal))
    {
        if(MOOSStrCmp(sVal,"TRUE"))
        {
            if(MOOSGetValueFromToken(sParams,"THRUST2VELOCITY_GAIN",sVal))
            {
                m_bThrust2Vel = true;
                m_dfThrust2VelGain = atof(sVal.c_str());
            }
        }
    }



    if(MOOSGetValueFromToken(sParams,"SV",sVal))
    {
        double dfNewSV = atof(sVal.c_str());         
        if(dfNewSV !=0)
        {
            m_dfSV=dfNewSV;
        }
    }

    //set up navigation filter logging....
    bool bLog = false;
    if(MOOSGetValueFromToken(sParams,"NAV_LOG",sVal))
    {
        bLog = MOOSStrCmp(sVal,"TRUE");
    }
    if(bLog)
    {
        string sPath="";
        
        //do we have a globally defined path?
        CProcessConfigReader Reader;
        Reader.SetFile(m_sMissionFileName);

        if(!Reader.GetValue("GLOBALLOGPATH",sPath))
        {
            //no..get it locally
            MOOSGetValueFromToken(sParams,"NAV_LOG_PATH",sPath);
        }
        bool bTimeStamp=false;
        if(MOOSGetValueFromToken(sParams,"NAV_LOG_TIMESTAMP",sVal))
        {
            bTimeStamp = MOOSStrCmp(sVal,"TRUE");
        }

        
        m_Logger.Initialise(m_sName,sPath,bTimeStamp);

             
    }



    //Allocate Global states..
    SetUpGlobalStates();

    AddTheVehicle(sParams);

    //fixed observations are attached to the COG...
    AddSensor("FIXED","COG", CMOOSNavSensor::FIXED,0,0,0);

    //set our default start up state...
    //set in constructor of derived classes
    SetOnline(m_bInitialOnline);
    return true;

}