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

#ifndef SIMHEADSTRUCT_H_
#define SIMHEADSTRUCT_H_

#include <stdint.h>

/**
 *  A struct that is passed from the LRAUV to the Simulator before either
 *  SimInitStruct or SimRunStruct.
 *
 *  \ingroup modules_simulator
 */
struct SimHeadStruct
{
    enum StructType
    {
        SIM_NO_STRUCT,
        SIM_INIT_STRUCT,
        SIM_REINIT_STRUCT,
        SIM_RUN_STRUCT,
        SIM_COMMS_STRUCT,
        SIM_QUIT,
    };

    uint64_t uuid_;
    uint16_t structType_;
    uint16_t structSize_;

    /// Constructor
    SimHeadStruct()
        : uuid_( 0 ),
          structType_( SIM_NO_STRUCT ),
          structSize_( 0 )
    {}

} __attribute__( ( packed ) );

#endif /* SIMHEADSTRUCT_H_ */
