Skip to content

Latest commit

 

History

History
48 lines (36 loc) · 1.64 KB

File metadata and controls

48 lines (36 loc) · 1.64 KB

Development documentation

Architecture

Astral
    TerminalModel
        TerminalStateMachine
        ReadersDiscovery
        ReaderConnection
        PaymentProcessor
    ChargeCoordinator
        ChargeViewController
    SettingsCoordinator
        SettingsViewModel -> SettingsTableViewController
        DiscoveryViewModel -> DiscoveryTableViewController
        UpdateViewModel -> UpdateTableViewController 

TerminalStateMachine

TerminalModel uses a state machine to keep its internal state, which ensures consistency and that all cases are handled.

    stateDiagram-v2 
        [*] --> noReader: No serial number saved
        noReader --> discoveringReaders: didSelectLocation
        discoveringReaders --> connecting: didSelectReader
        discoveringReaders --> discoveringReaders: didSelectLocation

        [*] --> disconnected: A serial number was saved
        disconnected --> searchingReader: reconnect
        searchingReader --> connecting: didFindReader

        connected --> disconnecting: forgetReader
        disconnecting --> noReader: didDisconnect

        connecting --> automaticUpdate: didBeginInstallingUpdate
        automaticUpdate --> connected: didEndInstallingUpdate

        connecting --> connected: didConnect
        connected --> userInitiatedUpdate: didBeginInstallingUpdate
        userInitiatedUpdate --> connected: didEndInstallingUpdate

        connected --> charging: charge
        charging --> connected: didEndCharging         
Loading

In order to make the figure clearer, the .didDisconnectUnexpectedly, and .canceled events are not represented.