/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : TaskServerCreate.cc                                           */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include <stdio.h>
#include <unistd.h>
#include "System.h"
#include "TaskServer.h"
#include "AltimeterServer.h"
#include "BatteryServer.h"
#include "BuoyLauncherServer.h"
#include "CompassServer.h"
#include "CtdServer.h"
#include "DepthSensorServer.h"
#include "AdvServer.h"
#include "DropWeightServer.h"
#include "DynamicControlServer.h"
#include "ExternalCommsServer.h"
#include "FuelCellServer.h"
#include "InclinometerServer.h"
#include "LayeredControlServer.h"
#include "LblServer.h"
#include "MissionPlanServer.h"
#include "NavigationServer.h"
#include "PowerSystemServer.h"
#include "TailConeServer.h"
#include "VehicleConfigurationServer.h"
#include "WorkSiteServer.h"
#include "Syslog.h"

TaskServer *TaskServer::create(int typeCode, const char *name)
{
  Boolean debug = True;

  TaskServer *server;

  dprintf("TaskServer::create() - name=\"%s\", typeCode=%d\n",
	  name, typeCode);

  switch (typeCode) {

  case AltimeterType:
    server = new AltimeterServer(name);
    break;

  case BatteryType:
    server = new BatteryServer(name);
    break;

  case BuoyLauncherType:
    server = new BuoyLauncherServer();
    break;

  case CompassType:
    server = new CompassServer(name);
    break;

  case CtdType:
    server = new CtdServer(name);
    break;

  case DepthSensorType:
    server = new DepthSensorServer(name);
    break;

  case AdvType:
    server = new AdvServer(name);
    break;

  case DropWeightType:
    server = new DropWeightServer(name);
    break;

  case DynamicControlType:
    server = new DynamicControlServer();
    break;

  case ExternalCommsType:
    server = new ExternalCommsServer();
    break;

  case FuelCellType:
    server = new FuelCellServer(name);
    break;

  case InclinometerType:
    server = new InclinometerServer(name);
    break;

  case LayeredControlType:
    server = new LayeredControlServer();
    break;

  case LblType:
    server = new LblServer(name);
    break;

  case MissionPlanType:
    server = new MissionPlanServer();
    break;

  case NavigationType:
    server = new NavigationServer();
    break;

  case PowerSystemType:
    server = new PowerSystemServer();
    break;

  case TailConeType:
    server = new TailConeServer();
    break;

  case VehicleConfigurationType:
    server = new VehicleConfigurationServer();
    break;

  case WorkSiteType:
    server = new WorkSiteServer();
    break;


  default:
    Syslog::write("TaskServer::create() - %d: Unknown type code\n", 
		  typeCode);
    exit(1);

  }

  return server;
}

