/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : TempControl.h                                                 */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
/*
NOTE: This file is automatically generated.
DO NOT MODIFY.
*/

#ifndef __TempControl_H
#define __TempControl_H

#include "TaskInterface.h"

#define TempControlServerName "TempControlServer"

/*
CLASS 
TempControl

DESCRIPTION
Interface for a 
Temperature Controller.

AUTHOR
Tom O'Reilly
*/
class TempControl : public TaskInterface {

  friend class TempControl_SK;

  public:

  enum MyCode {
    Code1,
    Code2
  };

  typedef short Shorts[16];
  
  /* Single line comment */
  /*
      this is temperature data
      okay?
    last line 
  */
  struct TempData {
    /////////////////////////////////////////////////////////////////////
    // Temperature
    float temp;

    /////////////////////////////////////////////////////////////////////
    // Time at which temperature was recorded
    long time;

  };

  struct MData {
    short whatzis;

  };

  TempControl(const char *name);
  ~TempControl();

  /////////////////////////////////////////////////////////////////////
  // Eat my shorts
  void eatMy(TempControl::Shorts shorts);

  /////////////////////////////////////////////////////////////////////
  // Set the temperature setpoint
  short setpoint();

  /////////////////////////////////////////////////////////////////////
  // Just a dummy function
  short foo(float junk);

  /////////////////////////////////////////////////////////////////////
  // Overloaded dummy function
  short foo(float junk, short blah, float *junkOut);

  /////////////////////////////////////////////////////////////////////
  // Get the actual current temperature
  long actual(unsigned long index, TempControl::MData *mdata, TempControl::TempData *tdata);

  void func2(float value, short *flag);

  
  protected:

  // Message codes for each method
  enum TempControlMsgCode {
    EatMyMsgCode,
    SetpointMsgCode,
    FooMsgCode,
    Foo01MsgCode,
    ActualMsgCode,
    Func2MsgCode
  };

  // Define message structure for each method
  struct EatMyMsg : Request, Reply {
    Shorts shorts;
  
  } _eatMyMsg;

  struct SetpointMsg : Request, Reply {
    short returnVal;
  
  } _setpointMsg;

  struct FooMsg : Request, Reply {
    short returnVal;
    float junk;
  
  } _fooMsg;

  struct Foo01Msg : Request, Reply {
    short returnVal;
    float junk;
    short blah;
    float junkOut;
  
  } _foo01Msg;

  struct ActualMsg : Request, Reply {
    long returnVal;
    unsigned long index;
    MData mdata;
    TempData tdata;
  
  } _actualMsg;

  struct Func2Msg : Request, Reply {
    float value;
    short flag;
  
  } _func2Msg;

};

#endif

