*DECK CSESSM USETEXT TEXTCS USETEXT TEXTSS USETEXT TXTAPSS USETEXT TXTSMCS USETEXT TXTSUSS PROC CSESSM; # TITLE - SEND SUPERVISION MESSAGE. # BEGIN # ** CSESSM - SEND SUPERVISION MESSAGE. * * D.K. ENDO 82/03/18 * * THIS PROCEDURE SEND MESSAGES TO OPERATORS INDICATING THE SUPERVI- * SION OF AN NPU BY CS. * * PROC CSESSM * * ENTRY 1. SUP/IN/R, SUP/CB/R, OR SUP/IN/A SM. * * EXIT 2. ENTRIES IN THE OPERATOR RESPONSE QUEUE WITH THE * MESSAGES INFORMING SUPERVISION STATUS. # # **** PROC CSESSM - XREF LIST BEGINS. # XREF BEGIN PROC CSESLE; # SEND LOG (FILE) ENTRY # PROC SSCATR; # ACCEPT TIMER REQUEST # PROC SSBSBF; # STORE BIT FIELD # PROC SSTAQE; # ADD QUEUE ENTRY # FUNC XCDD C(10); # CONVERT DECIMAL INTEGER TO DISPLAY CODE # FUNC XCHD U; # CONVERT HEX INTEGER TO DISPLAY CODE # END # **** # DEF GOR$TXTL # 30 #; # CHAR COUNT OF -GO REQUIRED- TEXT # DEF LEM$TXTL # 70 #; # CHAR COUNT OF -LEVEL MISMATCH- TEXT # DEF LSP$TXTL # 50 #; # CHAR COUNT OF -LOST SUPERVISION- TEXT # DEF NCM$TXTL # 80 #; # CHAR COUNT OF -NCF MISMATCH- TEXT # DEF NPS$TXTL # 40 #; # CHAR COUNT OF NPU STATUS TEXT # DEF PCN$TXTL # 60 #; # CHAR COUNT OF -PREVIOUS NS/CS- TEXT # DEF SPG$TXTL # 40 #; # CHAR COUNT OF -SUPERVISION GAIN- TEXT # DEF UNS$TXTL # 50 #; # CHAR COUNT OF -UNKNOWN NPU- TEXT # DEF VLV$TXTL # 60 #; # CHAR COUNT OF -VERSION/LEVEL/VARIENT- TX# ITEM CNST1; # CONSTANT ---> 1 # ITEM CNST2; # CONSTANT ---> 2 # ITEM CNST3; # CONSTANT ---> 3 # ITEM NODE$ID; # NPU NODE I.D. # ITEM I; # LOOP INDUCTION VARIABLE # # THIS ARRAY DEFINES A TEMPORARY FOR STORING A CHARACTER STRING TO BE LATER PLACED IN A TEXT # ARRAY CTEMP$WORD [00:00] S(1); BEGIN ITEM CTEMP C(00,00,10); ITEM CTEMP3 C(00,42,03); END # THIS ARRAY DEFINES THE -GO REQUIRED- MESSAGE TEXT THAT IS SENT OUT WHEN A SUP/GO/R IS RECEIVED. # ARRAY GOR$TXT [00:00] S(3); BEGIN ITEM GOR$TIM C(00,00,10) = [" "]; ITEM GOR$MSG C(01,00,15) = [" GO IS REQUIRED"]; ITEM GOR$ZBYT U(02,30,30) = [0]; END # THIS ARRAY DEFINES THE -LEVEL MISMATCH- MESSAGE TEXT SENT WHEN A SUP/IN/A SM IS SENT WITH NPU$STAT OF LEVMIS. # ARRAY LEM$TXT [00:00] S(7); BEGIN ITEM LEM$TIM C(00,00,10) =[" "]; ITEM LEM$MSG C(01,00,41) = [" NCF / CCP VERSION MISMATCH, RELOAD WITH "]; ITEM LEM$VE1 U(05,06,12) ; ITEM LEM$DOT C(05,18,1) = ["."]; ITEM LEM$VE2 U(05,24,6); ITEM LEM$LEV C(05,30,09) = [" CCP VERSION"]; ITEM LEM$ZBYT U(06,36,24) = [ 0 ]; END # THIS ARRAY DEFINES THE -LOST SUPERVISION- MESSAGE TEXT THAT IS SENT OUT WHEN A SUP/CB/R IS RECEIVED. # ARRAY LSP$TXT [00:00] S(5); BEGIN ITEM LSP$TIM C(00,00,10) = [" "]; ITEM LSP$MSG C(01,00,36) = [" CONNECTION BROKEN, SUPERVISION LOST"]; ITEM LSP$ZBYT U(04,36,24) = [ 0 ]; END # THIS ARRAY DEFINES THE -NCF MISMATCH- MESSAGE TEXT SENT WHEN A SUP/IN/A SM IS SENT AND NPU$STAT IS NCFMIS. # ARRAY NCM$TXT [00:00] S(8); BEGIN ITEM NCM$TIM C(00,00,10) =[" "]; ITEM NCM$MSG C(01,00,31) = [" NCF MISMATCH/CCP NCF VERSION: "]; ITEM NCM$VE1 U(04,06,18); ITEM NCM$LEV C(04,24,09) = [", LEVEL: "]; ITEM NCM$LE1 U(05,18,18); ITEM NCM$VAR C(05,36,11) = [", VARIANT: "]; ITEM NCM$VA1 U(06,42,18); ITEM NCM$ZBYT U(07,00,60) = [ 0 ]; END # THIS ARRAY DEFINES THE NPU STATUS MESSAGE THAT IS SENT WHEN THIS PROC GETS INVOKED. IT IS THE FIRST TEXT SENT. # ARRAY NPS$TXT [00:00] S(4); BEGIN ITEM NPS$TIM C(00,00,10); ITEM NPS$NPU C(01,00,05) = ["NPU: "]; ITEM NPS$NNM C(01,30,07); ITEM NPS$ST C(02,12,04) = [",AC,"]; ITEM NPS$NID C(02,36,03); ITEM NPS$ZBYT1 U(02,54,06) = [ 0 ]; ITEM NPS$ZBYT2 U(03,00,60) = [ 0 ]; END # THIS ARRAY DEFINES THE -PREVIOUS CS/NS- MESSAGE TEXT SENT WENT A SUP/IN/R SM IS RECEIVED. # ARRAY PCN$TXT [00:00] S(6); BEGIN ITEM PCN$TIM C(00,00,10) =[" "]; ITEM PCN$PCS C(01,00,19) = [" PREVIOUS CS NODE: "]; ITEM PCN$PS C(02,54,03); ITEM PCN$PNC C(03,12,20) = [", PREVIOUS NS NODE: "]; ITEM PCN$PL C(05,12,03); ITEM PCN$ZBYT U(05,30,30) = [ 0 ]; END # THIS ARRAY DEFINES THE -SUPERVISION GAINED- MESSAGE TEXT SENT WHEN A SUP/IN/R SM IS RECEIVED. # ARRAY SPG$TXT [00:00] S(4); BEGIN ITEM SPG$TIM C(00,00,10) = [" "]; ITEM SPG$MSG C(01,00,19) = [" SUPERVISION GAINED"]; ITEM SPG$ZBYT1 U(02,54,06) = [ 0 ]; ITEM SPG$ZBYT2 U(03,00,60) = [ 0 ]; END # THIS ARRAY DEFINES THE TIMER REQUEST BLOCK USED TO REPEAT THE *NEED GO* MESSAGE IF A *GO* HAS NOT BEEN GIVEN BY AN NPU. # ARRAY TRB [00:00] S(4); BEGIN ITEM TRB$SMID U(00,00,12) = [SMID"SUPGOI"]; ITEM TRB$WC U(00,48,12) = [4]; ITEM TRB$DN U(01,06,08); # DESINTATION NODE # ITEM TRB$CNUM U(01,18,18); # CANCEL NUMBER # ITEM TRB$PFCSFC U(03,00,08) = [SUPGO]; # PFC SFC FOR SUP/GO # ITEM TRB$DELAY U(03,24,18) = [DTIME$]; # SEND EVERY MINUTE # ITEM TRB$QNUM U(03,42,18); # QUEUE NUMBER # END # THIS ARRAY DEFINES THE -UNKNOWN NPU SUPERVISION- MESSAGE, SENT WHEN A SUP/IN/UN SM IS RECEIVED. # ARRAY UNS$TXT [00:00] S(5); BEGIN ITEM UNS$TIM C(00,00,10) = [" "]; ITEM UNS$MSG1 C(01,00,20) = [" SUPERVISION REQUEST"]; ITEM UNS$MSG2 C(03,00,17) = [" FROM UNKNOWN NPU"]; ITEM UNS$ZBYT U(04,42,18) = [ 0 ]; END # THIS ARRAY DEFINES THE -VERSION/LEVEL/VARIANT- MESSAGE TEXT SENT WHEN A SUP/IN/R SM IS RECEIVED. # ARRAY VLV$TXT [00:00] P(7) ; BEGIN ITEM VLV$TIM C(00,00,10) = [" "]; ITEM VLV$VER C(01,00,14) = [" CCP VERSION: "]; ITEM VLV$VE1 U(02,24,24); ITEM VLV$LEV C(03,00,10) = [", LEVEL: "]; ITEM VLV$LE1 U(04,00,24); ITEM VLV$VAR C(04,24,11) = [", VARIANT: "]; ITEM VLV$VA1 U(05,30,24); ITEM VLV$ZBYT U(05,54,06) = [0]; ITEM VLV$ZWRD U(06,00,60) = [0] ; END CONTROL EJECT; # # # CSESSM CODE BEGINS HERE # # # # * IF THIS SM IS SUP/IN/A THEN SET THE AUDIENCE GROUP TO TWO (HOP AND * CONTROLLING NOP) AND SET THE NODE I.D. TO THE DESTINATION NODE * VALUE, ELSE SET THE AUDIENCE GROUP TO ONE (HOP AND ALL NOP-S) AND * SET THE NODE I.D. TO THE SOURCE NODE I.D. VALUE. APPEND THE * CURRENT TIME, THE NPU NAME, AND THE NODE I.D. TO THE MESSAGE. * SEND THE MESSAGE OFF TO THE OPERATOR RESPONSE QUEUE, # WCB$WORD[1] = 0; WCB$WC[1] = 2 + (NPS$TXTL / 10); ABHWORD[1] = 0; ABHTLC[1] = NPS$TXTL; IF WCB$SMID[0] EQ SMID"SUPINA" OR WCB$SMID[0] EQ SMID"SUPGO" OR WCB$SMID[0] EQ SMID"SUPGOI" OR WCB$SMID[0] EQ SMID"SUPINUN" THEN BEGIN ABHADR[1] = AUDGR4$; END ELSE BEGIN ABHADR[1] = AUDGR1$; END IF WCB$SMID[0] EQ SMID"SUPCB" OR WCB$SMID[0] EQ SMID"SUPGO" OR WCB$SMID[0] EQ SMID"SUPINUN" THEN BEGIN NODE$ID = ABHSN[0]; END ELSE BEGIN NODE$ID = ABHDN[0]; END NPS$TIM[0] = CTM$CLOCK; FOR I=0 STEP 1 WHILE NODE$ID NQ NPU$NID[I] AND I LS CSNPCNT DO BEGIN END CNST1 = 1; CNST2 = 30; CNST3 = 42; IF I LS CSNPCNT THEN BEGIN IF (WCB$SMID[0] EQ SMID"SUPGO" OR WCB$SMID[0] EQ SMID"SUPGOI") AND NPU$CNOP[I] EQ 0 THEN BEGIN ABHADR[1] = AUDGR2$; END SSBSBF(NPS$TXT,CNST1,CNST2,CNST3,B<0,42>NPU$WORD[I]); END ELSE BEGIN SSBSBF(NPS$TXT,CNST1,CNST2,CNST3," UNKNOWN"); END # * IF THIS SM IS AN INTERNAL SUP/GO REQUEST AND A GO WAS ALREADY * RECEIVED(GO FLAG IS NOT SET), THEN EXIT. # IF WCB$SMID[0] EQ SMID"SUPGOI" AND NOT NPU$GFLAG[I] THEN BEGIN RETURN; # **** RETURN **** # END ABHABN[1] = I; CTEMP[0] = XCDD(1000 + NODE$ID); NPS$NID[0] = CTEMP3[0]; SSTAQE(P,WCBUF[1],ABH[1],NPS$TXT[0]); CSESLE(NODE$ID,WCBUF[1],NPS$TXT); # * IF THIS SM IS SUP/IN/R, THEN SEND THE -SUPERVISION GAINED- MSG * OFF TO THE OPERATOR RESPONSE QUEUE. # IF WCB$SMID[0] EQ SMID"SUPINN" THEN BEGIN WCB$WC[1] = 2 + (SPG$TXTL / 10); ABHTLC[1] = SPG$TXTL; ABHADR[1] = AUDGR3$ ; SSTAQE(P,WCBUF[1],ABH[1],SPG$TXT[0]); CSESLE(NODE$ID,WCBUF[1],SPG$TXT); # * CONVERT THE CCP VERSION, LEVEL, AND VARIANT VALUES AND APPEND THEM * TO THE MESSAGE TEXT AND SEND IT OFF TO THE OPERATOR RESPONSE Q. # VLV$VE1[0] = XCHD(SUPVCVE[0]); IF SUPVCVE[0] GQ X"0037" THEN BEGIN # CCP VERSION IS 2.4.X # V24FLAG = TRUE ; CCPVERS = XCHD(SUPVCVE[0]) ; # ACTUAL VERSION OF CCP # END VLV$LE1[0] = XCHD(SUPVCLE[0]); VLV$VA1[0] = XCHD(SUPVCVA[0]); WCB$WC[1] = 2 + (VLV$TXTL / 10); ABHTLC[1] = VLV$TXTL; SSTAQE(P,WCBUF[1],ABH[1],VLV$TXT[0]); CSESLE(NODE$ID,WCBUF[1],VLV$TXT); # * AND CONVERT THE PREVIOUS CS AND NS NODE I.D.-S AND APPEND THEM TO * THE TEXT AND SEND THE TEXT OFF TO THE OPERATOR RESPONSE QUEUE. # CTEMP[0] = XCDD(1000 + SUPPS[0]); CNST1 = 2; CNST2 = 54; CNST3 = 18; SSBSBF(PCN$TXT,CNST1,CNST2,CNST3,CTEMP$WORD); CTEMP[0] = XCDD(1000 + SUPPL[0]); PCN$PL[0] = CTEMP3[0]; WCB$WC[1] = 2 + (PCN$TXTL / 10); ABHTLC[1] = PCN$TXTL; SSTAQE(P,WCBUF[1],ABH[1],PCN$TXT[0]); CSESLE(NODE$ID,WCBUF[1],PCN$TXT); END # * IF THIS SM IS SUP/CB/R, THEN SEND THE -LOST SUPERVISION-MESSAGE * TEXT OFF TO THE OPERATOR RESPONSE QUEUE. # ELSE IF WCB$SMID[0] EQ SMID"SUPCB" THEN BEGIN WCB$WC[1] = 2 + (LSP$TXTL / 10); ABHTLC[1] = LSP$TXTL; ABHADR[1] = AUDGR3$ ; SSTAQE(P,WCBUF[1],ABH[1],LSP$TXT); CSESLE(NODE$ID,WCBUF[1],LSP$TXT); END # * IF THIS SM IS SUP/IN/A, THEN SEND THE -NCF/CCP MISMATC TEXT TO * THE OPERATOR RESPONSE QUEUE. # ELSE IF WCB$SMID[0] EQ SMID"SUPINA" THEN IF NPU$STAT[I] EQ SUPSTAT"NCFMIS" THEN BEGIN NCM$VE1[0] = XCHD(SUPVCVE[0]); NCM$LE1[0] = XCHD(SUPVCLE[0]); NCM$VA1[0] = XCHD(SUPVCVA[0]); WCB$WC[1] = 2 + (NCM$TXTL / 10); ABHTLC[1] = NCM$TXTL; SSTAQE(P,WCBUF[1],ABH[1],NCM$TXT); CSESLE(NODE$ID,WCBUF[1],NCM$TXT); END ELSE # NPU$STAT EQ SUPSTAT"LEVMIS" # BEGIN LEM$VE1[0] = XCHD(B<4,8>SUPVCVE[0]); # SET HIGH LEVEL NUM # LEM$VE2[0] = B<12,6>CSNCFLEV; # LST DIGIT OF NCF LVL TO MSG # WCB$WC[1] = 2 + (LEM$TXTL / 10); ABHTLC[1] = LEM$TXTL; SSTAQE(P,WCBUF[1],ABH[1],LEM$TXT); CSESLE(NODE$ID,WCBUF[1],LEM$TXT); END # * IF THIS SM IS SUP/GO/R, THEN CHECK IF A -GO- HAS BEEN RECEIVED * YET. IF NOT, THEN SEND THE -GO REQUIRE- MESSAGE TEXT OF TO THE * OPERATOR RESPONSE QUEUE AND MAKE A TIMER REQUEST FOR ANOTHER -GO- * MESSAGE TO BE SENT. # ELSE IF WCB$SMID[0] EQ SMID"SUPGO" OR WCB$SMID[0] EQ SMID"SUPGOI" THEN BEGIN IF WCB$SMID[0] EQ SMID"SUPGO" THEN BEGIN NPU$GFLAG[I] = TRUE; END IF NPU$GFLAG[I] THEN BEGIN WCB$WC[1] = 2 +(GOR$TXTL / 10); ABHTLC[1] = GOR$TXTL; SSTAQE(P,WCBUF[1],ABH[1],GOR$TXT[0]); CSESLE(NODE$ID,WCBUF[1],GOR$TXT); TRB$DN[0] = NODE$ID; TRB$QNUM[0] = LOC(P); SSCATR(TRB); NPU$CNUM[I] = TRB$CNUM[0]; END END # IF THIS SM IS SUP/IN/UN, THEN SEND THE -UNKNOWN NPU- MESSAGE OFF TO THE OPERATOR RESPONSE QUEUE. # ELSE IF WCB$SMID[0] EQ SMID"SUPINUN" THEN BEGIN WCB$WC[1] = 2 + (UNS$TXTL / 10); SSTAQE(P,WCBUF[1],ABH[1],UNS$TXT); CSESLE(NODE$ID,WCBUF[1],UNS$TXT); END RETURN; # **** RETURN **** # END # CSESSM # TERM