/******************************************* * Look the parameters in the CAEN Mail_box * * * *******************************************/ #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 SY127_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 ? */ A200_end(); sem_unl_del(mev_id, "sy127mod", caller); munlink(hv_mod); exit(0); } } main(argc, argv) int argc; char *argv[]; { int nwrite, nerror, par_val; short ndata, data[45], prot_word; int hra[6]; short i, ir, j, k, chan, value, code; intercept(sighand); caller = argv[0]; if (argc < 2) { printf(" usage : guarda par_val \n"); exit(0); } else par_val = atoi(argv[1]); if((hv_mod = modlink("sy127mod", 0)) == -1) exit(_errmsg(errno,"guarda: err. link data module\n")); mev_id = sem_link_cr("SY127mod", argv[0]); sem_wait(mev_id, argv[0]); for(i=0; i<6; i++) { if(par_val >= VMON && par_val <= IMON) hra[i] = hv_mod->vim_tim[i]; else if(par_val == STATUS){ hra[i] = hv_mod->sta_tim[i]; prot_word = hv_mod->hv_par[1].prot_word; } else if(par_val >= V0 && par_val<= TYPE) hra[i] = hv_mod->pchk_tim[i]; else{ printf( "V0 %d\nV1 %d\nI0 %d\nI1 %d\nR_up %d\nR_dwn %d\ntrip %d\n", V0,V1,I0,I1,RAMP_UP,RAMP_DOWN,TRIP); printf( "status %d\nCH_TO_GR_ASS %d\nVMON %d\nIMON %d\nphase %d\n", STATUS, CH_TO_GR_ASS, VMON, IMON, PHASE); printf( "Time %d\n CH_Type %d\n", TIME, TYPE); sem_free(mev_id, argv[0]); exit(0); } } for(i=0; ihv_par[1].v0[i]; break; case V1: data[i] = hv_mod->hv_par[1].v1[i]; break; case I0: data[i] = hv_mod->hv_par[1].i0[i]; break; case I1: data[i] = hv_mod->hv_par[1].i1[i]; break; case VMON: data[i] = hv_mod->hv_par[1].vmon[i]; break; case IMON: data[i] = hv_mod->hv_par[1].imon[i]; break; case STATUS: data[i] = hv_mod->hv_par[1].status[i]; break; case RAMP_UP: data[i] = hv_mod->hv_par[1].ramp_up[i]; break; case RAMP_DOWN: data[i] = hv_mod->hv_par[1].ramp_down[i]; break; case TRIP: data[i] = hv_mod->hv_par[1].trip[i]; break; case CH_TO_GR_ASS: data[i] = hv_mod->hv_par[1].ch_to_gr_ass[i]; break; case PHASE: data[i] = hv_mod->hv_par[1].phase[i]; break; case TIME: data[i] = hv_mod->hv_par[1].time[i]; break; case TYPE: data[i] = hv_mod->hv_par[1].type[i]; break; } } if(par_val >= VMON && par_val <= IMON) { nwrite = hv_mod->nvim; nerror = hv_mod->nvim_err; } else if(par_val == STATUS) { nwrite = hv_mod->nsta; nerror = hv_mod->nsta_err; } else if(par_val >= V0 && par_val<= TYPE) { nwrite = hv_mod->nchk; nerror = hv_mod->nchk_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 %d , errors %d\n",nwrite,nerror); if (par_val == STATUS) printf(" protection word = 0x%x \n",prot_word); for (k=0; k<40 ; k+=5){ printf(" values : %6d %6d %6d %6d %6d \n",data[k],data[k+1], data[k+2],data[k+3],data[k+4]); } sem_unl_del(mev_id, "SY127mod", caller); }