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

#ifndef __DoradoTailConeIF_SK_H
#define __DoradoTailConeIF_SK_H

#include "TaskServer.h"
#include "DoradoTailConeIF.h"
#include "TailConeIF_SK.h"

class DoradoTailConeIF_SK : public TailConeIF_SK {

  public:

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

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

  virtual ~DoradoTailConeIF_SK();
  
  protected:

  // These methods must be defined in subclass
  virtual DeviceIF::Status setMotorCounts(long counts) = 0;
  virtual DeviceIF::Status setElevatorCounts(short counts) = 0;
  virtual DeviceIF::Status setRudderCounts(short counts) = 0;
  virtual DeviceIF::Status currents(short *elevatorCurrent, short *rudderCurrent, short *propCurrent1, short *propCurrent2, TimeIF::TimeSpec *time) = 0;
  virtual DeviceIF::Status readTelemValues(double *omega_M, double *elevator, double *rudder, TimeIF::TimeSpec *time) = 0;
  
  // Declare callbacks corresponding to each method
  Boolean setMotorCountsCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

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

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

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

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

  
  // Message structure pointer for each method
  DoradoTailConeIF::SetMotorCountsMsg *_setMotorCountsMsg;
  DoradoTailConeIF::SetElevatorCountsMsg *_setElevatorCountsMsg;
  DoradoTailConeIF::SetRudderCountsMsg *_setRudderCountsMsg;
  DoradoTailConeIF::CurrentsMsg *_currentsMsg;
  DoradoTailConeIF::ReadTelemValuesMsg *_readTelemValuesMsg;
  
  // 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

