@startuml
actor User
skinparam sequenceArrowThickness 1
skinparam roundcorner 10
skinparam maxmessagesize 125
skinparam sequenceParticipant underline

User -> Door: User opens door
Activate User
deActivate User
Activate Door
Door -> StationControl: DoorOpen()
deactivate Door
Activate StationControl
StationControl -> Display: IsReady()
Activate Display
Display -> User: Shows ready message
Activate User
deactivate Display
Activate USBCharger
User -> USBCharger: User Connects Phone
USBCharger -> StationControl: Connected()
deactivate USBCharger
User -> Door: User closes door
Activate Door
Door -> StationControl: DoorClosed()
deactivate Door
Display -> User: Shows Present RFID Message
User -> RFIDReader: Scans RFID
Deactivate User
Activate RFIDReader
RFIDReader -> StationControl: RfidDetected()
deactivate RFIDReader
StationControl -> Door: LockDoor()
Activate Door
deactivate Door
StationControl -> Display: IsCharging()
Activate Display
deactivate Display
StationControl -> USBCharger: StartCharge()
Activate USBCharger
deactivate USBCharger

User -> RFIDReader: Scans RFID

Activate User

Activate RFIDReader

RFIDReader -> StationControl: RfidDetected()
alt Wrong RFID detected
deactivate RFIDReader
StationControl -> Display: RFIDError()
Display -> User: Present RFID Error Message
else Correct RFID detected
StationControl -> USBCharger: StopCharge()
Activate USBCharger
deactivate USBCharger
StationControl -> Display: IsCharged()
activate Display
deactivate Display
StationControl -> Door: UnlockDoor()
Activate Door
deactivate StationControl
User -> Door: Opens Doors and takes phone

deactivate Door
deactivate User
end
@enduml