@startuml WaterSample participant TD as TD participant SW as SW participant UI as UI actor USER as US 'Possible actions and interaction types ' External on CANBus ' TD -> SW: MSG: Message ' SW -> TD: MSG: Message ' Internal to the application ' XX -> YY: CMD: Command ' XX -> XX: ACT: Action ' External on OS/FS ' SW -> Script: ACT: Command ' Script -> OS: CMD: Command ' Script -> SW: MSG: Message ' OS -> Script: MSG: Message ' US -> UI: User actions are: ' ASK: Display a ' ENT: User enters a value or string ' TCH: User touches a button (RadioButton, CheckBox, ...) ' SCL: User scrolls a flip-able area == Navigate to popup == US -> UI: TCH: Press Water Sample headerbar icon button UI -> UI: ACT: Water Sample Popup is displayed == Water Sample Tab == US -> UI: TCH: Select Water Sample tab US -> UI: TCH: Enter Water Sample chlorine sample result value US -> UI: TCH: Press Confirm UI -> SW: ACT: Send TD Water Sample chlorine sample result value SW -> TD: MSG: [xA3: #1] Req \n TD Water Sample Result Request \ \n\t(F32) mResult TD -> SW: MSG: [xAB: #1] Rsp \n TD Water Sample Result Response \ \n\t(F32) mResultValue SW -> UI: CMD: Update Water Sample Result\n(F32) mResultValue UI -> US: ACT: Show last result value and timestamp == Water Sample Data == TD -> SW: MSG: [xAC: #2] \nTD Broadcast\n(U32) mValve\n(U32) mTimeout SW -> UI: CMD: Update Water Sample Data\n(U32) mValve\n(U32) mTimeout UI -> US: ACT: Upate Water sample dialog \ \n\t mValve will show either primary or secondary \ \n\t mTimeout will trigger the popup to automatically open on 4 hour FW timeout == Dialsate Check Tab == US -> UI: TCH: Select Dialysate Check tab UI -> US: ACT: Display Dialysate data \ \n\tAcid Concentrate \ \n\tBicarbonate Cartridge Size \ \n\tSodium\ \n\tBicarbonate \ \n\tTheoretical Conductivity \ \n\tindependant Conductivity Reading 1\ \n\tindependant Conductivity Reading 2\ \n\tDialysate Temperature \ \n\tActual RO Rejection Percentage @enduml