#include <stdio.h> #include <stdlib.h> #include <spy.h> #include <rockmfarm.h> #include <farmbuffer.h> #include <farmyboslocate.h> #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif char *circname = (char *) NULL; int nrevents = 10; char bank[] = "CALR"; /* DCHR TRGR QUAR */ int mask = 0x1f; int spydump_opt (int n, char *argv[]) { int help = FALSE; register int i; for (i=1 ; i < n ; ++i) if (argv[i][0] == '-') switch (argv[i][1]) { case 'c': circname = argv[++i]; break; case 'd': strcpy (bank, argv[++i]); if(strcmp(bank,"DCHR")==0) mask=0x7f; break; case 'n': nrevents = atoi(argv[++i]); break; case 'h': help = TRUE; break; default: break; } if (help) { printf ("\nUsage : spydump [options]\n\n\tOptions:\n" "\t -c\t<circname> (default = /tmp/B_1_1)\n" "\t -d\t<bank> (default = CALR)\n" "\t -n\t<nrevents> (default = 10)\n" "\t -h\t (help)\n"); exit (0); } if (circname == (char *) NULL) { circname = malloc (strlen ("/tmp/B_1_1") + 1); strcpy (circname, "/tmp/B_1_1"); } return TRUE; } int main(int argc, char *argv[]) { int err; char buf[100000]; int buflen; int i; SPY_id spy_id; spydump_opt (argc, argv); if ((err=spy_open(circname,&spy_id))!=SPY_ERROR_OK) { puts("Error in opening spy.\n"); return -1; } for (i=0; i<nrevents; i++) { buflen = 100000; err = spy_get(spy_id,buf,&buflen); if (err==SPY_ERROR_OK) { int banklen; register int j; int *bankptr; farm_yboslocateinit_( (int *) buf); farm_yboslocate_((int *) buf,bank, &banklen,&bankptr); printf("- %3i %3x --------------- banklen: %i -----------\n", i,i,banklen); for (j=0; j<banklen; j++) { rockm_farm farm; rockm_farm_raw2farm(bankptr[j],farm); printf("%3i: Chain: %i Crate: %i Slot: %i Chan: %i" " Res: %i Data: %i\n", j,farm.chain,farm.crate,farm.slot, (farm.chan&mask),farm.res,farm.data); } } } spy_close(spy_id); return 0; }