/****************************************************************************** * * Title : primFunctionInit.c * Version 0.0 * * Description: Initialization of array of pointers to primitive functions. * * Author: Lukas Tomasek, tomasekl@fzu.cz * ******************************************************************************/ /****************************************************************************** * Header files * ******************************************************************************/ #include "primFunctionInit.h" #include "hostDefinitions.h" #include "globalDefinitions.h" #include "processor.h" #include "primParams.h" #include "globalDefinitions.h" #include "errorHandler.h" /* common */ #include "primFunc_echo.h" #include "primFunc_setErrmsgMask.h" #include "primFunc_pauseList.h" #include "primFunc_eventTrapSetup.h" #include "primFunc_setMemory.h" #include "primFunc_copyMemory.h" #include "primFunc_memoryTest.h" #include "primFunc_setLed.h" #include "primFunc_flashLed.h" #include "primFunc_sendData.h" #include "primFunc_moduleMask.h" #include "primFunc_setTrigger.h" #include "primFunc_startTask.h" #include "primFunc_taskOperation.h" #include "primFunc_test.h" #include "primFunc_writeBuffer.h" #if defined(SCT_ROD) /* common SCT specific prims */ #elif defined(PIXEL_ROD) /* common pixel specific prims */ #endif /* SCT_ROD or PIXEL_ROD */ /* slave */ #include "primFunc_startEventTrapping.h" #include "primFunc_stopEventTrapping.h" #include "primFunc_histogramSetup.h" #if defined(SCT_ROD) /* slave SCT specific prims */ #elif defined(PIXEL_ROD) /* slave pixel specific prims */ #endif /* SCT_ROD or PIXEL_ROD */ /* master */ #include "primFunc_RWSlaveMemory.h" #include "primFunc_transSerData.h" #include "primFunc_startSlaveExecuting.h" #include "primFunc_configSlave.h" #include "primFunc_RWRegField.h" #include "primFunc_pollRegField.h" #include "primFunc_RWFifo.h" #include "primFunc_sendSlaveList.h" #include "primFunc_startSlaveList.h" #include "primFunc_slaveListOp.h" #include "primFunc_buildStream.h" #include "primFunc_sendStream.h" #include "primFunc_RWmoduleData.h" #include "primFunc_sendConfig.h" #include "primFunc_dspReset.h" #include "primFunc_setRodMode.h" #include "primFunc_RWmoduleVariable.h" #include "primFunc_RWBocData.h" #include "primFunc_BOChisto.h" #if defined(SCT_ROD) /* master SCT specific prims */ #elif defined(PIXEL_ROD) /* master pixel specific prims */ #include "primFunc_testGlobalReg.h" #endif /* SCT_ROD or PIXEL_ROD */ /****************************************************************************** * Global functions * ******************************************************************************/ /*============================================================================= * primFunctionInit() *============================================================================= * * Initializes array of pointers to primitive functions. * */ void primFunctionInit(PRIM_FUNCTION_TYPE (*primFunction[])){ /* common */ primFunction[getPrimArrayId(ECHO)]=&primFunction_echo; primFunction[getPrimArrayId(SET_MESSAGE_MASK)]=&primFunction_setErrmsgMask; primFunction[getPrimArrayId(PAUSE_LIST)]=&primFunction_pauseList; primFunction[getPrimArrayId(EVENT_TRAP_SETUP)]=&primFunction_eventTrapSetup; primFunction[getPrimArrayId(SET_MEMORY)]=&primFunction_setMemory; primFunction[getPrimArrayId(COPY_MEMORY)]=&primFunction_copyMemory; primFunction[getPrimArrayId(MEMORY_TEST)]=&primFunction_memoryTest; primFunction[getPrimArrayId(SET_LED)]=&primFunction_setLed; primFunction[getPrimArrayId(FLASH_LED)]=&primFunction_flashLed; primFunction[getPrimArrayId(SEND_DATA)]=&primFunction_sendData; primFunction[getPrimArrayId(MODULE_MASK)]=&primFunction_moduleMask; primFunction[getPrimArrayId(SET_TRIGGER)]=&primFunction_setTrigger; primFunction[getPrimArrayId(START_TASK)]=&primFunction_startTask; primFunction[getPrimArrayId(TASK_OPERATION)]=&primFunction_taskOperation; primFunction[getPrimArrayId(TEST)]=&primFunction_test; primFunction[getPrimArrayId(WRITE_BUFFER)]=&primFunction_writeBuffer; #if defined(SCT_ROD) /* global SCT specific prims */ #elif defined(PIXEL_ROD) /* global pixel specific prims */ #endif /* SCT_ROD or PIXEL_ROD */ /* slave DSP */ primFunction[getPrimArrayId(START_EVENT_TRAPPING)]=&primFunction_startEventTrapping; primFunction[getPrimArrayId(STOP_EVENT_TRAPPING)]=&primFunction_stopEventTrapping; primFunction[getPrimArrayId(HISTOGRAM_SETUP)]=&primFunction_histogramSetup; #if defined(SCT_ROD) /* slave SCT specific prims */ #elif defined(PIXEL_ROD) /* slave pixel specific prims */ #endif /* SCT_ROD or PIXEL_ROD */ /* master DSP */ primFunction[getPrimArrayId(RW_SLAVE_MEMORY)]=&primFunction_RWSlaveMemory; primFunction[getPrimArrayId(TRANS_SERIAL_DATA)]=&primFunction_transSerData; primFunction[getPrimArrayId(START_SLAVE_EXECUTING)]=&primFunction_startSlaveExecuting; primFunction[getPrimArrayId(CONFIG_SLAVE)]=&primFunction_configSlave; primFunction[getPrimArrayId(RW_REG_FIELD)]=&primFunction_RWField; primFunction[getPrimArrayId(POLL_REG_FIELD)]=&primFunction_pollRegField; primFunction[getPrimArrayId(RW_FIFO)]=&primFunction_RWFifo; primFunction[getPrimArrayId(SEND_SLAVE_LIST)]=&primFunction_sendSlaveList; primFunction[getPrimArrayId(START_SLAVE_LIST)]=&primFunction_startSlaveList; primFunction[getPrimArrayId(SLAVE_LIST_OP)]=&primFunction_slaveListOp; primFunction[getPrimArrayId(BUILD_STREAM)]=&primFunction_buildStream; primFunction[getPrimArrayId(SEND_STREAM)]=&primFunction_sendStream; primFunction[getPrimArrayId(RW_MODULE_DATA)]=&primFunction_RWmoduleData; primFunction[getPrimArrayId(SEND_CONFIG)]=&primFunction_sendConfig; primFunction[getPrimArrayId(DSP_RESET)]=&primFunction_dspReset; primFunction[getPrimArrayId(SET_ROD_MODE)]=&primFunction_setRodMode; primFunction[getPrimArrayId(RW_MODULE_VARIABLE)]=&primFunction_RWmoduleVariable; primFunction[getPrimArrayId(RW_BOC_DATA)]=&primFunction_RWBocData; primFunction[getPrimArrayId(BOC_HISTOGRAM)]=&primFunction_BOChisto; #if defined(SCT_ROD) /* master SCT specific prims */ #elif defined(PIXEL_ROD) /* master pixel specific prims */ primFunction[getPrimArrayId(TEST_GLOBAL_REG)]=&primFunction_testGlobalReg; #endif /* SCT_ROD or PIXEL_ROD */ return; } /*============================================================================= * getPrimArrayId() *============================================================================= * * * */ int getPrimArrayId(int primId){ int primArrayId; int base, numPrims, sumaNumPrims; /* COMMON */ base=COMMON_PRIMITIVES_BASE; numPrims=NUM_COMMON_PRIMITIVES; if(primId<(base+numPrims)) { primArrayId=primId-base; return(primArrayId); } sumaNumPrims=numPrims; #if defined(SCT_ROD) base=COMMON_SCT_PRIMITIVES_BASE; numPrims=NUM_COMMON_SCT_PRIMITIVES; #elif defined(PIXEL_ROD) base=COMMON_PIXEL_PRIMITIVES_BASE; numPrims=NUM_COMMON_PIXEL_PRIMITIVES; #endif /* SCT_ROD or PIXEL_ROD */ if(primId<(base+numPrims)) { primArrayId=primId-base+sumaNumPrims; return(primArrayId); } /* SLAVE */ sumaNumPrims+=numPrims; base=SLAVE_PRIMITIVES_BASE; numPrims=NUM_SLAVE_PRIMITIVES; if(primId<(base+numPrims)) { primArrayId=primId-base+sumaNumPrims; return(primArrayId); } sumaNumPrims+=numPrims; #if defined(SCT_ROD) base=SLAVE_SCT_PRIMITIVES_BASE; numPrims=NUM_SLAVE_SCT_PRIMITIVES; #elif defined(PIXEL_ROD) base=SLAVE_PIXEL_PRIMITIVES_BASE; numPrims=NUM_SLAVE_PIXEL_PRIMITIVES; #endif /* SCT_ROD or PIXEL_ROD */ if(primId<(base+numPrims)) { primArrayId=primId-base+sumaNumPrims; return(primArrayId); } /* MASTER */ sumaNumPrims+=numPrims; base=MASTER_PRIMITIVES_BASE; numPrims=NUM_MASTER_PRIMITIVES; if(primId<(base+numPrims)) { primArrayId=primId-base+sumaNumPrims; return(primArrayId); } sumaNumPrims+=numPrims; #if defined(SCT_ROD) base=MASTER_SCT_PRIMITIVES_BASE; numPrims=NUM_MASTER_SCT_PRIMITIVES; #elif defined(PIXEL_ROD) base=MASTER_PIXEL_PRIMITIVES_BASE; numPrims=NUM_MASTER_PIXEL_PRIMITIVES; #endif /* SCT_ROD or PIXEL_ROD */ if(primId<(base+numPrims)) { primArrayId=primId-base+sumaNumPrims; return(primArrayId); } /* else fatal error!! */ programError(__FILE__, __LINE__, FATAL_ERROR, "PrimFunctionInit()", -1, "Wrong Primitive ID!!!"); return(-1); } /******************************************************************************/