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

#include "ScienceModule.h"

#include "Aanderaa_O2.h"
#include "Aanderaa_O2IF.h"
#include "CANONSampler.h"
#include "CANONSamplerIF.h"
#include "CTD_NeilBrown.h"
#include "CTD_NeilBrownIF.h"
#include "CTD_Seabird.h"
#include "CTD_SeabirdIF.h"
#include "ESPCartridgeSelect.h"
#include "ESPCartridgeSelectIF.h"
#include "ESPComponent.h"
#include "ESPComponentIF.h"
#include "PAR_Licor.h"
#include "PAR_LicorIF.h"
#include "VemcoVR2C.h"
#include "VemcoVR2CIF.h"
#include "WetLabsBB2FL.h"
#include "WetLabsBB2FLIF.h"
#include "WetLabsSeaOWL_UV_A.h"
#include "WetLabsSeaOWL_UV_AIF.h"
#include "WetLabsUBAT.h"
#include "WetLabsUBATIF.h"

ScienceModule::ScienceModule()
    : Module( "Science",
              "Contains the science components" )
{}

void ScienceModule::loadComponents( Logger& logger )
{
    if( loadAtStartup( Aanderaa_O2IF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new Aanderaa_O2( this ) );
    }
    if( loadAtStartup( CANONSamplerIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new CANONSampler( this ) );
    }
    if( loadAtStartup( CTD_NeilBrownIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new CTD_NeilBrown( this ) );
    }
    if( loadAtStartup( CTD_SeabirdIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new CTD_Seabird( this ) );
    }
    if( loadAtStartup( ESPComponentIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new ESPComponent( this ) );
    }
    if( loadAtStartup( PAR_LicorIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new PAR_Licor( this ) );
    }
    if( loadAtStartup( VemcoVR2CIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new VemcoVR2C( this ) );
    }
    if( loadAtStartup( WetLabsBB2FLIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new WetLabsBB2FL( this ) );
    }
    if( loadAtStartup( WetLabsSeaOWL_UV_AIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new WetLabsSeaOWL_UV_A( this ) );
    }
    if( loadAtStartup( WetLabsUBATIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new WetLabsUBAT( this ) );
    }

    registerBehaviorCreator( ESPCartridgeSelectIF::NAME, &ESPCartridgeSelect::CreateBehavior );
}

ScienceModule::~ScienceModule()
{}

