diff --git a/docs/_static/uml/ChoosesMode.png b/docs/_static/uml/ChoosesMode.png new file mode 100644 index 00000000000..64caa83c25f Binary files /dev/null and b/docs/_static/uml/ChoosesMode.png differ diff --git a/docs/_static/uml/ChoosesParking.png b/docs/_static/uml/ChoosesParking.png new file mode 100644 index 00000000000..6720b81c4f2 Binary files /dev/null and b/docs/_static/uml/ChoosesParking.png differ diff --git a/docs/_static/uml/DrivesVehicle.png b/docs/_static/uml/DrivesVehicle.png new file mode 100644 index 00000000000..6454dcf57e1 Binary files /dev/null and b/docs/_static/uml/DrivesVehicle.png differ diff --git a/docs/_static/uml/HouseholdCAVDriverAgentFSM.png b/docs/_static/uml/HouseholdCAVDriverAgentFSM.png new file mode 100644 index 00000000000..37284d0a718 Binary files /dev/null and b/docs/_static/uml/HouseholdCAVDriverAgentFSM.png differ diff --git a/docs/_static/uml/PersonAgent.png b/docs/_static/uml/PersonAgent.png new file mode 100644 index 00000000000..716f66a61f5 Binary files /dev/null and b/docs/_static/uml/PersonAgent.png differ diff --git a/docs/_static/uml/RideHailAgentFSM.png b/docs/_static/uml/RideHailAgentFSM.png new file mode 100644 index 00000000000..916436392d5 Binary files /dev/null and b/docs/_static/uml/RideHailAgentFSM.png differ diff --git a/docs/_static/uml/TransistDriverFSM.png b/docs/_static/uml/TransistDriverFSM.png new file mode 100644 index 00000000000..80c237e2dcb Binary files /dev/null and b/docs/_static/uml/TransistDriverFSM.png differ diff --git a/docs/_static/uml/UnifiedStateFSM.png b/docs/_static/uml/UnifiedStateFSM.png new file mode 100644 index 00000000000..a8593281aac Binary files /dev/null and b/docs/_static/uml/UnifiedStateFSM.png differ diff --git a/docs/uml/ChoosesModeFSM.puml b/docs/uml/ChoosesModeFSM.puml new file mode 100755 index 00000000000..1bdda47cf73 --- /dev/null +++ b/docs/uml/ChoosesModeFSM.puml @@ -0,0 +1,24 @@ +@startuml + +scale 1000 width +skinparam stateBorderColor #black +skinparam stateFontStyle bold +skinparam arrowColor #black + +' BeamAgent: States ' +state ChoosingMode #eb1921 + +state FinishingModeChoice #eb1921 + +'Transition State' + +FinishingModeChoice -[#blue,dotted]-> WaitingForDeparture : IntermediateTransition +ChoosingMode --> ChoosingMode : MobilityStatusResponse +ChoosingMode --> ChoosingMode : RoutingResponse +ChoosingMode --> ChoosingMode : RideHailResponse +ChoosingMode --> ChoosingMode : ParkingInquiryResponse +ChoosingMode --> ChoosingMode : CavTripLegsResponse +ChoosingMode --> FinishingModeChoice + + +@enduml \ No newline at end of file diff --git a/docs/uml/ChoosesParkingFSM.puml b/docs/uml/ChoosesParkingFSM.puml new file mode 100755 index 00000000000..11e43f644cf --- /dev/null +++ b/docs/uml/ChoosesParkingFSM.puml @@ -0,0 +1,20 @@ +@startuml + +scale 1000 width +skinparam stateBorderColor #black +skinparam stateFontStyle bold +skinparam arrowColor #black + +' BeamAgent: States ' +state ReleasingParkingSpot #eb1921 + +state ChoosingParkingSpot #eb1921 + +'Transition State' +ReleasingParkingSpot --> ReleasingParkingSpot: StartLegTrigger +ReleasingParkingSpot -[#blue,dotted]-> WaitingToDrive: IntermediateTransition +ChoosingParkingSpot --> ChoosingParkingSpot : ParkingInquiryResponse +ChoosingParkingSpot --> WaitingToDrive : RoutingResponse + + +@enduml \ No newline at end of file diff --git a/docs/uml/DrivesVehicle.puml b/docs/uml/DrivesVehicle.puml new file mode 100755 index 00000000000..b089ea71d5d --- /dev/null +++ b/docs/uml/DrivesVehicle.puml @@ -0,0 +1,38 @@ +@startuml + +scale 1000 width +scale 700 height +skinparam stateBorderColor #black +skinparam stateFontStyle bold +skinparam arrowColor #black + +' BeamAgent: States ' +state Driving #eb1921 + +state DrivingInterrupted #eb1921 + +state WaitingToDrive #eb1921 + +state WaitingToDriveInterrupted #eb1921 + + +'BeamAgent Transitions' +Driving ---> ReadyToChooseParking : (EndLegTrigger,LiterallyDrivingData) +Driving ---> WaitingToDrive : (EndLegTrigger,LiterallyDrivingData) +Driving ---> PassengerScheduleEmpty :(EndLegTrigger,LiterallyDrivingData) +Driving ---> Driving : EndLegTrigger,StopDrivingIfNoPassengerOnBoard +Driving ---> DrivingInterrupted : Interrupt,StopDrivingIfNoPassengerOnBoard + +DrivingInterrupted ---> PassengerScheduleEmptyInterrupted : (StopDriving,LiterallyDrivingData) +DrivingInterrupted ---> Driving : Resume +DrivingInterrupted ---> DrivingInterrupted : EndLegTrigger,Interrupt + +WaitingToDrive ---> Driving : StartLegTrigger +WaitingToDrive ---> WaitingToDrive : Interrupt,NotifyVehicleResourceIdleReply,StopDrivingIfNoPassengerOnBoard +WaitingToDrive ---> DrivingInterrupted : StopDrivingIfNoPassengerOnBoard + + +WaitingToDriveInterrupted ---> Driving : Resume +WaitingToDriveInterrupted ---> WaitingToDriveInterrupted : TriggerWithId + +@enduml \ No newline at end of file diff --git a/docs/uml/HouseholdFSM.puml b/docs/uml/HouseholdFSM.puml new file mode 100755 index 00000000000..3325d3ab2e7 --- /dev/null +++ b/docs/uml/HouseholdFSM.puml @@ -0,0 +1,25 @@ +@startuml + +scale 1000 width +skinparam stateBorderColor #black +skinparam stateFontStyle bold +skinparam arrowColor #black + +' BeamAgent: States ' +state Uninitialized #gray + +state Idle #eb1921 + +state PassengerScheduleEmpty #eb1921 + +'Transition State' + +[*] --> Uninitialized +Uninitialized --> Idle: InitializeTrigger +Idle --> WaitingToDrive: ModifyPassengerSchedule +PassengerScheduleEmpty --> PassengerScheduleEmpty: PassengerScheduleEmptyMessage +PassengerScheduleEmpty --> Idle: Success +PassengerScheduleEmpty --> [*]: KillTrigger + + +@enduml \ No newline at end of file diff --git a/docs/uml/PersonAgent.puml b/docs/uml/PersonAgent.puml new file mode 100644 index 00000000000..1d768ac3e7c --- /dev/null +++ b/docs/uml/PersonAgent.puml @@ -0,0 +1,76 @@ +@startuml + +scale 1000 width +scale 800 height +skinparam stateBorderColor #black +skinparam stateFontStyle bold +skinparam arrowColor #black + +' BeamAgent: States ' +state Uninitialized #grey + +state Initialized #grey + +state PerformingActivity #eb1921 + +state WaitingForDeparture #eb1921 + +state WaitingForReservationConfirmation #eb1921 + +state Waiting #eb1921 + +state Moving #eb1921 + +state PassengerScheduleEmpty #eb1921 + +state ReadyToChooseParking #eb1921 + +state TryingToBoardVehicle #eb1921 + +state ProcessingNextLegOrStartActivity #eb1921 + +'BeamAgent Transitions' +[*] --> Uninitialized +Uninitialized --> Initialized :InitializeTrigger + +Initialized --> PerformingActivity : ActivityStartTrigger + + +PerformingActivity --> ChoosingMode : ActivityEndTrigger +PerformingActivity --> [*] : ActivityEndTrigger + +WaitingForDeparture --> ProcessingNextLegOrStartActivity : PersonDepartureTrigger + +WaitingForReservationConfirmation --> Waiting : ReservationResponse +WaitingForReservationConfirmation --> ChoosingMode : ReservationResponse(error) +WaitingForReservationConfirmation --> WaitingForReservationConfirmation : DelayedRideHailResponse +WaitingForReservationConfirmation --> ChoosingMode : RideHailResponseTrigger(error) +WaitingForReservationConfirmation --> Waiting : RideHailResponse +WaitingForReservationConfirmation --> ChoosingMode : RideHailResponse(error) + +Waiting --> Moving : BoardVehicleTrigger + +Moving --> ProcessingNextLegOrStartActivity : AlightVehicleTrigger + +PassengerScheduleEmpty --> ProcessingNextLegOrStartActivity: PassengerScheduleEmptyMessage + +ReadyToChooseParking -[#blue,dotted]-> ChoosingParkingSpot: IntermediateTransition + +TryingToBoardVehicle --> ProcessingNextLegOrStartActivity : Boarded +TryingToBoardVehicle --> ChoosingMode : NotAvailable + + +ProcessingNextLegOrStartActivity --> ReleasingParkingSpot : ProcessingNextLegOrStartActivity +ProcessingNextLegOrStartActivity --> WaitingToDrive : ProcessingNextLegOrStartActivity +ProcessingNextLegOrStartActivity -[#blue,dotted]-> ChoosingMode : IntermediateTransition +ProcessingNextLegOrStartActivity -[#blue,dotted]-> WaitingForReservationConfirmation : IntermediateTransition +ProcessingNextLegOrStartActivity -[#blue,dotted]-> Waiting : IntermediateTransition +ProcessingNextLegOrStartActivity -[#blue,dotted]-> PerformingActivity : IntermediateTransition +'[*] is stop event' +ProcessingNextLegOrStartActivity -[#blue,dotted]-> [*] : IntermediateTransition + + + + + +@enduml \ No newline at end of file diff --git a/docs/uml/RideHailAgentFSM.puml b/docs/uml/RideHailAgentFSM.puml new file mode 100755 index 00000000000..8d5fb9e874b --- /dev/null +++ b/docs/uml/RideHailAgentFSM.puml @@ -0,0 +1,46 @@ +@startuml + +scale 1000 width +scale 700 height +skinparam stateBorderColor #black +skinparam stateFontStyle bold +skinparam arrowColor #black + +' BeamAgent: States ' +state Uninitialized #grey + +state Idle #eb1921 + +state Offline #eb1921 + +state IdleInterrupted #eb1921 + +state PassengerScheduleEmpty #eb1921 + +state PassengerScheduleEmptyInterrupted #eb1921 + + +'BeamAgent Transitions' +[*] --> Uninitialized +Uninitialized --> Idle : InitializeTrigger +Uninitialized --> Offline : InitializeTrigger + +Offline --> Idle: StartShiftTrigger +Offline --> Offline : Interrupt,NotifyVehicleResourceIdleReply,StartRefuelTrigger,EndRefuelTrigger + +Idle --> Offline: EndShiftTrigger +Idle --> Idle: NotifyVehicleResourceIdleReply,EndRefuelTrigger,StartRefuelTrigger +Idle --> IdleInterrupted: Interrupt + +IdleInterrupted --> Idle : Resume +IdleInterrupted --> IdleInterrupted : Interrupt,NotifyVehicleResourceIdleReply +IdleInterrupted --> WaitingToDriveInterrupted : ModifyPassengerSchedule + +PassengerScheduleEmpty --> Idle : PassengerScheduleEmptyMessage +PassengerScheduleEmpty --> PassengerScheduleEmpty: Interrupt + +PassengerScheduleEmptyInterrupted --> IdleInterrupted : PassengerScheduleEmptyMessage +PassengerScheduleEmptyInterrupted --> PassengerScheduleEmptyInterrupted : ModifyPassengerSchedule,Resume,Interrupt + + +@enduml \ No newline at end of file diff --git a/docs/uml/TransistDriverFSM.puml b/docs/uml/TransistDriverFSM.puml new file mode 100755 index 00000000000..5a043809dbb --- /dev/null +++ b/docs/uml/TransistDriverFSM.puml @@ -0,0 +1,20 @@ +@startuml + +scale 1000 width +skinparam stateBorderColor #black +skinparam stateFontStyle bold +skinparam arrowColor #black + +state Uninitialized #gray + +state PassengerScheduleEmpty #eb1921 + + +[*] --> Uninitialized +Uninitialized --> WaitingToDrive : InitializeTrigger + +PassengerScheduleEmpty --> PassengerScheduleEmpty : PassengerScheduleEmptyMessage +PassengerScheduleEmpty --> [*] : KillTrigger + + +@enduml \ No newline at end of file diff --git a/docs/uml/UnifiedStateFSM.puml b/docs/uml/UnifiedStateFSM.puml new file mode 100644 index 00000000000..01a3ff8f06e --- /dev/null +++ b/docs/uml/UnifiedStateFSM.puml @@ -0,0 +1,215 @@ +@startuml + +scale 2000 width +scale 2000 height +skinparam stateBorderColor #black +skinparam stateFontStyle bold +skinparam arrowColor #black + + + +state ChoosesModes #eb1921{ + + 'Transition State' + state ChoosingMode #eb1921 + + state FinishingModeChoice #eb1921 + + FinishingModeChoice -[#blue,dotted]-> WaitingForDeparture : IntermediateTransition + ChoosingMode --> ChoosingMode : MobilityStatusResponse + ChoosingMode --> ChoosingMode : RoutingResponse + ChoosingMode --> ChoosingMode : RideHailResponse + ChoosingMode --> ChoosingMode : ParkingInquiryResponse + ChoosingMode --> ChoosingMode : CavTripLegsResponse + ChoosingMode --> FinishingModeChoice + +} + +state ChoosesParking #eb1921{ + + 'Transition State' + state ReleasingParkingSpot #eb1921 + + state ChoosingParkingSpot #eb1921 + + 'Transition State' + ReleasingParkingSpot --> ReleasingParkingSpot: StartLegTrigger + ReleasingParkingSpot -[#blue,dotted]-> WaitingToDrive: IntermediateTransition + ChoosingParkingSpot --> ChoosingParkingSpot : ParkingInquiryResponse + ChoosingParkingSpot --> WaitingToDrive : RoutingResponse + +} + +state DrivingVehicle #eb1921 { + ' BeamAgent: States ' + state Driving #eb1921 + + state DrivingInterrupted #eb1921 + + state WaitingToDrive #eb1921 + + state WaitingToDriveInterrupted #eb1921 + + + 'BeamAgent Transitions' + Driving ---> ReadyToChooseParking : (EndLegTrigger,LiterallyDrivingData) + Driving ---> WaitingToDrive : (EndLegTrigger,LiterallyDrivingData) + Driving ---> PassengerScheduleEmpty :(EndLegTrigger,LiterallyDrivingData) + Driving ---> Driving : EndLegTrigger,StopDrivingIfNoPassengerOnBoard + Driving ---> DrivingInterrupted : Interrupt,StopDrivingIfNoPassengerOnBoard + + DrivingInterrupted ---> PassengerScheduleEmptyInterrupted : (StopDriving,LiterallyDrivingData) + DrivingInterrupted ---> Driving : Resume + DrivingInterrupted ---> DrivingInterrupted : EndLegTrigger,Interrupt + + WaitingToDrive ---> Driving : StartLegTrigger + WaitingToDrive ---> WaitingToDrive : Interrupt,NotifyVehicleResourceIdleReply,StopDrivingIfNoPassengerOnBoard + WaitingToDrive ---> DrivingInterrupted : StopDrivingIfNoPassengerOnBoard + + + WaitingToDriveInterrupted ---> Driving : Resume + WaitingToDriveInterrupted ---> WaitingToDriveInterrupted : TriggerWithId + +} + +state Household #eb1921 { + ' BeamAgent: States ' + state Uninitialized #gray + + state Idle #eb1921 + + state PassengerScheduleEmpty #eb1921 + + 'Transition State' + + [*] --> Uninitialized + Uninitialized --> Idle: InitializeTrigger + Idle --> WaitingToDrive: ModifyPassengerSchedule + PassengerScheduleEmpty --> PassengerScheduleEmpty: PassengerScheduleEmptyMessage + PassengerScheduleEmpty --> Idle: Success + PassengerScheduleEmpty --> [*]: KillTrigger + +} + +state PersonAgent #eb1921 { + + state Uninitialized #grey + + state Initialized #grey + + state PerformingActivity #eb1921 + + state WaitingForDeparture #eb1921 + + state WaitingForReservationConfirmation #eb1921 + + state Waiting #eb1921 + + state Moving #eb1921 + + state PassengerScheduleEmpty #eb1921 + + state ReadyToChooseParking #eb1921 + + state TryingToBoardVehicle #eb1921 + + state ProcessingNextLegOrStartActivity #eb1921 + + 'BeamAgent Transitions' + [*] --> Uninitialized + Uninitialized --> Initialized :InitializeTrigger + + Initialized --> PerformingActivity : ActivityStartTrigger + + + PerformingActivity --> ChoosingMode : ActivityEndTrigger + PerformingActivity --> [*] : ActivityEndTrigger + + WaitingForDeparture --> ProcessingNextLegOrStartActivity : PersonDepartureTrigger + + WaitingForReservationConfirmation --> Waiting : ReservationResponse + WaitingForReservationConfirmation --> ChoosingMode : ReservationResponse(error) + WaitingForReservationConfirmation --> WaitingForReservationConfirmation : DelayedRideHailResponse + WaitingForReservationConfirmation --> ChoosingMode : RideHailResponseTrigger(error) + WaitingForReservationConfirmation --> Waiting : RideHailResponse + WaitingForReservationConfirmation --> ChoosingMode : RideHailResponse(error) + + Waiting --> Moving : BoardVehicleTrigger + + Moving --> ProcessingNextLegOrStartActivity : AlightVehicleTrigger + + PassengerScheduleEmpty --> ProcessingNextLegOrStartActivity: PassengerScheduleEmptyMessage + + ReadyToChooseParking -[#blue,dotted]-> ChoosingParkingSpot: IntermediateTransition + + TryingToBoardVehicle --> ProcessingNextLegOrStartActivity : Boarded + TryingToBoardVehicle --> ChoosingMode : NotAvailable + + + ProcessingNextLegOrStartActivity --> ReleasingParkingSpot : ProcessingNextLegOrStartActivity + ProcessingNextLegOrStartActivity --> WaitingToDrive : ProcessingNextLegOrStartActivity + ProcessingNextLegOrStartActivity -[#blue,dotted]-> ChoosingMode : IntermediateTransition + ProcessingNextLegOrStartActivity -[#blue,dotted]-> WaitingForReservationConfirmation : IntermediateTransition + ProcessingNextLegOrStartActivity -[#blue,dotted]-> Waiting : IntermediateTransition + ProcessingNextLegOrStartActivity -[#blue,dotted]-> PerformingActivity : IntermediateTransition + '[*] is stop event' + ProcessingNextLegOrStartActivity -[#blue,dotted]-> [*] : IntermediateTransition + +} + + +state RideHailAgent #eb1921 { + ' BeamAgent: States ' + state Uninitialized #grey + + state Idle #eb1921 + + state Offline #eb1921 + + state IdleInterrupted #eb1921 + + state PassengerScheduleEmpty #eb1921 + + state PassengerScheduleEmptyInterrupted #eb1921 + + + 'BeamAgent Transitions' + [*] --> Uninitialized + Uninitialized --> Idle : InitializeTrigger + Uninitialized --> Offline : InitializeTrigger + + Offline --> Idle: StartShiftTrigger + Offline --> Offline : Interrupt,NotifyVehicleResourceIdleReply,StartRefuelTrigger,EndRefuelTrigger + + Idle --> Offline: EndShiftTrigger + Idle --> Idle: NotifyVehicleResourceIdleReply,EndRefuelTrigger,StartRefuelTrigger + Idle --> IdleInterrupted: Interrupt + + IdleInterrupted --> Idle : Resume + IdleInterrupted --> IdleInterrupted : Interrupt,NotifyVehicleResourceIdleReply + IdleInterrupted --> WaitingToDriveInterrupted : ModifyPassengerSchedule + + PassengerScheduleEmpty --> Idle : PassengerScheduleEmptyMessage + PassengerScheduleEmpty --> PassengerScheduleEmpty: Interrupt + + PassengerScheduleEmptyInterrupted --> IdleInterrupted : PassengerScheduleEmptyMessage + PassengerScheduleEmptyInterrupted --> PassengerScheduleEmptyInterrupted : ModifyPassengerSchedule,Resume,Interrupt + + +} + +state TransistDriver #eb1921{ + state Uninitialized #gray + + state PassengerScheduleEmpty #eb1921 + + + [*] --> Uninitialized + Uninitialized --> WaitingToDrive : InitializeTrigger + + PassengerScheduleEmpty --> PassengerScheduleEmpty : PassengerScheduleEmptyMessage + PassengerScheduleEmpty --> [*] : KillTrigger + +} + +@enduml \ No newline at end of file