----------------------------------------------------------------------------
-- Resource Definition Model 
--
-- Mar, 1994   (Defined by RoadRobot Team
--		Written by Teresa Goncalves - UNINOVA)
----------------------------------------------------------------------------

ENTITY Resource
	ABSTRACT SUPERTYPE OF (ONEOF (CellController, CellAdministrator, 
		NonControlled_CellPerson, Consumable, Controllable_Resource, 
		Equipment));
	icon:	INTEGER;		-- for user interface
END_ENTITY;

ENTITY CellController
	SUBTYPE OF (Resource);
END_ENTITY;

ENTITY CellAdministrator
	SUBTYPE OF (Resource);
END_ENTITY;

ENTITY NonControlled_CellPerson
	SUBTYPE OF (Resource);
END_ENTITY;

ENTITY Consumable
	SUBTYPE OF (Resource);
END_ENTITY;

ENTITY Controllable_Resource
	ABSTRACT SUPERTYPE OF (ONEOF (Controlled_CellPerson, Machine))
	SUBTYPE OF (Resource);
	controlled_by:	CellController;
END_ENTITY;

ENTITY Controlled_CellPerson
	SUBTYPE OF (Controllable_Resource);
END_ENTITY;

ENTITY Equipment
	SUBTYPE OF (Resource);
END_ENTITY;

ENTITY UnregulatedEquipment
	SUBTYPE OF (Equipment);
END_ENTITY;

ENTITY Machine_Tool
	ABSTRACT SUPERTYPE OF( ONEOF( Paver_Tool, Excavator_Tool ))
	SUBTYPE OF( Equipment );
	identifier:	INTEGER;
END_ENTITY;

ENTITY Excavator_Tool
	ABSTRACT SUPERTYPE OF( ONEOF( Bucket, Hammer ))
	SUBTYPE OF( Machine_Tool );
END_ENTITY;

ENTITY Paver_Tool
	SUBTYPE OF( Machine_Tool );
END_ENTITY;

ENTITY Bucket
	SUBTYPE OF( Excavator_Tool );
	bucketCapacity:		REAL; 		-- mcubic	
END_ENTITY;

ENTITY Hammer
	SUBTYPE OF( Excavator_Tool );
END_ENTITY;

ENTITY Machine
	ABSTRACT SUPERTYPE OF (ONEOF( Hauler, Loader, Compactor, PavingProduct))
	SUBTYPE OF (Controllable_Resource);
	instance:	STRING; 	-- ResourceIdentifier
	engine:		OPTIONAL STRING;
	flywheelPower:	INTEGER; 	-- KW
	owningCost,
	operatingCost:	Money; 		-- per hour
	mach_tools:	LIST [0:?] OF Machine_Tool;
END_ENTITY;

ENTITY Hauler
	ABSTRACT SUPERTYPE OF (ONEOF( Truck, TractorScraper, Tractor))
	SUBTYPE OF (Machine);
END_ENTITY;

ENTITY Truck
	ABSTRACT SUPERTYPE OF (ONEOF (SingleTruck, ArticulatedTruck))
	SUBTYPE OF (Hauler);
END_ENTITY;

ENTITY SingleTruck
	SUBTYPE OF (Truck);
END_ENTITY;

ENTITY ArticulatedTruck
	SUBTYPE OF (Truck);
END_ENTITY;

ENTITY TractorScraper
	SUBTYPE OF (Hauler);
END_ENTITY;

ENTITY Tractor
	ABSTRACT SUPERTYPE OF (ONEOF (WeelTypeTractor, TrackTypeTractor))
	SUBTYPE OF (Hauler);
END_ENTITY;
ENTITY WeelTypeTractor
	SUBTYPE OF (Tractor);
END_ENTITY;
ENTITY TrackTypeTractor
	SUBTYPE OF (Tractor);
END_ENTITY;

ENTITY Loader
	ABSTRACT SUPERTYPE OF ( ONEOF( TypeLoader, HydraulicExcavator, 
						BackhoeExcavator))
	SUBTYPE OF (Machine);
END_ENTITY;

ENTITY TypeLoader
	ABSTRACT SUPERTYPE OF ( ONEOF( TrackTypeLoader, WeelTypeLoader ))
	SUBTYPE OF (Loader);
END_ENTITY;

ENTITY TrackTypeLoader
	SUBTYPE OF (TypeLoader);
END_ENTITY;

ENTITY WeelTypeLoader
	SUBTYPE OF (TypeLoader);
END_ENTITY;

ENTITY HydraulicExcavator
	ABSTRACT SUPERTYPE OF ( ONEOF( TrackTypeHydraulic, WeelTypeHydraulic ))
	SUBTYPE OF (Loader);
END_ENTITY;

ENTITY TrackTypeHydraulic
	SUBTYPE OF (HydraulicExcavator);
END_ENTITY;

ENTITY WeelTypeHydraulic
	SUBTYPE OF (HydraulicExcavator);
END_ENTITY;

