45 #define MAX_DATA_SIZE 262144
62 INT
pause_run(INT run_number,
char *error);
76 LAM_SOURCE(0, 0xFFFFFF),
154 char *hostnames[] = {
"fe1",
"fe2",
"fe3",
"turtle",
"fe5",
"fe6"};
155 int crate_numbers[] = {1, 2, 3, 4, 5, 6};
158 int num_hostnames =
sizeof(hostnames)/
sizeof(
char *);
159 char my_hostname[256];
161 gethostname(my_hostname,
sizeof(my_hostname));
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];
171 if(crate_number > 0) {
201 if (run_state != STATE_STOPPED) {
202 cm_msg(MERROR,
"Crate",
203 "Run must be stopped before starting crate program.");
208 if((*trigger_modules[
i]).
init != NULL) {
217 if((*periodic_modules[i]).init != NULL) {
218 int status = (*periodic_modules[
i]).
init();
238 if((*trigger_modules[i]).
exit != NULL) {
239 (*trigger_modules[
i]).
exit();
244 if((*periodic_modules[i]).exit != NULL) {
245 (*periodic_modules[
i]).
exit();
257 diag_print(1,
"*** Before begin of run %d ***\n", run_number);
260 if((*trigger_modules[i]).
pre_bor != NULL) {
261 int status = (*trigger_modules[
i]).
pre_bor();
269 if((*periodic_modules[i]).pre_bor != NULL) {
270 int status = (*periodic_modules[
i]).
pre_bor();
288 diag_print(1,
"*** Begin of run %d ***\n", run_number);
291 if((*trigger_modules[i]).
bor != NULL) {
292 int status = (*trigger_modules[
i]).
bor();
300 if((*periodic_modules[i]).bor != NULL) {
301 int status = (*periodic_modules[
i]).
bor();
311 between_runs =
false;
323 diag_print(1,
"*** End of run %d ***\n", run_number);
328 if((*trigger_modules[i]).
eor != NULL) {
329 int status = (*trigger_modules[
i]).
eor();
337 if((*periodic_modules[i]).eor != NULL) {
338 int status = (*periodic_modules[
i]).
eor();
353 INT
pause_run(INT run_number,
char *error)
373 struct timeval restart_time;
374 gettimeofday(&restart_time, NULL);
382 diag_print(2,
"Waited %f microseconds for restart.\n",
395 if((*trigger_modules[i]).poll_dead != NULL) {
396 int status = (*trigger_modules[
i]).poll_dead();
414 if((*trigger_modules[i]).
stop_cycle != NULL) {
429 if (cycle_active || run_state != STATE_RUNNING || between_runs ==
TRUE) {
435 if (run_state != STATE_RUNNING || between_runs ==
TRUE) {
443 if((*trigger_modules[i]).poll_live != NULL) {
447 if (run_state != STATE_RUNNING || between_runs ==
TRUE) {
450 int status = (*trigger_modules[
i]).poll_live();
483 for (
int i = 0; i <
count; i++) {
497 case CMD_INTERRUPT_ENABLE:
500 case CMD_INTERRUPT_DISABLE:
503 case CMD_INTERRUPT_ATTACH:
506 case CMD_INTERRUPT_DETACH:
518 printf(
"Event number: %d\n", (((EVENT_HEADER *)pevent)-1)->serial_number);
523 int size = bk_iterate32(pevent, &pbk, &pdata);
525 printf(
"%c%c%c%c\t%d\t\t", pbk->name[0], pbk->name[1], pbk->name[2],
527 for(
int i = 0; i <
MIN(4, size/4); i++) {
528 printf(
"0x%08x ", pdata[i]);
532 }
while(pbk != NULL);
540 diag_print(2,
"Event has ended. Executing read_trigger_event.\n");
549 if (run_state != STATE_RUNNING) {
550 diag_print(1,
"Readout after end of run!!!\n");
551 return bk_size(pevent);
554 struct timeval readout_start_time;
555 gettimeofday(&readout_start_time, NULL);
558 if((*trigger_modules[i]).read != NULL) {
559 int status = (*trigger_modules[
i]).read(pevent);
566 diag_print(2,
"Spent %f microseconds for readout.\n",
578 return bk_size(pevent);
591 if((*periodic_modules[i]).read != NULL) {
592 int status = (*periodic_modules[
i]).read(pevent);
605 return bk_size(pevent);