battery_state.dot 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. digraph G {
  2. compound=true;
  3. Initialized [label=<<b>Initialized (0)</b><br/><font color='#6E6E6E'>q is unknown</font>>];
  4. PreStandby [label=<<b>PreStandby (8)</b><br/><font color='#6E6E6E'>q &lt; 2 mAh</font>>];
  5. Standby [label=<<b>Standby (9)</b><br/><font color='#6E6E6E'>q &lt; 2 mAh (unless manually entered)</font>>];
  6. /* Charging flow */
  7. subgraph cluster0 {
  8. {rank=same;
  9. FullPlugged [label=<<b>FullPlugged (4)</b><br/><font color='#6E6E6E'>q ~= 130mAh</font>>, group="charging"];
  10. O1[style=invis];
  11. }
  12. {rank=same;
  13. HighCharging [label=<<b>HighCharging (5)</b><br/><font color='#6E6E6E'>25 mAh &lt;= q &lt; 130 mAh</font>>, group="charging"];
  14. O2[style=invis];
  15. }
  16. {rank=same;
  17. LowCharging [label=<<b>LowCharging (6)</b><br/><font color='#6E6E6E'>5 mAh &lt;= q &lt; 25 mAh</font>>, group="charging"];
  18. O3[style=invis];
  19. }
  20. {rank=same;
  21. CriticalCharging [label=<<b>CriticalCharging (7)</b><br/><font color='#6E6E6E'>q &lt; 5 mAh</font>>, group="charging"];
  22. O4[style=invis];
  23. }
  24. CriticalCharging -> LowCharging [label=">3.2V", constraint=false, weight=100];
  25. LowCharging -> HighCharging [label=">3.8V", constraint=false, weight=100];
  26. HighCharging -> FullPlugged [color=green, constraint=false, weight=100];
  27. edge[style=invis];
  28. O1->O2->O3->O4;
  29. color=blue;
  30. }
  31. subgraph cluster1 {
  32. FullDischarging [label=<<b>FullDischarging (1)</b><br/><font color='#6E6E6E'>q &gt; 30mAh (~125h)</font>>, group="discharging"];
  33. LowDischarging [label=<<b>LowDischarging (2)</b><br/><font color='#6E6E6E'>5 mAh &lt;= q &lt; 30mAh (~31h)</font>>, group="discharging"];
  34. CriticalDischarging [label=<<b>CriticalDischarging (3)</b><br/><font color='#6E6E6E'>2 mAh &lt;= q &lt; 5 mAh (~3h)</font>>, group="discharging"];
  35. FullDischarging -> LowDischarging [label="<=3.7V"];
  36. LowDischarging -> CriticalDischarging [label="<=3.3V"];
  37. CriticalDischarging -> PreStandby [label="<=3.1V"];
  38. color=red;
  39. }
  40. Initialized -> FullDischarging [color=red, lhead=cluster1];
  41. Initialized -> FullPlugged [color=blue, lhead=cluster0, constraint=false];
  42. FullPlugged -> FullDischarging [color=red]
  43. CriticalCharging -> PreStandby [color=red, weight=0.1];
  44. HighCharging -> FullDischarging [color=red, constraint=false, weight=0.1];
  45. LowCharging -> FullDischarging [color=red, constraint=false, weight=0.1];
  46. FullDischarging -> LowCharging [color=blue, weight=0.01];
  47. FullDischarging -> HighCharging [color=blue, constraint=false, weight=0.1];
  48. LowDischarging -> LowCharging [color=blue, constraint=false, weight=0.1];
  49. CriticalDischarging -> LowCharging [color=blue, constraint=false, weight=0.1];
  50. PreStandby -> CriticalCharging [color=blue, weight=0.1];
  51. PreStandby -> Standby [label="30s timeout", weight=0.1];
  52. }