/****************************************************************************** * * Title : fillUirControls.c * Version 0.0 * * Description: Fills some ring controls in primListEditUir.uir, primParamsUir.uir, * and commandListEdit.uir window * * * Author: Lukas Tomasek, tomasekl@fzu.cz * ******************************************************************************/ /****************************************************************************** * Header files * ******************************************************************************/ #include #include "fillUirControls.h" #include "errorHandler.h" #include "registerIndices.h" #include "uirUtility.h" #include "commandParamsStruct.h" #include "mainUir.h" #include "primParamsUir.h" #include "rodConfiguration.h" #define I_AM_MASTER_DSP #undef IDREGS_BASE #include "memoryPartitions.h" //dspf: EVENT_TRAP_DEFAULT_BASE & SZ => use DEFAULT. #undef I_AM_MASTER_DSP #if defined(SCT_ROD) #include "ABCDchip.h" #include "ABCDscans.h" #elif defined(PIXEL_ROD) #endif /* SCT_ROD or PIXEL_ROD */ /****************************************************************************** * Macros * ******************************************************************************/ #if 1 #define FILL_ITEM(itemId) \ status = InsertListItem (panel, control, -1, #itemId, itemId);\ UIR_STATUS_CHECK(status, InsertListItem()); #define FILL_ITEM_NAME(itemName, itemId) \ status = InsertListItem (panel, control, -1, #itemName, itemId);\ UIR_STATUS_CHECK(status, InsertListItem()); #else #define FILL_ITEM(itemId) \ sprintf(text, "0x%X - %s", itemId, #itemId);\ status = InsertListItem (panel, control, -1, text, itemId);\ UIR_STATUS_CHECK(status, InsertListItem());\ printf("%s\n", text); #define FILL_ITEM_NAME(itemName, itemId) \ sprintf(text, "0x%X - %s", itemId, #itemName);\ status = InsertListItem (panel, control, -1, text, itemId);\ UIR_STATUS_CHECK(status, InsertListItem());\ printf("%s\n", text); #endif #define MAX_LABEL_LENGTH 30 /****************************************************************************** * Static Function Declarations * ******************************************************************************/ static void fillPrimRingCommon(int panel, int control); static void fillPrimRingMaster(int panel); static void fillPrimRingSlave(int panel); static void setTableRowLabel(int panel, int control, int numRows, char labelName[][MAX_LABEL_LENGTH]); /****************************************************************************** * Global functions * ******************************************************************************/ /*============================================================================= * fillSlaveListOptionRing() *============================================================================= * * Fills slave list option ring in primParams.uir window (slaveListOption prim) * */ void fillSlaveListOptionRing(int panel, int control){ int status; char text[100]; FILL_ITEM(LIST_PAUSE ); FILL_ITEM(LIST_RESUME); FILL_ITEM(LIST_ABORT ); return; } /*============================================================================= * fillSlaveTypeRing() *============================================================================= * * Fills slave type ring in primParams.uir window (startSlave, configSlave prim) * */ void fillSlaveTypeRing(int panel, int control){ int status; char text[100]; FILL_ITEM(SLV_DSP_UNCONFIGURED); FILL_ITEM(SLAVE_CALIBRATE ); FILL_ITEM(SLAVE_MONITOR ); FILL_ITEM(SLAVE_ERROR_CHECK ); FILL_ITEM(SLAVE_MEMORY_TEST ); return; } /*============================================================================= * fillPrimRingCommon() *============================================================================= * * Fills primitive ids in primListEdit.uir window * */ void fillPrimParams(int panel){ ERROR_ID errorId; fillPrimRingMaster(panel); fillPrimRingSlave(panel); return; } /*============================================================================= * fillSlaveListOptionRing() *============================================================================= * * Fills Task Ring in Start/StopTask primitive panel (primParams.uir) * */ void fillTaskRing(int panel, int control){ int status; char text[100]; FILL_ITEM(HISTOGRAM_CTRL_TASK); FILL_ITEM(MIRROR_TASK); FILL_ITEM(TRAP_REQ_TASK); FILL_ITEM(HISTOGRAM_TASK); FILL_ITEM(TRAP_TASK); FILL_ITEM(OCCUPANCY_TASK); FILL_ITEM(ERROR_TASK); FILL_ITEM(RESYNCH_TASK); return; } /*============================================================================= * fillDataTypeRing() *============================================================================= * * Fills Task Ring in Start/StopTask primitive panel (primParams.uir) * */ void fillDataTypeRing(int panel, int control){ int status; char text[100]; FILL_ITEM(MIRROR_DATA); FILL_ITEM(ROUTER_DATA); FILL_ITEM(STREAM_DATA); FILL_ITEM(EVENT_DATA); FILL_ITEM(HISTOGRAM_DATA); FILL_ITEM(OCCUPANCY_DATA); FILL_ITEM(FIT_DATA); return; } /*============================================================================= * fillABCDcommandTypeRing() *============================================================================= * * Fills Module Cmd ring in StartTask, BuildStream and SetTrigger * primitive panel (primParams.uir) * */ void fillModuleCmdRing(int panel, int control, int maskCommandOption, int cmd, int ST, int SThisto){ int status; char text[100]; #if defined(SCT_ROD) if(cmd){ FILL_ITEM(NO_CMD); FILL_ITEM(L1_TRIGGER); FILL_ITEM(SOFT_RESET); FILL_ITEM(BC_RESET); FILL_ITEM(PULSE_INPUT_REG); FILL_ITEM(ENABLE_DATA_TAKING); FILL_ITEM(CALIBRATION_PULSE); FILL_ITEM(CONFIG_REG); FILL_ITEM(STROBE_DELAY_REG); FILL_ITEM(THRESHOLD_REG); FILL_ITEM(BIAS_DAC_REG); FILL_ITEM(TRIM_DAC_REG); FILL_ITEM(DELAY); if(maskCommandOption){ FILL_ITEM(MASK); } } if(ST){ if(cmd) InsertListItem (panel, control, -1, "\033m-", -1); /*separator*/ FILL_ITEM(ST_ELAPSED ); FILL_ITEM(ST_VTHR ); FILL_ITEM(ST_VCAL ); FILL_ITEM(ST_STROBE_DELAY); FILL_ITEM(ST_PREAMP ); FILL_ITEM(ST_SHAPER ); FILL_ITEM(ST_TRIM ); FILL_ITEM(ST_MASK ); FILL_ITEM(ST_ROLE ); FILL_ITEM(ST_NMASK ); FILL_ITEM(ST_CAL_MODE ); FILL_ITEM(ST_COMPRESSION ); FILL_ITEM(ST_TRIM_RANGE ); FILL_ITEM(ST_EDGE_DETECT ); FILL_ITEM(ST_SEND_MASK ); FILL_ITEM(ST_ACCUMULATE ); FILL_ITEM(ST_BYPASS ); FILL_ITEM(ST_ACTIVE ); FILL_ITEM(ST_TOKEN ); FILL_ITEM(ST_QTHR ); FILL_ITEM(ST_QCAL ); FILL_ITEM(ST_TARGET ); FILL_ITEM(ST_TTHR ); } if(SThisto){ InsertListItem (panel, control, -1, "\033m-", -1); /*separator*/ FILL_ITEM(ST_RX_DELAY); FILL_ITEM(ST_RX_DELAY0); FILL_ITEM(ST_RX_DELAY1); FILL_ITEM(ST_RX_THRESHOLD); FILL_ITEM(ST_RX_THRESHOLD0); FILL_ITEM(ST_RX_THRESHOLD1); FILL_ITEM(ST_TX_CURRENT); FILL_ITEM(ST_TX_MARKSPACE); FILL_ITEM(ST_TX_DELAY); FILL_ITEM(ST_TX_COARSE); FILL_ITEM(ST_TX_FINE); } #elif defined(PIXEL_ROD) if(cmd) {FILL_ITEM(NO_CMD );} FILL_ITEM(PIX_FE_NULL ); FILL_ITEM(PIX_FE_SOFT_RESET ); FILL_ITEM(PIX_FE_WRITE_GLOBAL ); FILL_ITEM(PIX_FE_READ_GLOBAL ); FILL_ITEM(PIX_FE_WRITE_HITBUS ); FILL_ITEM(PIX_FE_WRITE_SELECT ); FILL_ITEM(PIX_FE_WRITE_PREAMP ); FILL_ITEM(PIX_FE_WRITE_ENABLE ); FILL_ITEM(PIX_FE_WRITE_TDAC0 ); FILL_ITEM(PIX_FE_WRITE_TDAC1 ); FILL_ITEM(PIX_FE_WRITE_TDAC2 ); FILL_ITEM(PIX_FE_WRITE_TDAC3 ); FILL_ITEM(PIX_FE_WRITE_TDAC4 ); FILL_ITEM(PIX_FE_WRITE_FDAC0 ); FILL_ITEM(PIX_FE_WRITE_FDAC1 ); FILL_ITEM(PIX_FE_WRITE_FDAC2 ); FILL_ITEM(PIX_FE_WRITE_FDAC3 ); FILL_ITEM(PIX_FE_WRITE_FDAC4 ); FILL_ITEM(PIX_FE_READ_PIXEL ); InsertListItem (panel, control, -1, "\033m-", -1); /*separator*/ FILL_ITEM(PIX_FE_CLOCK_GLOBAL ); FILL_ITEM(PIX_FE_CLOCK_PIXEL ); InsertListItem (panel, control, -1, "\033m-", -1); /*separator*/ FILL_ITEM(PIX_MC_TRIGGER ); FILL_ITEM(PIX_MC_ECR ); FILL_ITEM(PIX_MC_BCR ); FILL_ITEM(PIX_MC_SYNC ); FILL_ITEM(PIX_EDUMMY ); FILL_ITEM(PIX_MC_CAL ); InsertListItem (panel, control, -1, "\033m-", -1); /*separator*/ FILL_ITEM(DELAY ); FILL_ITEM(MASK ); InsertListItem (panel, control, -1, "\033m-", -1); /*separator*/ FILL_ITEM(PIX_MC_RD_REGISTER ); FILL_ITEM(PIX_MC_RD_FIFO ); FILL_ITEM(PIX_MC_EN_DATA_TAKE ); FILL_ITEM(PIX_MC_RESET_MCC ); FILL_ITEM(PIX_MC_RESET_FE ); InsertListItem (panel, control, -1, "\033m-", -1); /*separator*/ FILL_ITEM(PIX_MC_WR_REGISTER ); FILL_ITEM(PIX_MC_WR_FIFO ); InsertListItem (panel, control, -1, "\033m-", -1); /*separator*/ FILL_ITEM(PIX_MC_WR_RECEIVER ); #endif /* SCT_ROD or PIXEL_ROD */ if(SThisto==2){ InsertListItem (panel, control, -1, "\033m-", -1); /*separator*/ FILL_ITEM(MVAR_GROUP_ID); FILL_ITEM(MVAR_ACTIVE); } return; } /*============================================================================= * fillChipNumber() *============================================================================= * * */ void fillChipNumber(int panel, int control){ int status; char text[100]; #if defined(SCT_ROD) FILL_ITEM(ALL_CHIPS); //FILL_ITEM(CHIP_ADDR_LOOP); FILL_ITEM(M0_CHIP); FILL_ITEM(S1_CHIP); FILL_ITEM(S2_CHIP); FILL_ITEM(S3_CHIP); FILL_ITEM(S4_CHIP); FILL_ITEM(E5_CHIP); FILL_ITEM(M8_CHIP); FILL_ITEM(S9_CHIP); FILL_ITEM(S10_CHIP); FILL_ITEM(S11_CHIP); FILL_ITEM(S12_CHIP); FILL_ITEM(E13_CHIP); #elif defined(PIXEL_ROD) FILL_ITEM(ALL_CHIPS); //FILL_ITEM(CHIP_ADDR_LOOP); FILL_ITEM(0); FILL_ITEM(1); FILL_ITEM(2); FILL_ITEM(3); FILL_ITEM(4); FILL_ITEM(5); FILL_ITEM(6); FILL_ITEM(7); FILL_ITEM(8); FILL_ITEM(9); FILL_ITEM(10); FILL_ITEM(11); FILL_ITEM(12); FILL_ITEM(13); FILL_ITEM(14); FILL_ITEM(15); #endif /* SCT_ROD or PIXEL_ROD */ return; } /*============================================================================= * fillMaskVar() *============================================================================= * * */ void fillMaskVar(int panel){ int status; char text[100]; int control; control=MDL_MASKP_STORAGE; FILL_ITEM(INIT_MASK ); FILL_ITEM(SET_MASK ); FILL_ITEM(UPDATE_MASK ); FILL_ITEM(SWITCH_MASK ); FILL_ITEM(STORE_MASK ); FILL_ITEM(COMPUTE_MASK_DELTAS ); control=MDL_MASKP_MASK_SET; FILL_ITEM(MASK_SET_0 ); FILL_ITEM(MASK_SET_1 ); FILL_ITEM(MASK_SET_2 ); FILL_ITEM(MASK_SET_3 ); FILL_ITEM(MASK_SET_USER ); FILL_ITEM(MASK_SET_INIT ); FILL_ITEM(MASK_SET_WORK0 ); FILL_ITEM(MASK_SET_WORK1 ); FILL_ITEM(MASK_SET_ALL ); return; } /*============================================================================= * fillRegisterIdRing() *============================================================================= * * Fills register object (defined in registerIndicies.h) in primParamsUir.uir * window (RWRegField and PollRegField primitive) * */ void fillRegisterIdRing(int panel, int control){ int status; char text[100]; FILL_ITEM_NAME(FMT_LINK_EN(fmt) , FMT_LINK_EN(0) ); FILL_ITEM_NAME(FMT_EXP_MODE_EN(fmt) , FMT_EXP_MODE_EN(0) ); FILL_ITEM_NAME(FMT_CONFIG_MODE_EN(fmt) , FMT_CONFIG_MODE_EN(0) ); FILL_ITEM_NAME(FMT_EDGE_MODE_EN(fmt) , FMT_EDGE_MODE_EN(0) ); FILL_ITEM_NAME(FMT_READOUT_TIMEOUT(fmt) , FMT_READOUT_TIMEOUT(0) ); FILL_ITEM_NAME(FMT_DATA_OVERFLOW_LIMIT(fmt) , FMT_DATA_OVERFLOW_LIMIT(0) ); FILL_ITEM_NAME(FMT_HEADER_TRAILER_LIMIT(fmt) , FMT_HEADER_TRAILER_LIMIT(0) ); FILL_ITEM_NAME(FMT_ROD_BUSY_LIMIT(fmt) , FMT_ROD_BUSY_LIMIT(0) ); #ifdef PIXEL_ROD FILL_ITEM_NAME(FMT_PXL_LINK_L1A_CNT(fmt) , FMT_PXL_LINK_L1A_CNT(0) ); FILL_ITEM_NAME(FMT_PXL_BANDWIDTH(fmt) , FMT_PXL_BANDWIDTH(0) ); #endif FILL_ITEM_NAME(FMT_LINK_DATA_TEST_MUX(fmt) , FMT_LINK_DATA_TEST_MUX(0) ); FILL_ITEM_NAME(FMT_MB_DIAG_REN(fmt) , FMT_MB_DIAG_REN(0) ); FILL_ITEM_NAME(FMT_LINK_OCC_CNT(fmt,lnk) , FMT_LINK_OCC_CNT(0,0) ); FILL_ITEM_NAME(FMT_TIMEOUT_ERR(fmt) , FMT_TIMEOUT_ERR(0) ); FILL_ITEM_NAME(FMT_DATA_OVERFLOW_ERR(fmt) , FMT_DATA_OVERFLOW_ERR(0) ); FILL_ITEM_NAME(FMT_HEADER_TRAILER_ERR(fmt) , FMT_HEADER_TRAILER_ERR(0) ); FILL_ITEM_NAME(FMT_ROD_BUSY_ERR(fmt) , FMT_ROD_BUSY_ERR(0) ); FILL_ITEM_NAME(FMT_DATA_FMT_STATUS(fmt) , FMT_DATA_FMT_STATUS(0) ); FILL_ITEM_NAME(FMT_STATUS(fmt) , FMT_STATUS(0) ); FILL_ITEM_NAME(FMT_VERSION(fmt) , FMT_VERSION(0) ); FILL_ITEM_NAME(FMT_MODEBIT_STAT_05(fmt) , FMT_MODEBIT_STAT_05(0) ); FILL_ITEM_NAME(FMT_MODEBIT_STAT_6B(fmt) , FMT_MODEBIT_STAT_6B(0) ); InsertListItem (panel, control, -1, "\033m-", -1); /*separator*/ FILL_ITEM_NAME(EFB_ERROR_MASK(efb, lnk) , EFB_ERROR_MASK(0,0) ); FILL_ITEM_NAME(FORMAT_VRSN_LSB , FORMAT_VRSN_LSB ); FILL_ITEM_NAME(FORMAT_VRSN_MSB , FORMAT_VRSN_MSB ); FILL_ITEM_NAME(SOURCE_ID_LSB , SOURCE_ID_LSB ); FILL_ITEM_NAME(SOURCE_ID_MSB , SOURCE_ID_MSB ); FILL_ITEM_NAME(EFB_CMND_0 , EFB_CMND_0 ); FILL_ITEM_NAME(EFB_FORMATTER_STAT , EFB_FORMATTER_STAT ); FILL_ITEM_NAME(EFB_RUNTIME_STAT_REG , EFB_RUNTIME_STAT_REG); FILL_ITEM_NAME(EVENT_HEADER_DATA , EVENT_HEADER_DATA ); FILL_ITEM_NAME(EV_FIFO_DATA1 , EV_FIFO_DATA1 ); FILL_ITEM_NAME(EV_FIFO_DATA2 , EV_FIFO_DATA2 ); FILL_ITEM_NAME(EVT_MEM_MODE , EVT_MEM_MODE ); FILL_ITEM_NAME(EVT_MEM_CMND_STAT , EVT_MEM_CMND_STAT ); FILL_ITEM_NAME(EVT_MEM_RESET , EVT_MEM_RESET ); FILL_ITEM_NAME(EVT_MEM_FLAGS , EVT_MEM_FLAGS ); FILL_ITEM_NAME(EVT_MEM_A_WRD_CNT , EVT_MEM_A_WRD_CNT ); FILL_ITEM_NAME(EVT_MEM_B_WRD_CNT , EVT_MEM_B_WRD_CNT ); FILL_ITEM_NAME(EVT_MEM_PLAY_EVENT , EVT_MEM_PLAY_EVENT ); FILL_ITEM_NAME(EVT_MEM_STATUS , EVT_MEM_STATUS ); FILL_ITEM_NAME(EFB_CODE_VERSION , EFB_CODE_VERSION ); InsertListItem (panel, control, -1, "\033m-", -1); /*separator*/ FILL_ITEM_NAME(RTR_TRAP_CMND_0(slv) , RTR_TRAP_CMND_0(0) ); FILL_ITEM_NAME(RTR_TRAP_CMND_1(slv) , RTR_TRAP_CMND_1(0) ); FILL_ITEM_NAME(RTR_TRAP_RESET(slv) , RTR_TRAP_RESET(0) ); FILL_ITEM_NAME(RTR_TRAP_STATUS(slv) , RTR_TRAP_STATUS(0) ); FILL_ITEM_NAME(RTR_TRAP_MATCH_0(slv) , RTR_TRAP_MATCH_0(0) ); FILL_ITEM_NAME(RTR_TRAP_MOD_0(slv) , RTR_TRAP_MOD_0(0) ); FILL_ITEM_NAME(RTR_TRAP_MATCH_1(slv) , RTR_TRAP_MATCH_1(0) ); FILL_ITEM_NAME(RTR_TRAP_MOD_1(slv) , RTR_TRAP_MOD_1(0) ); FILL_ITEM_NAME(RTR_TRAP_XFR_FRM_SIZE(slv) , RTR_TRAP_XFR_FRM_SIZE(0) ); FILL_ITEM_NAME(RTR_TRAP_FIFO_WRD_CNT(slv) , RTR_TRAP_FIFO_WRD_CNT(0) ); FILL_ITEM_NAME(RTR_TRAP_EVT_CNT(slv) , RTR_TRAP_EVT_CNT(0) ); FILL_ITEM_NAME(RTR_TRAP_INT_DELAY_CNT(slv), RTR_TRAP_INT_DELAY_CNT(0) ); FILL_ITEM_NAME(RTR_CMND_STAT , RTR_CMND_STAT ); FILL_ITEM_NAME(RTR_SLNK_ATLAS_DUMP_MATCH , RTR_SLNK_ATLAS_DUMP_MATCH ); FILL_ITEM_NAME(RTR_SLNK_ROD_DUMP_MATCH , RTR_SLNK_ROD_DUMP_MATCH ); FILL_ITEM_NAME(RTR_CODE_VERSION , RTR_CODE_VERSION ); FILL_ITEM_NAME(RTR_OUTPUT_SIGNAL_MUX , RTR_OUTPUT_SIGNAL_MUX ); InsertListItem (panel, control, -1, "\033m-", -1); /*separator*/ FILL_ITEM_NAME(RRIF_CODE_VERSION , RRIF_CODE_VERSION ); FILL_ITEM_NAME(RRIF_CMND_1 , RRIF_CMND_1 ); FILL_ITEM_NAME(RRIF_CMND_0 , RRIF_CMND_0 ); FILL_ITEM_NAME(ROD_MODE_REG , ROD_MODE_REG ); FILL_ITEM_NAME(FE_MASK_LUT_SELECT , FE_MASK_LUT_SELECT ); FILL_ITEM_NAME(RRIF_STATUS_1 , RRIF_STATUS_1 ); FILL_ITEM_NAME(RRIF_STATUS_0 , RRIF_STATUS_0 ); FILL_ITEM_NAME(FE_CMND_MASK_0_LO , FE_CMND_MASK_0_LO ); FILL_ITEM_NAME(FE_CMND_MASK_0_HI , FE_CMND_MASK_0_HI ); FILL_ITEM_NAME(FE_CMND_MASK_1_LO , FE_CMND_MASK_1_LO ); FILL_ITEM_NAME(FE_CMND_MASK_1_HI , FE_CMND_MASK_1_HI ); FILL_ITEM_NAME(CALSTROBE_DELAY , CALSTROBE_DELAY ); FILL_ITEM_NAME(CAL_CMND , CAL_CMND ); FILL_ITEM_NAME(FRMT_RMB_STATUS , FRMT_RMB_STATUS ); FILL_ITEM_NAME(EFB_DM_FIFO_FLAG_STA , EFB_DM_FIFO_FLAG_STA ); FILL_ITEM_NAME(EFB_DM_WC_STA_REG , EFB_DM_WC_STA_REG ); FILL_ITEM_NAME(INP_MEM_CTRL , INP_MEM_CTRL ); FILL_ITEM_NAME(DBG_MEM_CTRL , DBG_MEM_CTRL ); FILL_ITEM_NAME(CFG_READBACK_CNT , CFG_READBACK_CNT ); FILL_ITEM_NAME(IDE_MEM_CTRL , IDE_MEM_CTRL ); FILL_ITEM_NAME(IDE_MEM_STAT , IDE_MEM_STAT ); //FILL_ITEM_NAME(TIM_FIFO_INPUT , TIM_FIFO_INPUT ); FILL_ITEM_NAME(INTRPT_TO_SLV , INTRPT_TO_SLV ); FILL_ITEM_NAME(INTRPT_FROM_SLV , INTRPT_FROM_SLV ); FILL_ITEM_NAME(DFLT_ROD_EVT_TYPE , DFLT_ROD_EVT_TYPE ); FILL_ITEM_NAME(CRTV_ROD_EVT_TYPE , CRTV_ROD_EVT_TYPE ); FILL_ITEM_NAME(CAL_L1_TRIG_TYPE_0 , CAL_L1_TRIG_TYPE_0 ); FILL_ITEM_NAME(CAL_L1_TRIG_TYPE_1 , CAL_L1_TRIG_TYPE_1 ); FILL_ITEM_NAME(CAL_L1_ID_0 , CAL_L1_ID_0 ); FILL_ITEM_NAME(CAL_L1_ID_1 , CAL_L1_ID_1 ); FILL_ITEM_NAME(CAL_BCID , CAL_BCID ); FILL_ITEM_NAME(FE_OCC_CNTR_RESET(msk) , FE_OCC_CNTR_RESET(0) ); FILL_ITEM_NAME(FE_OCC_CNTR_LOAD(msk) , FE_OCC_CNTR_LOAD(0) ); FILL_ITEM_NAME(FE_OCC_LOAD_VALUE , FE_OCC_LOAD_VALUE ); FILL_ITEM_NAME(DATA_LINK_MASK(msk) , DATA_LINK_MASK(0) ); FILL_ITEM_NAME(FE_OCC_CNTR(occ) , FE_OCC_CNTR(0) ); FILL_ITEM_NAME(DM_DFLT_LUT(mbLut) , DM_DFLT_LUT(0) ); FILL_ITEM_NAME(DM_CRTV_LUT(mbLut) , DM_CRTV_LUT(0) ); FILL_ITEM_NAME(CORRECTED_EVENTS_FIFO , CORRECTED_EVENTS_FIFO ); FILL_ITEM_NAME(RMB_DFLT_LUT(lutset, fmt, mb) , RMB_DFLT_LUT(0, 0, 0) ); FILL_ITEM_NAME(RMB_CRTV_LUT(lutset, fmt, mb) , RMB_CRTV_LUT(0, 0, 0) ); FILL_ITEM_NAME(CMND_MASK_LUT(lutset, sp, lohi), CMND_MASK_LUT(0, 0, 0)); InsertListItem (panel, control, -1, "\033m-", -1); /*separator*/ FILL_ITEM_NAME(STREAM_INHIBIT_MASK(clnk) , STREAM_INHIBIT_MASK(0) ); FILL_ITEM_NAME(MARK_SPACE(clnk) , MARK_SPACE(0) ); FILL_ITEM_NAME(COARSE_DELAY(clnk) , COARSE_DELAY(0) ); FILL_ITEM_NAME(FINE_DELAY(clnk) , FINE_DELAY(0) ); FILL_ITEM_NAME(LASER_CURR_DAC(clnk) , LASER_CURR_DAC(0) ); FILL_ITEM_NAME(IN_LINK_DATA_DELAY(lnk) , IN_LINK_DATA_DELAY(0) ); FILL_ITEM_NAME(BPM_CLOCK_PHASE , BPM_CLOCK_PHASE ); FILL_ITEM_NAME(BREG_CLOCK_PHASE , BREG_CLOCK_PHASE ); FILL_ITEM_NAME(VERNIER_CLOCK_STEP_PHASE0 , VERNIER_CLOCK_STEP_PHASE0 ); FILL_ITEM_NAME(VERNIER_CLOCK_STEP_PHASE1 , VERNIER_CLOCK_STEP_PHASE1 ); FILL_ITEM_NAME(STROBE_DELAY(sdlnk) , STROBE_DELAY(0) ); FILL_ITEM_NAME(IN_DATA_RX_THRESH_DAC(lnk), IN_DATA_RX_THRESH_DAC(0)); FILL_ITEM_NAME(BOC_RESET , BOC_RESET ); FILL_ITEM_NAME(BOC_STATUS , BOC_STATUS ); FILL_ITEM_NAME(BPM_RESET , BPM_RESET ); FILL_ITEM_NAME(TX_DAC_CLEAR , TX_DAC_CLEAR ); FILL_ITEM_NAME(RX_DAC_CLEAR , RX_DAC_CLEAR ); FILL_ITEM_NAME(RX_DATA_MODE , RX_DATA_MODE ); FILL_ITEM_NAME(VERNIER_CLOCK_FINE_PHASE , VERNIER_CLOCK_FINE_PHASE ); FILL_ITEM_NAME(CLOCK_CONTROL_BITS , CLOCK_CONTROL_BITS ); FILL_ITEM_NAME(BOC_FIRMWARE_VERSION , BOC_FIRMWARE_VERSION ); FILL_ITEM_NAME(BOC_HARDWARE_VERSION , BOC_HARDWARE_VERSION ); FILL_ITEM_NAME(BOC_MODULE_TYPE , BOC_MODULE_TYPE ); FILL_ITEM_NAME(BOC_MANUFACTURER , BOC_MANUFACTURER ); FILL_ITEM_NAME(BOC_SERIAL_NUMBER , BOC_SERIAL_NUMBER ); return; } /*============================================================================= * fillCommandIdRing() *============================================================================= * * Fills command ids in commandListEdit.uir window * */ void fillCommandIdRing(int panel, int control){ int status; ERROR_ID errorId=SUCCESS; char text[100]; FILL_ITEM_NAME(R/W VME, RW_VME_COMMAND_ID); FILL_ITEM_NAME(R/W Master, RW_MASTER_COMMAND_ID); FILL_ITEM_NAME(R/W Slave, RW_SLAVE_COMMAND_ID); FILL_ITEM_NAME(Send PrimList, SEND_PRIM_LIST_COMMAND_ID); FILL_ITEM_NAME(CompareFiles, COMPARE_FILES_COMMAND_ID); FILL_ITEM_NAME(BusTest, BUS_TEST_ID); FILL_ITEM_NAME(RunChildCommandList, RUN_CHILD_COMMAND_LIST_ID); FILL_ITEM_NAME(R/W Fpga Flash, RW_FPGA_FLASH_ID); FILL_ITEM_NAME(Write to MDSP Flash, WRITE_MDSP_FLASH_ID); FILL_ITEM_NAME(BOC Setup, BOC_SETUP_ID); FILL_ITEM_NAME(Run External Program, RUN_EXTERNAL_PROGRAM_ID); FILL_ITEM_NAME(Delay, DELAY_COMMAND_ID); return; } /*============================================================================= * fillAddrTable() *============================================================================= * * Fills address table in memory access windows (rodMemoryUir.uir) * */ void fillAddrTable(int panel, int control, const char name[], UINT32 address, UINT32 length){ int status; int rowIndex; status = GetNumTableRows (panel, control, &rowIndex); UIR_STATUS_CHECK(status, GetNumTableRows()); ++rowIndex; status=InsertTableRows (panel, control, rowIndex, 1, VAL_USE_MASTER_CELL_TYPE); UIR_STATUS_CHECK(status, InsertTableRows()); status=SetTableCellVal (panel,control, MakePoint(1,rowIndex), address); UIR_STATUS_CHECK(status, SetTableCellVal()); status=SetTableCellVal (panel,control, MakePoint(2,rowIndex), length); UIR_STATUS_CHECK(status, SetTableCellVal()); status=SetTableRowAttribute (panel,control, rowIndex, ATTR_USE_LABEL_TEXT, 1); UIR_STATUS_CHECK(status, SetTableRowAttribute()); status=SetTableRowAttribute (panel,control, rowIndex, ATTR_LABEL_TEXT, name); UIR_STATUS_CHECK(status, SetTableRowAttribute()); return; } /*============================================================================= * fillCommandIdRing() *============================================================================= * * Fills command ids in commandListEdit.uir window * Dec10 02: adapted for histogram input from the file. jv */ void fillTaskLabel(int panel, int control, unsigned int task){ char labelHistCtrlTask[7][MAX_LABEL_LENGTH]={" ", " ", " ", " ", " ", " ", " "}; char labelMirrorTask[7][MAX_LABEL_LENGTH]={"slvBits", "mirrorFreq", "mirrorBase", "mirrorSlvBase", "mirrorLen", " ", " "}; char labelTrapReqTask[7][MAX_LABEL_LENGTH]={"slvBits", "watchFreq", " ", " ", " ", " ", " "}; char labelHistogramTask[7][MAX_LABEL_LENGTH]={"nEvents", "controlFlag", " ", " ", " ", " ", " "}; char labelTrapTask[7][MAX_LABEL_LENGTH]={"nEvents", "reloadInterval", "trapType", "eventType", "*trapBufferBase", "trapBufferLength", " "}; char labelOccupancyTask[7][MAX_LABEL_LENGTH]={"nEvents", "nFilters", "splitFlag", "filter[0to3]", "filter[4to7]", "filter[8to11]", "filter[12to15]"}; char labelErrorTask[7][MAX_LABEL_LENGTH]={"errorType", " ", " ", " ", " ", " ", " "}; char labelResynchTask[7][MAX_LABEL_LENGTH]={"errorType", " ", " ", " ", " ", " ", " "}; unsigned int defaultValue[7]={0,0,0,0,0,0,0}; int status; int histCtrlTaskVisible=0; switch(task){ case HISTOGRAM_CTRL_TASK: setTableRowLabel(panel, control, 7, labelHistCtrlTask); histCtrlTaskVisible= 1; break; case MIRROR_TASK: setTableRowLabel(panel, control, 7, labelMirrorTask); defaultValue[2]= MIRROR_DEFAULT_BASE; break; case TRAP_REQ_TASK: setTableRowLabel(panel, control, 7, labelTrapReqTask); break; case HISTOGRAM_TASK: setTableRowLabel(panel, control, 7, labelHistogramTask); break; case TRAP_TASK: setTableRowLabel(panel, control, 7, labelTrapTask); defaultValue[4]= EVENT_TRAP_DEFAULT_BASE; defaultValue[5]= EVENT_TRAP_DEFAULT_SZ; break; case OCCUPANCY_TASK: setTableRowLabel(panel, control, 7, labelOccupancyTask); break; case ERROR_TASK: setTableRowLabel(panel, control, 7, labelErrorTask); break; case RESYNCH_TASK: setTableRowLabel(panel, control, 7, labelResynchTask); break; default: /* error */ break; } SetCtrlAttribute (panel, START_TSKP_INP_FILE, ATTR_VISIBLE, histCtrlTaskVisible); SetCtrlAttribute (panel, START_TSKP_HIST_CREATOR, ATTR_VISIBLE, histCtrlTaskVisible); SetCtrlAttribute (panel, START_TSKP_TASK_UNION, ATTR_VISIBLE, !histCtrlTaskVisible); SetCtrlAttribute (panel, START_TSKP_DEFAULT2, ATTR_VISIBLE, !histCtrlTaskVisible); SetCtrlAttribute (panel, START_TSKP_DEFAULT3, ATTR_VISIBLE, !histCtrlTaskVisible); SetCtrlAttribute (panel, START_TSKP_DEFAULT4, ATTR_VISIBLE, !histCtrlTaskVisible); SetCtrlAttribute (panel, START_TSKP_DEFAULT5, ATTR_VISIBLE, !histCtrlTaskVisible); SetCtrlAttribute (panel, START_TSKP_DEFAULT6, ATTR_VISIBLE, !histCtrlTaskVisible); return; } /****************************************************************************** * Static functions * ******************************************************************************/ /*============================================================================= * fillPrimRingCommon() *============================================================================= * * Fills common(master+slave) primitive ids in commandListEdit.uir window * */ static void fillPrimRingCommon(int panel, int control){ int status; char text[100]; FILL_ITEM(ECHO); FILL_ITEM(SET_MESSAGE_MASK); FILL_ITEM(PAUSE_LIST); FILL_ITEM(EVENT_TRAP_SETUP); FILL_ITEM(SET_MEMORY); FILL_ITEM(COPY_MEMORY); FILL_ITEM(MEMORY_TEST); FILL_ITEM(SET_LED); FILL_ITEM(FLASH_LED); FILL_ITEM(SEND_DATA); FILL_ITEM(MODULE_MASK); FILL_ITEM(SET_TRIGGER); FILL_ITEM(START_TASK); FILL_ITEM(TASK_OPERATION); FILL_ITEM(TEST); FILL_ITEM(WRITE_BUFFER); #if defined(SCT_ROD) #elif defined(PIXEL_ROD) FILL_ITEM(TEST_GLOBAL_REG); #endif /* SCT_ROD or PIXEL_ROD */ return; } /*============================================================================= * fillPrimRingMaster() *============================================================================= * * Fills master primitive ids in primListEdit.uir window * */ static void fillPrimRingMaster(int panel){ int status; int control=LIST_EDIT_PRIM_RING_MASTER; char text[100]; fillPrimRingCommon(panel, control); FILL_ITEM(RW_SLAVE_MEMORY); FILL_ITEM(TRANS_SERIAL_DATA); FILL_ITEM(START_SLAVE_EXECUTING); FILL_ITEM(CONFIG_SLAVE); FILL_ITEM(RW_REG_FIELD); FILL_ITEM(POLL_REG_FIELD); FILL_ITEM(RW_FIFO); FILL_ITEM_NAME(>>SEND_SLAVE_LIST, SEND_SLAVE_LIST); FILL_ITEM(START_SLAVE_LIST); FILL_ITEM(SLAVE_LIST_OP); FILL_ITEM(BUILD_STREAM); FILL_ITEM(SEND_STREAM); FILL_ITEM(RW_MODULE_DATA); FILL_ITEM(SEND_CONFIG); FILL_ITEM(DSP_RESET); FILL_ITEM(SET_ROD_MODE); FILL_ITEM(RW_MODULE_VARIABLE); FILL_ITEM(RW_BOC_DATA); FILL_ITEM(BOC_HISTOGRAM); //dpsf #if defined(SCT_ROD) #elif defined(PIXEL_ROD) FILL_ITEM(TEST_GLOBAL_REG); #endif /* SCT_ROD or PIXEL_ROD */ return; } /*============================================================================= * fillPrimRingSlave() *============================================================================= * * Fills slave primitive ids in primListEdit.uir window * */ static void fillPrimRingSlave(int panel){ int status; int control=LIST_EDIT_PRIM_RING_SLAVE; char text[100]; fillPrimRingCommon(panel, control); FILL_ITEM(START_EVENT_TRAPPING); FILL_ITEM(STOP_EVENT_TRAPPING); FILL_ITEM(HISTOGRAM_SETUP); return; } /*============================================================================= * fillRegistersDSPMonitor() *============================================================================= * * Fills registers ring in DSP monitor panel * */ void fillRegistersDSPMonitor(int panel){ int status; int control; char text[100]; control=DSPMONP_REGISTERS_RING_READ; FILL_ITEM(STATUS_REG_0); FILL_ITEM(STATUS_REG_1); FILL_ITEM(STATUS_REG_2); FILL_ITEM(COMMAND_REG_0); FILL_ITEM(DIAGNOSTIC_REG); FILL_ITEM(TRAPSTAT_REG_0); FILL_ITEM(TRAPSTAT_REG_1); FILL_ITEM(LOOP_REG); FILL_ITEM(HCMD_STAT_REG_0); FILL_ITEM(HCMD_STAT_REG_1); FILL_ITEM(HSTAT_REG_0); FILL_ITEM(HSTAT_REG_1); FILL_ITEM(RESERVED_REG_0); FILL_ITEM(RESERVED_REG_1); FILL_ITEM(RESERVED_REG_2); FILL_ITEM(RESERVED_REG_3); FILL_ITEM(RESERVED_REG_4); FILL_ITEM(RESERVED_REG_5); //dpsf: FILL_ITEM(RESERVED_REG_6); FILL_ITEM(TASK_STATE_REG); FILL_ITEM(HCMD_REG); FILL_ITEM(TRAP_CMD_STAT); FILL_ITEM(PRIVATE_DSP_0); //dpsf: re-do uir FILL_ITEM(PRIVATE_DSP_1); //dpsf: re-do uir control=DSPMONP_REGISTERS_RING_WRITE; FILL_ITEM(STATUS_REG_0); FILL_ITEM(STATUS_REG_1); FILL_ITEM(STATUS_REG_2); FILL_ITEM(COMMAND_REG_0); FILL_ITEM(DIAGNOSTIC_REG); FILL_ITEM(TRAPSTAT_REG_0); FILL_ITEM(TRAPSTAT_REG_1); FILL_ITEM(LOOP_REG); FILL_ITEM(HCMD_STAT_REG_0); FILL_ITEM(HCMD_STAT_REG_1); FILL_ITEM(HSTAT_REG_0); FILL_ITEM(HSTAT_REG_1); FILL_ITEM(RESERVED_REG_0); FILL_ITEM(RESERVED_REG_1); FILL_ITEM(RESERVED_REG_2); FILL_ITEM(RESERVED_REG_3); FILL_ITEM(RESERVED_REG_4); FILL_ITEM(RESERVED_REG_5); //dpsf: FILL_ITEM(RESERVED_REG_6); FILL_ITEM(TASK_STATE_REG); FILL_ITEM(HCMD_REG); FILL_ITEM(TRAP_CMD_STAT); FILL_ITEM(PRIVATE_DSP_0); //dpsf: re-do uir FILL_ITEM(PRIVATE_DSP_1); //dpsf: re-do uir } /*============================================================================= * loadListRings() *============================================================================= * * * */ ERROR_ID loadListRings(int panel, char cfgFile[]){ int status; ERROR_ID errorId= 0; char string[300]; FILE *fileHandle; char errorMessage[200]; size_t stringLength; int labelIndex; int control; struct HOST *host; int hostIndex; errno=0; fileHandle = fopen (cfgFile, "r"); /* open text file for read */ if(fileHandle==NULL){ //errorId=FILE_ERROR; //sprintf(errorMessage,"-file name:%s, errno=%d(see errno.h).", cfgFile, errno); //programError(__FILE__,__LINE__, errorId, "fopen()", errno, errorMessage); //return(errorId); return(SUCCESS); } //clear rings status = DeleteListItem (panel, MAIN_CLIST_RING, 0, -1); UIR_STATUS_CHECK(status, DeleteListItem()); status = DeleteListItem (panel, MAIN_PLIST_RING, 0, -1); UIR_STATUS_CHECK(status, DeleteListItem()); /* read line and load it into rings */ while(fgets (string, 300, fileHandle)!=0){ stringLength=strlen(string); if(stringLength<4) break; if(string[stringLength-1]=='\n') { string[stringLength-1]=0; --stringLength; } if(stringLengthpanel.parent, host->controlId.primRing); UIR_STATUS_CHECK(status, DiscardCtrl()); host->controlId.primRing = DuplicateCtrl (global.panel.main, MAIN_PLIST_RING, host->panel.parent, "", 462, 6); /* duplicate command list ring from Main panel */ status = DiscardCtrl (host->panel.commandListStatus, host->controlId.commandRing); UIR_STATUS_CHECK(status, DiscardCtrl()); host->controlId.commandRing = DuplicateCtrl (global.panel.main, MAIN_CLIST_RING, host->panel.commandListStatus, "", 162, 7); } return(errorId); } /*============================================================================= * saveListRings() *============================================================================= * * * */ ERROR_ID saveListRings(int panel, char cfgFile[]){ int status; ERROR_ID errorId; char string[300]; FILE *fileHandle; char errorMessage[200]; size_t stringLength; int labelIndex; int itemCount; int i; errno=0; fileHandle = fopen (cfgFile, "w"); /* create text file for write */ if(fileHandle==NULL){ errorId=FILE_ERROR; sprintf(errorMessage,"-file name:%s, errno=%d(see errno.h).", cfgFile, errno); programError(__FILE__,__LINE__, errorId, "fopen()", errno, errorMessage); return(errorId); } // command lists status=GetNumListItems (panel, MAIN_CLIST_RING, &itemCount); UIR_STATUS_CHECK(status, GetNumListItems()); for(i=0; i