/****************************************************************************** * * Title : primListRevisionUpdate.c * Version: converts RW_REG_FIELD from v104 to v105 * POLL_REG_FIELD from v104 to v105 RW_MODULE_DATA from v101 to v102 * Description: * Related files: primListRevisionUpdate.h * * Author: Lukas Tomasek, tomasekl@fzu.cz * ******************************************************************************/ #include "globalDefinitions.h" #include "errorHandler.h" #include #include #include #include "primListTableDefinitions.h" #include "rodConfiguration.h" #include "registerIndices.h" #include "getRegisterId.h" #include "RWlists.h" #include "primListRevisionUpdate.h" #include "primFunctionInit.h" static int update_RWregField(struct PRIM_TABLE_OLD *primTable); static int update_pollRegField(struct PRIM_TABLE_OLD *primTable); static int update_RWregField_v104(struct PRIM_TABLE *primTable); static int update_pollRegField_v104(struct PRIM_TABLE *primTable); static int getBaseId_v105(UINT32 *baseId_v105, UINT32 baseId_v104); static ERROR_ID readPrimListFile_v104(char primListFile[], struct LIST_TABLE *listTable); static int updatePlist(char plistFile[]); static void writeToLogFile(char message[], int writeToErrorFile); static void searchDir(char directory[]); static void findPlist(char directory[]); // global variables int G_logFileHandle; int G_errorFileHandle; char *G_currentMlistFile; char *G_currentPlistFile; int G_error=0; //------------------------------------------------------------------------------ int primListRevisionUpdate(char mainDir[]){ char logFile[300]; char errorFile[300]; char message[600]; char fullPath[MAX_FILENAME_LEN]; int status; strcpy(logFile, global.mainDir); strcat(logFile, "Rcc\\PrimListRevisionUpdate\\PrimListRevisionUpdate_STATUS.txt"); strcpy(errorFile, global.mainDir); strcat(errorFile, "Rcc\\PrimListRevisionUpdate\\PrimListRevisionUpdate_ERRORS.txt"); /* open log file */ G_logFileHandle = OpenFile (logFile, VAL_WRITE_ONLY, VAL_TRUNCATE, VAL_ASCII); if(G_logFileHandle==-1){ printf(" ## ERROR PrimListRevisionUpdate: Cannot open log file!\n------------ Press any key ------------\n"); getchar(); return(-1); } /* open error file */ G_errorFileHandle = OpenFile (errorFile, VAL_WRITE_ONLY, VAL_TRUNCATE, VAL_ASCII); if(G_errorFileHandle==-1){ printf(" ## ERROR PrimListRevisionUpdate: Cannot open error file!\n------------ Press any key ------------\n"); getchar(); return(-1); } sprintf(message, "PRIMLIST REVISION UPDATE\nDirectory: %s\n--------------------------------------------", mainDir); WriteLine (G_logFileHandle, message, -1); WriteLine (G_errorFileHandle, message, -1); printf(message);printf("\n"); searchDir(mainDir); /* close log file */ status = CloseFile (G_logFileHandle); if(status==-1){ printf(" ## ERROR: Cannot close log file!"); } /* close error file */ status = CloseFile (G_errorFileHandle); if(status==-1){ printf(" ## ERROR: Cannot close error file!"); } sprintf(message, "notepad.exe %s", logFile); LaunchExecutable (message); sprintf(message, "notepad.exe %s", errorFile); LaunchExecutable (message); return 0; } //------------------------------------------------------------- static void writeToLogFile(char message[], int writeToErrorFile){ WriteLine (G_logFileHandle, message, -1); if(writeToErrorFile){ if(!G_error) WriteLine (G_errorFileHandle, G_currentMlistFile, -1); WriteLine (G_errorFileHandle, message, -1); } return; } //------------------------------------------------------------- #define ID_CASE_PL(primId, hostRevision) \ case primId: if(primTable->inPrimHeader.primRevision==hostRevision) break;\ sprintf(message, " ## ERROR (PrimIndex: %d, Id: 0x%X %s): Cannot update primitive revision from %d to %d!!",\ primTable->inPrimHeader.index, primTable->inPrimHeader.id, #primId, primTable->inPrimHeader.primRevision, hostRevision);\ writeToLogFile(message, 1); G_error=1;\ break; static int updatePlist(char plistFile[]){ int saveNewList=0; struct LIST_TABLE listTable; struct PRIM_TABLE *primTable; char message[600]; int fileHandle; int status; unsigned int pIndex; char plFile[300]; ERROR_ID errorId; G_error=0; //!!!! G_currentPlistFile=plistFile; writeToLogFile(plistFile, 0); printf(plistFile);printf("\n"); errorId=readPrimListFile_v104(plistFile, &listTable); if(errorId!=SUCCESS){ writeToLogFile("readPrimListFile_v104()", 1); return(-1); } if(G_error!=0) return(-1); /* update prim list revision if necessary */ if(listTable.inListHeader.primListRevision!=PRIM_LIST_REVISION){ #if 0 sprintf(message, "- PrimListRevision updated from %d to %d.", listTable.inListHeader.primListRevision, PRIM_LIST_REVISION); writeToLogFile(message, 0); listTable.inListHeader.primListRevision=PRIM_LIST_REVISION; listTable.outListHeader.primListRevision=PRIM_LIST_REVISION; saveNewList=1; #endif sprintf(message, " ## ERROR: - Cannot update PrimListRevision from %d to %d!!", listTable.inListHeader.primListRevision, PRIM_LIST_REVISION); writeToLogFile(message, 1); G_error=1; return(-1); } for(pIndex=0; pIndexinPrimHeader.id){ //------------------------------------------------ ID_CASE_PL(ECHO, R_ECHO_HOST); ID_CASE_PL(SET_MESSAGE_MASK, R_SET_ERRMSG_MASK_HOST); ID_CASE_PL(PAUSE_LIST, R_PAUSE_LIST_HOST); ID_CASE_PL(EVENT_TRAP_SETUP, R_EVENT_TRAP_SETUP_HOST); ID_CASE_PL(SET_MEMORY, R_SET_MEMORY_HOST); ID_CASE_PL(COPY_MEMORY, R_COPY_MEMORY_HOST); ID_CASE_PL(MEMORY_TEST, R_MEMORY_TEST_HOST); ID_CASE_PL(SET_LED, R_SET_LED_HOST); ID_CASE_PL(FLASH_LED, R_FLASH_LED_HOST); ID_CASE_PL(SEND_DATA, R_SEND_DATA_HOST); ID_CASE_PL(MODULE_MASK, R_MODULE_MASK_HOST); ID_CASE_PL(SET_TRIGGER, R_SET_TRIGGER_HOST); ID_CASE_PL(START_TASK, R_START_TASK_HOST); ID_CASE_PL(TASK_OPERATION, R_TASK_OPERATION_HOST); ID_CASE_PL(TEST, R_TEST_HOST); ID_CASE_PL(WRITE_BUFFER, R_WRITE_BUFFER_HOST); ID_CASE_PL(RW_SLAVE_MEMORY, R_RW_SLAVE_MEMORY_HOST); ID_CASE_PL(TRANS_SERIAL_DATA, R_TRANS_SERIAL_DATA_HOST); ID_CASE_PL(START_SLAVE_EXECUTING, R_START_SLAVE_EXECUTING_HOST); ID_CASE_PL(CONFIG_SLAVE, R_CONFIG_SLAVE_HOST); //ID_CASE_PL(RW_REG_FIELD, R_RW_REG_FIELD_HOST); //ID_CASE_PL(POLL_REG_FIELD, R_POLL_REG_FIELD_HOST); ID_CASE_PL(RW_FIFO, R_RW_FIFO_HOST); // dodelat slave list revision!!!!! ID_CASE_PL(SEND_SLAVE_LIST, R_SEND_SLAVE_LIST_HOST); ID_CASE_PL(START_SLAVE_LIST, R_START_SLAVE_LIST_HOST); ID_CASE_PL(SLAVE_LIST_OP, R_SLAVE_LIST_OP_HOST); ID_CASE_PL(BUILD_STREAM, R_BUILD_STREAM_HOST); ID_CASE_PL(SEND_STREAM, R_SEND_STREAM_HOST); //ID_CASE_PL(RW_MODULE_DATA, R_RW_MODULE_DATA_HOST); ID_CASE_PL(SEND_CONFIG, R_SEND_CONFIG_HOST); ID_CASE_PL(DSP_RESET, R_DSP_RESET_HOST); ID_CASE_PL(SET_ROD_MODE, R_SET_ROD_MODE_HOST); ID_CASE_PL(RW_MODULE_VARIABLE, R_RW_MODULE_VARIABLE_HOST); ID_CASE_PL(RW_BOC_DATA, R_RW_BOC_DATA_HOST); #if defined(SCT_ROD) #elif defined(PIXEL_ROD) ID_CASE_PL(TEST_GLOBAL_REG, R_TEST_GLOBAL_REG_HOST); #endif /* SCT_ROD or PIXEL_ROD */ ID_CASE_PL(START_EVENT_TRAPPING, R_START_EVENT_TRAPPING_HOST); ID_CASE_PL(STOP_EVENT_TRAPPING, R_STOP_EVENT_TRAPPING_HOST); //ID_CASE_PL(HISTOGRAM_SETUP, R_HISTOGRAM_SETUP_HOST); //------------------------------------------------ case RW_REG_FIELD: if(primTable->inPrimHeader.primRevision==R_RW_REG_FIELD_HOST) break; if(primTable->inPrimHeader.primRevision==104){ status=update_RWregField_v104(primTable); if(status==0) saveNewList=1; else G_error=1; break; } // else wrong revision sprintf(message, " ## ERROR (PrimIndex: %d, Id: 0x%X RW_REG_FIELD): Cannot update primitive revision from %d to %d!!", primTable->inPrimHeader.index, primTable->inPrimHeader.id, primTable->inPrimHeader.primRevision, R_RW_REG_FIELD_HOST); writeToLogFile(message, 1); G_error=1; break; case POLL_REG_FIELD: if(primTable->inPrimHeader.primRevision==R_POLL_REG_FIELD_HOST) break; if(primTable->inPrimHeader.primRevision==104){ status=update_pollRegField_v104(primTable); if(status==0) saveNewList=1; else G_error=1; break; } // else wrong revision sprintf(message, " ## ERROR (PrimIndex: %d, Id: 0x%X POLL_REG_FIELD): Cannot update primitive revision from %d to %d!!", primTable->inPrimHeader.index, primTable->inPrimHeader.id, primTable->inPrimHeader.primRevision, R_POLL_REG_FIELD_HOST); writeToLogFile(message, 1); G_error=1; break; case RW_MODULE_DATA: if(primTable->inPrimHeader.primRevision==R_RW_MODULE_DATA_HOST) break; if(primTable->inPrimHeader.primRevision==101){ sprintf(message, "- (PrimIndex: %d, Id: 0x%X RW_MODULE_DATA): Primitive revision updated from %d to %d.", primTable->inPrimHeader.index, primTable->inPrimHeader.id, primTable->inPrimHeader.primRevision, R_RW_MODULE_DATA_HOST); writeToLogFile(message , 0); primTable->inPrimHeader.primRevision=R_RW_MODULE_DATA_HOST; saveNewList=1; break; } // else wrong revision sprintf(message, " ## ERROR (PrimIndex: %d, Id: 0x%X RW_MODULE_DATA): Cannot update primitive revision from %d to %d!!", primTable->inPrimHeader.index, primTable->inPrimHeader.id, primTable->inPrimHeader.primRevision, R_RW_MODULE_DATA_HOST); writeToLogFile(message, 1); G_error=1; break; case HISTOGRAM_SETUP: if(primTable->inPrimHeader.primRevision==R_HISTOGRAM_SETUP_HOST) break; if(primTable->inPrimHeader.primRevision==105){ primTable->params.histogramSetup.inputParams.base=(UINT32*)0xFFFFFFFF; //change base to default primTable->params.histogramSetup.inputParams.opt[3]=primTable->params.histogramSetup.inputParams.opt[2]; primTable->params.histogramSetup.inputParams.opt[2]=0; sprintf(message, "- (PrimIndex: %d, Id: 0x%X HISTOGRAM_SETUP): Primitive revision updated from %d to %d.", primTable->inPrimHeader.index, primTable->inPrimHeader.id, primTable->inPrimHeader.primRevision, R_HISTOGRAM_SETUP_HOST); writeToLogFile(message , 0); primTable->inPrimHeader.primRevision=R_HISTOGRAM_SETUP_HOST; saveNewList=1; break; } if(primTable->inPrimHeader.primRevision==106){ primTable->params.histogramSetup.inputParams.opt[3]=primTable->params.histogramSetup.inputParams.opt[2]; primTable->params.histogramSetup.inputParams.opt[2]=0; sprintf(message, "- (PrimIndex: %d, Id: 0x%X HISTOGRAM_SETUP): Primitive revision updated from %d to %d.", primTable->inPrimHeader.index, primTable->inPrimHeader.id, primTable->inPrimHeader.primRevision, R_HISTOGRAM_SETUP_HOST); writeToLogFile(message , 0); primTable->inPrimHeader.primRevision=R_HISTOGRAM_SETUP_HOST; saveNewList=1; break; } // else wrong revision sprintf(message, " ## ERROR (PrimIndex: %d, Id: 0x%X HISTOGRAM_SETUP): Cannot update primitive revision from %d to %d!!", primTable->inPrimHeader.index, primTable->inPrimHeader.id, primTable->inPrimHeader.primRevision, R_HISTOGRAM_SETUP_HOST); writeToLogFile(message, 1); G_error=1; break; default: break; } } if(saveNewList&&(G_error==0)){ /* save to file */ status=writePrimListFile(plistFile, &listTable); if(status!=0) writeToLogFile(" ## ERROR: writePrimListFile()!", 1); } return 0; } //------------------------------------------------------------- static void searchDir(char directory[]){ #define MAX_SUBDIR 100 int readOnly, system, hidden, archive; int status; char message[600]; char subdir[MAX_FILENAME_LEN]; char subdirArray[MAX_FILENAME_LEN][MAX_SUBDIR]; char fullPath[MAX_FILENAME_LEN]; int len; int i, j; /* find plists */ findPlist(directory); /* find subdir */ sprintf(fullPath,"%s\\*.*", directory); status = GetFirstFile (fullPath, 0, 0, 0, 0, 1, 1, subdir); if(status!=0) return; for(i=0; iinPrimHeader.primRevision==104){ /* copy old params */ RWRegField_v104=*(struct PRIM_RWFIELD_PARAMS_v104*)&primTable->params; baseId_v104=RWRegField_v104.baseId; primTable->params.RWField.x=RWRegField_v104.x; primTable->params.RWField.y=RWRegField_v104.y; primTable->params.RWField.z=0; if(baseId_v104==0x23C){ //RMB0_DFLT_LUT primTable->params.RWField.x=0; primTable->params.RWField.y=RWRegField_v104.x; primTable->params.RWField.z=0; } if(baseId_v104==0x244){ //RMB1_DFLT_LUT primTable->params.RWField.x=0; primTable->params.RWField.y=RWRegField_v104.x; primTable->params.RWField.z=1; } if(baseId_v104==0x24C){ //RMB0_CRTV_LUT primTable->params.RWField.x=0; primTable->params.RWField.y=RWRegField_v104.x; primTable->params.RWField.z=0; } if(baseId_v104==0x254){ //RMB1_CRTV_LUT primTable->params.RWField.x=0; primTable->params.RWField.y=RWRegField_v104.x; primTable->params.RWField.z=1; } /* update params */ status=getBaseId_v105(&baseId_v105, baseId_v104); if(status!=0){ sprintf(message, " ## ERROR (PrimIndex: %d, Id: 0x%X RW_REG_FIELD): Cannot update BaseRegisterId 0x%X (version 104)!", primTable->inPrimHeader.index, primTable->inPrimHeader.id, baseId_v104); writeToLogFile(message , 1); G_error=1; return(-1); } x=primTable->params.RWField.x; y=primTable->params.RWField.y; z=primTable->params.RWField.z; status=getRegisterId(®Id_v105, baseId_v105, x, y, z); if(status!=0){ sprintf(message, " ## ERROR (PrimIndex: %d, Id: 0x%X RW_REG_FIELD): getRegisterId() G_error!", primTable->inPrimHeader.index, primTable->inPrimHeader.id); writeToLogFile(message , 1); G_error=1; return(-1); } primTable->params.RWField.baseId=baseId_v105; primTable->params.RWField.inputParams.registerID=regId_v105; primTable->params.RWField.appendNotWrite=RWRegField_v104.appendNotWrite; memmove(primTable->params.RWField.outDataFileName, RWRegField_v104.outDataFileName, PATHNAME_LENGTH); sprintf(message, "- (PrimIndex: %d, Id: 0x%X RW_REG_FIELD): Primitive revision updated from %d to %d.", primTable->inPrimHeader.index, primTable->inPrimHeader.id, primTable->inPrimHeader.primRevision, R_RW_REG_FIELD_HOST); writeToLogFile(message , 0); primTable->inPrimHeader.primRevision=R_RW_REG_FIELD_HOST; return(0); } return(-1); } //------------------------------------------------------------- static int update_pollRegField_v104(struct PRIM_TABLE *primTable){ struct PRIM_POLL_REG_FIELD_PARAMS_v104 pollRegField_v104; UINT32 baseId_v105, baseId_v104, regId_v105; int x, y, z; char message[500]; int status; if(primTable->inPrimHeader.primRevision==104){ /* copy old params */ pollRegField_v104=*(struct PRIM_POLL_REG_FIELD_PARAMS_v104*)&primTable->params; baseId_v104=pollRegField_v104.baseId; primTable->params.RWField.x=pollRegField_v104.x; primTable->params.RWField.y=pollRegField_v104.y; primTable->params.RWField.z=0; if(baseId_v104==0x23C){ //RMB0_DFLT_LUT primTable->params.RWField.x=0; primTable->params.RWField.y=pollRegField_v104.x; primTable->params.RWField.z=0; } if(baseId_v104==0x244){ //RMB1_DFLT_LUT primTable->params.RWField.x=0; primTable->params.RWField.y=pollRegField_v104.x; primTable->params.RWField.z=1; } if(baseId_v104==0x24C){ //RMB0_CRTV_LUT primTable->params.RWField.x=0; primTable->params.RWField.y=pollRegField_v104.x; primTable->params.RWField.z=0; } if(baseId_v104==0x254){ //RMB1_CRTV_LUT primTable->params.RWField.x=0; primTable->params.RWField.y=pollRegField_v104.x; primTable->params.RWField.z=1; } /* update params */ status=getBaseId_v105(&baseId_v105, baseId_v104); if(status!=0){ sprintf(message, " ## ERROR (PrimIndex: %d, Id: 0x%X POLL_REG_FIELD): Cannot update BaseRegisterId 0x%X (version 104)!", primTable->inPrimHeader.index, primTable->inPrimHeader.id, baseId_v104); writeToLogFile(message , 1); G_error=1; return(-1); } x=primTable->params.pollRegField.x; y=primTable->params.pollRegField.y; z=primTable->params.pollRegField.z; status=getRegisterId(®Id_v105, baseId_v105, x, y, z); if(status!=0){ sprintf(message, " ## ERROR (PrimIndex: %d, Id: 0x%X POLL_REG_FIELD): getRegisterId() G_error!", primTable->inPrimHeader.index, primTable->inPrimHeader.id); writeToLogFile(message , 1); G_error=1; return(-1); } primTable->params.pollRegField.baseId=baseId_v105; primTable->params.pollRegField.inputParams.registerID=regId_v105; sprintf(message, "- (PrimIndex: %d, Id: 0x%X POLL_REG_FIELD): Primitive revision updated from %d to %d.", primTable->inPrimHeader.index, primTable->inPrimHeader.id, primTable->inPrimHeader.primRevision, R_POLL_REG_FIELD_HOST); writeToLogFile(message , 0); primTable->inPrimHeader.primRevision=R_POLL_REG_FIELD_HOST; return(0); } return(-1); } //----------------------------------------------------------- static int getBaseId_v105(UINT32 *baseId_v105, UINT32 baseId_v104){ UINT32 newId; int status=0; switch(baseId_v104){ case 0x0 : newId= FMT_LINK_EN(0) ;break; case 0x8 : newId= FMT_EXP_MODE_EN(0) ;break; case 0x10 : newId= FMT_CONFIG_MODE_EN(0) ;break; case 0x18 : newId= FMT_EDGE_MODE_EN(0) ;break; case 0x20 : newId= FMT_READOUT_TIMEOUT(0) ;break; case 0x28 : newId= FMT_DATA_OVERFLOW_LIMIT(0) ;break; case 0x30 : newId= FMT_HEADER_TRAILER_LIMIT(0) ;break; case 0x38 : newId= FMT_ROD_BUSY_LIMIT(0) ;break; #ifdef PIXEL_ROD case 0x40 : newId= FMT_PXL_LINK_L1A_CNT(0) ;break; case 0x48 : newId= FMT_PXL_BANDWIDTH(0) ;break; #endif case 0x50 : newId= FMT_LINK_DATA_TEST_MUX(0) ;break; case 0x78 : newId= FMT_MB_DIAG_REN(0) ;break; case 0x80 : newId= FMT_LINK_OCC_CNT(0,0) ;break; case 0xE0 : newId= FMT_TIMEOUT_ERR(0) ;break; case 0xE8 : newId= FMT_DATA_OVERFLOW_ERR(0) ;break; case 0xF0 : newId= FMT_HEADER_TRAILER_ERR(0) ;break; case 0xF8 : newId= FMT_ROD_BUSY_ERR(0) ;break; case 0x100 : newId= FMT_DATA_FMT_STATUS(0) ;break; case 0x108 : newId= FMT_STATUS(0) ;break; case 0x110 : newId= FMT_VERSION(0) ;break; case 0x118 : newId= FMT_MODEBIT_STAT_05(0) ;break; case 0x120 : newId= FMT_MODEBIT_STAT_6B(0) ;break; case 0x140 : newId= EFB_ERROR_MASK(0,0) ;break; case 0x1A0 : newId= FORMAT_VRSN_LSB ;break; case 0x1A1 : newId= FORMAT_VRSN_MSB ;break; case 0x1A2 : newId= SOURCE_ID_LSB ;break; case 0x1A3 : newId= SOURCE_ID_MSB ;break; case 0x1A4 : newId= EFB_CMND_0 ;break; case 0x1A5 : newId= EFB_FORMATTER_STAT ;break; case 0x1A6 : newId= EFB_RUNTIME_STAT_REG ;break; case 0x1A7 : newId= EVENT_HEADER_DATA ;break; case 0x1A8 : newId= EV_FIFO_DATA1 ;break; case 0x1A9 : newId= EV_FIFO_DATA2 ;break; case 0x1AA : newId= EVT_MEM_MODE ;break; case 0x1AB : newId= EVT_MEM_CMND_STAT ;break; case 0x1AC : newId= EVT_MEM_RESET ;break; case 0x1AD : newId= EVT_MEM_FLAGS ;break; case 0x1AE : newId= EVT_MEM_A_WRD_CNT ;break; case 0x1AF : newId= EVT_MEM_B_WRD_CNT ;break; case 0x1B0 : newId= EVT_MEM_PLAY_EVENT ;break; case 0x1B1 : newId= EVT_MEM_STATUS ;break; case 0x1B2 : newId= EFB_CODE_VERSION ;break; case 0x1C2 : newId= RTR_TRAP_CMND_0(0) ;break; case 0x1C6 : newId= RTR_TRAP_CMND_1(0) ;break; case 0x1CA : newId= RTR_TRAP_RESET(0) ;break; case 0x1CE : newId= RTR_TRAP_STATUS(0) ;break; case 0x1D2 : newId= RTR_TRAP_MATCH_0(0) ;break; case 0x1D6 : newId= RTR_TRAP_MOD_0(0) ;break; case 0x1DA : newId= RTR_TRAP_MATCH_1(0) ;break; case 0x1DE : newId= RTR_TRAP_MOD_1(0) ;break; case 0x1E2 : newId= RTR_TRAP_XFR_FRM_SIZE(0) ;break; case 0x1E6 : newId= RTR_TRAP_FIFO_WRD_CNT(0) ;break; case 0x1EE : newId= RTR_TRAP_EVT_CNT(0) ;break; case 0x1F2 : newId= RTR_TRAP_INT_DELAY_CNT(0) ;break; case 0x202 : newId= RTR_CMND_STAT ;break; case 0x203 : newId= RTR_SLNK_ATLAS_DUMP_MATCH ;break; case 0x204 : newId= RTR_SLNK_ROD_DUMP_MATCH ;break; case 0x205 : newId= RTR_CODE_VERSION ;break; case 0x216 : newId= RRIF_CMND_0 ;break; case 0x217 : newId= RRIF_CMND_1 ;break; case 0x218 : newId= RRIF_STATUS_0 ;break; case 0x219 : newId= RRIF_STATUS_1 ;break; case 0x21A : newId= FE_CMND_MASK_0_LO ;break; case 0x21B : newId= FE_CMND_MASK_0_HI ;break; case 0x21C : newId= FE_CMND_MASK_1_LO ;break; case 0x21D : newId= FE_CMND_MASK_1_HI ;break; case 0x21E : newId= CALSTROBE_DELAY ;break; case 0x21F : newId= CAL_CMND ;break; case 0x220 : newId= FRMT_RMB_STATUS ;break; case 0x221 : newId= EFB_DM_FIFO_FLAG_STA ;break; case 0x222 : newId= EFB_DM_WC_STA_REG ;break; case 0x223 : newId= INP_MEM_CTRL ;break; case 0x224 : newId= DBG_MEM_CTRL ;break; case 0x225 : newId= CFG_READBACK_CNT ;break; case 0x226 : newId= IDE_MEM_CTRL ;break; case 0x227 : newId= IDE_MEM_STAT ;break; case 0x228 : newId= FE_OCC_CNTR_RESET(0) ;break; case 0x22B : newId= FE_OCC_CNTR_LOAD(0) ;break; case 0x22E : newId= FE_OCC_LOAD_VALUE ;break; case 0x22F : newId= DATA_LINK_MASK(0) ;break; case 0x232 : newId= INTRPT_TO_SLV ;break; case 0x233 : newId= INTRPT_FROM_SLV ;break; case 0x234 : newId= FE_OCC_CNTR(0) ;break; case 0x23C : newId= RMB0_DFLT_LUT(0) ;break; case 0x244 : newId= RMB1_DFLT_LUT(0) ;break; case 0x24C : newId= RMB0_CRTV_LUT(0) ;break; case 0x254 : newId= RMB1_CRTV_LUT(0) ;break; case 0x25C : newId= DFLT_ROD_EVT_TYPE ;break; case 0x25D : newId= DM_DFLT_LUT(0) ;break; case 0x269 : newId= CRTV_ROD_EVT_TYPE ;break; case 0x26A : newId= DM_CRTV_LUT(0) ;break; case 0x276 : newId= CORRECTED_EVENTS_FIFO ;break; case 0x277 : newId= CAL_L1_TRIG_TYPE_0 ;break; case 0x278 : newId= CAL_L1_TRIG_TYPE_1 ;break; case 0x279 : newId= CAL_L1_ID_0 ;break; case 0x27A : newId= CAL_L1_ID_1 ;break; case 0x27B : newId= CAL_BCID ;break; case 0x27C : newId= ROD_MODE_REG ;break; case 0x27D : newId= RRIF_CODE_VERSION ;break; case 0x28B : newId= STREAM_INHIBIT_MASK(0) ;break; case 0x2BB : newId= MARK_SPACE(0) ;break; case 0x2EB : newId= COARSE_DELAY(0) ;break; case 0x31B : newId= FINE_DELAY(0) ;break; case 0x34B : newId= LASER_CURR_DAC(0) ;break; case 0x37B : newId= IN_LINK_DATA_DELAY(0) ;break; case 0x3DB : newId= BPM_CLOCK_PHASE ;break; case 0x3DE : newId= BREG_CLOCK_PHASE ;break; case 0x3DF : newId= VERNIER_CLOCK_STEP_PHASE0 ;break; case 0x3E0 : newId= VERNIER_CLOCK_STEP_PHASE1 ;break; case 0x3E3 : newId= STROBE_DELAY(0) ;break; case 0x3FB : newId= IN_DATA_RX_THRESH_DAC(0) ;break; case 0x45B : newId= BOC_RESET ;break; case 0x45C : newId= BOC_STATUS ;break; case 0x45F : newId= BPM_RESET ;break; case 0x463 : newId= TX_DAC_CLEAR ;break; case 0x464 : newId= RX_DAC_CLEAR ;break; case 0x466 : newId= RX_DATA_MODE ;break; case 0x46B : newId= VERNIER_CLOCK_FINE_PHASE ;break; case 0x46D : newId= CLOCK_CONTROL_BITS ;break; case 0x470 : newId= BOC_FIRMWARE_VERSION ;break; case 0x471 : newId= BOC_HARDWARE_VERSION ;break; case 0x472 : newId= BOC_MODULE_TYPE ;break; case 0x473 : newId= BOC_MANUFACTURER ;break; case 0x480 : newId= BOC_SERIAL_NUMBER ;break; default: status=-1; //G_error break; } if(status==0){ *baseId_v105=newId; }else{ *baseId_v105=baseId_v104; // don't change } return (status); } //-------------------------------------------- /*============================================================================= * readPrimListFile() *============================================================================= * * * */ static ERROR_ID readPrimListFile_v104(char primListFile[], struct LIST_TABLE *listTable){ FILE *file; ERROR_ID errorId; int status; char errorMessage[300]; int index; struct PRIM_TABLE *primTable; unsigned int slavePrims=0; int primId; int readFromFile; file = fopen (primListFile, "r"); if(file==NULL){ errorId=FILE_ERROR; sprintf(errorMessage,"- file name:%s, errno=%d(see errno.h).", primListFile, errno); programError(__FILE__,__LINE__, errorId, "fopen()", errno, errorMessage); return(errorId); } errorId=readListHeader(file, &listTable->inListHeader, listTable->comment, &listTable->allPrimCount, &listTable->replyLength, &listTable->replyCount); ERROR_CHECK(errorId, readListHeader()); if(errorId!=SUCCESS) return(errorId); if(listTable->allPrimCount>MAXPRIMS_IN_LIST){ ERROR_CHECK(FATAL_ERROR, listTable->allPrimCount>MAXPRIMS_IN_LIST!); return(FATAL_ERROR); } for(index=0; indexallPrimCount; index++){ primTable=&listTable->primTable[index]; status=readPrimHeader(file, &primTable->inPrimHeader, primTable->comment, &primTable->replyLength); if(status!=0){ ERROR_CHECK(FILE_ERROR, readPrimHeader()); return(FILE_ERROR); } primId=primTable->inPrimHeader.id; readFromFile=READ_FROM_FILE; switch(primId){ case RW_REG_FIELD: // no break!! case POLL_REG_FIELD: if(primTable->inPrimHeader.primRevision==104){ readFromFile=READ_FROM_FILE_v104; } break; case RW_MODULE_DATA: if(primTable->inPrimHeader.primRevision==101){ readFromFile=READ_FROM_FILE_v101; } break; } errorId=(*global.primFunction[getPrimArrayId(primId)])(readFromFile, primTable, NULL, (UINT32)file, 0); ERROR_CHECK(errorId, primFunction(READ_FROM_FILE)); if(errorId!=SUCCESS) return(errorId); if(slavePrims>0) slavePrims--; else listTable->masterToTablePrimIndex[primTable->inPrimHeader.index]=index; if(primTable->inPrimHeader.id==SEND_SLAVE_LIST){ slavePrims=primTable->params.sendSlaveList.inSlaveListHeader.numMsgs; if(slavePrims>listTable->allPrimCount){ ERROR_CHECK(FATAL_ERROR, slavePrims>listTable->allPrimCount!); return(FATAL_ERROR); } } } status=fclose(file); if(status!=0){ errorId=FILE_ERROR; sprintf(errorMessage,"-file name:%s, errno=%d(see errno.h).", primListFile, errno); programError(__FILE__,__LINE__, errorId, "fclose()", errno, errorMessage); return(errorId); } return(SUCCESS); } //--------------------------------------------