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

#ifndef __SimulatedFuelCellIF_SK_H
#define __SimulatedFuelCellIF_SK_H

#include "TaskServer.h"
#include "SimulatedFuelCellIF.h"
#include "InstrumentIF_SK.h"

class SimulatedFuelCellIF_SK : public InstrumentIF_SK {

  public:

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

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

  virtual ~SimulatedFuelCellIF_SK();
  
  protected:

  // These methods must be defined in subclass
  virtual SimulatedFuelCellIF::FCC_Cmd_Reply send_simFCC_command(SimulatedFuelCellIF::FCC_Command fcc_command) = 0;
  virtual SimulatedFuelCellIF::FCC_Cmd_Reply get_simFCC_status(SimulatedFuelCellIF::FCC_status *fcc_status) = 0;
  virtual SimulatedFuelCellIF::FCC_Cmd_Reply get_simFCC_data(SimulatedFuelCellIF::FCC_data *fcc_data) = 0;
  virtual SimulatedFuelCellIF::FCC_Cmd_Reply set_simFCC_data(SimulatedFuelCellIF::FCC_data *fcc_data) = 0;
  virtual SimulatedFuelCellIF::FCC_Cmd_Reply set_simFCC_status(SimulatedFuelCellIF::FCC_status *fcc_status) = 0;
  
  // Declare callbacks corresponding to each method
  Boolean send_simFCC_commandCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

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

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

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

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

  
  // Message structure pointer for each method
  SimulatedFuelCellIF::Send_simFCC_commandMsg *_send_simFCC_commandMsg;
  SimulatedFuelCellIF::Get_simFCC_statusMsg *_get_simFCC_statusMsg;
  SimulatedFuelCellIF::Get_simFCC_dataMsg *_get_simFCC_dataMsg;
  SimulatedFuelCellIF::Set_simFCC_dataMsg *_set_simFCC_dataMsg;
  SimulatedFuelCellIF::Set_simFCC_statusMsg *_set_simFCC_statusMsg;
  
  // 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

