1 | PSXJOB ;BIR/BAB,WPB-Interface Background Job ;[ 02/12/99 1:26 PM ]
|
---|
2 | ;;2.0;CMOP;**17**;11 Apr 97
|
---|
3 | ;Watches line for incoming data and the outgoing queue.
|
---|
4 | ;Hands off control to the Master or Slave module.
|
---|
5 | EN ;Set E TIMER
|
---|
6 | S PSXTRASH=0,PSXTME=$P($H,",",2)
|
---|
7 | READX ;Read one character, expecting ENQ
|
---|
8 | G:^PSX(553,1,"S")="S" STOP
|
---|
9 | I $P($G(^PSX(553,1,0)),"^")["LEAVENWORTH" G R1
|
---|
10 | I $G(PSXQRY)=1 G ^PSXQRY
|
---|
11 | R1 R *X:$S($O(^PSX(552.1,"AQ",0)):0,1:5)
|
---|
12 | ;if read timed out, check if timer E expired or queue has outgoing
|
---|
13 | ;messages then goto master, otherwise reset params & continue idling
|
---|
14 | E D CHKE^PSXUTL G:PSXTMOUT!$D(^PSX(552.1,"AQ")) BID^PSXMST D SETPAR^PSXSTRT G READX
|
---|
15 | ;If ENQ,TERM send ACK0 and goto slave(Rec'd bid for master)
|
---|
16 | ;Else flush garbage from buffer and continue idling
|
---|
17 | E D TRASH
|
---|
18 | G:PSXTRASH>300 EN^PSXSTP G READX
|
---|
19 | TRASH ;Trash received while idling!!
|
---|
20 | S PSXTRASH=PSXTRASH+1 D FLUSH1^PSXUTL I '(PSXTRASH#5) D JOB1,LOG^PSXUTL
|
---|
21 | Q
|
---|
22 | JOB1 K LOG
|
---|
23 | S LOG(1)="JOB1 Unexpected character ("_X_") has been received ("_PSXTRASH_") times "
|
---|
24 | S LOG(2)="while Idling. Check INTERFACE connection."
|
---|
25 | Q
|
---|
26 | STOP K LOG S LOG(1)="JOB2 Stop interface request detected from DHCP."
|
---|
27 | D LOG^PSXUTL
|
---|
28 | G EN^PSXSTP
|
---|
29 | STRT ;Enter here when starting the interface
|
---|
30 | ;Flush buffers
|
---|
31 | D FLUSH1^PSXUTL
|
---|
32 | W *EOT,*TERM
|
---|
33 | K LOG S LOG(1)="JOB0 STARTING THE INTERFACE"
|
---|
34 | D LOG^PSXUTL
|
---|
35 | G EN
|
---|