/*
********************************************************
Copyright 2000 MBARI.
MBARI Proprietary Information. All rights reserved.
NOTE: This file is automatically generated.
DO NOT MODIFY.
********************************************************
*/

#ifndef __WorkSiteIF_SK_H
#define __WorkSiteIF_SK_H

#include "TaskServer.h"
#include "WorkSiteIF.h"

class WorkSiteIF_SK : public TaskServer {

  public:

  // Constructor for server with default name
  WorkSiteIF_SK();

  // Constructor for server with specific name
  WorkSiteIF_SK(const char *serverName);

  virtual ~WorkSiteIF_SK();
  
  protected:

  // These methods must be defined in subclass
  virtual double latitude() = 0;
  virtual double longitude() = 0;
  virtual long utmZone() = 0;
  virtual double magneticVariation() = 0;
  virtual short nLblTransponders() = 0;
  virtual long getTransponder(short transponderNo, double *easting, double *northing, double *depth, long *turnaroundTime, long *channel) = 0;
  virtual double soundSpeed() = 0;
  
  // Declare callbacks corresponding to each method
  Boolean latitudeCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean longitudeCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean utmZoneCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean magneticVariationCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean nLblTranspondersCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean getTransponderCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean soundSpeedCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  
  // Message structure pointer for each method
  WorkSiteIF::LatitudeMsg *_latitudeMsg;
  WorkSiteIF::LongitudeMsg *_longitudeMsg;
  WorkSiteIF::UtmZoneMsg *_utmZoneMsg;
  WorkSiteIF::MagneticVariationMsg *_magneticVariationMsg;
  WorkSiteIF::NLblTranspondersMsg *_nLblTranspondersMsg;
  WorkSiteIF::GetTransponderMsg *_getTransponderMsg;
  WorkSiteIF::SoundSpeedMsg *_soundSpeedMsg;
  
  // Determine max bytes required for message buffer
  virtual size_t maxRequestBytes();

  // Allocate buffer for messages, set pointers, etc
  virtual void allocateBuffers();

  private:

  // Initializer method called by constructors
  int init();

};

#endif

