// 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) ]