46 #define MAX_DATA_SIZE 262144
63 INT
pause_run(INT run_number,
char *error);
77 LAM_SOURCE(0, 0xFFFFFF),
148 printf(
"Entering frontend_early_init ... \n");
163 BOOL has_periodic =
FALSE;
164 for(
int i = 0;
i < num_hostnames;
i++) {
165 if(!strcmp(my_hostname, hostnames[
i])) {
166 crate_number = crate_numbers[
i];
167 has_periodic = crate_has_periodic[
i];
173 BOOL has_periodic =
FALSE;
175 printf(
"Hostname and crate cumber defined, crate number = %d ... \n",crate_number);
177 if(crate_number > 0) {
189 printf(
"Crate number = %d\n",crate_number);
198 printf(
"Frontend early init returns success \n");
209 printf(
"Entering frontend_init() ... \n");
211 if (run_state != STATE_STOPPED) {
212 cm_msg(MERROR,
"Crate",
213 "Run must be stopped before starting crate program.");
218 if((*trigger_modules[
i]).
init != NULL) {
227 if((*periodic_modules[
i]).init != NULL) {
247 if((*trigger_modules[
i]).
exit != NULL) {
248 (*trigger_modules[
i]).
exit();
253 if((*periodic_modules[
i]).exit != NULL) {
254 (*periodic_modules[
i]).
exit();
266 diag_print(1,
"*** Before begin of run %d ***\n", run_number);
269 if((*trigger_modules[
i]).
pre_bor != NULL) {
278 if((*periodic_modules[
i]).pre_bor != NULL) {
297 diag_print(1,
"*** Begin of run %d ***\n", run_number);
300 if((*trigger_modules[
i]).
bor != NULL) {
309 if((*periodic_modules[
i]).bor != NULL) {
320 between_runs =
false;
332 diag_print(1,
"*** End of run %d ***\n", run_number);
337 if((*trigger_modules[
i]).
eor != NULL) {
346 if((*periodic_modules[
i]).eor != NULL) {
382 printf(
"starting new cycle in crate.cpp\n");
383 struct timeval restart_time;
384 gettimeofday(&restart_time, NULL);
392 diag_print(2,
"Waited %f microseconds for restart.\n",
405 if((*trigger_modules[
i]).poll_dead != NULL) {
406 int status = (*trigger_modules[
i]).poll_dead();
439 if (cycle_active ||
run_state != STATE_RUNNING || between_runs ==
TRUE) {
454 if((*trigger_modules[
i]).poll_live != NULL) {
461 int status = (*trigger_modules[
i]).poll_live();
508 case CMD_INTERRUPT_ENABLE:
511 case CMD_INTERRUPT_DISABLE:
514 case CMD_INTERRUPT_ATTACH:
517 case CMD_INTERRUPT_DETACH:
529 printf(
"Event number: %d\n", (((EVENT_HEADER *)pevent)-1)->serial_number);
534 int size = bk_iterate32(pevent, &pbk, &pdata);
536 printf(
"%c%c%c%c\t%d\t\t", pbk->name[0], pbk->name[1], pbk->name[2],
538 for(
int i = 0;
i <
MIN(4, size/4);
i++) {
543 }
while(pbk != NULL);
551 diag_print(2,
"Event has ended. Executing read_trigger_event.\n");
561 diag_print(1,
"Readout after end of run!!!\n");
562 return bk_size(pevent);
565 struct timeval readout_start_time;
566 gettimeofday(&readout_start_time, NULL);
569 if((*trigger_modules[
i]).read != NULL) {
570 int status = (*trigger_modules[
i]).read(pevent);
577 diag_print(2,
"Spent %f microseconds for readout.\n",
589 return bk_size(pevent);
602 if((*periodic_modules[
i]).read != NULL) {
603 int status = (*periodic_modules[
i]).read(pevent);
616 return bk_size(pevent);