<> <> <> DIRECTORY DM, DragOpsCross, DMCtlBusModel; DMCtlBusModelImpl: CEDAR PROGRAM EXPORTS DMCtlBusModel = BEGIN OPEN DMCtlBusModel; Create: PUBLIC PROC [type: BusType] RETURNS [pbus: DM.Component] = { pbus _ NEW [DM.ComponentRec _ [ action: [Reset, PhA, EvPhA, PhB, EvPhB], history: NIL, componentType: $CtlBus, subComponents: NIL, specific: NEW [CtlBusSpecificRec _ [busType: type, signals: ALL[FALSE]]]]] }; Rd: PUBLIC PROC [sidx: SignalIndex, ctlBus: DM.Component] RETURNS [BOOL] = { pvt: CtlBusSpecific _ NARROW[ctlBus.specific]; RETURN [pvt.signals[sidx]] }; Dr: PUBLIC PROC [sidx: SignalIndex, ctlBus: DM.Component, value: BOOL] = { pvt: CtlBusSpecific _ NARROW[ctlBus.specific]; pvt.signals[sidx] _ value; }; PhA: DM.ActionProc = { }; EvPhA: DM.ActionProc = { }; PhB: DM.ActionProc = { }; EvPhB: DM.ActionProc = { }; Reset: DM.ActionProc = { component.history _ NIL }; END.