<> <> <> DIRECTORY NSPilotSystem USING [HostNumber], NewEthernetFace USING [Status], EtherTesterOps USING [StatsType], NumberLabels USING [NumberLabel], Rope USING [ROPE], ViewerClasses USING [Viewer]; EtherTesterViewer: DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; Viewer: TYPE = ViewerClasses.Viewer; entryHeight: INTEGER = 14; xFudge: INTEGER = 4; ParseError: SIGNAL; ButtonItem: TYPE = REF ButtonItemObject; ButtonItemObject: TYPE = RECORD[ button, text: Viewer, default: ROPE, valType: ValueType]; ValueType: TYPE = {int, cardinal, rope, hostNum}; BoolItem: TYPE = REF BoolItemObject; BoolItemObject: TYPE = RECORD[ button: Viewer, proc: BoolItemProc, value: BOOL]; BoolItemProc: TYPE = PROC[value: BOOL]; StatsItem: TYPE = REF StatsItemObject; StatsItemObject: TYPE = RECORD[ box, label: Viewer, num: NumberLabels.NumberLabel, val: whichFlipper_ left, which: EtherTesterOps.StatsType, currentlyDisplayed: INT_ 0, next: StatsItem]; whichFlipper: TYPE = {left, right}; <> boardNum, sourceHost, destHost, myHost: ButtonItem; numRecvBuffers, inputBuffLen, numSendBuffers, outputBuffLen: ButtonItem; ticksBefore: ButtonItem; patternButton, hwModeButton: Viewer; statsDisplayer: StatsItem; <> ButtonAndText: PROC[name: ROPE, sib: Viewer, width: INTEGER, newLine: BOOL_ FALSE, default: ROPE_ NIL, valType: ValueType_ cardinal] RETURNS[item: ButtonItem]; ReadCard: PROC [item: ButtonItem] RETURNS[val: CARDINAL]; ReadINT: PROC[item: ButtonItem] RETURNS[val: INT]; ReadHostNum: PROC[v: Viewer] RETURNS[num: NSPilotSystem.HostNumber]; StatusToRope: PROC[s: NewEthernetFace.Status] RETURNS [r: ROPE]; MakeBoolItem: PROC[ name: ROPE, proc: BoolItemProc, sib: Viewer, init: BOOL, newLine: BOOL_ FALSE] RETURNS[button: Viewer]; PatternButton: PROC[sib: Viewer, newLine: BOOL_ FALSE]; HWModeButton: PROC[sib: Viewer, newLine: BOOL_ FALSE]; MakeStatsDisplayers: PROC[y: INTEGER, parent: Viewer]; UpdateStatsBoxes: PROC; StatsTypeToRope: PROC[which: EtherTesterOps.StatsType] RETURNS[r: ROPE]; END.