11package SimpleVehicleModel{
2+ // ran 2022-11 release
23 import Definitions::*;
34 import ISQ::*;
45 package Definitions{
@@ -29,6 +30,7 @@ package SimpleVehicleModel{
2930 port ignitionCmdPort:IgnitionCmdPort;
3031 port pwrCmdPort:PwrCmdPort;
3132 port vehicleToRoadPort:VehicleToRoadPort;
33+ port statusPort:StatusPort;
3234 perform action providePower;
3335 perform action provideBraking;
3436 perform action controlDirection;
@@ -226,6 +228,7 @@ package SimpleVehicleModel{
226228 port def IgnitionCmdPort{
227229 in item ignitionCmd:IgnitionCmd;
228230 }
231+ port def StatusPort;
229232 port def GearPort;
230233 port def PwrCmdPort{
231234 in item pwrCmd:PwrCmd;
@@ -267,7 +270,7 @@ package SimpleVehicleModel{
267270
268271 port def VehicleToRoadPort;
269272 port def ControlPort;
270- port def CruiseControlPort;
273+ port def CruiseControlPort:>ControlPort ;
271274 port def SpeedSensorPort;
272275 port def SetSpeedPort;
273276
@@ -301,6 +304,7 @@ package SimpleVehicleModel{
301304 item def IgnitionCmd:>DriverCmd{
302305 attribute ignitionOnOff:IgnitionOnOff;
303306 }
307+ item def EngineStatus;
304308
305309 attribute def VehicleStartSignal;
306310 attribute def VehicleOnSignal;
@@ -320,7 +324,7 @@ package SimpleVehicleModel{
320324 interface def FuelInterface {
321325 end fuelOutPort:FuelPort;
322326 end fuelInPort:~FuelPort;
323- flow fuelOutPort.fuel to fuelInPort.fuel;
327+ flow of Fuel from fuelOutPort.fuel to fuelInPort.fuel;
324328 }
325329
326330 interface def WheelFastenerInterface{
@@ -335,6 +339,7 @@ package SimpleVehicleModel{
335339 interface wheelFastenerInterface:WheelFastenerInterface [5]
336340 connect lugNutCompositePort.lugNutPort to shankCompositePort.shankPort;
337341 }
342+
338343 connection def GenericConnection {
339344 end genericItem1:GenericItem;
340345 end genericItem2:GenericItem;
@@ -705,7 +710,7 @@ package SimpleVehicleModel{
705710 connect vehicleSoftware.vehicleController.controlPort to engine.engineControlPort;
706711 bind vehicle_b.setSpeedPort = vehicleSoftware.vehicleController.cruiseController.setSpeedPort;
707712 connect speedSensor.speedSensorPort to vehicleSoftware.vehicleController.cruiseController.speedSensorPort;
708- connect vehicleSoftware.vehicleController.cruiseController.cruiseControlPort to engine.engineControlPort ;
713+ bind vehicleSoftware.vehicleController.cruiseController.cruiseControlPort = vehicleSoftware.vehicleController.controlPort ;
709714 connect transmission.shaftPort_a to driveshaft.shaftPort_b;
710715 connect driveshaft.shaftPort_c to rearAxleAssembly.shaftPort_d;
711716 bind rearAxleAssembly.rearWheel1.wheelToRoadPort=vehicleToRoadPort.wheelToRoadPort1;
@@ -743,6 +748,51 @@ package SimpleVehicleModel{
743748 action senseTemperature: SenseTemperature;
744749 }
745750 package DiscreteInteractions{
751+ package Sequence{
752+ part def Driver{
753+ port p1;
754+ port p2;
755+ }
756+ /*
757+ part def Vehicle{
758+ port ignitionCmdPort;
759+ }
760+ item def IgnitionCmd;
761+ item def EngineStatus;
762+ */
763+
764+ part part0{
765+ perform action startVehicle{
766+ action turnVehicleOn send ignitionCmd via driver.p1{
767+ in ignitionCmd:IgnitionCmd;
768+ }
769+ action trigger1 accept ignitionCmd:IgnitionCmd via vehicle.ignitionCmdPort;
770+ flow of IgnitionCmd from trigger1.ignitionCmd to startEngine.ignitionCmd;
771+ action startEngine{
772+ in item ignitionCmd:IgnitionCmd;
773+ out item es:EngineStatus;
774+ }
775+ flow of EngineStatus from startEngine.es to sendStatus.es;
776+ action sendStatus send es via vehicle.statusPort{
777+ in es:EngineStatus;
778+ }
779+ action trigger2 accept es:EngineStatus via driver.p2;
780+ }
781+ part driver : Driver {
782+ perform startVehicle.turnVehicleOn;
783+ perform startVehicle.trigger2;
784+ event occurrence driverReady;
785+ }
786+ part vehicle : Vehicle {
787+ perform startVehicle.trigger1;
788+ perform startVehicle.sendStatus;
789+ event occurrence doorClosed;
790+ }
791+ first vehicle.doorClosed then driver.driverReady;
792+ message of ignitionCmd:IgnitionCmd from driver.turnVehicleOn to vehicle.trigger1;
793+ message of es:EngineStatus from vehicle.sendStatus to driver.trigger2;
794+ }
795+ }
746796 occurrence CruiseControl1{
747797 part vehicle_b:>PartsTree::vehicle_b{
748798 port redefines setSpeedPort{
@@ -881,7 +931,7 @@ package SimpleVehicleModel{
881931 #derivation connection {
882932 end #original ::> vehicleSpecification.vehicleMassRequirement;
883933 end #derive ::> engineSpecification.engineMassRequirement;
884- //end #derive :> other mass requirements;
934+ //end #derive :: > other mass requirements;
885935 }
886936
887937 }
@@ -1201,6 +1251,8 @@ package SimpleVehicleModel{
12011251 in massMeasured:>ISQ::mass;
12021252 out verdict = PassIf(vehicleSpecification.vehicleMassRequirement(vehicle_uut));
12031253 }
1254+ flow from weighVehicle.massMeasured to evaluatePassFail.massMeasured;
1255+ return :>> verdict = evaluatePassFail.verdict;
12041256 }
12051257 }
12061258 package VerificationSystem{
@@ -1476,7 +1528,7 @@ package SimpleVehicleModel{
14761528 // optional variation point
14771529 variation part sunroof:Sunroof;
14781530 // selection constraint
1479- assert constraint {
1531+ assert constraint selectionConstraint {
14801532 (engine==engine::engine4Cyl and transmissionChoices==TransmissionChoices::transmissionManual) xor
14811533 (engine==engine::engine6Cyl and transmissionChoices==TransmissionChoices::transmissionAutomatic)
14821534 }
@@ -1546,5 +1598,6 @@ package SimpleVehicleModel{
15461598 }
15471599 }
15481600 }
1549-
1550- }
1601+ }
1602+
1603+
0 commit comments