/******************************************* * Look the parameters in the CAEN Mail_box * * * *******************************************/ #include #include #include #include "../lib/mylib1.h" #include "a200.h" /* definitions relative to the CAEN system */ #define NMAX 45 #define NOK 40 #define SECONDS #define MINUTES * 60 #define FINE 1001 SY227_MBOX *hv_mod; int mev_id; char *caller; sighand(signal) register int signal; { printf(" %s : signal %d received \n", *caller, signal); if ( signal >= 2 && signal <= 3){ /* ^C or ^E ? */ sem_unl(mev_id, "sy227mod", caller); munlink(hv_mod); exit(0); } } main(argc, argv) int argc; char *argv[]; { int nwrite_st, nerror_st; int nwrite_vi, nerror_vi; short ndata, data[45], on_off, hv_in; int hra[6]; short i, ir, j, k, chan, value, code; int crate, slot, datv[32], dati[32], dats[32]; intercept(sighand); caller = argv[0]; if (argc < 3) { printf(" usage : guardad crate_nr slot_nr \n"); exit(0); } else crate = atoi(argv[1]) - 1; slot = atoi(argv[2]); if (crate < 0 || crate > 6 || slot < 0 || slot > 3){ printf(" invalid parameters: crate %d, slot %d\n", crate, slot); exit(0); } if((hv_mod = (SY227_MBOX *)modlink("sy227mod", 0)) == (SY227_MBOX *) -1) exit(_errmsg(errno,"guarda: err. link data module\n")); mev_id = sem_link_cr("SY227mod", argv[0]); sem_wait(mev_id, argv[0]); for (i=0; i<6; i++) hra[i] = hv_mod->sta_tim[i]; on_off = hv_mod->sl_par[crate][slot].onoff; hv_in = hv_mod->sl_par[crate][slot].hvin; for(i = 0; i < 32; i++){ datv[i] = hv_mod->sl_par[crate][slot].vmon[i]; dati[i] = hv_mod->sl_par[crate][slot].imon[i]; dats[i] = hv_mod->sl_par[crate][slot].status[i]; } nwrite_st = hv_mod->nsta; nerror_st = hv_mod->nsta_err; nwrite_vi = hv_mod->nvim; nerror_vi = hv_mod->nvim_err; sem_free(mev_id, argv[0]); munlink(hv_mod); printf(" date of last update %d-%d-%d %d:%d:%d\n", hra[2],hra[1],hra[0],hra[3],hra[4],hra[5]); printf(" readouts status %d , errors %d\n",nwrite_st,nerror_st); printf(" readouts V/I %d , errors %d\n",nwrite_vi,nerror_vi); printf(" on_off = 0x%x :", on_off); if (on_off D_SWITCH_IS_ON) printf(" ON, "); else printf(" OFF, "); if (on_off D_RELAY_IS_ON) printf(" RELAY ON\n"); else printf(" RELAY OFF\n"); printf(" hv_in = 0x%x :", hv_in); if (hv_in D_NO_HV) printf(" NO Input HV ( read: "); else if(hv_in D_POS_HV) printf(" Positive Input HV ( read : "); else if(hv_in D_NEG_HV) printf(" Negative Input HV ( read : "); else printf(" ?? ( read : "); printf("%d V )\n\n", datv[0]); printf(" Imon(nA) and Status : \n\n"); for (k = 0; k < 2; k++){ printf("%4d", k * 16); for (i = k * 16 + 1; i < k * 16 + 16; i++){ printf("%5d", i); if ( i == 15 || i == 31) printf("\n\n"); } printf("%4d", dati[k * 16]); for (i = k * 16 + 1; i < k * 16 + 16; i++){ printf("%5d", dati[i]); if ( i == 15 || i == 31) printf("\n\n"); } if (dats[k * 16] D_IS_OK) printf(" OK"); else printf(" ***"); for (i = k * 16 + 1; i < k * 16 + 16; i++){ if (dats[i] D_IS_OK) printf(" OK"); else printf(" ***"); if ( i == 15 || i == 31) printf("\n"); } if (dats[k * 16] D_IS_OVC) printf(" OVC"); else printf(" "); for (i = k * 16 + 1; i < k * 16 + 16; i++){ if (dats[i] D_IS_OVC) printf(" OVC"); else printf(" "); if ( i == 15 || i == 31) printf("\n"); } if (dats[k * 16] D_IS_OFS) printf(" OFS"); else printf(" "); for (i = k * 16 + 1; i < k * 16 + 16; i++){ if (dats[i] D_IS_OFS) printf(" OFS"); else printf(" "); if ( i == 15 || i == 31) printf("\n"); } if (dats[k * 16] D_IS_OVC) printf(" OVM"); else printf(" "); for (i = k * 16 + 1; i < k * 16 + 16; i++){ if (dats[i] D_IS_OVC) printf(" OVM"); else printf(" "); if ( i == 15 || i == 31) printf("\n"); } } sem_unl(mev_id, "SY227mod", caller); }