/****************************************************************************** * * Title : primFunc_setRodMode.c * Version 0.0 * * Description: * Related files: * * Author: Lukas Tomasek, tomasekl@fzu.cz * ******************************************************************************/ /****************************************************************************** * Header files * ******************************************************************************/ #include #include "primFunc_setRodMode.h" #include "fileUtility.h" #include "globalDefinitions.h" #include "uirUtility.h" #include "primParamsUir.h" #include "primFunctionInit.h" //#include "RWlists.h" /****************************************************************************** * Global functions * ******************************************************************************/ /*============================================================================= * primFunction_setRodMode() *============================================================================= * * * */ ERROR_ID primFunction_setRodMode(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; //unsigned int chip, fibre; struct SET_ROD_MODE_IN *setRodModeIn= &primTable->params.setRodMode; //struct SET_ROD_MODE_PARAMS *setRodMode=&primTable->params.setRodMode; const int panel=global.panel.primEdit[getPrimArrayId(SET_ROD_MODE)]; //struct SET_ROD_MODE_IN *setRodModeIn=&setRodMode->inputParams; //struct SET_ROD_MODE_IN *setRodModeInBuff; //unsigned int fileSize; if(R_SET_ROD_MODE!=R_SET_ROD_MODE_HOST){ ERROR_CHECK(PROGRAM_ERROR, primitive SET_ROD_MODE - wrong revision number); return(PROGRAM_ERROR); } switch(funcOption){ case PRIM_PANEL_TO_TABLE: GetCtrlVal(panel, SETRODMODE_MODE, &setRodModeIn->mode); GetCtrlVal(panel, SETRODMODE_FLAG, &setRodModeIn->flag); GetCtrlVal(panel, SETRODMODE_FIFO_SETUP, &setRodModeIn->fifoSetup); GetCtrlVal(panel, SETRODMODE_DELAY, &setRodModeIn->delay); GetCtrlVal(panel, SETRODMODE_NBITS, &setRodModeIn->nBits); GetCtrlVal(panel, SETRODMODE_EVENTS_PER_L1A, &setRodModeIn->evtsPerL1A); GetCtrlVal(panel, SETRODMODE_MESSAGE, &setRodModeIn->message); //GetCtrlVal(panel, SETRODMODE_INP_FILE, (char*)&setRodMode->inDataFileName); //GetCtrlVal(panel, SETRODMODE_DATA_LEN, &setRodModeIn->dataLen); //if(setRodMode->inDataFileName[0]==0){ // status=MessagePopup ("WARNING", "Select input data!"); // UIR_STATUS_CHECK(status, MessagePopup()); // return(PROGRAM_ERROR); //}; /* NO BREAK HERE!!!*/ case PRIM_PARAMS_TO_TABLE: /* add table headers - don't set indexes!!! */ primTable->inPrimHeader.length=SIZEOF(struct MSG_HEAD)+SIZEOF(struct SET_ROD_MODE_IN); //primTable->inPrimHeader.length=SIZEOF(struct MSG_HEAD)+SIZEOF(struct SET_ROD_MODE_IN)-SIZEOF(UINT32)+setRodModeIn->dataLen; primTable->inPrimHeader.id=SET_ROD_MODE; primTable->inPrimHeader.primRevision=R_SET_ROD_MODE; primTable->replyLength=0; /* no reply */ break; case PRIM_TABLE_TO_PANEL: if(primTable->inPrimHeader.primRevision!=R_SET_ROD_MODE){ ERROR_CHECK(PROGRAM_ERROR, primitive SET_ROD_MODE - wrong revision number); return(PROGRAM_ERROR); } SetCtrlVal(panel, SETRODMODE_MODE, setRodModeIn->mode); SetCtrlVal(panel, SETRODMODE_FLAG, setRodModeIn->flag); SetCtrlVal(panel, SETRODMODE_FIFO_SETUP, setRodModeIn->fifoSetup); SetCtrlVal(panel, SETRODMODE_DELAY, setRodModeIn->delay); SetCtrlVal(panel, SETRODMODE_NBITS, setRodModeIn->nBits); SetCtrlVal(panel, SETRODMODE_EVENTS_PER_L1A, setRodModeIn->evtsPerL1A); SetCtrlVal(panel, SETRODMODE_MESSAGE, setRodModeIn->message); //SetCtrlVal(panel, SETRODMODE_DATA_LEN, setRodModeIn->dataLen); //SetCtrlVal(panel, SETRODMODE_INP_FILE, setRodMode->inDataFileName); //SetInputMode(panel, SETRODMODE_INP_FILE, setRodMode->inDataFileName[0]); //SetCtrlVal(panel, SETRODMODE_DATA, setRodMode->inDataFileName[0]); break; case PRIM_BUILD: /* copy data */ *(struct SET_ROD_MODE_IN*)(primDataPtr)= *setRodModeIn; #ifdef COMMENTED setRodModeInBuff=(struct SET_ROD_MODE_IN*)(primDataPtr); /* copy data */ *setRodModeInBuff=*setRodModeIn; if(setRodModeInBuff->dataLen>0){ /* copy data */ errorId=getFileSize(setRodMode->inDataFileName, &fileSize); ERROR_CHECK(errorId, getFileSize()); setRodModeInBuff->dataLen=((fileSize+3)/4); /*copy data*/ if(fileSize>0){ errorId=readFromBinFile(setRodMode->inDataFileName, &setRodModeInBuff->data, fileSize); ERROR_CHECK(errorId, readFromBinFile()); if(errorId!=SUCCESS){ return(errorId); } } } /* update length!!!! */ primTable->inPrimHeader.length=SIZEOF(struct MSG_HEAD)+SIZEOF(struct SET_ROD_MODE_IN)-SIZEOF(UINT32)+setRodModeInBuff->dataLen; primHeader->length=primTable->inPrimHeader.length; #endif break; case REP_DATA_PROCESS: /* no reply data */ break; case WRITE_TO_FILE: file= (FILE*)inputParameter; fprintf(file, "mode= 0x%x, flag= %d\n", setRodModeIn->mode, setRodModeIn->flag); fprintf(file, "fifoSetup= %d, delay= 0x%x, #bits= 0x%x\n", setRodModeIn->fifoSetup, setRodModeIn->delay, setRodModeIn->nBits); fprintf(file, "evt/L1A= %d, message= %d\n", setRodModeIn->evtsPerL1A, setRodModeIn->message); //fprintf(file, "inDataFileName[]= %s\n", setRodMode->inDataFileName); //UINT32 mode, flag, fifoSetup, nBits, delay, evtsPerL1A, message; break; case READ_FROM_FILE: file=(FILE*)inputParameter; status= fscanf(file, "mode= 0x%x, flag= %d\n", &setRodModeIn->mode, &setRodModeIn->flag); if(status==-1) {ERROR_CHECK(FATAL_ERROR, Read from prim file error!); return(FATAL_ERROR);} status= fscanf(file, "fifoSetup= %d, delay= 0x%x, #bits= 0x%x\n", &setRodModeIn->fifoSetup, &setRodModeIn->delay, &setRodModeIn->nBits); if(status==-1) {ERROR_CHECK(FATAL_ERROR, Read from prim file error!); return(FATAL_ERROR);} status= fscanf(file, "evt/L1A= %d, message= %d\n", &setRodModeIn->evtsPerL1A, &setRodModeIn->message); if(status==-1) {ERROR_CHECK(FATAL_ERROR, Read from prim file error!); return(FATAL_ERROR);} //status=readLineFromIndex(file, strlen("inDataFileName[]= "), PATHNAME_LENGTH, setRodMode->inDataFileName); //if(status!=0) {ERROR_CHECK(FATAL_ERROR, Read from prim file error!); return(FATAL_ERROR);} break; default: ;//error } return(SUCCESS); } /******************************************************************************/