

#include "TailConeIF.idl"

/*
CLASS 
BpauvTailConeIF

DESCRIPTION
TaskInterface to Bpauv TailCone device driver

AUTHOR
Donald Green
*/

interface BpauvTailConeIF : TailConeIF {

  /////////////////////////////////////////////////////////
  // Set Throttle position directly.  For I&T.
  // [input] sv203 position: Sets the pulse width
  // on the motor control board . 
  Status setPropellerThrottle(in short pos);

  /////////////////////////////////////////////////////////
  // Get the current Throttle position. 
  // [output] current sv203 position: the pulse width
  // on the motor control board. 
  Status getPropellerThrottle(out short pos, out TimeIF::TimeSpec time);

  /////////////////////////////////////////////////////////////////////////
  // get the propeller speed in rpm
  // [output] rpm of propeller
  // [output] time: Sample time
  Status getPropellerRpm(out short rpm, out TimeIF::TimeSpec time);

  /////////////////////////////////////////////////////////
  // Set elevator actuator counts directly.  For I&T.
  // [input] counts: Sets the pwm command directly on the motor control board.
  Status setElevatorCounts(in short counts);

  /////////////////////////////////////////////////////////
  // Set rudder actuator counts directly.  For I&T.
  // [input] counts: Sets the pwm command directly on the motor control board.
  Status setRudderCounts(in short counts);

  /////////////////////////////////////////////////////////////////////
  // compute and return the current elevator angle using the motor
  // step counts from the home position
  // [output] computed elevator angle in radians
  // [output] time of sample
  Status getComputedElevatorAngle(out double angle, out TimeIF::TimeSpec time);

  /////////////////////////////////////////////////////////////////////
  // compute and return the current rudder angle using the motor
  // step counts from the home position
  // [output] computed rudder angle in radians
  // [output] time of sample
  Status getComputedRudderAngle(out double angle, out TimeIF::TimeSpec time);

  Status getActualCounts( out short rpm,
		       out short elevatorCounts,
		       out short rudderCounts,
		       out TimeIF::TimeSpec time );
};


