diff --git a/artwork/Diagrams/system-health-path.svg b/artwork/Diagrams/system-health-path.svg index 6d9b2b9fb..7be4ff744 100644 --- a/artwork/Diagrams/system-health-path.svg +++ b/artwork/Diagrams/system-health-path.svg @@ -7,6 +7,7 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="94.2584" @@ -483,6 +484,108 @@ inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d" /> + + + + + + + + + + + + + + + + + + + + + + + + + id="path3980" + inkscape:connector-curvature="0" /> + id="path3982" + inkscape:connector-curvature="0" /> + id="path3984" + inkscape:connector-curvature="0" /> + id="path3986" + inkscape:connector-curvature="0" /> + id="path3988" + inkscape:connector-curvature="0" /> + id="path3931" + inkscape:connector-curvature="0" /> + id="path3933" + inkscape:connector-curvature="0" /> + id="path3935" + inkscape:connector-curvature="0" /> + id="path3924" + inkscape:connector-curvature="0" /> + id="path3926" + inkscape:connector-curvature="0" /> + id="path3928" + inkscape:connector-curvature="0" /> + id="path3905" + inkscape:connector-curvature="0" /> + id="path3907" + inkscape:connector-curvature="0" /> + id="path3909" + inkscape:connector-curvature="0" /> + id="path3911" + inkscape:connector-curvature="0" /> + id="path3913" + inkscape:connector-curvature="0" /> + id="path3915" + inkscape:connector-curvature="0" /> + id="path3917" + inkscape:connector-curvature="0" /> + id="path3919" + inkscape:connector-curvature="0" /> + id="path3921" + inkscape:connector-curvature="0" /> + id="path4194" + inkscape:connector-curvature="0" /> + id="path4196" + inkscape:connector-curvature="0" /> + id="path4198" + inkscape:connector-curvature="0" /> + id="path4201" + inkscape:connector-curvature="0" /> + id="path4203" + inkscape:connector-curvature="0" /> + id="path4205" + inkscape:connector-curvature="0" /> + id="path4207" + inkscape:connector-curvature="0" /> + id="path4209" + inkscape:connector-curvature="0" /> + id="path4212" + inkscape:connector-curvature="0" /> + id="path4214" + inkscape:connector-curvature="0" /> + id="path4216" + inkscape:connector-curvature="0" /> + id="path4218" + inkscape:connector-curvature="0" /> + id="path4220" + inkscape:connector-curvature="0" /> + id="path4222" + inkscape:connector-curvature="0" /> + id="path4259" + inkscape:connector-curvature="0" /> + id="path4261" + inkscape:connector-curvature="0" /> + id="path4263" + inkscape:connector-curvature="0" /> + id="path4118" + inkscape:connector-curvature="0" /> + id="path4099" + inkscape:connector-curvature="0" /> + id="path4096" + inkscape:connector-curvature="0" /> + id="path4093" + inkscape:connector-curvature="0" /> + id="path4090" + inkscape:connector-curvature="0" /> + id="path4087" + inkscape:connector-curvature="0" /> + id="path4083" + inkscape:connector-curvature="0" /> + id="path4080" + inkscape:connector-curvature="0" /> + id="path4102" + inkscape:connector-curvature="0" /> + id="path4105" + inkscape:connector-curvature="0" /> + id="path4107" + inkscape:connector-curvature="0" /> + id="path4109" + inkscape:connector-curvature="0" /> + id="path4111" + inkscape:connector-curvature="0" /> + id="path4113" + inkscape:connector-curvature="0" /> + id="path4115" + inkscape:connector-curvature="0" /> + id="path4275" + inkscape:connector-curvature="0" /> + id="path4277" + inkscape:connector-curvature="0" /> + id="path4279" + inkscape:connector-curvature="0" /> + id="path4266" + inkscape:connector-curvature="0" /> + id="path4268" + inkscape:connector-curvature="0" /> + id="path4270" + inkscape:connector-curvature="0" /> + id="path4272" + inkscape:connector-curvature="0" /> + id="path4285" + inkscape:connector-curvature="0" /> + id="path4287" + inkscape:connector-curvature="0" /> + id="path4289" + inkscape:connector-curvature="0" /> + id="path4291" + inkscape:connector-curvature="0" /> + id="path4320" + inkscape:connector-curvature="0" /> + id="path4322" + inkscape:connector-curvature="0" /> + id="path4324" + inkscape:connector-curvature="0" /> + id="path4326" + inkscape:connector-curvature="0" /> + id="path4328" + inkscape:connector-curvature="0" /> + id="path4330" + inkscape:connector-curvature="0" /> + id="path4332" + inkscape:connector-curvature="0" /> + id="path4334" + inkscape:connector-curvature="0" /> + id="path4303" + inkscape:connector-curvature="0" /> + id="path4305" + inkscape:connector-curvature="0" /> + id="path4307" + inkscape:connector-curvature="0" /> + id="path4309" + inkscape:connector-curvature="0" /> + id="path4311" + inkscape:connector-curvature="0" /> + id="path4035" + inkscape:connector-curvature="0" /> + id="path4037" + inkscape:connector-curvature="0" /> + id="path4039" + inkscape:connector-curvature="0" /> + id="path4041" + inkscape:connector-curvature="0" /> + id="path4043" + inkscape:connector-curvature="0" /> + id="path4045" + inkscape:connector-curvature="0" /> + id="path4047" + inkscape:connector-curvature="0" /> + id="path4049" + inkscape:connector-curvature="0" /> + id="path4051" + inkscape:connector-curvature="0" /> + id="path4053" + inkscape:connector-curvature="0" /> + id="path4055" + inkscape:connector-curvature="0" /> + id="path4058" + inkscape:connector-curvature="0" /> + id="path4032" + inkscape:connector-curvature="0" /> + id="path4029" + inkscape:connector-curvature="0" /> + id="path4026" + inkscape:connector-curvature="0" /> + id="path4023" + inkscape:connector-curvature="0" /> + id="path4020" + inkscape:connector-curvature="0" /> + id="path4017" + inkscape:connector-curvature="0" /> + id="path4014" + inkscape:connector-curvature="0" /> + id="path4282" + inkscape:connector-curvature="0" /> + id="path4294" + inkscape:connector-curvature="0" /> + id="path4297" + inkscape:connector-curvature="0" /> + id="path4300" + inkscape:connector-curvature="0" /> + id="path4317" + inkscape:connector-curvature="0" /> + id="path4314" + inkscape:connector-curvature="0" /> + inkscape:label="#rect3054" + transform="translate(-497.66563,-344.28037)" /> + id="path4183" + inkscape:connector-curvature="0" /> + id="path4185" + inkscape:connector-curvature="0" /> + id="path4187" + inkscape:connector-curvature="0" /> + id="path4189" + inkscape:connector-curvature="0" /> + id="path4191" + inkscape:connector-curvature="0" /> + id="path4143" + inkscape:connector-curvature="0" /> + id="path4145" + inkscape:connector-curvature="0" /> + id="path4147" + inkscape:connector-curvature="0" /> + id="path4149" + inkscape:connector-curvature="0" /> + id="path4151" + inkscape:connector-curvature="0" /> + id="path4153" + inkscape:connector-curvature="0" /> + id="path3947" + inkscape:connector-curvature="0" /> + id="path3949" + inkscape:connector-curvature="0" /> + id="path3951" + inkscape:connector-curvature="0" /> + id="path3953" + inkscape:connector-curvature="0" /> + id="path3955" + inkscape:connector-curvature="0" /> + id="path3991" + inkscape:connector-curvature="0" /> + id="path3993" + inkscape:connector-curvature="0" /> + id="path3995" + inkscape:connector-curvature="0" /> + id="path3997" + inkscape:connector-curvature="0" /> + id="path3999" + inkscape:connector-curvature="0" /> + id="path4001" + inkscape:connector-curvature="0" /> + id="path4003" + inkscape:connector-curvature="0" /> + id="path4005" + inkscape:connector-curvature="0" /> + id="path4007" + inkscape:connector-curvature="0" /> + id="path4009" + inkscape:connector-curvature="0" /> + id="path4011" + inkscape:connector-curvature="0" /> + id="path3969" + inkscape:connector-curvature="0" /> + id="path3971" + inkscape:connector-curvature="0" /> + id="path3973" + inkscape:connector-curvature="0" /> + id="path3975" + inkscape:connector-curvature="0" /> + id="path3977" + inkscape:connector-curvature="0" /> + id="path3958" + inkscape:connector-curvature="0" /> + id="path3960" + inkscape:connector-curvature="0" /> + id="path3962" + inkscape:connector-curvature="0" /> + id="path3964" + inkscape:connector-curvature="0" /> + id="path3966" + inkscape:connector-curvature="0" /> + id="path4156" + inkscape:connector-curvature="0" /> + id="path4158" + inkscape:connector-curvature="0" /> + id="path4160" + inkscape:connector-curvature="0" /> + id="path4162" + inkscape:connector-curvature="0" /> + id="path4164" + inkscape:connector-curvature="0" /> + id="path4166" + inkscape:connector-curvature="0" /> + id="path4168" + inkscape:connector-curvature="0" /> + id="path4170" + inkscape:connector-curvature="0" /> + id="path4172" + inkscape:connector-curvature="0" /> + id="path4174" + inkscape:connector-curvature="0" /> + id="path4176" + inkscape:connector-curvature="0" /> + id="path4178" + inkscape:connector-curvature="0" /> + id="path4180" + inkscape:connector-curvature="0" /> + id="path3938" + inkscape:connector-curvature="0" /> + id="path3940" + inkscape:connector-curvature="0" /> + id="path3942" + inkscape:connector-curvature="0" /> + id="path3944" + inkscape:connector-curvature="0" /> + id="path4130" + inkscape:connector-curvature="0" /> + id="path4132" + inkscape:connector-curvature="0" /> + id="path4134" + inkscape:connector-curvature="0" /> + id="path4136" + inkscape:connector-curvature="0" /> + id="path4138" + inkscape:connector-curvature="0" /> + id="path4140" + inkscape:connector-curvature="0" /> + id="path4121" + inkscape:connector-curvature="0" /> + id="path4123" + inkscape:connector-curvature="0" /> + id="path4125" + inkscape:connector-curvature="0" /> + id="path4127" + inkscape:connector-curvature="0" /> + id="path4225" + inkscape:connector-curvature="0" /> + id="path4227" + inkscape:connector-curvature="0" /> + id="path4229" + inkscape:connector-curvature="0" /> + id="path4231" + inkscape:connector-curvature="0" /> + id="path4233" + inkscape:connector-curvature="0" /> + id="path4235" + inkscape:connector-curvature="0" /> + id="path4237" + inkscape:connector-curvature="0" /> + id="path4239" + inkscape:connector-curvature="0" /> + id="path4242" + inkscape:connector-curvature="0" /> + id="path4244" + inkscape:connector-curvature="0" /> + id="path4246" + inkscape:connector-curvature="0" /> + id="path4248" + inkscape:connector-curvature="0" /> + id="path4250" + inkscape:connector-curvature="0" /> + id="path4252" + inkscape:connector-curvature="0" /> + id="path4254" + inkscape:connector-curvature="0" /> + id="path4256" + inkscape:connector-curvature="0" /> + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/artwork/Diagrams/system-health-text.svg b/artwork/Diagrams/system-health-text.svg index 1af000d40..609816bd4 100644 --- a/artwork/Diagrams/system-health-text.svg +++ b/artwork/Diagrams/system-health-text.svg @@ -7,6 +7,7 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="94.2584" @@ -483,6 +484,187 @@ inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + style="display:inline" + sodipodi:insensitive="true"> + style="display:inline" + sodipodi:insensitive="true"> Guidance + + + + + + No Link + + + + + + + + + + + + + diff --git a/ground/openpilotgcs/share/openpilotgcs/diagrams/default/system-health.svg b/ground/openpilotgcs/share/openpilotgcs/diagrams/default/system-health.svg index 6d9b2b9fb..7be4ff744 100644 --- a/ground/openpilotgcs/share/openpilotgcs/diagrams/default/system-health.svg +++ b/ground/openpilotgcs/share/openpilotgcs/diagrams/default/system-health.svg @@ -7,6 +7,7 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="94.2584" @@ -483,6 +484,108 @@ inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d" /> + + + + + + + + + + + + + + + + + + + + + + + + + id="path3980" + inkscape:connector-curvature="0" /> + id="path3982" + inkscape:connector-curvature="0" /> + id="path3984" + inkscape:connector-curvature="0" /> + id="path3986" + inkscape:connector-curvature="0" /> + id="path3988" + inkscape:connector-curvature="0" /> + id="path3931" + inkscape:connector-curvature="0" /> + id="path3933" + inkscape:connector-curvature="0" /> + id="path3935" + inkscape:connector-curvature="0" /> + id="path3924" + inkscape:connector-curvature="0" /> + id="path3926" + inkscape:connector-curvature="0" /> + id="path3928" + inkscape:connector-curvature="0" /> + id="path3905" + inkscape:connector-curvature="0" /> + id="path3907" + inkscape:connector-curvature="0" /> + id="path3909" + inkscape:connector-curvature="0" /> + id="path3911" + inkscape:connector-curvature="0" /> + id="path3913" + inkscape:connector-curvature="0" /> + id="path3915" + inkscape:connector-curvature="0" /> + id="path3917" + inkscape:connector-curvature="0" /> + id="path3919" + inkscape:connector-curvature="0" /> + id="path3921" + inkscape:connector-curvature="0" /> + id="path4194" + inkscape:connector-curvature="0" /> + id="path4196" + inkscape:connector-curvature="0" /> + id="path4198" + inkscape:connector-curvature="0" /> + id="path4201" + inkscape:connector-curvature="0" /> + id="path4203" + inkscape:connector-curvature="0" /> + id="path4205" + inkscape:connector-curvature="0" /> + id="path4207" + inkscape:connector-curvature="0" /> + id="path4209" + inkscape:connector-curvature="0" /> + id="path4212" + inkscape:connector-curvature="0" /> + id="path4214" + inkscape:connector-curvature="0" /> + id="path4216" + inkscape:connector-curvature="0" /> + id="path4218" + inkscape:connector-curvature="0" /> + id="path4220" + inkscape:connector-curvature="0" /> + id="path4222" + inkscape:connector-curvature="0" /> + id="path4259" + inkscape:connector-curvature="0" /> + id="path4261" + inkscape:connector-curvature="0" /> + id="path4263" + inkscape:connector-curvature="0" /> + id="path4118" + inkscape:connector-curvature="0" /> + id="path4099" + inkscape:connector-curvature="0" /> + id="path4096" + inkscape:connector-curvature="0" /> + id="path4093" + inkscape:connector-curvature="0" /> + id="path4090" + inkscape:connector-curvature="0" /> + id="path4087" + inkscape:connector-curvature="0" /> + id="path4083" + inkscape:connector-curvature="0" /> + id="path4080" + inkscape:connector-curvature="0" /> + id="path4102" + inkscape:connector-curvature="0" /> + id="path4105" + inkscape:connector-curvature="0" /> + id="path4107" + inkscape:connector-curvature="0" /> + id="path4109" + inkscape:connector-curvature="0" /> + id="path4111" + inkscape:connector-curvature="0" /> + id="path4113" + inkscape:connector-curvature="0" /> + id="path4115" + inkscape:connector-curvature="0" /> + id="path4275" + inkscape:connector-curvature="0" /> + id="path4277" + inkscape:connector-curvature="0" /> + id="path4279" + inkscape:connector-curvature="0" /> + id="path4266" + inkscape:connector-curvature="0" /> + id="path4268" + inkscape:connector-curvature="0" /> + id="path4270" + inkscape:connector-curvature="0" /> + id="path4272" + inkscape:connector-curvature="0" /> + id="path4285" + inkscape:connector-curvature="0" /> + id="path4287" + inkscape:connector-curvature="0" /> + id="path4289" + inkscape:connector-curvature="0" /> + id="path4291" + inkscape:connector-curvature="0" /> + id="path4320" + inkscape:connector-curvature="0" /> + id="path4322" + inkscape:connector-curvature="0" /> + id="path4324" + inkscape:connector-curvature="0" /> + id="path4326" + inkscape:connector-curvature="0" /> + id="path4328" + inkscape:connector-curvature="0" /> + id="path4330" + inkscape:connector-curvature="0" /> + id="path4332" + inkscape:connector-curvature="0" /> + id="path4334" + inkscape:connector-curvature="0" /> + id="path4303" + inkscape:connector-curvature="0" /> + id="path4305" + inkscape:connector-curvature="0" /> + id="path4307" + inkscape:connector-curvature="0" /> + id="path4309" + inkscape:connector-curvature="0" /> + id="path4311" + inkscape:connector-curvature="0" /> + id="path4035" + inkscape:connector-curvature="0" /> + id="path4037" + inkscape:connector-curvature="0" /> + id="path4039" + inkscape:connector-curvature="0" /> + id="path4041" + inkscape:connector-curvature="0" /> + id="path4043" + inkscape:connector-curvature="0" /> + id="path4045" + inkscape:connector-curvature="0" /> + id="path4047" + inkscape:connector-curvature="0" /> + id="path4049" + inkscape:connector-curvature="0" /> + id="path4051" + inkscape:connector-curvature="0" /> + id="path4053" + inkscape:connector-curvature="0" /> + id="path4055" + inkscape:connector-curvature="0" /> + id="path4058" + inkscape:connector-curvature="0" /> + id="path4032" + inkscape:connector-curvature="0" /> + id="path4029" + inkscape:connector-curvature="0" /> + id="path4026" + inkscape:connector-curvature="0" /> + id="path4023" + inkscape:connector-curvature="0" /> + id="path4020" + inkscape:connector-curvature="0" /> + id="path4017" + inkscape:connector-curvature="0" /> + id="path4014" + inkscape:connector-curvature="0" /> + id="path4282" + inkscape:connector-curvature="0" /> + id="path4294" + inkscape:connector-curvature="0" /> + id="path4297" + inkscape:connector-curvature="0" /> + id="path4300" + inkscape:connector-curvature="0" /> + id="path4317" + inkscape:connector-curvature="0" /> + id="path4314" + inkscape:connector-curvature="0" /> + inkscape:label="#rect3054" + transform="translate(-497.66563,-344.28037)" /> + id="path4183" + inkscape:connector-curvature="0" /> + id="path4185" + inkscape:connector-curvature="0" /> + id="path4187" + inkscape:connector-curvature="0" /> + id="path4189" + inkscape:connector-curvature="0" /> + id="path4191" + inkscape:connector-curvature="0" /> + id="path4143" + inkscape:connector-curvature="0" /> + id="path4145" + inkscape:connector-curvature="0" /> + id="path4147" + inkscape:connector-curvature="0" /> + id="path4149" + inkscape:connector-curvature="0" /> + id="path4151" + inkscape:connector-curvature="0" /> + id="path4153" + inkscape:connector-curvature="0" /> + id="path3947" + inkscape:connector-curvature="0" /> + id="path3949" + inkscape:connector-curvature="0" /> + id="path3951" + inkscape:connector-curvature="0" /> + id="path3953" + inkscape:connector-curvature="0" /> + id="path3955" + inkscape:connector-curvature="0" /> + id="path3991" + inkscape:connector-curvature="0" /> + id="path3993" + inkscape:connector-curvature="0" /> + id="path3995" + inkscape:connector-curvature="0" /> + id="path3997" + inkscape:connector-curvature="0" /> + id="path3999" + inkscape:connector-curvature="0" /> + id="path4001" + inkscape:connector-curvature="0" /> + id="path4003" + inkscape:connector-curvature="0" /> + id="path4005" + inkscape:connector-curvature="0" /> + id="path4007" + inkscape:connector-curvature="0" /> + id="path4009" + inkscape:connector-curvature="0" /> + id="path4011" + inkscape:connector-curvature="0" /> + id="path3969" + inkscape:connector-curvature="0" /> + id="path3971" + inkscape:connector-curvature="0" /> + id="path3973" + inkscape:connector-curvature="0" /> + id="path3975" + inkscape:connector-curvature="0" /> + id="path3977" + inkscape:connector-curvature="0" /> + id="path3958" + inkscape:connector-curvature="0" /> + id="path3960" + inkscape:connector-curvature="0" /> + id="path3962" + inkscape:connector-curvature="0" /> + id="path3964" + inkscape:connector-curvature="0" /> + id="path3966" + inkscape:connector-curvature="0" /> + id="path4156" + inkscape:connector-curvature="0" /> + id="path4158" + inkscape:connector-curvature="0" /> + id="path4160" + inkscape:connector-curvature="0" /> + id="path4162" + inkscape:connector-curvature="0" /> + id="path4164" + inkscape:connector-curvature="0" /> + id="path4166" + inkscape:connector-curvature="0" /> + id="path4168" + inkscape:connector-curvature="0" /> + id="path4170" + inkscape:connector-curvature="0" /> + id="path4172" + inkscape:connector-curvature="0" /> + id="path4174" + inkscape:connector-curvature="0" /> + id="path4176" + inkscape:connector-curvature="0" /> + id="path4178" + inkscape:connector-curvature="0" /> + id="path4180" + inkscape:connector-curvature="0" /> + id="path3938" + inkscape:connector-curvature="0" /> + id="path3940" + inkscape:connector-curvature="0" /> + id="path3942" + inkscape:connector-curvature="0" /> + id="path3944" + inkscape:connector-curvature="0" /> + id="path4130" + inkscape:connector-curvature="0" /> + id="path4132" + inkscape:connector-curvature="0" /> + id="path4134" + inkscape:connector-curvature="0" /> + id="path4136" + inkscape:connector-curvature="0" /> + id="path4138" + inkscape:connector-curvature="0" /> + id="path4140" + inkscape:connector-curvature="0" /> + id="path4121" + inkscape:connector-curvature="0" /> + id="path4123" + inkscape:connector-curvature="0" /> + id="path4125" + inkscape:connector-curvature="0" /> + id="path4127" + inkscape:connector-curvature="0" /> + id="path4225" + inkscape:connector-curvature="0" /> + id="path4227" + inkscape:connector-curvature="0" /> + id="path4229" + inkscape:connector-curvature="0" /> + id="path4231" + inkscape:connector-curvature="0" /> + id="path4233" + inkscape:connector-curvature="0" /> + id="path4235" + inkscape:connector-curvature="0" /> + id="path4237" + inkscape:connector-curvature="0" /> + id="path4239" + inkscape:connector-curvature="0" /> + id="path4242" + inkscape:connector-curvature="0" /> + id="path4244" + inkscape:connector-curvature="0" /> + id="path4246" + inkscape:connector-curvature="0" /> + id="path4248" + inkscape:connector-curvature="0" /> + id="path4250" + inkscape:connector-curvature="0" /> + id="path4252" + inkscape:connector-curvature="0" /> + id="path4254" + inkscape:connector-curvature="0" /> + id="path4256" + inkscape:connector-curvature="0" /> + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ground/openpilotgcs/src/plugins/systemhealth/SystemHealthGadget.pluginspec b/ground/openpilotgcs/src/plugins/systemhealth/SystemHealthGadget.pluginspec index c48915fcb..7b055304a 100644 --- a/ground/openpilotgcs/src/plugins/systemhealth/SystemHealthGadget.pluginspec +++ b/ground/openpilotgcs/src/plugins/systemhealth/SystemHealthGadget.pluginspec @@ -7,5 +7,6 @@ + diff --git a/ground/openpilotgcs/src/plugins/systemhealth/systemhealth.pro b/ground/openpilotgcs/src/plugins/systemhealth/systemhealth.pro index a2ba3fc60..b053a7430 100644 --- a/ground/openpilotgcs/src/plugins/systemhealth/systemhealth.pro +++ b/ground/openpilotgcs/src/plugins/systemhealth/systemhealth.pro @@ -4,7 +4,6 @@ QT += svg include(../../openpilotgcsplugin.pri) include(../../plugins/coreplugin/coreplugin.pri) include(systemhealth_dependencies.pri) -include(../../libs/qwt/qwt.pri) HEADERS += systemhealthplugin.h HEADERS += systemhealthgadget.h HEADERS += systemhealthgadgetwidget.h diff --git a/ground/openpilotgcs/src/plugins/systemhealth/systemhealth_dependencies.pri b/ground/openpilotgcs/src/plugins/systemhealth/systemhealth_dependencies.pri index ad54b0073..7750ae9aa 100644 --- a/ground/openpilotgcs/src/plugins/systemhealth/systemhealth_dependencies.pri +++ b/ground/openpilotgcs/src/plugins/systemhealth/systemhealth_dependencies.pri @@ -1,3 +1,2 @@ include(../../plugins/uavobjects/uavobjects.pri) -#include(../../plugins/coreplugin/coreplugin.pri) -#include(../../libs/utils/utils.pri) +include(../../plugins/uavtalk/uavtalk.pri) diff --git a/ground/openpilotgcs/src/plugins/systemhealth/systemhealthgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/systemhealth/systemhealthgadgetwidget.cpp index 6d93031ad..7a0d5066f 100644 --- a/ground/openpilotgcs/src/plugins/systemhealth/systemhealthgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/systemhealth/systemhealthgadgetwidget.cpp @@ -1,164 +1,187 @@ -/** - ****************************************************************************** - * - * @file systemhealthgadgetwidget.cpp - * @author Edouard Lafargue Copyright (C) 2010. - * @addtogroup GCSPlugins GCS Plugins - * @{ - * @addtogroup SystemHealthPlugin System Health Plugin - * @{ - * @brief The System Health gadget plugin - *****************************************************************************/ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "systemhealthgadgetwidget.h" -#include "utils/stylehelper.h" -#include "extensionsystem/pluginmanager.h" -#include "uavobjectmanager.h" -#include "systemalarms.h" - -#include -#include -#include - -/* - * Initialize the widget - */ -SystemHealthGadgetWidget::SystemHealthGadgetWidget(QWidget *parent) : QGraphicsView(parent) -{ - setMinimumSize(128,128); - setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); - setScene(new QGraphicsScene(this)); - - - m_renderer = new QSvgRenderer(); - background = new QGraphicsSvgItem(); - foreground = new QGraphicsSvgItem(); - - paint(); - - // Now connect the widget to the SystemAlarms UAVObject - ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); - UAVObjectManager *objManager = pm->getObject(); - - SystemAlarms* obj = dynamic_cast(objManager->getObject(QString("SystemAlarms"))); - connect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(updateAlarms(UAVObject*))); - -} - -void SystemHealthGadgetWidget::updateAlarms(UAVObject* systemAlarm) -{ - // This code does not know anything about alarms beforehand, and - // I found to efficient way to locate items inside the scene by - // name, so it's just as simple to reset the scene: - // And add the one with the right name. - QGraphicsScene *m_scene = scene(); - foreach ( QGraphicsItem* item ,background->childItems()){ - m_scene->removeItem(item); - delete item; // removeItem does _not_ delete the item. - } - - QString alarm = systemAlarm->getName(); - foreach (UAVObjectField *field, systemAlarm->getFields()) { - for (uint i = 0; i < field->getNumElements(); ++i) { - QString element = field->getElementNames()[i]; - QString value = field->getValue(i).toString(); - if (m_renderer->elementExists(element)) { - QMatrix blockMatrix = m_renderer->matrixForElement(element); - qreal startX = blockMatrix.mapRect(m_renderer->boundsOnElement(element)).x(); - qreal startY = blockMatrix.mapRect(m_renderer->boundsOnElement(element)).y(); - QString element2 = element + "-" + value; - if (m_renderer->elementExists(element2)) { - QGraphicsSvgItem *ind = new QGraphicsSvgItem(); - ind->setSharedRenderer(m_renderer); - ind->setElementId(element2); - ind->setParentItem(background); - QTransform matrix; - matrix.translate(startX,startY); - ind->setTransform(matrix,false); - } else { - if (value.compare("Uninitialised")!=0)qDebug() << "Warning: element " << element2 << " not found in SVG."; - } - } else { - qDebug() << "Warning: Element " << element << " not found in SVG."; - } - } - } -} - -SystemHealthGadgetWidget::~SystemHealthGadgetWidget() -{ - // Do nothing -} - - -void SystemHealthGadgetWidget::setSystemFile(QString dfn) -{ - setBackgroundBrush(QBrush(Utils::StyleHelper::baseColor())); - if (QFile::exists(dfn)) - { - m_renderer->load(dfn); - if(m_renderer->isValid()) - { - fgenabled = false; - - background->setSharedRenderer(m_renderer); - background->setElementId("background"); - - if (m_renderer->elementExists("foreground")) { - foreground->setSharedRenderer(m_renderer); - foreground->setElementId("foreground"); - foreground->setZValue(99); - fgenabled = true; - } - std::cout<<"Dial file loaded"<setSceneRect(background->boundingRect()); - fitInView(background, Qt::KeepAspectRatio ); - } - } - else - { qDebug() <<"SystemHealthGadget: no file"; } -} - -void SystemHealthGadgetWidget::paint() -{ - QGraphicsScene *l_scene = scene(); - l_scene->clear(); - l_scene->addItem(background); - l_scene->addItem(foreground); - update(); -} - -void SystemHealthGadgetWidget::paintEvent(QPaintEvent *event) -{ - // Skip painting until the dial file is loaded - if (! m_renderer->isValid()) { - qDebug() <<"SystemHealthGadget: System file not loaded, not rendering"; - return; - } - QGraphicsView::paintEvent(event); -} - -// This event enables the dial to be dynamically resized -// whenever the gadget is resized, taking advantage of the vector -// nature of SVG dials. -void SystemHealthGadgetWidget::resizeEvent(QResizeEvent *event) -{ - Q_UNUSED(event); - fitInView(background, Qt::KeepAspectRatio ); -} +/** + ****************************************************************************** + * + * @file systemhealthgadgetwidget.cpp + * @author Edouard Lafargue Copyright (C) 2010. + * @addtogroup GCSPlugins GCS Plugins + * @{ + * @addtogroup SystemHealthPlugin System Health Plugin + * @{ + * @brief The System Health gadget plugin + *****************************************************************************/ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "systemhealthgadgetwidget.h" +#include "utils/stylehelper.h" +#include "extensionsystem/pluginmanager.h" +#include "uavobjectmanager.h" +#include "systemalarms.h" + +#include + +/* + * Initialize the widget + */ +SystemHealthGadgetWidget::SystemHealthGadgetWidget(QWidget *parent) : QGraphicsView(parent) +{ + setMinimumSize(128,128); + setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); + setScene(new QGraphicsScene(this)); + + + m_renderer = new QSvgRenderer(); + background = new QGraphicsSvgItem(); + foreground = new QGraphicsSvgItem(); + nolink = new QGraphicsSvgItem(); + + paint(); + + // Now connect the widget to the SystemAlarms UAVObject + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + UAVObjectManager *objManager = pm->getObject(); + + SystemAlarms* obj = dynamic_cast(objManager->getObject(QString("SystemAlarms"))); + connect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(updateAlarms(UAVObject*))); + + // Listen to autopilot connection events + TelemetryManager* telMngr = pm->getObject(); + connect(telMngr, SIGNAL(connected()), this, SLOT(onAutopilotConnect())); + connect(telMngr, SIGNAL(disconnected()), this, SLOT(onAutopilotDisconnect())); + +} + +/** + * Hide the "No Link" overlay + */ +void SystemHealthGadgetWidget::onAutopilotConnect() +{ + nolink->setVisible(false); +} + +/** + * Show the "No Link" overlay + */ +void SystemHealthGadgetWidget::onAutopilotDisconnect() +{ + nolink->setVisible(true); +} + +void SystemHealthGadgetWidget::updateAlarms(UAVObject* systemAlarm) +{ + // This code does not know anything about alarms beforehand, and + // I found no efficient way to locate items inside the scene by + // name, so it's just as simple to reset the scene: + // And add the one with the right name. + QGraphicsScene *m_scene = scene(); + foreach ( QGraphicsItem* item ,background->childItems()){ + m_scene->removeItem(item); + delete item; // removeItem does _not_ delete the item. + } + + QString alarm = systemAlarm->getName(); + foreach (UAVObjectField *field, systemAlarm->getFields()) { + for (uint i = 0; i < field->getNumElements(); ++i) { + QString element = field->getElementNames()[i]; + QString value = field->getValue(i).toString(); + if (m_renderer->elementExists(element)) { + QMatrix blockMatrix = m_renderer->matrixForElement(element); + qreal startX = blockMatrix.mapRect(m_renderer->boundsOnElement(element)).x(); + qreal startY = blockMatrix.mapRect(m_renderer->boundsOnElement(element)).y(); + QString element2 = element + "-" + value; + if (m_renderer->elementExists(element2)) { + QGraphicsSvgItem *ind = new QGraphicsSvgItem(); + ind->setSharedRenderer(m_renderer); + ind->setElementId(element2); + ind->setParentItem(background); + QTransform matrix; + matrix.translate(startX,startY); + ind->setTransform(matrix,false); + } else { + if (value.compare("Uninitialised")!=0)qDebug() << "Warning: element " << element2 << " not found in SVG."; + } + } else { + qDebug() << "Warning: Element " << element << " not found in SVG."; + } + } + } +} + +SystemHealthGadgetWidget::~SystemHealthGadgetWidget() +{ + // Do nothing +} + + +void SystemHealthGadgetWidget::setSystemFile(QString dfn) +{ + setBackgroundBrush(QBrush(Utils::StyleHelper::baseColor())); + if (QFile::exists(dfn)) { + m_renderer->load(dfn); + if(m_renderer->isValid()) { + fgenabled = false; + background->setSharedRenderer(m_renderer); + background->setElementId("background"); + + if (m_renderer->elementExists("foreground")) { + foreground->setSharedRenderer(m_renderer); + foreground->setElementId("foreground"); + foreground->setZValue(99); + fgenabled = true; + } + if (m_renderer->elementExists("nolink")) { + nolink->setSharedRenderer(m_renderer); + nolink->setElementId("nolink"); + nolink->setZValue(100); + } + + QGraphicsScene *l_scene = scene(); + l_scene->setSceneRect(background->boundingRect()); + fitInView(background, Qt::KeepAspectRatio ); + } + } + else + { qDebug() <<"SystemHealthGadget: no file"; } +} + +void SystemHealthGadgetWidget::paint() +{ + QGraphicsScene *l_scene = scene(); + l_scene->clear(); + l_scene->addItem(background); + l_scene->addItem(foreground); + l_scene->addItem(nolink); + update(); +} + +void SystemHealthGadgetWidget::paintEvent(QPaintEvent *event) +{ + // Skip painting until the dial file is loaded + if (! m_renderer->isValid()) { + qDebug() <<"SystemHealthGadget: System file not loaded, not rendering"; + return; + } + QGraphicsView::paintEvent(event); +} + +// This event enables the dial to be dynamically resized +// whenever the gadget is resized, taking advantage of the vector +// nature of SVG dials. +void SystemHealthGadgetWidget::resizeEvent(QResizeEvent *event) +{ + Q_UNUSED(event); + fitInView(background, Qt::KeepAspectRatio ); +} diff --git a/ground/openpilotgcs/src/plugins/systemhealth/systemhealthgadgetwidget.h b/ground/openpilotgcs/src/plugins/systemhealth/systemhealthgadgetwidget.h index c51a75a27..7f3034059 100644 --- a/ground/openpilotgcs/src/plugins/systemhealth/systemhealthgadgetwidget.h +++ b/ground/openpilotgcs/src/plugins/systemhealth/systemhealthgadgetwidget.h @@ -1,67 +1,71 @@ -/** - ****************************************************************************** - * - * @file systemhealthgadgetwidget.h - * @author Edouard Lafargue Copyright (C) 2010. - * @addtogroup GCSPlugins GCS Plugins - * @{ - * @addtogroup SystemHealthPlugin System Health Plugin - * @{ - * @brief The System Health gadget plugin - *****************************************************************************/ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef SYSTEMHEALTHGADGETWIDGET_H_ -#define SYSTEMHEALTHGADGETWIDGET_H_ - -#include "systemhealthgadgetconfiguration.h" -#include "uavobject.h" -#include -#include -#include - -#include -#include - -class SystemHealthGadgetWidget : public QGraphicsView -{ - Q_OBJECT - -public: - SystemHealthGadgetWidget(QWidget *parent = 0); - ~SystemHealthGadgetWidget(); - void setSystemFile(QString dfn); - void setIndicator(QString indicator); - void paint(); - -protected: - void paintEvent(QPaintEvent *event); - void resizeEvent(QResizeEvent *event); - -private slots: - void updateAlarms(UAVObject *systemAlarm); // Called by the systemalarms UAVObject - -private: - QSvgRenderer *m_renderer; - QGraphicsSvgItem *background; - QGraphicsSvgItem *foreground; - - // Simple flag to skip rendering if the - bool fgenabled; // layer does not exist. - -}; -#endif /* SYSTEMHEALTHGADGETWIDGET_H_ */ +/** + ****************************************************************************** + * + * @file systemhealthgadgetwidget.h + * @author Edouard Lafargue Copyright (C) 2010. + * @addtogroup GCSPlugins GCS Plugins + * @{ + * @addtogroup SystemHealthPlugin System Health Plugin + * @{ + * @brief The System Health gadget plugin + *****************************************************************************/ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef SYSTEMHEALTHGADGETWIDGET_H_ +#define SYSTEMHEALTHGADGETWIDGET_H_ + +#include "systemhealthgadgetconfiguration.h" +#include "uavobject.h" +#include "uavtalk/telemetrymanager.h" +#include +#include +#include + +#include +#include + +class SystemHealthGadgetWidget : public QGraphicsView +{ + Q_OBJECT + +public: + SystemHealthGadgetWidget(QWidget *parent = 0); + ~SystemHealthGadgetWidget(); + void setSystemFile(QString dfn); + void setIndicator(QString indicator); + void paint(); + +protected: + void paintEvent(QPaintEvent *event); + void resizeEvent(QResizeEvent *event); + +private slots: + void updateAlarms(UAVObject *systemAlarm); // Called by the systemalarms UAVObject + void onAutopilotConnect(); + void onAutopilotDisconnect(); + +private: + QSvgRenderer *m_renderer; + QGraphicsSvgItem *background; + QGraphicsSvgItem *foreground; + QGraphicsSvgItem *nolink; + + // Simple flag to skip rendering if the + bool fgenabled; // layer does not exist. + +}; +#endif /* SYSTEMHEALTHGADGETWIDGET_H_ */