/****************************************************************************** * * Title : primFunc_setTrigger.c * Version 0.0, * * Description: * Related files: * * Author: Lukas Tomasek, tomasekl@fzu.cz * ******************************************************************************/ /****************************************************************************** * Header files * ******************************************************************************/ #include #include "primFunc_setTrigger.h" #include "globalDefinitions.h" #include "uirUtility.h" #include "primParamsUir.h" #include "mainUir.h" #include #include "primFunctionInit.h" /****************************************************************************** * Global functions * ******************************************************************************/ /*============================================================================= * primFunction_setTrigger() *============================================================================= * * * */ ERROR_ID primFunction_setTrigger(PRIM_FUNC_OPTION funcOption, struct PRIM_TABLE *primTable, void *primitive, UINT32 inputParameter, UINT8 slotNumber){ FILE *file; struct MSG_HEAD* primHeader=(struct MSG_HEAD*) primitive; UINT32 *primDataPtr=(UINT32*)((UINT32)primHeader+sizeof(struct MSG_HEAD)); ERROR_ID errorId=SUCCESS; char errorMessage[200]; int status; UINT32 primBodyLength; UINT32 primitiveId; struct SET_TRIGGER_IN *setTrigger=&primTable->params.setTrigger; const int panel=global.panel.primEdit[getPrimArrayId(SET_TRIGGER)]; UINT32 i; UINT32 dataLength; char textMessage[200]; char errorText[100]; UINT32 listIndex; int ringIndex; char str[300]; unsigned int chip, fibre; int slave; if(R_SET_TRIGGER!=R_SET_TRIGGER_HOST){ ERROR_CHECK(PROGRAM_ERROR, primitive SET_TRIGGER - wrong revision number); return(PROGRAM_ERROR); } switch(funcOption){ case PRIM_PANEL_TO_TABLE: setTrigger->slvBits=0; GetCtrlVal(panel, SET_TRGP_SLV0, &slave); if(slave) SET_BIT(setTrigger->slvBits, 0); GetCtrlVal(panel, SET_TRGP_SLV1, &slave); if(slave) SET_BIT(setTrigger->slvBits, 1); GetCtrlVal(panel, SET_TRGP_SLV2, &slave); if(slave) SET_BIT(setTrigger->slvBits, 2); GetCtrlVal(panel, SET_TRGP_SLV3, &slave); if(slave) SET_BIT(setTrigger->slvBits, 3); GetCtrlVal(panel, SET_TRGP_CMD0_0, &setTrigger->cmdList[0].cmd[0]); GetCtrlVal(panel, SET_TRGP_CMD0_1, &setTrigger->cmdList[0].cmd[1]); GetCtrlVal(panel, SET_TRGP_CMD0_2, &setTrigger->cmdList[0].cmd[2]); GetCtrlVal(panel, SET_TRGP_CMD0_3, &setTrigger->cmdList[0].cmd[3]); GetCtrlVal(panel, SET_TRGP_CMD0_4, &setTrigger->cmdList[0].cmd[4]); GetCtrlVal(panel, SET_TRGP_CMD0_5, &setTrigger->cmdList[0].cmd[5]); GetCtrlVal(panel, SET_TRGP_DATA0_0, &setTrigger->cmdList[0].data[0]); GetCtrlVal(panel, SET_TRGP_DATA0_1, &setTrigger->cmdList[0].data[1]); GetCtrlVal(panel, SET_TRGP_DATA0_2, &setTrigger->cmdList[0].data[2]); GetCtrlVal(panel, SET_TRGP_DATA0_3, &setTrigger->cmdList[0].data[3]); GetCtrlVal(panel, SET_TRGP_DATA0_4, &setTrigger->cmdList[0].data[4]); GetCtrlVal(panel, SET_TRGP_DATA0_5, &setTrigger->cmdList[0].data[5]); GetCtrlVal(panel, SET_TRGP_CMD1_0, &setTrigger->cmdList[1].cmd[0]); GetCtrlVal(panel, SET_TRGP_CMD1_1, &setTrigger->cmdList[1].cmd[1]); GetCtrlVal(panel, SET_TRGP_CMD1_2, &setTrigger->cmdList[1].cmd[2]); GetCtrlVal(panel, SET_TRGP_CMD1_3, &setTrigger->cmdList[1].cmd[3]); GetCtrlVal(panel, SET_TRGP_CMD1_4, &setTrigger->cmdList[1].cmd[4]); GetCtrlVal(panel, SET_TRGP_CMD1_5, &setTrigger->cmdList[1].cmd[5]); GetCtrlVal(panel, SET_TRGP_DATA1_0, &setTrigger->cmdList[1].data[0]); GetCtrlVal(panel, SET_TRGP_DATA1_1, &setTrigger->cmdList[1].data[1]); GetCtrlVal(panel, SET_TRGP_DATA1_2, &setTrigger->cmdList[1].data[2]); GetCtrlVal(panel, SET_TRGP_DATA1_3, &setTrigger->cmdList[1].data[3]); GetCtrlVal(panel, SET_TRGP_DATA1_4, &setTrigger->cmdList[1].data[4]); GetCtrlVal(panel, SET_TRGP_DATA1_5, &setTrigger->cmdList[1].data[5]); GetCtrlVal(panel, SET_TRGP_CMD_BUFF, &setTrigger->cmdBuff); GetCtrlVal(panel, SET_TRGP_PREBUILT, (int*)&setTrigger->preBuilt); GetCtrlVal(panel, SET_TRGP_FIBRE, &fibre); GetCtrlVal(panel, SET_TRGP_CHIP, &chip); setTrigger->chipAddress=CHIP_ADDRESS(fibre, chip); GetCtrlVal(panel, SET_TRGP_BIN, &setTrigger->bin); GetCtrlVal(panel, SET_TRGP_SET, &setTrigger->set); GetCtrlVal(panel, SET_TRGP_CINCR0, (int*)&setTrigger->incCmd[0]); GetCtrlVal(panel, SET_TRGP_CINCR1, (int*)&setTrigger->incCmd[1]); GetCtrlVal(panel, SET_TRGP_DINCR0, &setTrigger->incData[0]); GetCtrlVal(panel, SET_TRGP_DINCR1, &setTrigger->incData[1]); GetCtrlVal(panel, SET_TRGP_REP, &setTrigger->repetitions); GetCtrlVal(panel, SET_TRGP_INTERVAL, &setTrigger->interval); GetCtrlVal(panel, SET_TRGP_DATAOFF0, &setTrigger->preBuiltDataOffset[0]); GetCtrlVal(panel, SET_TRGP_DATAOFF1, &setTrigger->preBuiltDataOffset[1]); /* NO BREAK HERE!!!*/ case PRIM_PARAMS_TO_TABLE: /* add table headers - don't set indexes!!! */ primTable->inPrimHeader.length=SIZEOF(struct SET_TRIGGER_IN)+SIZEOF(struct MSG_HEAD); primTable->inPrimHeader.id=SET_TRIGGER; primTable->inPrimHeader.primRevision=R_SET_TRIGGER; primTable->replyLength=0; break; case PRIM_TABLE_TO_PANEL: if(primTable->inPrimHeader.primRevision!=R_SET_TRIGGER){ ERROR_CHECK(PROGRAM_ERROR, primitive SET_TRIGGER - wrong revision number); return(PROGRAM_ERROR); } SetCtrlVal(panel, SET_TRGP_SLV0, READ_BIT(setTrigger->slvBits, 0)); SetCtrlVal(panel, SET_TRGP_SLV1, READ_BIT(setTrigger->slvBits, 1)); SetCtrlVal(panel, SET_TRGP_SLV2, READ_BIT(setTrigger->slvBits, 2)); SetCtrlVal(panel, SET_TRGP_SLV3, READ_BIT(setTrigger->slvBits, 3)); SetCtrlVal(panel, SET_TRGP_CMD0_0, setTrigger->cmdList[0].cmd[0]); SetCtrlVal(panel, SET_TRGP_CMD0_1, setTrigger->cmdList[0].cmd[1]); SetCtrlVal(panel, SET_TRGP_CMD0_2, setTrigger->cmdList[0].cmd[2]); SetCtrlVal(panel, SET_TRGP_CMD0_3, setTrigger->cmdList[0].cmd[3]); SetCtrlVal(panel, SET_TRGP_CMD0_4, setTrigger->cmdList[0].cmd[4]); SetCtrlVal(panel, SET_TRGP_CMD0_5, setTrigger->cmdList[0].cmd[5]); SetCtrlVal(panel, SET_TRGP_DATA0_0, setTrigger->cmdList[0].data[0]); SetCtrlVal(panel, SET_TRGP_DATA0_1, setTrigger->cmdList[0].data[1]); SetCtrlVal(panel, SET_TRGP_DATA0_2, setTrigger->cmdList[0].data[2]); SetCtrlVal(panel, SET_TRGP_DATA0_3, setTrigger->cmdList[0].data[3]); SetCtrlVal(panel, SET_TRGP_DATA0_4, setTrigger->cmdList[0].data[4]); SetCtrlVal(panel, SET_TRGP_DATA0_5, setTrigger->cmdList[0].data[5]); SetCtrlVal(panel, SET_TRGP_CMD1_0, setTrigger->cmdList[1].cmd[0]); SetCtrlVal(panel, SET_TRGP_CMD1_1, setTrigger->cmdList[1].cmd[1]); SetCtrlVal(panel, SET_TRGP_CMD1_2, setTrigger->cmdList[1].cmd[2]); SetCtrlVal(panel, SET_TRGP_CMD1_3, setTrigger->cmdList[1].cmd[3]); SetCtrlVal(panel, SET_TRGP_CMD1_4, setTrigger->cmdList[1].cmd[4]); SetCtrlVal(panel, SET_TRGP_CMD1_5, setTrigger->cmdList[1].cmd[5]); SetCtrlVal(panel, SET_TRGP_DATA1_0, setTrigger->cmdList[1].data[0]); SetCtrlVal(panel, SET_TRGP_DATA1_1, setTrigger->cmdList[1].data[1]); SetCtrlVal(panel, SET_TRGP_DATA1_2, setTrigger->cmdList[1].data[2]); SetCtrlVal(panel, SET_TRGP_DATA1_3, setTrigger->cmdList[1].data[3]); SetCtrlVal(panel, SET_TRGP_DATA1_4, setTrigger->cmdList[1].data[4]); SetCtrlVal(panel, SET_TRGP_DATA1_5, setTrigger->cmdList[1].data[5]); SetCtrlVal(panel, SET_TRGP_CMD_BUFF, setTrigger->cmdBuff); SetCtrlVal(panel, SET_TRGP_PREBUILT, setTrigger->preBuilt); fibre=setTrigger->chipAddress>>4; chip=setTrigger->chipAddress; if(chip!=ALL_CHIPS) chip&=0xF; SetCtrlVal(panel, SET_TRGP_FIBRE, fibre); SetCtrlVal(panel, SET_TRGP_CHIP, chip); SetCtrlVal(panel, SET_TRGP_BIN, setTrigger->bin); SetCtrlVal(panel, SET_TRGP_SET, setTrigger->set); SetCtrlVal(panel, SET_TRGP_CINCR0, setTrigger->incCmd[0]); SetCtrlVal(panel, SET_TRGP_CINCR1, setTrigger->incCmd[1]); SetCtrlVal(panel, SET_TRGP_DINCR0, setTrigger->incData[0]); SetCtrlVal(panel, SET_TRGP_DINCR1, setTrigger->incData[1]); SetCtrlVal(panel, SET_TRGP_REP, setTrigger->repetitions); SetCtrlVal(panel, SET_TRGP_INTERVAL, setTrigger->interval); SetCtrlVal(panel, SET_TRGP_DATAOFF0, setTrigger->preBuiltDataOffset[0]); SetCtrlVal(panel, SET_TRGP_DATAOFF1, setTrigger->preBuiltDataOffset[1]); break; case PRIM_BUILD: /* copy data */ *(struct SET_TRIGGER_IN*)(primDataPtr)=*setTrigger; break; case REP_DATA_PROCESS: /* no reply */ break; case WRITE_TO_FILE: file=(FILE*)inputParameter; fprintf(file, "cmdList[0].cmd[] ={ 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X }\n", setTrigger->cmdList[0].cmd[0], setTrigger->cmdList[0].cmd[1], setTrigger->cmdList[0].cmd[2], setTrigger->cmdList[0].cmd[3], setTrigger->cmdList[0].cmd[4], setTrigger->cmdList[0].cmd[5]); fprintf(file, "cmdList[0].data[]={ 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X }\n", setTrigger->cmdList[0].data[0], setTrigger->cmdList[0].data[1], setTrigger->cmdList[0].data[2], setTrigger->cmdList[0].data[3], setTrigger->cmdList[0].data[4], setTrigger->cmdList[0].data[5]); fprintf(file, "cmdList[1].cmd[] ={ 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X }\n", setTrigger->cmdList[1].cmd[0], setTrigger->cmdList[1].cmd[1], setTrigger->cmdList[1].cmd[2], setTrigger->cmdList[1].cmd[3], setTrigger->cmdList[1].cmd[4], setTrigger->cmdList[1].cmd[5]); fprintf(file, "cmdList[1].data[]={ 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X }\n", setTrigger->cmdList[1].data[0], setTrigger->cmdList[1].data[1], setTrigger->cmdList[1].data[2], setTrigger->cmdList[1].data[3], setTrigger->cmdList[1].data[4], setTrigger->cmdList[1].data[5]); fprintf(file, "slvBits= %d, cmdBuff= %d, preBuilt= %d, chipAddress= %d\n", setTrigger->slvBits, setTrigger->cmdBuff, setTrigger->preBuilt, setTrigger->chipAddress); fprintf(file, "bin= 0x%X, set= 0x%X, repetitions= 0x%X, interval= 0x%X\n", setTrigger->bin, setTrigger->set, setTrigger->repetitions, setTrigger->interval); fprintf(file, "preBuiltDataOffset[]={ 0x%X, 0x%X }, incCmd[]={ %d, %d }, incData[]={ 0x%X, 0x%X }\n", setTrigger->preBuiltDataOffset[0], setTrigger->preBuiltDataOffset[1], setTrigger->incCmd[0], setTrigger->incCmd[1], setTrigger->incData[0], setTrigger->incData[1]); break; case READ_FROM_FILE: file=(FILE*)inputParameter; status=fscanf(file, "cmdList[0].cmd[] ={ 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X }\n", (int*)&setTrigger->cmdList[0].cmd[0], (int*)&setTrigger->cmdList[0].cmd[1], (int*)&setTrigger->cmdList[0].cmd[2], (int*)&setTrigger->cmdList[0].cmd[3], (int*)&setTrigger->cmdList[0].cmd[4], (int*)&setTrigger->cmdList[0].cmd[5]); if(status==-1) {ERROR_CHECK(FATAL_ERROR, Read from prim file error!); return(FATAL_ERROR);} status=fscanf(file, "cmdList[0].data[]={ 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X }\n", &setTrigger->cmdList[0].data[0], &setTrigger->cmdList[0].data[1], &setTrigger->cmdList[0].data[2], &setTrigger->cmdList[0].data[3], &setTrigger->cmdList[0].data[4], &setTrigger->cmdList[0].data[5]); if(status==-1) {ERROR_CHECK(FATAL_ERROR, Read from prim file error!); return(FATAL_ERROR);} status=fscanf(file, "cmdList[1].cmd[] ={ 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X }\n", (int*)&setTrigger->cmdList[1].cmd[0], (int*)&setTrigger->cmdList[1].cmd[1], (int*)&setTrigger->cmdList[1].cmd[2], (int*)&setTrigger->cmdList[1].cmd[3], (int*)&setTrigger->cmdList[1].cmd[4], (int*)&setTrigger->cmdList[1].cmd[5]); if(status==-1) {ERROR_CHECK(FATAL_ERROR, Read from prim file error!); return(FATAL_ERROR);} status=fscanf(file, "cmdList[1].data[]={ 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X }\n", &setTrigger->cmdList[1].data[0], &setTrigger->cmdList[1].data[1], &setTrigger->cmdList[1].data[2], &setTrigger->cmdList[1].data[3], &setTrigger->cmdList[1].data[4], &setTrigger->cmdList[1].data[5]); if(status==-1) {ERROR_CHECK(FATAL_ERROR, Read from prim file error!); return(FATAL_ERROR);} status=fscanf(file, "slvBits= %d, cmdBuff= %d, preBuilt= %d, chipAddress= %d\n", &setTrigger->slvBits, (int*)&setTrigger->cmdBuff, (int*)&setTrigger->preBuilt, &setTrigger->chipAddress); if(status==-1) {ERROR_CHECK(FATAL_ERROR, Read from prim file error!); return(FATAL_ERROR);} status=fscanf(file, "bin= 0x%X, set= 0x%X, repetitions= 0x%X, interval= 0x%X\n", &setTrigger->bin, &setTrigger->set, &setTrigger->repetitions, &setTrigger->interval); if(status==-1) {ERROR_CHECK(FATAL_ERROR, Read from prim file error!); return(FATAL_ERROR);} status=fscanf(file, "preBuiltDataOffset[]={ 0x%X, 0x%X }, incCmd[]={ %d, %d }, incData[]={ 0x%X, 0x%X }\n", &setTrigger->preBuiltDataOffset[0], &setTrigger->preBuiltDataOffset[1], (int*)&setTrigger->incCmd[0], (int*)&setTrigger->incCmd[1], &setTrigger->incData[0], &setTrigger->incData[1]); if(status==-1) {ERROR_CHECK(FATAL_ERROR, Read from prim file error!); return(FATAL_ERROR);} break; default: ;//error } return(SUCCESS); } /******************************************************************************/