
/*	**************************************************************	*/

/*
 * PARAM.H
 * This file contains parameters required by the measurement
 * program.
 *
 * Zachary Wolf
 * 10/6/05
 */
 
/* Protection from multiple definitions */
#ifndef __VIBRATINGWIREPARAM_HEADER
#define __VIBRATINGWIREPARAM_HEADER

#define TRUE 1
#define FALSE 0
/* Define Current DAC types */  
#define DAC_488 0
#define DAC_488HR 1 
#define DAC_MANUAL 2 
#define DAC_NONE 3 
/* Define Current Readback types */      
#define READBACK_HP3457 0
#define READBACK_HP34970 1 
#define READBACK_NONE 2 
/* Define Current Ramp types */
#define LINEAR 0
#define THREE_LINEAR 1
#define COSINE	2
#define PSCII   3
/* Current system defines */
#define MAIN   0
#define HTRIM  1
#define VTRIM  2
 
/* GPIB addresses */
#define GPIB_BOARD_ADDR					1
#define GPIB_HP33220_ADDR				10
#define GPIB_SR830X_ADDR				8
#define GPIB_SR830Y_ADDR				6
#define GPIB_ESP7000_ADDR				2
#define GPIB_HP34970_ADDR				9 
#define GPIB_HP3457_ADDR				22
#define GPIB_DAC488_ADDR				19
#define GPIB_DAC488HR_ADDR				8 

/* RS232 addresses */
#define RS232_COM_PORT					1
#define RS232_EV16P_ADDR				11

/* VISA IP addresses */
#define VISA_CM6K_IP_ADDR "192.168.0.32" 

/* Email Notification Settings*/
static char MAIL_TO[1000]		=		"sda@slac.stanford.edu";
#define MAIL_SEND_NOTIFICATION			1
#define MAIL_COMPUTER_ID				"Quad Fid"

/* Vibwire parameters */
#define VIBWIRE_BOARD_ADDR				GPIB_BOARD_ADDR
#define VIBWIRE_HP33220_ADDR			GPIB_HP33220_ADDR
#define VIBWIRE_SR830X_ADDR				GPIB_SR830X_ADDR
#define VIBWIRE_SR830Y_ADDR				GPIB_SR830Y_ADDR
#define VIBWIRE_DEVICE_TYPE				VIBWIRE_HP33220_SR830XY
#define VIBWIRE_NOM_FUND_FREQ			118.835
#define VIBWIRE_SHOW_UI					VIBWIRE_TRUE

/* CAM_MOVE parameters */
#define CAM_MOVERS_SHOW_UI	FALSE 
#define CAM_MOVERS_ZERO_CAMS TRUE	   

/* Wirpos parameters */
#define WIRPOS_BOARD_ADDR				GPIB_BOARD_ADDR
#define WIRPOS_HP34970_ADDR				GPIB_HP34970_ADDR
#define WIRPOS_DEVICE_TYPE				WIRPOS_XPS_HP34970
#define WIRPOS_ACC						0.002   // Not used for XPS
#define WIRPOS_VEL						0.0004  // Not used for XPS
#define WIRPOS_SHOW_UI					WIRPOS_TRUE

/* Wire position detector information */
#include "wirpos.h"
#define WIRPOS_NUM_WIRE_DET				4
static struct wirpos_det_info_struct WIRPOS_DET_INFO[WIRPOS_NUM_WIRE_DET] =
{
	{"Dectector 1 (X)", 1, 301, 0.0107},
	{"Dectector 2 (Y)", 2, 302, 0.0108},
	{"Dectector 3 (Y)", 3, 303, 0.0064},
	{"Dectector 4 (X)", 4, 304, 0.0088}
};

