// GateConPRStats.bcpl
// Last modified January 31, 1979 10:45 PM by Boggs
get "Pup0.decl"
external
[
// outgoing procedure
PrintPRStats
// incoming procedures
Ws; PutTemplate; Puts; Error; Usc
// incoming static
dsp
]
manifest prStatsVersion = 1
structure PRStats:
[
statsType word
statsVersion word
packetsReceived word 2
imAliveReceived word 2
oneFragPupRcvd word 2
twoFragPupRcvd word 2
threeFragPupRcvd word 2
wordsReceived word 2
packetsSent word 2
imAliveSent word 2
oneFragPupSent word 2
twoFragPupSent word 2
threeFragPupSent word 2
wordsSent word 2
topsSent word 2
assemblyTimeout word 2
assemblyOverflow word 2
destinationDown word 2
inputFilter word 2
oldPackets word 2
skippedPackets word 2
sequencerResets word 2
outPacketsDiscarded word 2
transferTimeout word 2
maxHosts word
hostsUp↑1,1 word
]
//----------------------------------------------------------------------------
let PrintPRStats(pbi) be
//----------------------------------------------------------------------------
[
let stats = lv pbi>>PBI.pup.words
if stats>>PRStats.statsVersion ne prStatsVersion then
[ Error("Incompatible format"); return ]
// convert from Mesa Long integer format to Bcpl double precision format:
let p = stats
while Usc(p, lv stats>>PRStats.transferTimeout) le 0 do
[
let temp = p!0; p!0 = p!1; p!1 = temp
p = p+2
]
Ws("*NPacket Radio Statistics:")
Ws("*N Pkts Alives One-F Two-F Three-F Words")
Ws("*NSent: ")
PutTemplate(dsp, "$10EUD", lv stats>>PRStats.packetsSent)
PutTemplate(dsp, "$10EUD", lv stats>>PRStats.imAliveSent)
PutTemplate(dsp, "$10EUD", lv stats>>PRStats.oneFragPupSent)
PutTemplate(dsp, "$10EUD", lv stats>>PRStats.twoFragPupSent)
PutTemplate(dsp, "$10EUD", lv stats>>PRStats.threeFragPupSent)
PutTemplate(dsp, "$10EUD", lv stats>>PRStats.wordsSent)
Ws("*NRcvd: ")
PutTemplate(dsp, "$10EUD", lv stats>>PRStats.packetsReceived)
PutTemplate(dsp, "$10EUD", lv stats>>PRStats.imAliveReceived)
PutTemplate(dsp, "$10EUD", lv stats>>PRStats.oneFragPupRcvd)
PutTemplate(dsp, "$10EUD", lv stats>>PRStats.twoFragPupRcvd)
PutTemplate(dsp, "$10EUD", lv stats>>PRStats.threeFragPupRcvd)
PutTemplate(dsp, "$10EUD", lv stats>>PRStats.wordsReceived)
Ws("*N*N")
PutTemplate(dsp, "$10EUD TOPs Sent ", lv stats>>PRStats.topsSent)
PutTemplate(dsp, "$10EUD Input Fltr", lv stats>>PRStats.inputFilter)
PutTemplate(dsp, "$10EUD Out Disc ", lv stats>>PRStats.outPacketsDiscarded)
Puts(dsp, $*N)
PutTemplate(dsp, "$10EUD Assy T-O ", lv stats>>PRStats.assemblyTimeout)
PutTemplate(dsp, "$10EUD Assy ovfl ", lv stats>>PRStats.assemblyOverflow)
PutTemplate(dsp, "$10EUD Xfer T-O ", lv stats>>PRStats.transferTimeout)
Puts(dsp, $*N)
PutTemplate(dsp, "$10EUD Old Pkts ", lv stats>>PRStats.oldPackets)
PutTemplate(dsp, "$10EUD Skipped ", lv stats>>PRStats.skippedPackets)
PutTemplate(dsp, "$10EUD Seq Resets", lv stats>>PRStats.sequencerResets)
Ws("*NPR Host Status:")
for i = 1 to stats>>PRStats.maxHosts do
PutTemplate(dsp, stats>>PRStats.hostsUp↑i? " Up", " Down")
Puts(dsp, $*N)
]