/************************************************************************/
/* Copyright 1993 MBARI							*/
/************************************************************************/
/* $Header: /usr/tiburon/unix/gui/proto/RCS/powerData.c,v 1.1 1998/01/28 16:17:12 oreilly Exp $		*/
/* Summary  : Data File for Power Screen for ROV User Interface		*/
/* Filename : powerData.c						*/
/* Author   : Bob Herlien (rah)						*/
/* Project  : New ROV							*/
/* $Revision: 1.1 $							*/
/* Created  : 06/21/93							*/
/************************************************************************/
/* Modification History:						*/
/* $Log: powerData.c,v $
 * Revision 1.1  1998/01/28 16:17:12  oreilly
 * Initial revision
 *
 * Revision 2.2  96/05/15  11:15:29  11:15:29  bobh (Bob Herlien)
 * Still supporting proto during final vehicle build
 * 
 * Revision 2.0  95/09/20  14:23:00  14:23:00  hebo (Bob Herlien)
 * Support for final vehicle integration.  AC, PDU micros.
 * 
 * Revision 1.6  93/12/17  15:04:51  15:04:51  hebo (Bob Herlien)
 * December Wet Test
 * 
 * Revision 1.5  93/07/08  18:10:52  18:10:52  hebo (Bob Herlien)
 * Prior to Prototype Phase I testing
 * 
*/
/************************************************************************/

#include <sys/types.h>
#include <mbari/types.h>
#include <mbari/const.h>
#include <X11/Intrinsic.h>
#include <Xm/Xm.h>
#include <microdef.h>
#include <ibc_card.h>
#include <powerDM.h>
#include <powerTypes.h>
#include <thrusterDM.h>
#include <sensorDcon.h>
#include <lpsDm.h>
#include <hpsDm.h>
#include "rov.h"
#include "tiburon.h"
#include "power.h"
#include "alarm.h"
#include "ibc.h"
#include <vbSystem.h>


/********************************/
/*	External Functions	*/
/********************************/

Extern Void	powerBusSelect( Select *sp );
Extern Void	powerBusUnselect( Select *sp );
Extern Void	regenSelect( Select *sp );
Extern Void	regenUnselect( Select *sp );
Extern Void	acSelect( Select *sp );
Extern Void	acUnselect( Select *sp );
Extern Void	labelCreate( Widget parent, ibcItem *itm,
			     Int32 lpos, Int32 rpos );
Extern Void	labelVarCreate( Widget parent, ibcItem *itm,
			        Int32 lpos, Int32 rpos );
Extern Void	textFieldCreate( Widget parent, ibcItem *itm,
				 Int32 lpos, Int32 rpos );
Extern Void	pwrPushButtonCreate( Widget parent, ibcItem *itm );
Extern Void	updateIntLabel( ibcItem *itm );
Extern Void	updateFixPtLabel( ibcItem *itm );
Extern Void	updateEnumLabel( ibcItem *itm );
Extern Void	updateTypeLabel( ibcItem *itm );
Extern Void	updateNumTextField( ibcItem *itm );
Extern Void	updateFixPtTextField( ibcItem *itm );
Extern Void	modifyIntTextField( Widget w, ibcItem *itm, 
				    XmTextVerifyCallbackStruct *tvp );
Extern Void	acceptIntTextField( Widget w, ibcItem *itm, 
				    XmAnyCallbackStruct *cbp );
Extern Void	acceptFixPtTextField( Widget w, ibcItem *itm, 
				      XmAnyCallbackStruct *cbp );
Extern Void	pwrDiagCancelCallback( Widget w, Widget dialog,
				       XmAnyCallbackStruct *unused );

/********************************/
/*	External Data		*/
/********************************/

Extern AppData		appdata;	/* Application-wide resources	*/
Extern char		*ibcAlarmStrings[];


/********************************/
/*	Misc Global Data	*/
/********************************/

Global Widget	v240FormW, a48FormW, b48FormW, regenFormW, acFormW;


/****************************************/
/*	Power Object Structs		*/
/****************************************/

MLocal pwrSwitch vme_lps_vicor = 
{ SW_LPVICOR, "Vicor", VME_LPS_ENABLE_DM, NULLW, NO_ITEM, NO_ITEM, 0, 
  BUS_NULL };

