//=========================================================================
// Summary  : */
// Filename : TaskServerCreate.cc
// Author   : */
// Project  : */
// Revision : 1
// Created  : 2000/08/19
// Modified : 2000/08/19
//=========================================================================
// Description :
//=========================================================================
#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;
}

