text: /********************************************************************************
  *  Project   		: FIRST Motor Controller
  *  File Name  		: BaeUtilities.h          
  *  Contributors   	: JDG, ELF
  *  Creation Date 	: August 12, 2008
  *  Revision History	: Source code & revision history maintained at sourceforge.WPI.edu      
  *  File Description	: Globally defined values for utilities
  */
  /*----------------------------------------------------------------------------*/
  /*        Copyright (c) FIRST 2008.  All Rights Reserved.                     */
  /*     Open Source Software - may be modified and shared by FRC teams.        */
  /*   Must be accompanied by the BSD license file in $(WIND_BASE)/WPILib.      */
  /*----------------------------------------------------------------------------*/
  
  #ifndef __BAEUTILITIES_H__
  #define __BAEUTILITIES_H__
  
  /*  Constants */
  #define LOG_DEBUG    __FILE__,__FUNCTION__,__LINE__,DEBUG_TYPE
  #define LOG_INFO     __FILE__,__FUNCTION__,__LINE__,INFO_TYPE
  #define LOG_ERROR    __FILE__,__FUNCTION__,__LINE__,ERROR_TYPE
  #define LOG_CRITICAL __FILE__,__FUNCTION__,__LINE__,CRITICAL_TYPE
  #define LOG_FATAL    __FILE__,__FUNCTION__,__LINE__,FATAL_TYPE
  #define LOG_DEBUG    __FILE__,__FUNCTION__,__LINE__,DEBUG_TYPE
  
  /*   Enumerated Types */
  
  /** debug levels */
  enum dprint_type {DEBUG_TYPE, INFO_TYPE, ERROR_TYPE, CRITICAL_TYPE, FATAL_TYPE};
  
  /** debug output setting */
  typedef enum DebugOutputType_enum { 
  	DEBUG_OFF, DEBUG_MOSTLY_OFF, DEBUG_SCREEN_ONLY, DEBUG_FILE_ONLY, DEBUG_SCREEN_AND_FILE
  }DebugOutputType;
  
  /*  Enumerated Types */
  
  /* Utility functions */
  
  /* debug */
  void SetDebugFlag ( DebugOutputType flag  ); 
  void dprintf ( char * tempString, ...  );  /* Variable argument list */
  
  /* set FRC ranges for drive */
  double RangeToNormalized(double pixel, int range);
  /* change normalized value to any range - used for servo */
  float NormalizeToRange(float normalizedValue, float minRange, float maxRange);
  float NormalizeToRange(float normalizedValue);
  
  /* system utilities */
  void ShowActivity (char *fmt, ...);
  double ElapsedTime (double startTime);
  
  /* servo panning utilities */
  class Servo;
  double SinPosition (double *period, double sinStart);
  void panInit();
  void panInit(double period);
  void panForTarget(Servo *panServo);
  void panForTarget(Servo *panServo, double sinStart);
  
  /* config file read utilities */
  int processFile(char *inputFile, char *outputString, int lineNumber);
  int emptyString(char *string);
  void stripString(char *string);
  
  #endif
  
  