#include #include #include #include #include #include #include #include #include #include "rbm_functions.h" #include "abi_functions.h" #include "rcu2_functions.h" //========================================================================================== // Used by main to communicate with ARGP parse_opt struct args { int verbose; }; //========================================================================================== //========================================================================================== //========================================================================================== int main(int argc, char ** argv) { struct args args; while ( 1 ) { int result = getopt(argc, argv, ""); if (result == -1) break; /* end of list */ switch (result) { case '?': /* unknown parameter */ break; case ':': /* missing argument of a parameter */ fprintf(stderr, "ERROR: missing argument.\n"); exit(1); } } if (optind < argc) { //if (args.verbose) printf("Using file <%s>\n", argv[optind]); //sprintf(filename, argv[optind++]); } ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// int verbose = 1; unsigned int result = 0; unsigned int branch; rbm_init( verbose ); // Init bus (command mode) printf("=============================================\n"); printf("Dumping register values ...\n"); printf("=============================================\n"); rbm_read(get_Address_RCU_VERSION(), &result, verbose); printf("RCU_VERSION = %X\n", result); printf("=============================================\n"); rbm_read(get_Address_PARTITION_NUMBER(), &result, verbose); printf("PARTITION_NUMBER = %u\n", result); printf("=============================================\n"); Dump_TRIG_SELECT(verbose); printf("=============================================\n"); Dump_TRG_MEB_CFG(verbose); printf("=============================================\n"); Dump_TRG_MEB_STS(verbose); printf("\n"); printf("=============================================\n"); printf(" === COUNTERS === \n"); printf("=============================================\n"); rbm_read(get_Address_L0_TRIG_CTR(), &result, verbose); printf("L0_TRIG_CTR = %u\n", result); rbm_read(get_Address_L1A_TRIG_CTR(), &result, verbose); printf("L1A_TRIG_CTR = %u\n", result); rbm_read(get_Address_L1R_TRIG_CTR(), &result, verbose); printf("L1R_TRIG_CTR = %u\n", result); rbm_read(get_Address_L2A_TRIG_CTR(), &result, verbose); printf("L2A_TRIG_CTR = %u\n", result); rbm_read(get_Address_L2_TIMEOUT_CTR(), &result, verbose); printf("L2_TIMEOUT_CTR = %u\n", result); rbm_read(get_Address_EVENTS_SENT_TO_DDL2_CTR(), &result, verbose); printf("EVENTS_SENT_TO_DDL2_CTR = %u\n", result); rbm_read(get_Address_DDL2_XOFF_CTR(), &result, verbose); printf("DDL2_XOFF_CTR = %u\n", result); rbm_read(get_Address_DDL2_NOT_READY_CTR(), &result, verbose); printf("DDL2_NOT_READY_CTR = %u\n", result); printf("=============================================\n"); printf(" === STATUS === \n"); printf("=============================================\n"); printf("=============================================\n"); Dump_BRANCH_READOUT_UNIT_STATUS(verbose); printf("=============================================\n"); Dump_TRIG_HANDLER_STATUS(verbose); printf("=============================================\n"); Dump_CHANNEL_DATA_CONDITIONER_STATUS(verbose); printf("=============================================\n"); Dump_EVT_ASSEMBLER_CONTROLLER_STATUS(verbose); printf("=============================================\n"); Dump_DDL2_LINK_FIFO_STATUS(verbose); printf("=============================================\n"); Dump_SOD_EOD_SYNC_TRIG_CTR(verbose); printf("=============================================\n"); Dump_EVENT_READOUT_MANAGER_STATUS(verbose); printf("=============================================\n"); for (branch=0; branch<4; branch++) { Dump_FECERR(branch, args.verbose); } printf("=============================================\n"); Dump_PAR_REQUEST(verbose); printf("=============================================\n"); Dump_PAR_REQUEST_MASK_A(verbose); printf("=============================================\n"); Dump_PAR_REQUEST_MASK_B(verbose); printf("=============================================\n"); printf(" === BENCHMARK_MODULE === \n"); printf("=============================================\n"); //Dump_BENCHMARK_STATUS(verbose); //printf("=============================================\n"); Dump_BENCHMARK_READOUT_TIME(verbose); printf("=============================================\n"); Dump_BENCHMARK_LAST_READOUT_TIME(verbose); printf("=============================================\n"); Dump_BENCHMARK_BUSY_TIME(verbose); printf("=============================================\n"); Dump_BENCHMARK_MAX_BUSY_TIME(verbose); printf("=============================================\n"); Dump_BENCHMARK_INT_BUSY_TIME(verbose); printf("=============================================\n"); Dump_BENCHMARK_TTRC_READY_LOW_COUNT(verbose); printf("=============================================\n"); printf("=============================================\n"); printf(" === TRIGGER COLLISIONS ======== \n"); printf("=============================================\n"); Dump_TRIGGER_COLLISION_STATUS_COUNT(verbose,0); printf("=============================================\n"); Dump_TRIGGER_COLLISION_STATUS_COUNT(verbose,1); printf("=============================================\n"); Dump_TRIGGER_COLLISION_STATUS_COUNT(verbose,3); printf("=============================================\n"); printf("=============================================\n"); printf(" === Transaction ERROR Counter =\n"); printf("=============================================\n"); Dump_CHDRO_ERROR_COUTNER(verbose); printf("=============================================\n"); Dump_ESP_ERROR_COUTNER(verbose); printf("=============================================\n"); Dump_LAST_ERROR(verbose); printf("=============================================\n"); rbm_direct( args.verbose ); // Set RBM back to dirtect mode (for feeserver and buspoke) return 0; }