/*************************************** * read227.c * * * ***************************************/ #include #include #include #include #include #include #include "../lib/mylib1.h" #include "../dbase/hv_dbase.h" #include "a200.h" /* definitions relative to the CAEN system */ SY227_MBOX *sy227_mod; char *caller; sighand(signal) register int signal; { printf(" %s : signal %d received \n", *caller, signal); if ( signal >= 2 && signal <= 3){ /* ^C or ^E ? */ munlink(sy227_mod); exit(0); } } main(argc, argv) int argc; char *argv[]; { hv_mod_struct *mid; int tcp_ip_nr, cpu_nr; char *hv_config[3]; short i, j, k, chan, value, code; int dis, sl; char *par_code, *crate_code, *chan_code, *set_code, *chamber_code; short par_val, crate_val, chan_val, set_val; int is_a_cable; char cline[80], str0[20]; int n_ch_checked = 0; int sy227_mod_vim_tim[6]; int sy227_mod_sta_tim[6]; int sy227_mod_nvim; int sy227_mod_nvim_err; int sy227_mod_nsta; int sy227_mod_nsta_err; int giorno, mese, anno, ora, minuti, secondi; short on_off, hv_in, i_res; short datav[32], datai[32], datas[32], dataix[32]; caller = argv[0]; if (argc < 2 || *argv[1] =='-') usage(); chamber_code = argv[1]; if ( strcmp("all", chamber_code) == 0 || strcmp("ALL", chamber_code) == 0) chamber_code = "0"; is_a_cable = 0; if (*(chamber_code + 2) == '/') is_a_cable = 1; get_config(&tcp_ip_nr, &cpu_nr, hv_config); if ((mid = (hv_mod_struct *)modlink(hv_config[cpu_nr], 0)) == (hv_mod_struct *)-1) if ((mid = (hv_mod_struct *)modload(hv_config[cpu_nr], 0)) == (hv_mod_struct *)-1) exit(_errmsg(errno, " %s: error loading/linking module %s\n", argv[0], hv_config[cpu_nr])); if((sy227_mod = (SY227_MBOX *)modlink("sy227mod", 0)) == (SY227_MBOX *) -1) exit(_errmsg(errno,"hv_status: err. link data module\n")); printf(" \n"); for(dis = 0; dis < mid->n_crates; dis++) for(sl = 0; sl < 4; sl++) if(strcmp(chamber_code, mid->distr[dis].slot[sl].chamber) == 0 || strcmp(chamber_code, mid->distr[dis].slot[sl].cable_name) == 0) { /* || ( strcmp("0", chamber_code) == 0 && mid->distr[dis].slot[sl].hv_ch_Ref >= 0 ) ){ /* printf(" d_crate %d, slot %d, hv_ch_A %d, hv_ch_Ref %d :\n", mid->distr[dis].crate_nr , sl, mid->distr[dis].slot[sl].hv_ch_A, mid->distr[dis].slot[sl].hv_ch_Ref); printf(" cable %s\n", mid->distr[dis].slot[sl].cable_name); */ if ( mid->distr[dis].slot[sl].d_used_ch ){ printf(" distr/slot : %d %d\n", dis + 1, sl); for ( i = 0; i < 6; i++){ sy227_mod_vim_tim[i] = sy227_mod->vim_tim[i]; sy227_mod_sta_tim[i] = sy227_mod->sta_tim[i]; } sy227_mod_nvim = sy227_mod->nvim; sy227_mod_nvim_err = sy227_mod->nvim_err; sy227_mod_nsta = sy227_mod->nsta; sy227_mod_nsta_err = sy227_mod->nsta_err; data_ora( &anno, &mese, &giorno, &ora, &minuti, &secondi); printf("Present time: %2d-%2d-%4d %2d:%2d:%2d\n", giorno, mese, anno, ora, minuti, secondi); printf(" SY227 I mon %2d-%2d-%4d %2d:%2d:%2d", sy227_mod_vim_tim[2], sy227_mod_vim_tim[1], sy227_mod_vim_tim[0], sy227_mod_vim_tim[3], sy227_mod_vim_tim[4], sy227_mod_vim_tim[5]); printf(" nread %7d, err %4d\n", sy227_mod_nvim, sy227_mod_nvim_err); printf(" SY227 STATUS %2d-%2d-%4d %2d:%2d:%2d", sy227_mod_sta_tim[2], sy227_mod_sta_tim[1], sy227_mod_sta_tim[0], sy227_mod_sta_tim[3], sy227_mod_sta_tim[4], sy227_mod_sta_tim[5]); printf(" nread %7d, err %4d\n", sy227_mod_nsta, sy227_mod_nsta_err); i_res = 5; printf(" i_res = %d \n", i_res); on_off = sy227_mod->sl_par[dis][sl].onoff; hv_in = sy227_mod->sl_par[dis][sl].hvin; for ( i = 0; i < 32; i++){ datav[i] = sy227_mod->sl_par[dis][sl].vmon[i]; datai[i] = sy227_mod->sl_par[dis][sl].imon[i]; datas[i] = sy227_mod->sl_par[dis][sl].status[i]; } if (on_off D_SWITCH_IS_ON) printf(" Switch ON;"); else printf(" Switch OFF;"); if (on_off D_RELAY_IS_ON) printf(" Relay ON;"); else printf(" Relay OFF;"); if (hv_in D_NO_HV) printf(" NO Input HV "); else if(hv_in D_POS_HV) printf(" Positive Input HV "); else if(hv_in D_NEG_HV) printf(" Negative Input HV "); else printf(" ?? "); printf("\n i vmon imon imax status \n"); for ( i = 0; i < 32; i++){ dataix[i] = 0; printf(" %2d %4d %4d %4d 0x%x: ", i, datav[i], datai[i], dataix[i], datas[i]); if (datas[i] D_IS_OK) printf(" OK "); else printf(" ->> "); if (datas[i] D_IS_OVC) printf(" OVC"); else printf(" "); if (datas[i] D_IS_OFS) printf(" OFS"); else printf(" "); if (datas[i] D_IS_OVC) printf(" OVM"); else printf(" "); printf(" "); printf("\n"); } n_ch_checked++; } } munlink(mid); sleep(1); if (!n_ch_checked) printf(" Unkown ( or not used ) chamber name \n"); } usage() { printf(" look227 : look at distribution slot(s) information \n"); printf(" ( from data module ) \n"); printf("\n usage : readlook Chamber_name \n"); printf("\n The Chamber_name : is interpreted as \n"); printf(" Cable_name if the format \n"); printf(" XX/Y is used ( e.g. : 52/2 )\n"); exit(0); }