MLocal pwrSwitch gyro = 
{ SW_LP, "Gyro", GYRO_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch responder = 
{ SW_LP, "Trackpt\nResponder", RESPONDER_DM, NULLW, NO_ITEM, NO_ITEM, 
  0, BUS_NULL };

MLocal pwrSwitch spare_lp = 
{ SW_LP, "Spare", NULL, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrBoard	vme_qlps =
{ NULLW, "VME_IBC.LPS0.", &vme_lps_vicor, &gyro, &responder, &spare_lp, 
  &spare_lp };

MLocal pwrSwitch hydrophone =
{ SW_VICOR, "Hydro\nphones", HYDROPHONE_DM, NULLW, NO_ITEM, NO_ITEM, 
  0, BUS_NULL };

MLocal pwrSwitch imag_sonar =
{ SW_VICOR, "Imaging\nSonar", IMAG_SONAR_DM, NULLW, NO_ITEM, NO_ITEM, 
  0, BUS_NULL };

MLocal pwrBoard	vme_dvicor =
{ NULLW, NULL, SWITCH_NULL, &hydrophone, &imag_sonar, SWITCH_NULL, 
  SWITCH_NULL };

MLocal pwrCan	vme_can =
{ "VME", 5, NULLW, &vme_qlps, &vme_dvicor, BOARD_NULL };

MLocal pwrSwitch camera_lps0_vicor = 
{ SW_LPVICOR, "Vicor", CAMERA_LPS0_ENABLE_DM, NULLW, NO_ITEM, NO_ITEM, 0, 
  BUS_NULL };

MLocal pwrSwitch sit = 
{ SW_LP, "Aux 4", PILOT_SIT_CAMERA_DM, NULLW, NO_ITEM, NO_ITEM, 0,
  BUS_NULL };

MLocal pwrSwitch biolum = 
{ SW_LP, "Science\nAux", BIO_LUME_CAMERA_DM, NULLW, NO_ITEM, NO_ITEM, 0,
  BUS_NULL };

MLocal pwrSwitch camera_lps1_vicor = 
{ SW_LPVICOR, "Vicor", CAMERA_LPS1_ENABLE_DM, NULLW, NO_ITEM, NO_ITEM, 0, 
  BUS_NULL };

MLocal pwrSwitch color_camera = 
{ SW_LP, "Aux 3", GEN_COLOR_CAMERA_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch bw1 = 
{ SW_LP, "Aux 1", GEN_BW_CAMERA1_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch bw2 = 
{ SW_LP, "Aux 2", GEN_BW_CAMERA2_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch port_color = 
{ SW_LP, "Port\nMain", PORT_COLOR_CAMERA_DM, NULLW, NO_ITEM, NO_ITEM, 0,
  BUS_NULL };

MLocal pwrSwitch stbd_color = 
{ SW_LP, "Stbd\nMain", STBD_COLOR_CAMERA_DM, NULLW, NO_ITEM, NO_ITEM, 0,
  BUS_NULL };

MLocal pwrBoard	camera_lps0 =
{ NULLW, "CAMERA_IBC.LPS0.", &camera_lps0_vicor, &port_color, &biolum, &sit,
  &bw2 };

MLocal pwrBoard	camera_lps1 =
{ NULLW, "CAMERA_IBC.LPS1.", &camera_lps1_vicor, &stbd_color, &color_camera,
  &bw1, &spare_lp };

MLocal pwrCan	camera_can =
{ "CAMERA", 5, NULLW, &camera_lps0, &camera_lps1, BOARD_NULL, BOARD_NULL };

MLocal pwrSwitch ers_lps0_vicor = 
{ SW_LPVICOR, "Vicor", ERS_LPS0_12V_ENABLE_DM, NULLW, NO_ITEM, NO_ITEM, 0, 
  BUS_NULL };

MLocal pwrSwitch ers_pressure =
{ SW_LP, "Pressure", ERS_PRESSURE_SENSOR_DM, NULLW, NO_ITEM, NO_ITEM, 0,
  BUS_NULL };

MLocal pwrSwitch vb_level_sensor =
{ SW_LP, "VB Level\nSensor", VB_LEVEL_SENSOR_DM, NULLW, NO_ITEM, NO_ITEM,
  0, BUS_NULL };

MLocal pwrSwitch comp_level_sensor =
{ SW_LP, "Comp\nLevel\nSensor", COMP_LEVEL_SENSOR_DM, NULLW, NO_ITEM, NO_ITEM,
  0, BUS_NULL };

MLocal pwrSwitch toolsled_latch_sensor =
{ SW_LP, "Toolsled\nLatch\nSensor", TOOLSLED_LATCH_SENSOR_DM, NULLW, NO_ITEM,
  NO_ITEM, 0, BUS_NULL };

MLocal pwrBoard	ers_lps0 =
{ NULLW, "EREC_DCON.LPS0.", &ers_lps0_vicor, &ers_pressure, &vb_level_sensor,
  &comp_level_sensor, &toolsled_latch_sensor };

MLocal pwrSwitch ers_lps1_vicor = 
{ SW_LPVICOR, "Vicor", ERS_LPS0_24V_ENABLE_DM, NULLW, NO_ITEM, NO_ITEM, 0, 
  BUS_NULL };

MLocal pwrSwitch vb_hydr_select =
{ SW_LP, "VB\nSelect", VB_SELECT_DM, NULLW, NO_ITEM, NO_ITEM,
  0, BUS_NULL };

MLocal pwrSwitch hydr_select =
{ SW_LP, "Hydraulic\nSelect", HYD_SELECT_DM, NULLW, NO_ITEM, NO_ITEM,
  0, BUS_NULL };

MLocal pwrSwitch hydr_arm_select =
{ SW_LP, "Hydraulic\nArm\nSelect", HYD_ARM_SELECT_DM, NULLW, NO_ITEM, NO_ITEM,
  0, BUS_NULL };

MLocal pwrSwitch hydr_toolsled_select =
{ SW_LP, "Hydraulic\nToolsled\nSelect", HYD_TOOLSLED_SELECT_DM, NULLW, NO_ITEM,
  NO_ITEM, 0, BUS_NULL };

MLocal pwrBoard	ers_lps1 =
{ NULLW, "EREC_DCON.LPS1.", &ers_lps1_vicor, &vb_hydr_select, &hydr_select,
  &hydr_arm_select, &hydr_toolsled_select };

MLocal pwrSwitch ers_lps2_vicor = 
{ SW_LPVICOR, "Vicor", ERS_LPS1_24V_ENABLE_DM, NULLW, NO_ITEM, NO_ITEM, 0, 
  BUS_NULL };

MLocal pwrSwitch vb_fill =
{ SW_LP, "VB Fill", VB_FILL_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch deployment_release =
{ SW_DISABLED, "Deploy\nRelease", NULL, NULLW, NO_ITEM, NO_ITEM,
  0, BUS_NULL };

MLocal pwrSwitch toolsled_release =
{ SW_DISABLED, "Toolsled\nLatch\nRelease", NULL, NULLW, NO_ITEM, NO_ITEM,
  0, BUS_NULL };

MLocal pwrSwitch ers_modem =
{ SW_LP, "Acoustic\nModem", ACOUSTIC_MODEM_DM, NULLW, NO_ITEM, NO_ITEM, 
  0, BUS_NULL };

MLocal pwrBoard	ers_lps2 =
{ NULLW, "EREC_DCON.LPS2.", &ers_lps2_vicor, &vb_fill, &deployment_release,
  &toolsled_release, &ers_modem };

MLocal pwrCan	ers_can =
{ "EMERGENCY RECOVERY", 5, NULLW, &ers_lps0, &ers_lps1, &ers_lps2, BOARD_NULL };

MLocal pwrSwitch toolsled_48v =
{ SW_LP, "Toolsled\n48v", TOOLSLED_48V_DM, NULLW, NO_ITEM, NO_ITEM, 0,
  BUS_NULL };

MLocal pwrSwitch camera_dcon =
{ SW_LP, "Camera\nDCon", CAMERA_DCON_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

/*
MLocal pwrSwitch camera_pan_tilt =
{ SW_HP, "Port Camera\nPan/Tilt", CAMERA_PAN_TILT_DM, NULLW, NO_ITEM,
  NO_ITEM, 0, BUS_NULL };
*/

MLocal pwrSwitch ers_dcon =
{ SW_LP, "ERS\nDCon", ERS_DCON_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch pwr_ibc_a_sw3 =
{ SW_LPSWITCH3, NULL, "PWR_IBC_A.LPS0", NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch spare_48v = 
{ SW_LP, "Spare", SPARE_48V_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrBoard	pwr_ibc_a_board =
{ NULLW, "PWR_IBC_A.LPS0.", &pwr_ibc_a_sw3, &toolsled_48v, &camera_dcon,
  &ers_dcon, &spare_48v };

MLocal pwrBus a48bus =
{ BUS_VERT, 74, NULLW, SWITCH_NULL };

MLocal pwrBus camera_bus =
{ BUS_HORIZ, 30, NULLW, &camera_dcon };

MLocal pwrBus ers_bus =
{ BUS_HORIZ, 30, NULLW, &ers_dcon };

MLocal pwrBus vme_bus =
{ BUS_HORIZ, 30, NULLW, SWITCH_NULL };

MLocal pwrBus misc_bus =
{ BUS_HORIZ, 10, NULLW, SWITCH_NULL };

MLocal pwrObj	a48Objs[] = 
{ { 3,  2, PO_LABEL, "48V Bus A"},
  {30,  0, PO_CAN, (XtPointer)&vme_can},
  {30, 29, PO_CAN, (XtPointer)&camera_can},
  {30, 58, PO_CAN, (XtPointer)&ers_can},
  {10, 20, PO_SW, (XtPointer)&toolsled_48v},
  {10, 40, PO_SW, (XtPointer)&camera_dcon},
  {10, 55, PO_SW, (XtPointer)&spare_48v},
  {10, 70, PO_SW, (XtPointer)&ers_dcon},
  { 0,  0, PO_BOARD, (XtPointer)&pwr_ibc_a_board},
  { 5, 10, PO_BUS, (XtPointer)&a48bus},
  {15, 44, PO_BUS, (XtPointer)&camera_bus},
  {15, 74, PO_BUS, (XtPointer)&ers_bus},
  { 5, 10, PO_BUS, (XtPointer)&vme_bus},
  { 5, 24, PO_BUS, (XtPointer)&misc_bus},
  { 5, 44, PO_BUS, (XtPointer)&misc_bus},
  { 5, 59, PO_BUS, (XtPointer)&misc_bus},
  { 5, 74, PO_BUS, (XtPointer)&misc_bus}
};

MLocal pwrSwitch sensor_lps0_vicor = 
{ SW_LPVICOR, "Vicor", SENSOR_LPS0_12V_ENABLE_DM, NULLW, NO_ITEM, NO_ITEM, 0, 
  BUS_NULL };

MLocal pwrSwitch cond =
{ SW_LP, "Cond", CONDUCTIVITY_SENSOR_SWITCH_DM, NULLW, NO_ITEM, NO_ITEM, 0,
  BUS_NULL };

MLocal pwrSwitch temperature =
{ SW_LP, "Temp", CTD_TEMPERATURE_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch pressure =
{ SW_LP, "Pressure", PRESSURE_SENSOR_SWITCH_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch oxygen =
{ SW_LP, "Oxygen", OXYGEN_SENSOR_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrBoard	sensor_lps0 =
{ NULLW, "SENSOR_IBC.LPS0.", &sensor_lps0_vicor, &cond, &temperature, 
  &pressure, &spare_lp };

MLocal pwrSwitch sensor_lps1_vicor = 
{ SW_LPVICOR, "Vicor", SENSOR_LPS1_12V_ENABLE_DM, NULLW, NO_ITEM, NO_ITEM, 0, 
  BUS_NULL };

MLocal pwrSwitch xmiss =
{ SW_LP, "Transmiss\nometer", TRANSMISSOMETER_DM, NULLW, NO_ITEM, NO_ITEM, 
  0, BUS_NULL };

MLocal pwrSwitch sample_pump =
{ SW_LP, "Sampling\nPump", SAMPLING_PUMP_DM, NULLW, NO_ITEM, NO_ITEM, 
  0, BUS_NULL };

MLocal pwrSwitch inj_pump =
{ SW_LP, "Inj\nPump", INJECTION_PUMP_DM, NULLW, NO_ITEM, NO_ITEM, 
  0, BUS_NULL };

MLocal pwrBoard	sensor_lps1 =
{ NULLW, "SENSOR_IBC.LPS1.", &sensor_lps1_vicor, &sample_pump, &oxygen,
  &xmiss, &spare_lp };

MLocal pwrCan	sensor_can =
{ "SENSOR", 5, NULLW, &sensor_lps0, &sensor_lps1, BOARD_NULL };

MLocal pwrSwitch sonar_lps0_vicor = 
{ SW_LPVICOR, "Vicor", "SONAR_LPS0_48V_ENABLE", NULLW, NO_ITEM, NO_ITEM, 0, 
  BUS_NULL };

MLocal pwrSwitch sonar_lps1_vicor = 
{ SW_LPVICOR, "Vicor", "SONAR_LPS1_24V_ENABLE", NULLW, NO_ITEM, NO_ITEM, 0, 
  BUS_NULL };

MLocal pwrSwitch doppler_sonar =
{ SW_LP, "Doppler\nSonar", DOPPLER_SONAR_DM, NULLW, NO_ITEM, NO_ITEM, 
  0, BUS_NULL };

MLocal pwrSwitch altimeter =
{ SW_LP, "Altimeter", ALTIMETER_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrBoard	sonar_lps0 =
{ NULLW, "SONAR_IBC.LPS0.", &sonar_lps0_vicor, &doppler_sonar, &spare_lp,
  &spare_lp, &spare_lp };

MLocal pwrBoard	sonar_lps1 =
{ NULLW, "SONAR_IBC.LPS1.", &sonar_lps1_vicor, &altimeter, &spare_lp,
  &spare_lp, &spare_lp };

MLocal pwrCan	sonar_can =
{ "SONAR", 5, NULLW, &sonar_lps0, &sonar_lps1, BOARD_NULL };

MLocal pwrSwitch light_port_pt =
{ SW_LP, "Port Lt\nPan/Tilt", PORT_PAN_TILT_DCON_DM, NULLW, NO_ITEM, NO_ITEM, 
  0, BUS_NULL };

MLocal pwrSwitch light_stbd_pt =
{ SW_LP, "Stbd Lt\nPan/Tilt", STBD_PAN_TILT_DCON_DM, NULLW, NO_ITEM, NO_ITEM, 
  0, BUS_NULL };

MLocal pwrSwitch light_sw3 =
{ SW_LPSWITCH3, NULL, "LIGHTING_IBC.LPS0", NULLW, NO_ITEM, NO_ITEM, 0, 
  BUS_NULL };

MLocal pwrBoard	light_lps =
{ NULLW, "LIGHTING_IBC.LPS0.", &light_sw3, &light_port_pt, &light_stbd_pt,
  &spare_lp, &spare_lp };

MLocal pwrSwitch port_sizing_laser =
{ SW_VICOR, "Port Sizing\nLaser", PORT_SIZING_LASER_DM, NULLW, NO_ITEM,
  NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch stbd_sizing_laser =
{ SW_VICOR, "Stbd Sizing\nLaser", STBD_SIZING_LASER_DM, NULLW, NO_ITEM,
  NO_ITEM, 0, BUS_NULL };

MLocal pwrBoard	light_dvicor =
{ NULLW, NULL, SWITCH_NULL, &port_sizing_laser, &stbd_sizing_laser,
  SWITCH_NULL, SWITCH_NULL };

MLocal pwrCan	light_48v_can =
{ "LIGHTS", 5, NULLW, &light_lps, &light_dvicor, BOARD_NULL };

MLocal pwrSwitch sensor_dcon =
{ SW_LP, "Sensor\nDCon", SENSOR_DCON_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch sonar_dcon =
{ SW_LP, "Sonar\nDCon", SONAR_DCON_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch light_48v_dcon =
{ SW_HP, "Light\n48V DCon", LIGHTING_DCON_48V_DM, NULLW, NO_ITEM, NO_ITEM, 0, 
  BUS_NULL };

MLocal pwrSwitch manip_48v =
{ SW_LP, "Manip\n48V", MANIP_48V_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch running_light =
{ SW_LP, "Running\nLight", RUN_LIGHT_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch pwr_ibc_b_sw3 =
{ SW_LPSWITCH3, NULL, "PWR_IBC_B.LPS0", NULLW, NO_ITEM, NO_ITEM, 0, 
  BUS_NULL };

MLocal pwrBoard	pwr_ibc_b_board =
{ NULLW, "PWR_IBC_B.LPS0.", &pwr_ibc_b_sw3, &sensor_dcon, &sonar_dcon,
  &manip_48v, SWITCH_NULL };

MLocal pwrBus b48bus =
{ BUS_VERT, 92, NULLW, SWITCH_NULL };

MLocal pwrBus sensor_bus =
{ BUS_HORIZ, 30, NULLW, &sensor_dcon };

MLocal pwrBus sonar_bus =
{ BUS_HORIZ, 30, NULLW, &sonar_dcon };

MLocal pwrBus light48_bus =
{ BUS_HORIZ, 30, NULLW, &light_48v_dcon };

MLocal pwrObj	b48Objs[] = 
{ { 1,  2, PO_LABEL, "48V Bus B"},
  {30,  0, PO_CAN, (XtPointer)&sensor_can},
  {30, 34, PO_CAN, (XtPointer)&sonar_can},
  {30, 70, PO_CAN, (XtPointer)&light_48v_can},
  {10, 4, PO_SW, (XtPointer)&sensor_dcon},
  {10, 38, PO_SW, (XtPointer)&sonar_dcon},
  {10, 56, PO_SW, (XtPointer)&manip_48v},
  {10, 74, PO_SW, (XtPointer)&light_48v_dcon},
  {10, 88, PO_SW, (XtPointer)&running_light},
  { 0,  0, PO_BOARD, (XtPointer)&pwr_ibc_b_board},
  { 5, 10, PO_BUS, (XtPointer)&b48bus},
  {15,  8, PO_BUS, (XtPointer)&sensor_bus},
  {15, 42, PO_BUS, (XtPointer)&sonar_bus},
  {15, 78, PO_BUS, (XtPointer)&light48_bus},
  { 5,  9, PO_BUS, (XtPointer)&misc_bus},
  { 5, 42, PO_BUS, (XtPointer)&misc_bus},
  { 5, 60, PO_BUS, (XtPointer)&misc_bus},
  { 5, 78, PO_BUS, (XtPointer)&misc_bus},
  { 5, 92, PO_BUS, (XtPointer)&misc_bus}
};


MLocal pwrSwitch sh_thrust =
{ SW_HP, "Stbd Horiz\nThruster", THRUSTER_STBD_HORIZ_DM,
  NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch ph_thrust =
{ SW_HP, "Port Horiz\nThruster", THRUSTER_PORT_HORIZ_DM,
  NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch pv_thrust =
{ SW_HP, "Port Vert\nThruster",  THRUSTER_PORT_VERT_DM,
  NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch sv_thrust =
{ SW_HP, "Stbd Vert\nThruster",  THRUSTER_STBD_VERT_DM,
  NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch fl_thrust =
{ SW_HP, "Fwd Lat\nThruster",  THRUSTER_FWD_LAT_DM,
  NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch al_thrust =
{ SW_HP, "Aft Lat\nThruster", THRUSTER_AFT_LAT_DM,
  NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch sh_enbl =
{ SW_MOTOR_TOGGLE, "Enable", STBD_HORIZ_THRUSTER_DM,
  NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch ph_enbl =
{ SW_MOTOR_TOGGLE, "Enable", PORT_HORIZ_THRUSTER_DM,
  NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch pv_enbl =
{ SW_MOTOR_TOGGLE, "Enable", PORT_VERT_THRUSTER_DM,
  NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch sv_enbl =
{ SW_MOTOR_TOGGLE, "Enable", STBD_VERT_THRUSTER_DM,
  NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch fl_enbl =
{ SW_MOTOR_TOGGLE, "Enable",  FWD_LATERAL_THRUSTER_DM,
  NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch al_enbl =
{ SW_MOTOR_TOGGLE, "Enable",  AFT_LATERAL_THRUSTER_DM,
  NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch vb_enbl =
{ SW_MOTOR_TOGGLE, "Enable", VB_MOTOR_DM_PREFIX,
  NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch vb_run =
{ SW_TOGGLE, "Run", VB_MOTOR_DM_PREFIX "RUN", NULLW, NO_ITEM,
  NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch backup_lts =
{ SW_HP, "Backup\nLights", BACKUP_LIGHT_DM, NULLW, NO_ITEM, NO_ITEM, 
  0, BUS_NULL };

MLocal pwrSwitch toolsled_240 =
{ SW_HP, "Toolsled\n240V", TOOLSLED_240V_DM, NULLW, NO_ITEM, NO_ITEM, 
  0, BUS_NULL };

MLocal pwrSwitch vb_motor =
{ SW_HP, "VB Pump\nMotor", VB_MOTOR_DM, NULLW, NO_ITEM, NO_ITEM, 
  0, BUS_NULL };

MLocal pwrSwitch light_240_dcon =
{ SW_HP, "Light\n240V DCon", LIGHTING_DCON_240V_DM, NULLW, NO_ITEM, NO_ITEM,
  0, BUS_NULL };

MLocal pwrSwitch manip_240 =
{ SW_HP, "Manip\n240 V", "MANIP_240V", NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch spare_240 =
{ SW_HP, "Spare", NULL, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrBoard	light_hps1 =
{ NULLW, NULL, SWITCH_NULL, SWITCH_NULL, 
  SWITCH_NULL };

MLocal pwrBoard	light_hps2 =
{ NULLW, NULL, SWITCH_NULL, SWITCH_NULL, 
  SWITCH_NULL };

/*MLocal pwrSwitch sizing_laser = 
{ SW_VICOR, "Sizing\nLaser", SIZING_LAZER_DM, NULLW, NO_ITEM, NO_ITEM, 0,
  BUS_NULL };*/

/*MLocal pwrBoard	light_vicor =
{ NULLW, NULL, &sizing_laser, SWITCH_NULL, SWITCH_NULL, SWITCH_NULL,
  SWITCH_NULL };*/
MLocal pwrBoard	light_vicor =
{ NULLW, NULL, SWITCH_NULL, SWITCH_NULL, SWITCH_NULL,
  SWITCH_NULL };
  
MLocal pwrSwitch lightBallast0 = 
{ SW_HP, "Ballast 0", LIGHT_BALLAST_0_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch lightBallast1 = 
{ SW_HP, "Ballast 1", LIGHT_BALLAST_1_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch lightBallast2 = 
{ SW_HP, "Ballast 2", LIGHT_BALLAST_2_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch light_0 = 
{ SW_LP, "Light 0", LIGHT_0_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch light_1 = 
{ SW_LP, "Light 1", LIGHT_1_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch light_2 = 
{ SW_LP, "Light 2", LIGHT_2_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch light_3 = 
{ SW_LP, "Light 3", LIGHT_3_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch light_4 = 
{ SW_LP, "Light 4", LIGHT_4_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrSwitch light_5 = 
{ SW_LP, "Light 5", LIGHT_5_DM, NULLW, NO_ITEM, NO_ITEM, 0, BUS_NULL };

MLocal pwrBoard	lightBrd_0 =
{ NULLW, NULL, &lightBallast0, &light_0, &light_1, SWITCH_NULL, 
  SWITCH_NULL };
  
MLocal pwrBoard	lightBrd_1 =
{ NULLW, NULL, &lightBallast1, &light_2, &light_3, SWITCH_NULL, 
  SWITCH_NULL };
  
MLocal pwrBoard	lightBrd_2 =
{ NULLW, NULL, &lightBallast2, &light_4, &light_5, SWITCH_NULL, 
  SWITCH_NULL };

/*MLocal pwrCan	light_240_can =
{ "LIGHTS", 2, NULLW, &light_hps1, &light_hps2, &light_vicor, BOARD_NULL };*/

MLocal pwrCan	light_240_can =
{ "LIGHTS", 3, NULLW, &lightBrd_0, &lightBrd_1, &lightBrd_2, BOARD_NULL };

MLocal pwrBus v240bus =
{ BUS_VERT, 85, NULLW, SWITCH_NULL };

MLocal pwrBus misc240abus =
{ BUS_HORIZ, 6, NULLW, SWITCH_NULL };

MLocal pwrBus misc240bbus =
{ BUS_HORIZ, 48, NULLW, SWITCH_NULL };

MLocal pwrBus light240_bus =
{ BUS_HORIZ, 65, NULLW, &light_240_dcon };

MLocal pwrObj	v240Objs[] = 
{
  { 3,  2, PO_LABEL, "240V Bus A"},
  { 6,  6, PO_SW, (XtPointer)&sh_thrust },
  {18,  7, PO_SW, (XtPointer)&sh_enbl },
  { 6, 21, PO_SW, (XtPointer)&ph_thrust },
  {18, 22, PO_SW, (XtPointer)&ph_enbl },
  { 6, 36, PO_SW, (XtPointer)&pv_thrust },
  {18, 37, PO_SW, (XtPointer)&pv_enbl },
  { 6, 51, PO_SW, (XtPointer)&backup_lts },
  { 6, 66, PO_SW, (XtPointer)&toolsled_240 },
  { 6, 81, PO_SW, (XtPointer)&vb_motor },
  {18, 79, PO_SW, (XtPointer)&vb_enbl },
  {18, 87, PO_SW, (XtPointer)&vb_run },
  { 3, 10, PO_BUS, (XtPointer)&v240bus},
  { 3, 10, PO_BUS, (XtPointer)&misc240abus},
  { 3, 25, PO_BUS, (XtPointer)&misc240abus},
  { 3, 40, PO_BUS, (XtPointer)&misc240abus},
  { 3, 55, PO_BUS, (XtPointer)&misc240abus},
  { 3, 70, PO_BUS, (XtPointer)&misc240abus},
  { 3, 85, PO_BUS, (XtPointer)&misc240abus},

  {45,  2, PO_LABEL, "240V Bus B"},
  {48,  6, PO_SW, (XtPointer)&fl_thrust },
  {60,  7, PO_SW, (XtPointer)&fl_enbl },
  {48, 21, PO_SW, (XtPointer)&al_thrust },
  {60, 22, PO_SW, (XtPointer)&al_enbl },
  {48, 36, PO_SW, (XtPointer)&sv_thrust },
  {60, 37, PO_SW, (XtPointer)&sv_enbl },
  {48, 51, PO_SW, (XtPointer)&light_240_dcon },
  {65, 49, PO_CAN, (XtPointer)&light_240_can },
  {48, 66, PO_SW, (XtPointer)&manip_240 },
  {48, 81, PO_SW, (XtPointer)&spare_240 },
  {45, 10, PO_BUS, (XtPointer)&v240bus},
  {45, 10, PO_BUS, (XtPointer)&misc240bbus},
  {45, 25, PO_BUS, (XtPointer)&misc240bbus},
  {45, 40, PO_BUS, (XtPointer)&misc240bbus},
  {45, 55, PO_BUS, (XtPointer)&misc240bbus},
  {50, 55, PO_BUS, (XtPointer)&light240_bus},
  {45, 70, PO_BUS, (XtPointer)&misc240bbus},
  {45, 85, PO_BUS, (XtPointer)&misc240bbus}
};


/****************************************/
/*	Global Power Select Structs	*/
/****************************************/

Global pwrObjDesc v240Desc = { v240Objs, XtNumber(v240Objs), 
			       NO_GROUP, "240 V Busses" };
Global pwrObjDesc a48Desc = { a48Objs, XtNumber(a48Objs), 
			      NO_GROUP, "48 V Bus A" };
Global pwrObjDesc b48Desc = { b48Objs, XtNumber(b48Objs), 
			      NO_GROUP, "48 V Bus B" };

Global SelectStatus	pwrSts;

Global Select v240Sel =  { powerBusSelect, powerBusUnselect, &v240FormW, 
			   &pwrSts, NULLSS, &v240Desc, "v240Form" };
Global Select a48Sel  =  { powerBusSelect, powerBusUnselect, &a48FormW, 
			   &pwrSts, NULLSS, &a48Desc, "a48Form" };
Global Select b48Sel  =  { powerBusSelect, powerBusUnselect, &b48FormW, 
			   &pwrSts, NULLSS, &b48Desc, "b48Form" };
Global Select acSel   =  { acSelect, acUnselect, &acFormW, 
			   &pwrSts, NULLSS, NULL, "acForm" };
Global Select regenSel = { regenSelect, regenUnselect, &regenFormW, 
			   &pwrSts, NULLSS, NULL, "regenForm" };


/************************************************/
/*	ibcItem Structs for Power Dialog	*/
/************************************************/

MLocal char	*onOff[] = { "Off", "On" };

MLocal char	*swTypes[] = 
{ "High Power", "Low Power",  "Vicor Supply for Low Power", "Vicor", "Toggle",
  "Common to 4 Low Pwr Switches" };

MLocal ibcItem hpSwitchItems[] = 
{ { "Switch Type", NULL, DM_EMPTY, 0, labelVarCreate, updateTypeLabel, NULLF,
    NULLF, UP_NONE, SW_HP, 0, swTypes, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Current", HPS_CURRENT_DM, DM_INT16, 1, labelCreate, updateFixPtLabel, 
    NULLF, NULLF, UP_CONSUME, 1, 1000, NULL, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Current Alarm", HPS_CURRENT_ALARM_DM, DM_ENUM, 1, labelCreate, 
    updateEnumLabel, NULLF, NULLF, UP_ALREADY_CONSUME, NUM_IBC_ALARMS, 0,
    ibcAlarmStrings, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Current Warning Thresh", HPS_CURRENT_WARN_THRESH_DM, DM_INT16, 1, 
    textFieldCreate, updateFixPtTextField, acceptFixPtTextField, 
    modifyIntTextField, UP_CONSUME, 6, 1, (XtPointer)1000, 0, NULLW, NULLW,
    NULLW, 0, -1},
  { "Current Alarm Thresh", HPS_CURRENT_ALARM_THRESH_DM, DM_INT16, 1,
    textFieldCreate, updateFixPtTextField, acceptFixPtTextField, 
    modifyIntTextField, UP_CONSUME, 6, 1, (XtPointer)1000, 0, NULLW, NULLW,
    NULLW, 0, -1},
  {"", NULL, DM_EMPTY, 0, pwrPushButtonCreate, NULLF, pwrDiagCancelCallback,
    NULLF, UP_NONE, 40, 60, "Dismiss", 0, NULLW, NULLW, NULLW, 0, -1}
};

MLocal ibcItem lpVicorItems[] = 
{ { "Switch Type", NULL, DM_EMPTY, 0, labelVarCreate, updateTypeLabel, NULLF,
    NULLF, UP_NONE, SW_LPVICOR, 0, swTypes, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Voltage", LPS_VICOR_VOLTAGE_DM, DM_NAT16, 1, labelCreate,
    updateFixPtLabel, NULLF, NULLF, UP_CONSUME, 1, 1000, NULL, 0, NULLW, NULLW,
    NULLW, 0, -1},
  { "Voltage Alarm", LPS_VICOR_VOLTAGE_ALARM_DM, DM_ENUM, 1, labelCreate, 
    updateEnumLabel, NULLF, NULLF, UP_ALREADY_CONSUME, NUM_IBC_ALARMS, 0, 
    ibcAlarmStrings, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Voltage Warning Thresh", LPS_VICOR_VOLTAGE_WARN_THRESH_DM, DM_NAT16, 1, 
    textFieldCreate, updateFixPtTextField, acceptFixPtTextField, 
    modifyIntTextField, UP_CONSUME, 6, 1, (XtPointer)1000, 0, NULLW, NULLW,
    NULLW, 0, -1},
  { "Voltage Alarm Thresh", LPS_VICOR_VOLTAGE_ALARM_THRESH_DM, DM_NAT16, 1,
    textFieldCreate, updateFixPtTextField, acceptFixPtTextField, 
    modifyIntTextField, UP_CONSUME, 6, 1, (XtPointer)1000, 0, NULLW, NULLW,
    NULLW, 0, -1},
  { "Vicor Temperature", "VICOR_TEMP", DM_INT16, 1, labelCreate, 
    updateIntLabel, NULLF, NULLF, UP_CONSUME, 0, 0, NULL, 0, NULLW, 
    NULLW, NULLW, 0, -1},
  { "Vicor Temp Alarm", LPS_VICOR_TEMP_ALARM_DM, DM_ENUM, 1, labelCreate, 
    updateEnumLabel, NULLF, NULLF, UP_ALREADY_CONSUME, NUM_IBC_ALARMS, 0, 
    ibcAlarmStrings, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Temp Warning Thresh", LPS_VICOR_TEMP_WARN_THRESH_DM, DM_INT16, 1, 
    textFieldCreate, updateNumTextField, acceptIntTextField, 
    modifyIntTextField, UP_CONSUME, 6, 0, NULL, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Temp Alarm Thresh", LPS_VICOR_TEMP_ALARM_THRESH_DM, DM_INT16, 1,
    textFieldCreate, updateNumTextField, acceptIntTextField, 
    modifyIntTextField, UP_CONSUME, 6, 0, NULL, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Switch Temp", LPS_SWITCH_TEMP_DM, DM_INT16, 1, labelCreate, 
     updateIntLabel, NULLF, NULLF, UP_CONSUME, 0, 0, NULL, 0, NULLW,
     NULLW, NULLW, 0, -1},
  { "Switch Temp Alarm", LPS_SWITCH_TEMP_ALARM_DM, DM_ENUM, 1, labelCreate, 
    updateEnumLabel, NULLF, NULLF, UP_ALREADY_CONSUME, NUM_IBC_ALARMS, 0, 
    ibcAlarmStrings, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Switch Temp Warning Thresh", LPS_SWITCH_TEMP_WARN_THRESH_DM, DM_INT16, 1, 
    textFieldCreate, updateNumTextField, acceptIntTextField, 
    modifyIntTextField, UP_CONSUME, 6, 0, NULL, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Switch Temp Alarm Thresh", LPS_SWITCH_TEMP_ALARM_THRESH_DM, DM_INT16, 1,
    textFieldCreate, updateNumTextField, acceptIntTextField, 
    modifyIntTextField, UP_CONSUME, 6, 0, NULL, 0, NULLW, NULLW, NULLW, 0, -1},
  {"", NULL, DM_EMPTY, 0, pwrPushButtonCreate, NULLF, pwrDiagCancelCallback,
    NULLF, UP_NONE, 40, 60, "Dismiss", 0, NULLW, NULLW, NULLW, 0, -1}
};

MLocal ibcItem lpSwitchItems[] = 
{ { "Switch Type", NULL, DM_EMPTY, 1, labelVarCreate, updateTypeLabel, NULLF,
    NULLF, UP_NONE, SW_LP, 0, swTypes, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Current", "CURRENT", DM_INT16, 1, labelCreate, updateFixPtLabel, 
    NULLF, NULLF, UP_CONSUME, 1, 1000, NULL, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Current Alarm", "CURRENT_ALARM", DM_ENUM, 1, labelCreate, 
    updateEnumLabel, NULLF, NULLF, UP_ALREADY_CONSUME, NUM_IBC_ALARMS, 0,
    ibcAlarmStrings, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Current Warning Thresh", "CURRENT_WARN_THRESH", DM_INT16, 1, 
    textFieldCreate, updateFixPtTextField, acceptFixPtTextField, 
    modifyIntTextField, UP_CONSUME, 6, 1, (XtPointer)1000, 0, NULLW, NULLW,
    NULLW, 0, -1},
  { "Current Alarm Thresh", "CURRENT_ALARM_THRESH", DM_INT16, 1,
    textFieldCreate, updateFixPtTextField, acceptFixPtTextField, 
    modifyIntTextField, UP_CONSUME, 6, 1, (XtPointer)1000, 0, NULLW, NULLW,
    NULLW, 0, -1},
  {"", NULL, DM_EMPTY, 0, pwrPushButtonCreate, NULLF, pwrDiagCancelCallback,
    NULLF, UP_NONE, 40, 60, "Dismiss", 0, NULLW, NULLW, NULLW, 0, -1}
};


MLocal ibcItem lpSw3Items[] = 
{ { "Voltage", LPS_VICOR_VOLTAGE_DM, DM_NAT16, 1, labelCreate,
    updateFixPtLabel, NULLF, NULLF, UP_CONSUME, 1, 1000, NULL, 0, NULLW, NULLW,
    NULLW, 0, -1},
  { "Voltage Alarm", LPS_VICOR_VOLTAGE_ALARM_DM, DM_ENUM, 1, labelCreate, 
    updateEnumLabel, NULLF, NULLF, UP_ALREADY_CONSUME, NUM_IBC_ALARMS, 0,
    ibcAlarmStrings, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Voltage Warning Thresh", LPS_VICOR_VOLTAGE_WARN_THRESH_DM, DM_NAT16, 1, 
    textFieldCreate, updateFixPtTextField, acceptFixPtTextField, 
    modifyIntTextField, UP_CONSUME, 6, 1, (XtPointer)1000, 0, NULLW, NULLW,
    NULLW, 0, -1},
  { "Voltage Alarm Thresh", LPS_VICOR_VOLTAGE_ALARM_THRESH_DM, DM_NAT16, 1,
    textFieldCreate, updateFixPtTextField, acceptFixPtTextField, 
    modifyIntTextField, UP_CONSUME, 6, 1, (XtPointer)1000, 0, NULLW, NULLW,
    NULLW, 0, -1},
  { "Switch Temp", LPS_SWITCH_TEMP_DM, DM_INT16, 1, labelCreate, 
    updateIntLabel, NULLF, NULLF, UP_CONSUME, 0, 0, NULL, 0, NULLW, 
    NULLW, NULLW, 0, -1},
  { "Switch Temp Alarm", LPS_SWITCH_TEMP_ALARM_DM, DM_ENUM, 1, labelCreate, 
    updateEnumLabel, NULLF, NULLF, UP_ALREADY_CONSUME, NUM_IBC_ALARMS, 0,
    ibcAlarmStrings, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Switch Temp Warning Thresh", LPS_SWITCH_TEMP_WARN_THRESH_DM, DM_INT16, 1, 
    textFieldCreate, updateNumTextField, acceptIntTextField, 
    modifyIntTextField, UP_CONSUME, 6, 0, NULL, 0, NULLW, NULLW,
    NULLW, 0, -1},
  { "Switch Temp Alarm Thresh", LPS_SWITCH_TEMP_ALARM_THRESH_DM, DM_INT16, 1,
    textFieldCreate, updateNumTextField, acceptIntTextField,
    modifyIntTextField, UP_CONSUME, 6, 0, NULL, 0, NULLW, NULLW,
    NULLW, 0, -1},
  {"", NULL, DM_EMPTY, 0, pwrPushButtonCreate, NULLF, pwrDiagCancelCallback,
    NULLF, UP_NONE, 40, 60, "Dismiss", 0, NULLW, NULLW, NULLW, 0, -1}
};

MLocal ibcItem vicorItems[] = 
{ { "Switch Type", NULL, DM_EMPTY, 1, labelVarCreate, updateTypeLabel, NULLF,
    NULLF, UP_NONE, SW_VICOR, 0, swTypes, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Vicor Temp", "TEMPERATURE", DM_INT16, 1, labelCreate, updateIntLabel, 
    NULLF, NULLF, UP_CONSUME, 0, 0, NULL, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Vicor Temp Alarm", "TEMP_ALARM", DM_ENUM, 1, labelCreate, 
    updateEnumLabel, NULLF, NULLF, UP_ALREADY_CONSUME, NUM_IBC_ALARMS, 0,
    ibcAlarmStrings, 0, NULLW, NULLW, NULLW, 0, -1},
  { "Vicor Temp Warning Thresh", "TEMP_WARN_THRESH", DM_INT16, 1, 
    textFieldCreate, updateNumTextField, acceptIntTextField, 
    modifyIntTextField, UP_CONSUME, 6, 0, NULL, 0, NULLW, NULLW,
    NULLW, 0, -1},
  { "Vicor Temp Alarm Thresh", "TEMP_ALARM_THRESH", DM_INT16, 1,
    textFieldCreate, updateNumTextField, acceptIntTextField, 
    modifyIntTextField, UP_CONSUME, 6, 0, NULL, 0, NULLW, NULLW,
    NULLW, 0, -1},
  {"", NULL, DM_EMPTY, 0, pwrPushButtonCreate, NULLF, pwrDiagCancelCallback,
    NULLF, UP_NONE, 40, 60, "Dismiss", 0, NULLW, NULLW, NULLW, 0, -1}
};

MLocal ibcItemSet  hpSwitchItemSet = 
{ hpSwitchItems, XtNumber(hpSwitchItems), NULLW };

MLocal ibcItemSet  lpSwitchItemSet = 
{ lpSwitchItems, XtNumber(lpSwitchItems), NULLW };

MLocal ibcItemSet  lpVicorItemSet = 
{ lpVicorItems, XtNumber(lpVicorItems), NULLW };

MLocal ibcItemSet  vicorItemSet =  
{ vicorItems, XtNumber(vicorItems), NULLW };

MLocal ibcItemSet  lpSw3ItemSet =  
{ lpSw3Items, XtNumber(lpSw3Items), NULLW };

MLocal ibcItemDesc  hpSwitchItemDesc = 
{ {&hpSwitchItemSet, NULLIS, NULLIS, NULLIS},
  &appdata.pwrsetup_update, 0, 0, 0 };

MLocal ibcItemDesc  lpSwitchItemDesc = 
{ {&lpSwitchItemSet, NULLIS, NULLIS, NULLIS},
  &appdata.pwrsetup_update, 0, 0, 0 };

MLocal ibcItemDesc  lpVicorItemDesc = 
{ {&lpVicorItemSet, NULLIS, NULLIS, NULLIS},
  &appdata.pwrsetup_update, 0, 0, 0 };

MLocal ibcItemDesc  vicorItemDesc = 
{ {&vicorItemSet, NULLIS, NULLIS, NULLIS},
  &appdata.pwrsetup_update, 0, 0, 0 };

MLocal ibcItemDesc  toggleItemDesc = 
{ {NULLIS, NULLIS, NULLIS, NULLIS},
  &appdata.pwrsetup_update, 0, 0, 0 };

MLocal ibcItemDesc  lpSw3ItemDesc = 
{ {&lpSw3ItemSet, NULLIS, NULLIS, NULLIS},
  &appdata.pwrsetup_update, 0, 0, 0 };

Global ibcItemDesc  *switchItemDesc[] =
{ &hpSwitchItemDesc, &lpSwitchItemDesc, &lpVicorItemDesc, &vicorItemDesc,
  &lpSw3ItemDesc, &toggleItemDesc, &toggleItemDesc };