ENTITY BackhoeExcavator
	SUBTYPE OF (Loader);
	operatingWeight:	REAL; 		-- kg		-- Backhoe
	bore:			INTEGER; 	-- mm
	stroke:			INTEGER; 	-- mm
	displacement:		INTEGER; 	-- l
	speedForward_1st,
	speedForward_2nd,
	speedForward_3rd,
	speedForward_4th:	REAL; 		-- km/h
	speedReverse_1st,
	speedReverse_2nd,
	speedReverse_3rd,
	speedReverse_4th:	REAL; 		-- km/h
	turningRadius:		INTEGER; 	-- mm
	pumpCapacity:		INTEGER; 	-- l/min
	maxDiggingDepth:	INTEGER; 	-- mm
	flat2Bottom:		INTEGER; 	-- mm
	loadingHeight:		INTEGER; 	-- mm
	reachFromRear,
	reachFromSwing:		INTEGER; 	-- mm
	loadingReach:		INTEGER; 	-- mm
	swingArc:		REAL; 		-- grad
	bucketRotation_1st,
	bucketRotation_2nd:	REAL; 		-- grad
	stabilizer_operating,
	stabilizer_transport:	INTEGER; 	-- mm
	diggingForce_bucket,
	diggingForce_stick:	REAL; 		-- kg
	levelingAngle:		REAL; 		-- grad
	width:			INTEGER; 	-- mm
	liftCapacity:		REAL; 		-- kg
	breakoutForce:		REAL; 		-- kg
	dumpHeight:		INTEGER; 	-- mm
	hingePinHeight:		INTEGER; 	-- mm
	operatingHeight:	INTEGER; 	-- mm
	diggingDepth:		INTEGER; 	-- mm
	gradingAngle:		REAL; 		-- grad
	dozerWidth:		INTEGER; 	-- mm
	maxClamOpening:		INTEGER; 	-- mm
	reach:			INTEGER; 	-- mm
	maxRollback:		REAL; 		-- kg
	weight:			REAL; 		-- kg
END_ENTITY;

ENTITY Compactor
	ABSTRACT SUPERTYPE OF ( ONEOF( SoilCompactor, LandfillCompactor))
	SUBTYPE OF (Machine);
END_ENTITY;

ENTITY SoilCompactor
	SUBTYPE OF (Compactor);
END_ENTITY;

ENTITY LandfillCompactor
	SUBTYPE OF (Compactor);
END_ENTITY;

ENTITY PavingProduct
	ABSTRACT SUPERTYPE OF (ONEOF( ColdPlanner, RoadReclaimer, 
		SoilStabilizer, MechanicalSweeper, EmulsionSprayAssembler, 
		RoadPaver, Roller))
	SUBTYPE OF (Machine); 
END_ENTITY;

ENTITY ColdPlanner
	SUBTYPE OF (PavingProduct);
END_ENTITY;

ENTITY RoadReclaimer
	SUBTYPE OF (PavingProduct);
END_ENTITY;

ENTITY SoilStabilizer
	SUBTYPE OF (PavingProduct);
END_ENTITY;

ENTITY MechanicalSweeper
	SUBTYPE OF (PavingProduct);
END_ENTITY;

ENTITY EmulsionSprayAssembler
	SUBTYPE OF (PavingProduct);
END_ENTITY;

ENTITY RoadPaver
	SUBTYPE OF (PavingProduct);
	tractorWeight,				-- Operating Weight
	screedWeight:		REAL; 		-- kg
	pavingSpeed_1st,			-- Speeds
	pavingSpeed_2nd:	REAL; 		-- m/min
	travelSpeed_3rd,
	travelSpeed_4th:	REAL; 		--km/h
	maxCapacity:		REAL; 		--t/hr
	operatingWidth,		-- Dimensions
	shippingWidth:		INTEGER; 	-- mm
	height:			INTEGER; 	-- mm
	len:			INTEGER; 	-- mm
	turningRadius:		INTEGER; 	-- mm
	wheelBase:		INTEGER; 	-- mm
	hopperCapacity:		REAL; 		-- metric
	augerDiameter:		REAL; 		-- m
	minScreed,
	maxScreed:		INTEGER; 	-- mm	-- extendable screed
	minPavingWidth,
	maxPavingWidth:		INTEGER; 	-- mm
	surfaceThickness:	REAL; 		-- cm
	crownPos,
	crownNeg:		REAL; 		-- 
	coolingSystem:		REAL; 		--l	-- Service Refill Capacities
	fuelTank:		REAL; 		--l	-- *** Comsumables ***
	fuelConsumption:	REAL; 		-- gr/kwh
	oil_tank:		REAL; 		--l
END_ENTITY;

ENTITY Roller
	ABSTRACT SUPERTYPE OF ( ONEOF( PneumaticTireRoller, VibratoryRoller))
	SUBTYPE OF (PavingProduct);
END_ENTITY;

ENTITY PneumaticTireRoller
	SUBTYPE OF (Roller);
END_ENTITY;

ENTITY VibratoryRoller
	SUBTYPE OF (Roller);
END_ENTITY;

----------------------------------------------------------------------------
-- Resource Definition Model 
----------------------------------------------------------------------------