#uses "email.ctl" bool doTEST = FALSE; main(){ if(dpExists("dbCheckLVHV")) dpDelete("dbCheckLVHV"); dpCreate("dbCheckLVHV","_TimedFunc"); int checkTinterval = 28800; // seconds (=8h) dpSet("trd_fed:dbCheckLVHV.interval:_original.._value",checkTinterval); dpSet("trd_fed:dbCheckLVHV.syncTime:_original.._value",-1); timedFunc("checkDB","dbCheckLVHV"); } // -------------------------------------------------------------------------------- void checkDB(){ DebugTN("************Check PVSS and WingDB for HV and LV**************"); dbConnection con; dbRecordset rec; int rc; int wingsector; int wingsmid; int wingheight; string winglvrack; int count; anytype fld; string query; string dp; string pvssmodule; string pvssserial; string pvssserialconv; string pvssip; string pvssrack; string pvsscrate; string pvssslot; int pvsssector; string lvrack; int lvheight; int lvchan; string lvgo; string wienerid; dyn_string split; string tmp; bool skip; int selectcount; string sysname; bool isdp = false; bool isHVCrate=false; bool isHVModule=false; bool isHVConn=false; bool isPTLV=false; bool isPDBLV=false; bool isPCULV=false; bool isSMLV=false; bool isPTConn=false; bool isPDBConn=false; bool isPCUConn=false; bool isSMConn=false; //rc = dbOpenConnection("DSN=trdfero;UID=trdfero;PWD=secret;server=trdro2;port=1521",con); rc = dbOpenConnection("DSN=trdfero;UID=trdfero;PWD=$D108&trd",con); if(!rc){ for(int sec = 0; sec<18; sec++){ count = 0; DebugTN("sector = "+sec); //----------------------- for HV ------------------------ sprintf(tmp,"trd_hv:Sector%02d/Stack0/Layer0/Drift/SEC%02dL0Drift",sec,sec); dp = dpAliasToName(tmp); isdp = dpExists(dp); if(!isdp){ sprintf(tmp,"trd_hv2:Sector%02d/Stack0/Layer0/Drift/SEC%02dL0Drift",sec); dp = dpAliasToName(tmp); isdp = dpExists(dp); } if(isdp){ split = strsplit(dp,"/"); //-----------------------------for HV crate-------------------------- dpGet(split[1]+"/"+split[2]+"/"+split[3]+".Actual.DeviceID",pvssserial); for(int ra = 12; ra<=14; ra++){ sprintf(tmp,"ra%d",ra); if(strpos(split[3],tmp) >= 0) sprintf(pvssrack,"%02d",ra); } for(int cr = 0; cr<=5; cr++){ sprintf(tmp,"cr%d",cr); if(strpos(split[3],tmp) >= 0) sprintf(pvsscrate,"%02d",cr); } sprintf(query,"select * from hv_loc where position='%s' order by loctime desc",pvssrack+pvsscrate); rc = dbOpenRecordset(con,query,rec,2); if(!rc){ skip = false; //if no row, add new row if(dbEOF(rec)){ if(!rc){ DebugTN("New Mapping for hv_loc!! Write the wingDB for sector"+sec+" (crate)"); isHVCrate = true; skip = true; } } //added new row //if rows are found, check to update if(!skip){ rc = dbGetField(rec,0,fld); if(fld != pvssserial && pvssserial!=""){ DebugTN("Mapping was changed for hv_loc!! Write the wingDB for sector"+sec+" (crate)"); isHVCrate = true; } } } //-----------------------for HV DRIFT----------------------------- dpGet(split[1]+"/"+split[2]+"/"+split[3]+"/"+split[4]+".Actual.DeviceID",pvssserial); sprintf(tmp,"%d",strlen(pvssserial)-1); sprintf(pvssserial,"%-"+tmp+"."+tmp+"s",pvssserial); for(int sl = 0; sl<16; sl++){ sprintf(tmp,"ma%02d",sl); if(strpos(split[4],tmp) >= 0) sprintf(pvssslot,"%02d",sl/2); } sprintf(query,"select * from hv_loc where position='%s' order by loctime desc",pvssrack+pvsscrate+pvssslot); rc = dbOpenRecordset(con,query,rec,2); if(!rc){ skip = false; //if no row, add new row if(dbEOF(rec)){ if(!rc){ DebugTN("New Mapping for hv_loc !! Write the wingDB for sector"+sec+" (drift)"); isHVModule = true; skip = true; } } if(!skip){ rc = dbGetField(rec,0,fld); if(fld != pvssserial && pvssserial!=""){ DebugTN("Mapping was changed for hv_loc!! Write the wingDB for sector"+sec+" (drift)"); isHVModule = true; } } } sprintf(query,"select * from hv_conn where position='%s' order by loctime desc",pvssrack+pvsscrate+pvssslot); rc = dbOpenRecordset(con,query,rec,2); if(!rc){ skip = false; //if no row, add new row if(dbEOF(rec)){ if(!rc){ DebugTN("New Mapping for hv_conn!! Write the wingDB for sector"+sec+" (drift)"); isHVConn = true; skip = true; } } if(!skip){ rc = dbGetField(rec,1,fld); wingsector = fld; if(wingsector != sec){ DebugTN("Mapping was changed for hv_conn!! Write the wingDB for sector"+sec+" (drift)"); if(!rc){ isHVConn = true; } } } } } //---------------------for HV ANODE---------------------- sprintf(tmp,"trd_hv:Sector%02d/Stack0/Layer0/Anode/SEC%02dL0Anode",sec,sec); dp = dpAliasToName(tmp); isdp = dpExists(dp); if(!isdp){ sprintf(tmp,"trd_hv2:Sector%02d/Stack0/Layer0/Anode/SEC%02dL0Anode",sec,sec); dp = dpAliasToName(tmp); isdp = dpExists(dp); } if(isdp){ split = strsplit(dp,"/"); dpGet(split[1]+"/"+split[2]+"/"+split[3]+"/"+split[4]+".Actual.DeviceID",pvssserial); sprintf(tmp,"%d",strlen(pvssserial)-1); sprintf(pvssserial,"%-"+tmp+"."+tmp+"s",pvssserial); for(int ra = 12; ra<=14; ra++){ sprintf(tmp,"ra%d",ra); if(strpos(split[3],tmp) >= 0) sprintf(pvssrack,"%02d",ra); } for(int cr = 0; cr<=5; cr++){ sprintf(tmp,"cr%d",cr); if(strpos(split[3],tmp) >= 0) sprintf(pvsscrate,"%02d",cr); } for(int sl = 0; sl<16; sl++){ sprintf(tmp,"ma%02d",sl); if(strpos(split[4],tmp) >= 0) sprintf(pvssslot,"%02d",sl/2); } sprintf(query,"select * from hv_loc where position='%s' order by loctime desc",pvssrack+pvsscrate+pvssslot); rc = dbOpenRecordset(con,query,rec,2); if(!rc){ skip = false; //if no row, add new row if(dbEOF(rec)){ if(!rc){ DebugTN("New Mapping for hv_loc!! Write the wingDB for sector"+sec+" (anode)"); isHVModule=true; skip = true; } } if(!skip){ rc = dbGetField(rec,0,fld); if(fld != pvssserial && pvssserial!=""){ DebugTN("Mapping was changed for hv_loc!! Write the wingDB for sector"+sec+" (anode)"); isHVModule=true; } } } sprintf(query,"select * from hv_conn where position='%s' order by loctime desc",pvssrack+pvsscrate+pvssslot); rc = dbOpenRecordset(con,query,rec,2); DebugTN(query); if(!rc){ skip = false; //if no row, add new row if(dbEOF(rec)){ if(!rc){ DebugTN("New Mapping for hv_conn!! Write the wingDB for sector"+sec+" (anode)"); isHVConn=true; skip = true; } } if(!skip){ rc = dbGetField(rec,1,fld); wingsector = fld; if(wingsector != sec){ DebugTN("Mapping was changed for hv_conn!! Write the wingDB for sector"+sec+" (anode)"); if(!rc){ isHVConn=true; } } } } } } // LV for Pretrigger for(int i=0; i<14; i++){ count = 0; if(i==0) tmp = "trd_lv:PreTrigger/PT_CBA_FEBA_B_LV/PTCBA_M6V5"; if(i==1) tmp = "trd_lv:PreTrigger/PT_CBA_FEBA_B_LV/PTCBA_P6V5"; if(i==2) tmp = "trd_lv:PreTrigger/PT_CBA_FEBA_P_LV/PTCBA_M6V5"; if(i==3) tmp = "trd_lv:PreTrigger/PT_CBA_FEBA_P_LV/PTCBA_P6V5"; if(i==4) tmp = "trd_lv:PreTrigger/PT_CBB_CBC_T0C_B_LV/PTCBB_M12V0"; if(i==5) tmp = "trd_lv:PreTrigger/PT_CBB_CBC_T0C_B_LV/PTCBB_M6V5"; if(i==6) tmp = "trd_lv:PreTrigger/PT_CBB_CBC_T0C_B_LV/PTCBB_P12V0"; if(i==7) tmp = "trd_lv:PreTrigger/PT_CBB_CBC_T0C_B_LV/PTCBB_P6V5"; if(i==8) tmp = "trd_lv:PreTrigger/PT_CBB_CBC_T0C_P_LV/PTCBB_M12V0"; if(i==9) tmp = "trd_lv:PreTrigger/PT_CBB_CBC_T0C_P_LV/PTCBB_M6V5"; if(i==10) tmp = "trd_lv:PreTrigger/PT_CBB_CBC_T0C_P_LV/PTCBB_P12V0"; if(i==11) tmp = "trd_lv:PreTrigger/PT_CBB_CBC_T0C_P_LV/PTCBB_P6V5"; if(i==12) tmp = "trd_lv:PreTrigger/PT_V0C_P_LV/PTV0C_M6V5"; if(i==13) tmp = "trd_lv:PreTrigger/PT_V0C_P_LV/PTV0C_P6V5"; dp = dpAliasToName(tmp); if(dpExists(dp)){ //Get serial number from PVSS split = strsplit(dp,"/"); pvssmodule = split[1]+"/"+split[2]+"."; dpGet(pvssmodule+"Description",pvssserial); split = strsplit(pvssserial,"(,"); count = -1; while(strpos(pvssmodule,wienerid) <= 0){ count++; sprintf(wienerid,"%03d",count); } if(dynlen(split) >= 2) pvssserialconv = split[2]; //Get rack and height from wingDB LV_CHAN if(i==0) query = "select * from LV_CHAN where GOESTO='PT-A-M65V-Backup'"; if(i==1) query = "select * from LV_CHAN where GOESTO='PT-A-P65V-Backup'"; if(i==2) query = "select * from LV_CHAN where GOESTO='PT-A-M65V-Primary'"; if(i==3) query = "select * from LV_CHAN where GOESTO='PT-A-P65V-Primary'"; if(i==4) query = "select * from LV_CHAN where GOESTO='PT-B-M120V-Backup'"; if(i==5) query = "select * from LV_CHAN where GOESTO='PT-B-M65V-Backup'"; if(i==6) query = "select * from LV_CHAN where GOESTO='PT-B-P120V-Backup'"; if(i==7) query = "select * from LV_CHAN where GOESTO='PT-B-P65V-Backup'"; if(i==8) query = "select * from LV_CHAN where GOESTO='PT-B-M120V-Primary'"; if(i==9) query = "select * from LV_CHAN where GOESTO='PT-B-M65V-Primary'"; if(i==10) query = "select * from LV_CHAN where GOESTO='PT-B-P120V-Primary'"; if(i==11) query = "select * from LV_CHAN where GOESTO='PT-B-P65V-Primary'"; if(i==12) query = "select * from LV_CHAN where GOESTO='PT-C-M65V-Primary'"; if(i==13) query = "select * from LV_CHAN where GOESTO='PT-C-P65V-Primary'"; rc = dbOpenRecordset(con,query,rec,2); if(!rc){ if(dbEOF(rec)){ DebugTN("please update wingDB via gateDB for PreTrigger"); continue; } while(!rc && !dbEOF(rec)){ rc = dbGetField(rec,0,fld); lvrack = fld; rc = dbGetField(rec,1,fld); lvheight = fld; rc = dbGetField(rec,2,fld); lvchan = fld; rc = dbGetField(rec,3,fld); lvgo = fld; rc = dbMoveNext(rec); } } count = 0; //Write serial, rack and height for wingDB LV_LOC if(pvssserialconv=="") continue; sprintf(query ,"select * from LV_LOC where SERIAL='%s' order by loctime desc",pvssserialconv); rc = dbOpenRecordset(con,query,rec,2); if(!rc){ skip = false; if(dbEOF(rec)){ if(!rc){ DebugTN("New Mapping !! Write the wingDB for LV PreTrigger "+tmp); isPTLV=true; skip = true; } } if(!skip){ rc = dbGetField(rec,1,fld); winglvrack = fld; rc = dbGetField(rec,2,fld); wingheight = fld; if(lvrack != winglvrack || lvheight != wingheight){ if(!rc){ DebugTN("Mapping was changed write the wingDB for LV PreTrigger "+tmp); isPTLV=true; } } } } sprintf(query ,"select * from lv_conn where wiener_id=%s and channel=%d order by loctime desc",wienerid,lvchan); rc = dbOpenRecordset(con,query,rec,2); if(!rc){ skip = false; if(dbEOF(rec)){ if(!rc){ DebugTN("New Mapping for LV connection!! Write the wingDB for LV PreTrigger"+tmp); isPTConn = true; skip = true; } } if(!skip){ rc = dbGetField(rec,2,fld); if(lvgo != fld){ DebugTN("Mapping was changed for LV connection!! Write the wingDB for LV PreTrigger"+tmp); isPTConn = true; } } } } } count = 0; // LV for PDB for(int i=0; i<9; i++){ count = 0; if(i!=8) sprintf(tmp,"trd_lv:TRD_PDB_LV/SEC%02d%02d",i*2+1,i*2+2); if(i==8) tmp = "trd_lv:TRD_PDB_LV/SEC1700"; dp = dpAliasToName(tmp); if(dpExists(dp)){ //Get serial number from PVSS split = strsplit(dp,"/"); pvssmodule = split[1]+"/"+split[2]+"."; dpGet(pvssmodule+"Description",pvssserial); split = strsplit(pvssserial,"(,"); count = -1; while(strpos(pvssmodule,wienerid) <= 0){ count++; sprintf(wienerid,"%03d",count); } if(dynlen(split) >= 2) pvssserialconv = split[2]; //Get rack and height from wingDB LV_CHAN sprintf(query, "select * from LV_CHAN where GOESTO='PDB-SEC%02d-SEC%02d'",i*2+1,i*2+2); if(i==8) query = "select * from LV_CHAN where GOESTO='PDB-SEC17-SEC00'"; rc = dbOpenRecordset(con,query,rec,2); if(!rc){ if(dbEOF(rec)){ DebugTN("please update wingDB via gateDB for PDB"); continue; } while(!rc && !dbEOF(rec)){ rc = dbGetField(rec,0,fld); lvrack = fld; rc = dbGetField(rec,1,fld); lvheight = fld; rc = dbGetField(rec,2,fld); lvchan = fld; rc = dbGetField(rec,3,fld); lvgo = fld; rc = dbMoveNext(rec); } } count = 0; //Write serial, rach and height for wingDB LV_LOC if(pvssserialconv=="") continue; sprintf(query ,"select * from LV_LOC where SERIAL='%s' order by loctime desc",pvssserialconv); rc = dbOpenRecordset(con,query,rec,2); if(!rc){ skip=false; if(dbEOF(rec)){ if(!rc){ DebugTN("New Mapping !! Write the wingDB for LV PDB "+tmp); isPDBLV=true; skip = true; } } if(!skip){ rc = dbGetField(rec,1,fld); winglvrack = fld; rc = dbGetField(rec,2,fld); wingheight = fld; if(lvrack != winglvrack || lvheight != wingheight){ if(!rc){ DebugTN("Mapping was changed write the wingDB for LV PDB "+tmp); isPDBLV=true; } } } } sprintf(query ,"select * from lv_conn where wiener_id=%s and channel=%d order by loctime desc",wienerid,lvchan); rc = dbOpenRecordset(con,query,rec,2); if(!rc){ skip = false; if(dbEOF(rec)){ if(!rc){ DebugTN("New Mapping for LV connection!! Write the wingDB for LV PDB"+tmp); isPDBConn = true; skip = true; } } if(!skip){ rc = dbGetField(rec,2,fld); if(lvgo != fld){ DebugTN("Mapping was changed for LV connection!! Write the wingDB for LV PDB"+tmp); isPDBConn = true; } } } } } // LV for PCU for(int i=0; i<3; i++){ count = 0; if(i==0) tmp = "trd_lv:PCU/PCU_LVchA"; if(i==1) tmp = "trd_lv:PCU/PCU_LVchB"; if(i==2) tmp = "trd_lv:PCU/PCU_LVchC"; dp = dpAliasToName(tmp); if(dpExists(dp)){ //Get serial number from PVSS split = strsplit(dp,"/"); pvssmodule = split[1]+"/"+split[2]+"."; dpGet(pvssmodule+"Description",pvssserial); split = strsplit(pvssserial,"(,"); count = -1; while(strpos(pvssmodule,wienerid) <= 0){ count++; sprintf(wienerid,"%03d",count); } if(dynlen(split) >= 2) pvssserialconv = split[2]; //Get rack and height from wingDB LV_CHAN if(i==0) query = "select * from LV_CHAN where GOESTO='PCU-channel-A'"; if(i==1) query = "select * from LV_CHAN where GOESTO='PCU-channel-B'"; if(i==2) query = "select * from LV_CHAN where GOESTO='PCU-channel-C'"; rc = dbOpenRecordset(con,query,rec,2); if(!rc){ if(dbEOF(rec)){ DebugTN("please update wingDB via gateDB for PCU"); continue; } while(!rc && !dbEOF(rec)){ rc = dbGetField(rec,0,fld); lvrack = fld; rc = dbGetField(rec,1,fld); lvheight = fld; rc = dbGetField(rec,2,fld); lvchan = fld; rc = dbGetField(rec,3,fld); lvgo = fld; rc = dbMoveNext(rec); } } count = 0; //Write serial, rach and height for wingDB LV_LOC if(pvssserialconv=="") continue; sprintf(query ,"select * from LV_LOC where SERIAL='%s' order by loctime desc",pvssserialconv); rc = dbOpenRecordset(con,query,rec,2); if(!rc){ skip=false; if(dbEOF(rec)){ if(!rc){ DebugTN("New Mapping !! Write the wingDB for LV PCU "+tmp); isPCULV=true; skip = true; } } if(!skip){ rc = dbGetField(rec,1,fld); winglvrack = fld; rc = dbGetField(rec,2,fld); wingheight = fld; if(lvrack != winglvrack || lvheight != wingheight){ if(!rc){ DebugTN("Mapping was changed write the wingDB for LV PCU "+tmp); isPCULV=true; } } } } sprintf(query ,"select * from lv_conn where wiener_id=%s and channel=%d order by loctime desc",wienerid,lvchan); rc = dbOpenRecordset(con,query,rec,2); if(!rc){ skip = false; if(dbEOF(rec)){ if(!rc){ DebugTN("New Mapping for LV connection!! Write the wingDB for LV PCU"+tmp); isPCUConn = true; skip = true; } } if(!skip){ rc = dbGetField(rec,2,fld); if(lvgo != fld){ DebugTN("Mapping was changed for LV connection!! Write the wingDB for LV PCU"+tmp); isPCUConn = true; } } } } } // LV for SM for(int i=0; i<18; i++){ //sprintf(pvsssector,"%02d",i); pvsssector = i; for(int st=0; st<10; st++){ count = 0; if(st==0) sprintf(tmp,"trd_lv:TRD_SEC%02d_LV/SEC%02dD3V3LV/SEC%02dD3V3",i,i,i); if(st==1) sprintf(tmp,"trd_lv;TRD_SEC%02d_LV/SEC%02dL01LV/SEC%02dL01A1V8",i,i,i); if(st==2) sprintf(tmp,"trd_lv:TRD_SEC%02d_LV/SEC%02dL01LV/SEC%02dL01A3V3",i,i,i); if(st==3) sprintf(tmp,"trd_lv:TRD_SEC%02d_LV/SEC%02dL01LV/SEC%02dL01D1V8",i,i,i); if(st==4) sprintf(tmp,"trd_lv;TRD_SEC%02d_LV/SEC%02dL23LV/SEC%02dL23A1V8",i,i,i); if(st==5) sprintf(tmp,"trd_lv:TRD_SEC%02d_LV/SEC%02dL23LV/SEC%02dL23A3V3",i,i,i); if(st==6) sprintf(tmp,"trd_lv:TRD_SEC%02d_LV/SEC%02dL23LV/SEC%02dL23D1V8",i,i,i); if(st==7) sprintf(tmp,"trd_lv;TRD_SEC%02d_LV/SEC%02dL45LV/SEC%02dL45A1V8",i,i,i); if(st==8) sprintf(tmp,"trd_lv:TRD_SEC%02d_LV/SEC%02dL45LV/SEC%02dL45A3V3",i,i,i); if(st==9) sprintf(tmp,"trd_lv:TRD_SEC%02d_LV/SEC%02dL45LV/SEC%02dL45D1V8",i,i,i); dp = dpAliasToName(tmp); if(dpExists(dp)){ //Get Serial number from PVSS split = strsplit(dp,"/"); pvssmodule = split[1]+"/"+split[2]+"."; dpGet(pvssmodule+"Description",pvssserial); split = strsplit(pvssserial,"(,"); count = -1; while(strpos(pvssmodule,wienerid) <= 0){ count++; sprintf(wienerid,"%03d",count); } if(dynlen(split) >= 2) pvssserialconv = split[2]; //Get rack and height from wingDB LV_CHAN sprintf(query,"select * from LV_CHAN where GOESTO='SEC%02d-",i); if(st==0) sprintf(query,"select * from LV_CHAN where GOESTO='SEC%02d-D33V-L05'",i); if(st==1) sprintf(query,"select * from LV_CHAN where GOESTO='SEC%02d-A18V-L01'",i); if(st==2) sprintf(query,"select * from LV_CHAN where GOESTO='SEC%02d-A33V-L01'",i); if(st==3) sprintf(query,"select * from LV_CHAN where GOESTO='SEC%02d-D18V-L01'",i); if(st==4) sprintf(query,"select * from LV_CHAN where GOESTO='SEC%02d-A18V-L23'",i); if(st==5) sprintf(query,"select * from LV_CHAN where GOESTO='SEC%02d-A33V-L23'",i); if(st==6) sprintf(query,"select * from LV_CHAN where GOESTO='SEC%02d-D18V-L23'",i); if(st==7) sprintf(query,"select * from LV_CHAN where GOESTO='SEC%02d-A18V-L45'",i); if(st==8) sprintf(query,"select * from LV_CHAN where GOESTO='SEC%02d-A33V-L45'",i); if(st==9) sprintf(query,"select * from LV_CHAN where GOESTO='SEC%02d-D18V-L45'",i); rc = dbOpenRecordset(con,query,rec,2); if(!rc){ if(dbEOF(rec)){ DebugTN("please update wingDB via gateDB for SM"); continue; } while(!rc && !dbEOF(rec)){ rc = dbGetField(rec,0,fld); lvrack = fld; rc = dbGetField(rec,1,fld); lvheight = fld; rc = dbGetField(rec,2,fld); lvchan = fld; rc = dbGetField(rec,3,fld); lvgo = fld; rc = dbMoveNext(rec); } } count = 0; //Write serial, rach and height for wingDB LV_LOC if(pvssserialconv=="") continue; sprintf(query ,"select * from LV_LOC where SERIAL='%s' order by loctime desc",pvssserialconv); rc = dbOpenRecordset(con,query,rec,2); if(!rc){ skip=false; if(dbEOF(rec)){ if(!rc){ DebugTN("New Mapping !! Write the wingDB for LV Sector"+pvsssector); isSMLV=true; skip = true; } } if(!skip){ rc = dbGetField(rec,1,fld); winglvrack = fld; rc = dbGetField(rec,2,fld); wingheight = fld; if(lvrack != winglvrack || lvheight != wingheight){ if(!rc){ DebugTN("Mapping was changed write the wingDB for LV sector"+pvsssector); isSMLV=true; } } } } sprintf(query ,"select * from lv_conn where wiener_id=%s and channel=%d order by loctime desc",wienerid,lvchan); rc = dbOpenRecordset(con,query,rec,2); if(!rc){ skip = false; if(dbEOF(rec)){ if(!rc){ DebugTN("New Mapping for LV connection!! Write the wingDB for LV sector"+tmp); isSMConn = true; skip = true; } } if(!skip){ rc = dbGetField(rec,2,fld); if(lvgo != fld){ DebugTN("Mapping was changed for LV connection!! Write the wingDB for LV sector"+tmp); isSMConn = true; } } } } } } dbCloseConnection(con); } if(isHVCrate == true) sendHVCrate(); if(isHVModule == true) sendHVModule(); if(isHVConn == true) sendHVConn(); if(isPTLV == true) sendPTLV(); if(isPDBLV == true) sendPDBLV(); if(isPCULV == true) sendPCULV(); if(isSMLV == true) sendSMLV(); if(isPTConn == true) sendPTConn(); if(isPDBConn == true) sendPDBConn(); if(isPCUConn == true) sendPCUConn(); if(isSMConn == true) sendSMConn(); } // -------------------------------------------------------------------------------- void sendHVCrate(){ string smtp = "cernmx.cern.ch"; string domain = "CERN.ch"; dyn_string mail; int ret; string body = "HV crate location was changed. Please execute gate2wing(if necessary) and pvss2wing"; mail[1] = "watanabe@sakura.cc.tsukuba.ac.jp"; mail[2] = "kwatanab@cern.ch"; mail[3] = "message from pvss and wingDB (HV crate)"; mail[4] = body; emSendMail(smtp,domain,mail,ret); } // -------------------------------------------------------------------------------- void sendHVModule(){ string smtp = "cernmx.cern.ch"; string domain = "CERN.ch"; dyn_string mail; int ret; string body = "HV module location was changed. Please execute gate2wing(if necessary) and pvss2wing"; mail[1] = "watanabe@sakura.cc.tsukuba.ac.jp"; mail[2] = "kwatanab@cern.ch"; mail[3] = "message from pvss and wingDB (HV module)"; mail[4] = body; emSendMail(smtp,domain,mail,ret); } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- void sendHVConn(){ string smtp = "cernmx.cern.ch"; string domain = "CERN.ch"; dyn_string mail; int ret; string body = "HV to SM Sector connection was changed. Please execute pvss2wing"; mail[1] = "watanabe@sakura.cc.tsukuba.ac.jp"; mail[2] = "kwatanab@cern.ch"; mail[3] = "message from pvss and wingDB (HV connection)"; mail[4] = body; emSendMail(smtp,domain,mail,ret); } // -------------------------------------------------------------------------------- void sendPTLV(){ string smtp = "cernmx.cern.ch"; string domain = "CERN.ch"; dyn_string mail; int ret; string body = "LV module location was changed. Please execute gate2wing(if necessary) and pvss2wing"; mail[1] = "watanabe@sakura.cc.tsukuba.ac.jp"; mail[2] = "kwatanab@cern.ch"; mail[3] = "message from pvss and wingDB (PreTrigget LV)"; mail[4] = body; emSendMail(smtp,domain,mail,ret); } // -------------------------------------------------------------------------------- void sendPTConn(){ string smtp = "cernmx.cern.ch"; string domain = "CERN.ch"; dyn_string mail; int ret; string body = "LV mapping was changed. Please execute pvss2wing"; mail[1] = "watanabe@sakura.cc.tsukuba.ac.jp"; mail[2] = "kwatanab@cern.ch"; mail[3] = "message from pvss and wingDB (PreTrigget LV)"; mail[4] = body; emSendMail(smtp,domain,mail,ret); } // -------------------------------------------------------------------------------- void sendPCULV(){ string smtp = "cernmx.cern.ch"; string domain = "CERN.ch"; dyn_string mail; int ret; string body = "LV module location was changed. Please execute gate2wing(if necessary) and pvss2wing"; mail[1] = "watanabe@sakura.cc.tsukuba.ac.jp"; mail[2] = "kwatanab@cern.ch"; mail[3] = "message from pvss and wingDB (PCU LV)"; mail[4] = body; emSendMail(smtp,domain,mail,ret); } // -------------------------------------------------------------------------------- void sendPCUConn(){ string smtp = "cernmx.cern.ch"; string domain = "CERN.ch"; dyn_string mail; int ret; string body = "LV mapping was changed. Please execute pvss2wing"; mail[1] = "watanabe@sakura.cc.tsukuba.ac.jp"; mail[2] = "kwatanab@cern.ch"; mail[3] = "message from pvss and wingDB (PCU LV)"; mail[4] = body; emSendMail(smtp,domain,mail,ret); } // -------------------------------------------------------------------------------- void sendSMLV(){ string smtp = "cernmx.cern.ch"; string domain = "CERN.ch"; dyn_string mail; int ret; string body = "LV module location was changed. Please execute gate2wing(if necessary) and pvss2wing"; mail[1] = "watanabe@sakura.cc.tsukuba.ac.jp"; mail[2] = "kwatanab@cern.ch"; mail[3] = "message from pvss and wingDB (SM LV)"; mail[4] = body; emSendMail(smtp,domain,mail,ret); } // -------------------------------------------------------------------------------- void sendSMConn(){ string smtp = "cernmx.cern.ch"; string domain = "CERN.ch"; dyn_string mail; int ret; string body = "LV mapping was changed. Please execute pvss2wing"; mail[1] = "watanabe@sakura.cc.tsukuba.ac.jp"; mail[2] = "kwatanab@cern.ch"; mail[3] = "message from pvss and wingDB (Sector LV)"; mail[4] = body; emSendMail(smtp,domain,mail,ret); } // -------------------------------------------------------------------------------- void sendPDBLV(){ string smtp = "cernmx.cern.ch"; string domain = "CERN.ch"; dyn_string mail; int ret; string body = "LV module location was changed. Please execute gate2wing(if necessary) and pvss2wing"; mail[1] = "watanabe@sakura.cc.tsukuba.ac.jp"; mail[2] = "kwatanab@cern.ch"; mail[3] = "message from pvss and wingDB (PDB LV)"; mail[4] = body; emSendMail(smtp,domain,mail,ret); } //--------------------------------------------------------------------------------- void sendPDBConn(){ string smtp = "cernmx.cern.ch"; string domain = "CERN.ch"; dyn_string mail; int ret; string body = "LV mapping was changed. Please execute pvss2wing"; mail[1] = "watanabe@sakura.cc.tsukuba.ac.jp"; mail[2] = "kwatanab@cern.ch"; mail[3] = "message from pvss and wingDB (PDB LV)"; mail[4] = body; emSendMail(smtp,domain,mail,ret); } // --------------------------------------------------------------------------------