1<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="491px" preserveAspectRatio="none" style="width:564px;height:491px;background:#FFFFFF;" version="1.1" viewBox="0 0 564 491" width="564px" zoomAndPan="magnify"><defs/><g><rect fill="#FFFFFF" height="370.0641" style="stroke:#000000;stroke-width:1.0;" width="10" x="199.5" y="67.8969"/><rect fill="#FFFFFF" height="14" style="stroke:#000000;stroke-width:1.0;" width="10" x="204.5" y="193.3625"/><rect fill="#FFFFFF" height="14" style="stroke:#000000;stroke-width:1.0;" width="10" x="204.5" y="388.961"/><rect fill="#FFFFFF" height="130.8656" style="stroke:#000000;stroke-width:1.0;" width="10" x="436.5" y="97.4969"/><rect fill="#FFFFFF" height="130.8656" style="stroke:#000000;stroke-width:1.0;" width="10" x="436.5" y="293.0954"/><rect fill="#FFFFFF" height="60.7328" style="stroke:#000000;stroke-width:1.0;" width="367.5" x="153" y="154.6297"/><rect fill="#FFFFFF" height="60.7328" style="stroke:#000000;stroke-width:1.0;" width="367.5" x="153" y="350.2282"/><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="68" x2="68" y1="36.2969" y2="455.961"/><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="204" x2="204" y1="36.2969" y2="455.961"/><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="441.5" x2="441.5" y1="36.2969" y2="455.961"/><rect fill="#FFFFFF" height="30.2969" style="stroke:#000000;stroke-width:1.0;" width="97" x="20" y="5"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="83" x="27" y="24.9951">Application</text><rect fill="#FFFFFF" height="30.2969" style="stroke:#000000;stroke-width:1.0;" width="97" x="20" y="454.961"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="83" x="27" y="474.9561">Application</text><rect fill="#FFFFFF" height="30.2969" style="stroke:#000000;stroke-width:1.0;" width="63" x="173" y="5"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="49" x="180" y="24.9951">Device</text><rect fill="#FFFFFF" height="30.2969" style="stroke:#000000;stroke-width:1.0;" width="63" x="173" y="454.961"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="49" x="180" y="474.9561">Device</text><rect fill="#FFFFFF" height="30.2969" style="stroke:#000000;stroke-width:1.0;" width="118" x="382.5" y="5"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="104" x="389.5" y="24.9951">PM Subsystem</text><rect fill="#FFFFFF" height="30.2969" style="stroke:#000000;stroke-width:1.0;" width="118" x="382.5" y="454.961"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="104" x="389.5" y="474.9561">PM Subsystem</text><rect fill="#FFFFFF" height="370.0641" style="stroke:#000000;stroke-width:1.0;" width="10" x="199.5" y="67.8969"/><rect fill="#FFFFFF" height="14" style="stroke:#000000;stroke-width:1.0;" width="10" x="204.5" y="193.3625"/><rect fill="#FFFFFF" height="14" style="stroke:#000000;stroke-width:1.0;" width="10" x="204.5" y="388.961"/><rect fill="#FFFFFF" height="130.8656" style="stroke:#000000;stroke-width:1.0;" width="10" x="436.5" y="97.4969"/><rect fill="#FFFFFF" height="130.8656" style="stroke:#000000;stroke-width:1.0;" width="10" x="436.5" y="293.0954"/><polygon fill="#000000" points="187.5,63.8969,197.5,67.8969,187.5,71.8969,191.5,67.8969" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="68.5" x2="193.5" y1="67.8969" y2="67.8969"/><text fill="#000000" font-family="Courier" font-size="13" lengthAdjust="spacing" textLength="112" x="75.5" y="62.3349">operation(dev)</text><polygon fill="#000000" points="424.5,93.4969,434.5,97.4969,424.5,101.4969,428.5,97.4969" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="209.5" x2="430.5" y1="97.4969" y2="97.4969"/><text fill="#000000" font-family="Courier" font-size="13" lengthAdjust="spacing" textLength="208" x="216.5" y="91.9349">pm_device_runtime_get(dev)</text><line style="stroke:#000000;stroke-width:1.0;" x1="446.5" x2="488.5" y1="126.6297" y2="126.6297"/><line style="stroke:#000000;stroke-width:1.0;" x1="488.5" x2="488.5" y1="126.6297" y2="139.6297"/><line style="stroke:#000000;stroke-width:1.0;" x1="447.5" x2="488.5" y1="139.6297" y2="139.6297"/><polygon fill="#000000" points="457.5,135.6297,447.5,139.6297,457.5,143.6297,453.5,139.6297" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="97" x="453.5" y="121.5638">Increase usage</text><path d="M153,154.6297 L219,154.6297 L219,161.6297 L209,171.6297 L153,171.6297 L153,154.6297 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><rect fill="none" height="60.7328" style="stroke:#000000;stroke-width:1.0;" width="367.5" x="153" y="154.6297"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="21" x="168" y="167.6966">alt</text><text fill="#000000" font-family="Verdana" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="83" x="234" y="166.8402">[usage == 1]</text><polygon fill="#000000" points="225.5,189.3625,215.5,193.3625,225.5,197.3625,221.5,193.3625" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="219.5" x2="435.5" y1="193.3625" y2="193.3625"/><text fill="#000000" font-family="Courier" font-size="13" lengthAdjust="spacing" textLength="184" x="231.5" y="187.8005">PM_DEVICE_ACTION_RESUME</text><polygon fill="#000000" points="424.5,203.3625,434.5,207.3625,424.5,211.3625,428.5,207.3625" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="209.5" x2="430.5" y1="207.3625" y2="207.3625"/><polygon fill="#000000" points="220.5,224.3625,210.5,228.3625,220.5,232.3625,216.5,228.3625" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="214.5" x2="440.5" y1="228.3625" y2="228.3625"/><path d="M162,241.3625 L162,266.3625 L246,266.3625 L246,251.3625 L236,241.3625 L162,241.3625 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><path d="M236,241.3625 L236,251.3625 L246,251.3625 L236,241.3625 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="63" x="168" y="258.4294">Operation</text><polygon fill="#000000" points="424.5,289.0954,434.5,293.0954,424.5,297.0954,428.5,293.0954" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="209.5" x2="430.5" y1="293.0954" y2="293.0954"/><text fill="#000000" font-family="Courier" font-size="13" lengthAdjust="spacing" textLength="208" x="216.5" y="287.5334">pm_device_runtime_put(dev)</text><line style="stroke:#000000;stroke-width:1.0;" x1="446.5" x2="488.5" y1="322.2282" y2="322.2282"/><line style="stroke:#000000;stroke-width:1.0;" x1="488.5" x2="488.5" y1="322.2282" y2="335.2282"/><line style="stroke:#000000;stroke-width:1.0;" x1="447.5" x2="488.5" y1="335.2282" y2="335.2282"/><polygon fill="#000000" points="457.5,331.2282,447.5,335.2282,457.5,339.2282,453.5,335.2282" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="104" x="453.5" y="317.1623">Decrease usage</text><path d="M153,350.2282 L219,350.2282 L219,357.2282 L209,367.2282 L153,367.2282 L153,350.2282 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><rect fill="none" height="60.7328" style="stroke:#000000;stroke-width:1.0;" width="367.5" x="153" y="350.2282"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="21" x="168" y="363.2951">alt</text><text fill="#000000" font-family="Verdana" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="84" x="234" y="362.4386">[usage == 0]</text><polygon fill="#000000" points="225.5,384.961,215.5,388.961,225.5,392.961,221.5,388.961" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="219.5" x2="435.5" y1="388.961" y2="388.961"/><text fill="#000000" font-family="Courier" font-size="13" lengthAdjust="spacing" textLength="192" x="231.5" y="383.399">PM_DEVICE_ACTION_SUSPEND</text><polygon fill="#000000" points="424.5,398.961,434.5,402.961,424.5,406.961,428.5,402.961" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="209.5" x2="430.5" y1="402.961" y2="402.961"/><polygon fill="#000000" points="220.5,419.961,210.5,423.961,220.5,427.961,216.5,423.961" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="214.5" x2="440.5" y1="423.961" y2="423.961"/><polygon fill="#000000" points="79.5,433.961,69.5,437.961,79.5,441.961,75.5,437.961" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="73.5" x2="203.5" y1="437.961" y2="437.961"/><!--MD5=[5a0f49c6ad1fdb17cc42223735c08944] 2@startuml 3!theme plain 4 5participant "Application" as APP 6participant "Device" as DEV 7participant "PM Subsystem" as PM 8 9APP -> DEV ++: ""operation(dev)"" 10DEV -> PM ++: ""pm_device_runtime_get(dev)"" 11PM -> PM: Increase usage 12alt usage == 1 13 PM -> DEV ++: ""PM_DEVICE_ACTION_RESUME"" 14 return 15end 16return 17 18note over DEV: Operation 19 20DEV -> PM ++: ""pm_device_runtime_put(dev)"" 21PM -> PM: Decrease usage 22alt usage == 0 23 PM -> DEV ++: ""PM_DEVICE_ACTION_SUSPEND"" 24 return 25end 26return 27 28return 29@enduml 30 31@startuml 32 33 34 35 36 37 38 39<style> 40 root { 41 BackgroundColor white 42 FontColor black 43 FontName Verdana 44 HyperLinkColor blue 45 LineColor black 46 LineThickness 1 47 Margin 5 48 } 49 caption { 50 LineThickness 0 51 } 52 footer { 53 LineThickness 0 54 } 55 header { 56 LineThickness 0 57 } 58 node { 59 MaximumWidth 300 60 } 61 title { 62 FontSize 22 63 LineThickness 0 64 } 65</style> 66 67skinparam ArrowLollipopColor black 68skinparam BackgroundColor white 69skinparam DefaultFontName Verdana 70skinparam DefaultMonospacedFontName Courier 71skinparam LifelineStrategy nosolid 72skinparam ParticipantPadding 10 73skinparam SequenceLifeLineBorderColor black 74skinparam Shadowing false 75skinparam UseBetaStyle true 76 77skinparam Activity { 78 BackgroundColor white 79 BarColor black 80 BorderColor black 81 FontColor black 82 FontName Verdana 83} 84skinparam Boundary { 85 FontColor black 86} 87skinparam Box { 88 Padding 5 89} 90skinparam CircledCharacter { 91 FontColor black 92 FontName Courier 93 Radius 9 94} 95skinparam Class { 96 BackgroundColor white 97 BorderColor black 98 FontColor black 99 FontName Verdana 100} 101skinparam ClassAttribute { 102 FontColor black 103 FontName Verdana 104} 105skinparam ClassStereotype { 106 FontColor black 107 FontName Verdana 108} 109skinparam Footer { 110 FontColor black 111 FontName Verdana 112} 113skinparam Header { 114 FontColor black 115 FontName Verdana 116} 117skinparam Hyperlink { 118 Color blue 119} 120skinparam IconPackage { 121 Color black 122 BackgroundColor white 123} 124skinparam IconPrivate { 125 Color black 126 BackgroundColor white 127} 128skinparam IconProtected { 129 Color black 130 BackgroundColor white 131} 132skinparam IconPublic { 133 Color black 134 BackgroundColor white 135} 136skinparam Note { 137 FontColor black 138 FontName Verdana 139} 140skinparam Object { 141 BorderColor black 142} 143skinparam Package { 144 BorderColor black 145 FontColor black 146 FontName Verdana 147} 148skinparam State { 149 BackgroundColor white 150 BorderColor black 151} 152skinparam StereotypeA { 153 BackgroundColor white 154 BorderColor black 155} 156skinparam StereotypeC { 157 BackgroundColor white 158 BorderColor black 159} 160skinparam StereotypeE { 161 BackgroundColor white 162 BorderColor black 163} 164skinparam StereotypeI { 165 BackgroundColor white 166 BorderColor black 167} 168skinparam StereotypeN { 169 BackgroundColor white 170 BorderColor black 171} 172skinparam UseCaseStereoType { 173 FontColor black 174 FontName Verdana 175} 176 177participant "Application" as APP 178participant "Device" as DEV 179participant "PM Subsystem" as PM 180 181APP -> DEV ++: ""operation(dev)"" 182DEV -> PM ++: ""pm_device_runtime_get(dev)"" 183PM -> PM: Increase usage 184alt usage == 1 185 PM -> DEV ++: ""PM_DEVICE_ACTION_RESUME"" 186 return 187end 188return 189 190note over DEV: Operation 191 192DEV -> PM ++: ""pm_device_runtime_put(dev)"" 193PM -> PM: Decrease usage 194alt usage == 0 195 PM -> DEV ++: ""PM_DEVICE_ACTION_SUSPEND"" 196 return 197end 198return 199 200return 201@enduml 202 203PlantUML version 1.2021.14beta6(Unknown compile time) 204(GPL source distribution) 205Java Runtime: Java(TM) SE Runtime Environment 206JVM: Java HotSpot(TM) 64-Bit Server VM 207Default Encoding: UTF-8 208Language: en 209Country: US 210--></g></svg>