static void __prestart() { int status; unsigned long jj, adc_id, sl; char *env; *(rol->nevents) = 0; /* Register a sync trigger source */ #ifdef POLLING_MODE CTRIGRSS(TEST, 1, usrtrig, usrtrig_done); #else CTRIGRSA(TEST, 1, usrtrig, usrtrig_done); #endif /* not needed here ??? */ rol->poll = 1; sprintf(rcname,"RC%02d",rol->pid); printf("rcname >%4.4s<\n",rcname); /* user code */ #ifdef USE_GEM /* open evio input file */ if((status = evOpen(input_filename,"r",&input_handle))!=0) { printf("\n ?Unable to open input file >%s<, status=%d\n\n",input_filename,status); exit(1); } else { printf("\n Open data file >%s<\n",input_filename); } #endif printf("INFO: User Prestart 1 executed\n"); /* from parser (do we need that in rol2 ???) */ *(rol->nevents) = 0; rol->recNb = 0; return; }
static void __prestart() { printf("INFO: Entering Prestart ROL2\n"); /* Clear some global variables etc for a clean start */ CTRIGINIT; /* init trig source EVENT */ EVENT_INIT; /* Register a sync trigger source (up to 32 sources) */ CTRIGRSS(EVENT, 1, rol2trig, rol2trig_done); /* second arg=1 - what is that ? */ rol->poll = 1; rol->recNb = 0; printf("INFO: Prestart ROL22 executed\n"); return; }
static void __prestart() { CTRIGINIT; *(rol->nevents) = 0; unsigned long jj, adc_id; daLogMsg("INFO","Entering Prestart"); TIDPRIMARY_INIT; CTRIGRSS(TIDPRIMARY,1,usrtrig,usrtrig_done); CRTTYPE(1,TIDPRIMARY,1); /* If the TI Master, send a Clock and Trig Link Reset */ #ifdef TID_MASTER tidClockReset(); taskDelay(2); tidTrigLinkReset(); #endif /* Execute User defined prestart */ rocPrestart(); /* If the TI Master, send a Sync Reset - required by FADC250 after it is enabled */ #ifdef TID_MASTER tidSyncReset(); taskDelay(2); #endif /* Connect User Trigger Routine */ tidIntConnect(TID_INT_VEC,asyncTrigger,0); tidStatus(); daLogMsg("INFO","Prestart Executed"); if (__the_event__) WRITE_EVENT_; *(rol->nevents) = 0; rol->recNb = 0; } /*end prestart */
static void __prestart() { int ii, i1, i2, i3; int ret; /* Clear some global variables etc for a clean start */ *(rol->nevents) = 0; event_number = 0; tiEnableVXSSignals(); #ifdef POLLING_MODE CTRIGRSS(TIPRIMARY, TIR_SOURCE, usrtrig, usrtrig_done); #else CTRIGRSA(TIPRIMARY, TIR_SOURCE, usrtrig, usrtrig_done); #endif printf(">>>>>>>>>> next_block_level = %d, block_level = %d, use next_block_level\n",next_block_level,block_level); block_level = next_block_level; /**************************************************************************/ /* setting TI busy conditions, based on boards found in Download */ /* tiInit() does nothing for busy, tiConfig() sets fiber, we set the rest */ /* NOTE: if ti is busy, it will not send trigger enable over fiber, since */ /* it is the same fiber and busy has higher priority */ #ifndef TI_SLAVE vmeBusLock(); tiSetBusySource(TI_BUSY_LOOPBACK,0); /*tiSetBusySource(TI_BUSY_FP,0);*/ vmeBusUnlock(); #endif #ifdef USE_PRAD #ifdef USE_V767 vmeBusLock(); v767Clear(0); v767Status(0, 0, 0); vmeBusUnlock(); #endif #ifdef USE_V1190 vmeBusLock(); tdc1190Clear(0); tdc1190Status(0); vmeBusUnlock(); #endif /*if(nfadc>0)*/ { printf("Set BUSY from FP for FASTBUS\n"); vmeBusLock(); tiSetBusySource(TI_BUSY_FP, 0); vmeBusUnlock(); } #endif /* USER code here */ /******************/ vmeBusLock(); tiIntDisable(); vmeBusUnlock(); /* master and standalone crates, NOT slave */ #ifndef TI_SLAVE sleep(1); vmeBusLock(); tiSyncReset(1); vmeBusUnlock(); sleep(1); vmeBusLock(); tiSyncReset(1); vmeBusUnlock(); sleep(1); vmeBusLock(); ret = tiGetSyncResetRequest(); vmeBusUnlock(); if(ret) { printf("ERROR: syncrequest still ON after tiSyncReset(); trying again\n"); sleep(1); vmeBusLock(); tiSyncReset(1); vmeBusUnlock(); sleep(1); } vmeBusLock(); ret = tiGetSyncResetRequest(); vmeBusUnlock(); if(ret) { printf("ERROR: syncrequest still ON after tiSyncReset(); try 'tcpClient <rocname> tiSyncReset'\n"); } else { printf("INFO: syncrequest is OFF now\n"); } /* printf("holdoff rule 1 set to %d\n",tiGetTriggerHoldoff(1)); printf("holdoff rule 2 set to %d\n",tiGetTriggerHoldoff(2)); */ #endif /* set block level in all boards where it is needed; it will overwrite any previous block level settings */ #ifdef TI_SLAVE /* assume that for master and standalone TIs block level is set from config file */ vmeBusLock(); tiSetBlockLevel(block_level); vmeBusUnlock(); #endif #ifdef USE_V1190 tdc1190SetBLTEventNumber(0, block_level); #endif vmeBusLock(); tdc1190Status(0); vmeBusUnlock(); #ifdef EVENT_CYCLE event_count = 0; #endif vmeBusLock(); printf("TISTATUS 1\n"); tiStatus(1); vmeBusUnlock(); vmeBusLock(); ti_usetrg(0); tiSetTriggerSource(TI_TRIGGER_PULSER); // ti_usetrg(TRG_TOTALSUM); // tiSetInputPrescale(5, 3); vmeBusUnlock(); vmeBusLock(); printf("TISTATUS 2\n"); tiStatus(1); vmeBusUnlock(); printf("INFO: Prestart1 Executed\n");fflush(stdout); *(rol->nevents) = 0; rol->recNb = 0; return; }
static void __prestart() { int ii, i1, i2, i3; int ret; /* Clear some global variables etc for a clean start */ *(rol->nevents) = 0; event_number = 0; /*tsEnableVXSSignals();TS*/ #ifdef POLLING_MODE CTRIGRSS(TSPRIMARY, TIR_SOURCE, usrtrig, usrtrig_done); #else CTRIGRSA(TSPRIMARY, TIR_SOURCE, usrtrig, usrtrig_done); #endif /**************************************************************************/ /* setting TS busy conditions, based on boards found in Download */ /* tsInit() does nothing for busy, tsConfig() sets fiber, we set the rest */ /* NOTE: if ts is busy, it will not send trigger enable over fiber, since */ /* it is the same fiber and busy has higher priority */ vmeBusLock(); tsSetBusySource(TS_BUSY_LOOPBACK,0); /*tsSetBusySource(TS_BUSY_FP,0);*/ vmeBusUnlock(); /*****************************************************************/ /*****************************************************************/ /* USER code here */ /******************/ vmeBusLock(); tsIntDisable(); vmeBusUnlock(); /* NOT USED !!!!!!!!!!!!!!!!!!!! vmeBusLock(); tsSyncReset(1); vmeBusUnlock(); sleep(1); vmeBusLock(); ret = tsGetSyncResetRequest(); vmeBusUnlock(); if(ret) { printf("ERROR: syncrequest still ON after tsSyncReset(); trying again\n"); sleep(1); vmeBusLock(); tsSyncReset(1); vmeBusUnlock(); sleep(1); } */ /* SYNC RESET - reset event number (and clear FIFOs) in TIs */ sleep(1); vmeBusLock(); tsSyncReset(1); /* '1' will push 'next_block_level' to 'block_level' in slave TI's (not TD's !), we did it already in download */ vmeBusUnlock(); sleep(1); /* USER RESET - use it because 'SYNC RESET' produces too short pulse, still need 'SYNC RESET' above because 'USER RESET' does not do everything 'SYNC RESET' does (in paticular does not reset event number) */ vmeBusLock(); tsUserSyncReset(1); tsUserSyncReset(0); vmeBusUnlock(); vmeBusLock(); ret = tsGetSyncResetRequest(); vmeBusUnlock(); if(ret) { printf("ERROR: syncrequest still ON after tsSyncReset(); try 'tcpClient <rocname> tsSyncReset'\n"); } else { printf("INFO: syncrequest is OFF now\n"); } printf("holdoff rule 1 set to %d\n",tsGetTriggerHoldoff(1)); printf("holdoff rule 2 set to %d\n",tsGetTriggerHoldoff(2)); /* set block level in all boards where it is needed; it will overwrite any previous block level settings */ /* #ifdef USE_VSCM for(ii=0; ii<nvscm1; ii++) { slot = vscmSlot(ii); vmeBusLock(); vscmSetBlockLevel(slot, block_level); vmeBusUnlock(); } #endif */ /* { char portfile[1024]; sprintf(portfile,"%s/portnames_%s.txt",getenv("CLON_PARMS"),getenv("EXPID")); printf("Loading port names from file >%s<\n",portfile); tdLoadPortNames(portfile); } */ vmeBusLock(); tsStatus(1); vmeBusUnlock(); vmeBusLock(); ret = tdGStatus(block_level); vmeBusUnlock(); if(ret) { logMsg("ERROR: Go 1: WRONG BLOCK_LEVEL, START NEW RUN FROM 'CONFIGURE !!!\n",1,2,3,4,5,6); logMsg("ERROR: Go 1: WRONG BLOCK_LEVEL, START NEW RUN FROM 'CONFIGURE !!!\n",1,2,3,4,5,6); logMsg("ERROR: Go 1: WRONG BLOCK_LEVEL, START NEW RUN FROM 'CONFIGURE !!!\n",1,2,3,4,5,6); UDP_user_request(MSGERR, "rol1", "WRONG BLOCK_LEVEL, START NEW RUN FROM 'CONFIGURE !!!"); } else { UDP_user_request(0, "rol1", "BLOCK_LEVEL IS OK"); } printf("INFO: Prestart1 Executed\n");fflush(stdout); *(rol->nevents) = 0; rol->recNb = 0; return; }
static void __prestart() { int ii, i1, i2, i3; int ret; /* Clear some global variables etc for a clean start */ *(rol->nevents) = 0; event_number = 0; /*tsEnableVXSSignals();TS*/ #ifdef POLLING_MODE CTRIGRSS(TSPRIMARY, TIR_SOURCE, usrtrig, usrtrig_done); #else CTRIGRSA(TSPRIMARY, TIR_SOURCE, usrtrig, usrtrig_done); #endif /**************************************************************************/ /* setting TS busy conditions, based on boards found in Download */ /* tsInit() does nothing for busy, tsConfig() sets fiber, we set the rest */ /* NOTE: if ts is busy, it will not send trigger enable over fiber, since */ /* it is the same fiber and busy has higher priority */ vmeBusLock(); tsSetBusySource(TS_BUSY_LOOPBACK,0); /*tsSetBusySource(TS_BUSY_FP,0);*/ vmeBusUnlock(); /*****************************************************************/ /*****************************************************************/ /* USER code here */ /******************/ vmeBusLock(); tsIntDisable(); vmeBusUnlock(); /* master and standalone crates, NOT slave */ sleep(1); vmeBusLock(); tsSyncReset(1); vmeBusUnlock(); sleep(1); vmeBusLock(); tsSyncReset(1); vmeBusUnlock(); sleep(1); vmeBusLock(); ret = tsGetSyncResetRequest(); vmeBusUnlock(); if(ret) { printf("ERROR: syncrequest still ON after tsSyncReset(); trying again\n"); sleep(1); vmeBusLock(); tsSyncReset(1); vmeBusUnlock(); sleep(1); } vmeBusLock(); ret = tsGetSyncResetRequest(); vmeBusUnlock(); if(ret) { printf("ERROR: syncrequest still ON after tsSyncReset(); try 'tcpClient <rocname> tsSyncReset'\n"); } else { printf("INFO: syncrequest is OFF now\n"); } printf("holdoff rule 1 set to %d\n",tsGetTriggerHoldoff(1)); printf("holdoff rule 2 set to %d\n",tsGetTriggerHoldoff(2)); /* set block level in all boards where it is needed; it will overwrite any previous block level settings */ /* #ifdef USE_VSCM for(ii=0; ii<nvscm1; ii++) { slot = vscmSlot(ii); vmeBusLock(); vscmSetBlockLevel(slot, block_level); vmeBusUnlock(); } #endif */ vmeBusLock(); tsStatus(1); vmeBusUnlock(); printf("INFO: Prestart1 Executed\n");fflush(stdout); *(rol->nevents) = 0; rol->recNb = 0; return; }