/* Magnet current */
#define IMAG_BOARD_ADDR					GPIB_BOARD_ADDR
#define IMAG_SHOW_UI		            TRUE 
#define IMAG_NUM_CURRENT_SYSTEMS		     1
static int IMAG_DAC488_ADDR[]                = {GPIB_DAC488_ADDR, GPIB_DAC488_ADDR, GPIB_DAC488_ADDR};
static int IMAG_DAC488HR_ADDR[]			     = {GPIB_DAC488HR_ADDR, GPIB_DAC488HR_ADDR, GPIB_DAC488HR_ADDR};
static int IMAG_HP3457_ADDR[]				 = {GPIB_HP3457_ADDR, GPIB_HP3457_ADDR, GPIB_HP3457_ADDR}; 
static int IMAG_HP34970_ADDR[]			     = {GPIB_HP34970_ADDR, GPIB_HP34970_ADDR, GPIB_HP34970_ADDR};
static char IMAG_CURRENT_SYSTEM_NAME[][30]	= {"Main ", "HTrim ", "VTrim"};
static int  IMAG_DAC_CONFIG[]	    =         {DAC_488, DAC_488, DAC_488};
static int  IMAG_READBACK_CONFIG[]		    = {READBACK_HP34970, READBACK_HP34970, READBACK_HP34970}; 
static int IMAG_DAC488_PORT[]         	    = {2, 1, 3};
static int IMAG_DAC488HR_PORT[]		   		= {2, 1, 3};
static int IMAG_HP3457_CHAN[]		   		= {0, 1, 2};
static int IMAG_HP34970_CHAN[]		   		= {306, 102, 103};
static int IMAG_RAMP_STYLE[]		        = {LINEAR, THREE_LINEAR, THREE_LINEAR};
static int IMAG_STAND_RAMP_STYLE[]		    = {LINEAR, LINEAR, LINEAR}; 
static int IMAG_BIPOLAR[]		            = {TRUE, TRUE, TRUE};
static double IMAG_PS_AMPS_PER_DAC_VOLT[]	= {0.6, 1.20, 1.20};  /* PS5, MCOR */
static double  IMAG_TRANS_VOLTS_PER_AMP[]	= {0.220, .08333333, .08333333}; 
static double IMAG_MAX_CURR_LIMIT[]			= {6.0, 6., 1.};  /* Maximum current (A) setpoint allowed */
static double IMAG_MIN_CURR_LIMIT[]			= {-6.0,-6., -1.};  /* Minimum current (A) setpoint allowed */ 
static double IMAG_RAMP_RATE[]				= {1.0, 1.0, 0.2};   /* Standard Rate rate (A/s) for ramp functions */
static double IMAG_WAIT_AFTER_RAMP[]		= {3., 2., 2.};    /* Settle time (sec) after ramp is done */ 
static double IMAG_STAND_RAMP_RATE[]		= {1.0, 1.0, 0.2};   /* Standard Rate rate (A/s) for standardize functions */ 
static double IMAG_WAIT_AFTER_STAND_RAMP[]	= {10., 20., 1.};    /* Settle time (sec) after ramp is done */
static int  IMAG_INIT_ZERO_CURRENT_MEAS[]	= {FALSE, FALSE, FALSE};
static int  IMAG_INIT_TURN_ON[]				= {FALSE, FALSE, FALSE};
static double IMAG_INIT_TURN_ON_CURRENT[]	= {20., 0., 0. };
static int  IMAG_INVERPOWER[]				= {FALSE, FALSE, FALSE};
static int  IMAG_CHECK_CURRENT[]			= {FALSE, FALSE, FALSE};  /*  Flag to check that deisred current = actual current to IMAG_CHECK_CURRENT_TOL level*/
static double IMAG_CHECK_CURRENT_TOL[]		= {0.01, 0.01, 0.01}; /* If (desired_current - actual_current)/desired_current > IMAG_CHECK_CURRENT_TOL imag will give an error */
static double IMAG_CHECK_CURRENT_TOL_LOWER_LIM[]  = {3., 1., 1.}; /* Below this Current (A) the IMAG_CHECK_CURRENT_TOL check will not be performed  */
static double IMAG_CHECK_CURRENT_TOL_BALLPARK_LIM[]   = {1.0, 0.5, 0.5}; /* If Current (A) is below IMAG_CHECK_CURRENT_TOL_LOWER_LIM and above IMAG_CHECK_CURRENT_BALLPARK_LIM the actual current needs to be within IMAG_BALLPARK_TOL (in Imag.h) of desired  */ 
static int  IMAG_SET_ZERO_OFFSET_CURRENT_FLAG[]	= {TRUE, TRUE, TRUE};
static double IMAG_SET_ZERO_OFFSET_CURRENT[]    = {-0.00017, 0.00033, 0.01};


/* Measurement parameters */
#define VIBRATINGWIRE_FLIP_TEST             TRUE
#define VIBRATINGWIRE_SIG_GEN_AMPL_2		VIBWIRE_SIGN_AMPL //for 112 ohms of resistance this is 5 mA of current
//#define VIBRATINGWIRE_X_MIN					-20.e-6
#define VIBRATINGWIRE_SIG_GEN_AMPL_4		VIBWIRE_SIGN_AMPL*10
#define VIBRATINGWIRE_X_STEP				20.e-6
#define VIBRATINGWIRE_NUM_X_POS				7
//double  VIBRATINGWIRE_X_POS[VIBRATINGWIRE_NUM_X_POS];
//#define VIBRATINGWIRE_Y_MIN					-20.e-6
#define VIBRATINGWIRE_Y_STEP				20.e-6
#define VIBRATINGWIRE_NUM_Y_POS				7
//double  VIBRATINGWIRE_Y_POS[VIBRATINGWIRE_NUM_Y_POS];
//#define VIBRATINGWIRE_YAW_MIN				-1.5e-3
#define VIBRATINGWIRE_YAW_STEP				5.e-4
#define VIBRATINGWIRE_NUM_YAW_POS			7
//double  VIBRATINGWIRE_YAW_POS[VIBRATINGWIRE_NUM_X_POS];
//#define VIBRATINGWIRE_PITCH_MIN				-2.e-3
#define VIBRATINGWIRE_PITCH_STEP			5.e-4
#define VIBRATINGWIRE_NUM_PITCH_POS			7
//double  VIBRATINGWIRE_PITCH_POS[VIBRATINGWIRE_NUM_Y_POS];


#define VIBRATINGWIRE_WARMUP_TIME           0

static int VIBRATINGWIRE_NUM_STAND_CYCLES[]	=  {0,0,0};
static double VIBRATINGWIRE_STAND_MAX[]	=	  {6.0,0.0,0.0}; 
static double VIBRATINGWIRE_STAND_MIN[]	=	  {-6.0,0.0, 0,0};
static double VIBRATINGWIRE_WARMUP_CURRENT[] = {4.5, 0.0, 0.0};

#define VIBRATINGWIRE_NUM_CURRENTS 1
static int VIBRATINGWIRE_NUM_TEST_CURRENTS[]  = {VIBRATINGWIRE_NUM_CURRENTS, VIBRATINGWIRE_NUM_CURRENTS, VIBRATINGWIRE_NUM_CURRENTS};  
 
static double  VIBRATINGWIRE_TEST_CURRENTS[IMAG_NUM_CURRENT_SYSTEMS][VIBRATINGWIRE_NUM_CURRENTS] = {0.0};			 	  

#define VIBRATINGWIRE_MAX_MOVE_CYCLES		4
#define VIBRATINGWIRE_X_CONV				3.e-6
#define VIBRATINGWIRE_Y_CONV				3.e-6
#define VIBRATINGWIRE_PITCH_CONV			5.e-4
#define VIBRATINGWIRE_YAW_CONV				5.e-4
 
/* End protection */
#endif
