/** \file
 *
 *  Contains the SimRunStruct class declaration.
 *
 *  Copyright (c) 2007,2008,2009 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 */

#ifndef SIMRUNSTRUCT_H_
#define SIMRUNSTRUCT_H_

/**
 *  A struct of values that is passed from the LRAUV to the Simulator, to
 *  run one timestep of the simulator.
 *
 *  \ingroup modules_simulator
 */
struct SimRunStruct
{
    float propOmega_;
    float rudderAngle_;
    float elevatorAngle_;
    float massPosition_;
    float buoyancyPosition_;
    int32_t dropWeightState_;
    float propOmegaAction_;
    float rudderAngleAction_;
    float elevatorAngleAction_;
    float massPositionAction_;
    float buoyancyAction_;
    float density_;
    float dt_;
    double time_;

    /// Constructor
    SimRunStruct()
        : propOmega_( nanf( "" ) ),
          rudderAngle_( nanf( "" ) ),
          elevatorAngle_( nanf( "" ) ),
          massPosition_( nanf( "" ) ),
          buoyancyPosition_( nanf( "" ) ),
          dropWeightState_( 1 ),
          propOmegaAction_( nanf( "" ) ),
          rudderAngleAction_( nanf( "" ) ),
          elevatorAngleAction_( nanf( "" ) ),
          massPositionAction_( nanf( "" ) ),
          buoyancyAction_( nanf( "" ) ),
          density_( nanf( "" ) ),
          dt_( nanf( "" ) ),
          time_( nanf( "" ) )
    {}

};

#endif /* SIMRUNSTRUCT_H_ */
