*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<ORQ>,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<ORQ>,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<ORQ>,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<ORQ>,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<ORQ>,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<ORQ>,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<ORQ>,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<ORQ>,WCBUF[1],ABH[1],GOR$TXT[0]);
CSESLE(NODE$ID,WCBUF[1],GOR$TXT);
TRB$DN[0] = NODE$ID;
TRB$QNUM[0] = LOC(P<EVQ>);
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<ORQ>,WCBUF[1],ABH[1],UNS$TXT);
CSESLE(NODE$ID,WCBUF[1],UNS$TXT);
END
RETURN; # **** RETURN **** #
END # CSESSM #
TERM