ekfsm 1.1.0a15.post1__tar.gz → 1.3.0a26__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ekfsm might be problematic. Click here for more details.

Files changed (385) hide show
  1. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/.readthedocs.yaml +1 -1
  2. ekfsm-1.3.0a26/GitVersion.yml +4 -0
  3. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/PKG-INFO +8 -5
  4. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/README.md +3 -3
  5. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/devenv.lock +4 -4
  6. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/devenv.nix +43 -3
  7. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/boards/ekf/ccu.doctree +0 -0
  8. ekfsm-1.3.0a26/docs/build/doctrees/boards.doctree +0 -0
  9. ekfsm-1.3.0a26/docs/build/doctrees/environment.pickle +0 -0
  10. ekfsm-1.3.0a26/docs/build/doctrees/reference/ekfsm.doctree +0 -0
  11. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/devices/eeprom.html +17 -0
  12. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/devices/ekf_ccu_uc.html +21 -1
  13. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/devices/pmbus.html +2 -3
  14. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/lock.html +61 -25
  15. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/system.html +3 -34
  16. ekfsm-1.3.0a26/docs/build/html/_modules/ekfsm/utils.html +150 -0
  17. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/index.html +1 -0
  18. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/boards/ekf/ccu.rst.txt +19 -0
  19. ekfsm-1.3.0a26/docs/build/html/_sources/boards.rst.txt +24 -0
  20. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/reference/ekfsm.rst.txt +4 -0
  21. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/boards/ekf/ccu.html +23 -1
  22. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/boards.html +17 -0
  23. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/genindex.html +15 -2
  24. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/index.html +1 -0
  25. ekfsm-1.3.0a26/docs/build/html/objects.inv +0 -0
  26. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/py-modindex.html +5 -0
  27. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/reference/ekfsm.html +117 -16
  28. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/reference/index.html +5 -0
  29. ekfsm-1.3.0a26/docs/build/html/searchindex.js +1 -0
  30. ekfsm-1.3.0a26/docs/build/latex/LICRcyr2utf8.xdy +101 -0
  31. ekfsm-1.3.0a26/docs/build/latex/LICRlatin2utf8.xdy +239 -0
  32. ekfsm-1.3.0a26/docs/build/latex/LatinRules.xdy +611 -0
  33. ekfsm-1.3.0a26/docs/build/latex/Makefile +65 -0
  34. ekfsm-1.3.0a26/docs/build/latex/_static/_sphinx_javascript_frameworks_compat.js +123 -0
  35. ekfsm-1.3.0a26/docs/build/latex/_static/jquery.js +2 -0
  36. ekfsm-1.3.0a26/docs/build/latex/ekfsm.aux +482 -0
  37. ekfsm-1.3.0a26/docs/build/latex/ekfsm.fdb_latexmk +207 -0
  38. ekfsm-1.3.0a26/docs/build/latex/ekfsm.fls +407 -0
  39. ekfsm-1.3.0a26/docs/build/latex/ekfsm.idx +320 -0
  40. ekfsm-1.3.0a26/docs/build/latex/ekfsm.ilg +7 -0
  41. ekfsm-1.3.0a26/docs/build/latex/ekfsm.ind +534 -0
  42. ekfsm-1.3.0a26/docs/build/latex/ekfsm.log +2182 -0
  43. ekfsm-1.3.0a26/docs/build/latex/ekfsm.out +86 -0
  44. ekfsm-1.3.0a26/docs/build/latex/ekfsm.pdf +0 -0
  45. ekfsm-1.3.0a26/docs/build/latex/ekfsm.tex +8359 -0
  46. ekfsm-1.3.0a26/docs/build/latex/ekfsm.toc +87 -0
  47. ekfsm-1.3.0a26/docs/build/latex/latexmkjarc +22 -0
  48. ekfsm-1.3.0a26/docs/build/latex/latexmkrc +9 -0
  49. ekfsm-1.3.0a26/docs/build/latex/make.bat +31 -0
  50. ekfsm-1.3.0a26/docs/build/latex/python.ist +16 -0
  51. ekfsm-1.3.0a26/docs/build/latex/sphinx.sty +1195 -0
  52. ekfsm-1.3.0a26/docs/build/latex/sphinx.xdy +230 -0
  53. ekfsm-1.3.0a26/docs/build/latex/sphinxhighlight.sty +130 -0
  54. ekfsm-1.3.0a26/docs/build/latex/sphinxhowto.cls +102 -0
  55. ekfsm-1.3.0a26/docs/build/latex/sphinxlatexadmonitions.sty +403 -0
  56. ekfsm-1.3.0a26/docs/build/latex/sphinxlatexcontainers.sty +22 -0
  57. ekfsm-1.3.0a26/docs/build/latex/sphinxlatexgraphics.sty +123 -0
  58. ekfsm-1.3.0a26/docs/build/latex/sphinxlatexindbibtoc.sty +69 -0
  59. ekfsm-1.3.0a26/docs/build/latex/sphinxlatexlists.sty +131 -0
  60. ekfsm-1.3.0a26/docs/build/latex/sphinxlatexliterals.sty +1000 -0
  61. ekfsm-1.3.0a26/docs/build/latex/sphinxlatexnumfig.sty +135 -0
  62. ekfsm-1.3.0a26/docs/build/latex/sphinxlatexobjects.sty +365 -0
  63. ekfsm-1.3.0a26/docs/build/latex/sphinxlatexshadowbox.sty +178 -0
  64. ekfsm-1.3.0a26/docs/build/latex/sphinxlatexstyleheadings.sty +91 -0
  65. ekfsm-1.3.0a26/docs/build/latex/sphinxlatexstylepage.sty +73 -0
  66. ekfsm-1.3.0a26/docs/build/latex/sphinxlatexstyletext.sty +145 -0
  67. ekfsm-1.3.0a26/docs/build/latex/sphinxlatextables.sty +1241 -0
  68. ekfsm-1.3.0a26/docs/build/latex/sphinxmanual.cls +128 -0
  69. ekfsm-1.3.0a26/docs/build/latex/sphinxmessages.sty +21 -0
  70. ekfsm-1.3.0a26/docs/build/latex/sphinxoptionsgeometry.sty +54 -0
  71. ekfsm-1.3.0a26/docs/build/latex/sphinxoptionshyperref.sty +35 -0
  72. ekfsm-1.3.0a26/docs/build/latex/sphinxpackageboxes.sty +827 -0
  73. ekfsm-1.3.0a26/docs/build/latex/sphinxpackagecyrillic.sty +55 -0
  74. ekfsm-1.3.0a26/docs/build/latex/sphinxpackagefootnote.sty +434 -0
  75. ekfsm-1.3.0a26/docs/build/latex/sphinxpackagesubstitutefont.sty +21 -0
  76. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/requirements.txt +3 -0
  77. ekfsm-1.3.0a26/docs/source/_static/devices.drawio.png +0 -0
  78. ekfsm-1.3.0a26/docs/source/_static/ekfsm_system.drawio.png +0 -0
  79. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/boards/ekf/ccu.rst +19 -0
  80. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/boards/hitron/hdrc-300s.rst +11 -11
  81. ekfsm-1.3.0a26/docs/source/boards.rst +24 -0
  82. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/intro.rst +6 -6
  83. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/reference/ekfsm.rst +4 -0
  84. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/boards/oem/hitron/hdrc-300s.yaml +1 -1
  85. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/cli.py +6 -8
  86. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/config.py +14 -6
  87. ekfsm-1.3.0a26/ekfsm/core/__init__.py +14 -0
  88. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/core/components.py +4 -4
  89. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/core/slots.py +6 -13
  90. ekfsm-1.3.0a26/ekfsm/core/sysfs.py +251 -0
  91. ekfsm-1.3.0a26/ekfsm/core/utils.py +132 -0
  92. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/devices/__init__.py +8 -7
  93. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/devices/coretemp.py +11 -10
  94. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/devices/eeprom.py +69 -39
  95. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/devices/ekf_ccu_uc.py +58 -47
  96. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/devices/ekf_sur_led.py +6 -2
  97. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/devices/generic.py +141 -88
  98. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/devices/gpio.py +33 -25
  99. ekfsm-1.3.0a26/ekfsm/devices/iio.py +42 -0
  100. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/devices/iio_thermal_humidity.py +12 -13
  101. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/devices/mux.py +11 -6
  102. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/devices/pmbus.py +62 -70
  103. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/devices/smbios.py +10 -8
  104. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/devices/smbus.py +1 -1
  105. ekfsm-1.3.0a26/ekfsm/devices/utils.py +7 -0
  106. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/exceptions.py +28 -7
  107. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/lock.py +48 -21
  108. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/simctrl.py +37 -83
  109. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/system.py +45 -102
  110. ekfsm-1.3.0a26/ekfsm/utils.py +44 -0
  111. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/pyproject.toml +15 -5
  112. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/scripts/modify-acpi-table.sh +11 -17
  113. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/basic_sim.py +4 -9
  114. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/ccu-test.py +5 -6
  115. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/ccu_wokwi_sim.py +2 -6
  116. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/locking/test_lock.py +3 -2
  117. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/props.py +5 -9
  118. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/run.py +2 -4
  119. ekfsm-1.3.0a26/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-17/new_device +0 -0
  120. ekfsm-1.3.0a26/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/new_device +0 -0
  121. ekfsm-1.3.0a26/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/new_device +0 -0
  122. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/srf-fan-test.py +2 -2
  123. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/test_config.py +2 -1
  124. ekfsm-1.3.0a26/tests/test_module_schema.py +28 -0
  125. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/test_sim-ccu-eeprom.py +5 -7
  126. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/test_sim1.py +11 -11
  127. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/test_sim2.py +9 -11
  128. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/zip2-comp1_smoke.py +5 -6
  129. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/zip2-comp2_smoke.py +5 -6
  130. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/zip2_ccu_exp.py +3 -3
  131. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/zip2_ccu_imu.py +3 -6
  132. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/zip2_psu.py +3 -4
  133. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/uv.lock +198 -0
  134. ekfsm-1.1.0a15.post1/docs/build/doctrees/boards.doctree +0 -0
  135. ekfsm-1.1.0a15.post1/docs/build/doctrees/environment.pickle +0 -0
  136. ekfsm-1.1.0a15.post1/docs/build/doctrees/reference/ekfsm.doctree +0 -0
  137. ekfsm-1.1.0a15.post1/docs/build/html/_sources/boards.rst.txt +0 -11
  138. ekfsm-1.1.0a15.post1/docs/build/html/objects.inv +0 -0
  139. ekfsm-1.1.0a15.post1/docs/build/html/searchindex.js +0 -1
  140. ekfsm-1.1.0a15.post1/docs/source/boards.rst +0 -11
  141. ekfsm-1.1.0a15.post1/ekfsm/core/__init__.py +0 -14
  142. ekfsm-1.1.0a15.post1/ekfsm/core/sysfs.py +0 -81
  143. ekfsm-1.1.0a15.post1/ekfsm/core/utils.py +0 -92
  144. ekfsm-1.1.0a15.post1/ekfsm/devices/iio.py +0 -58
  145. ekfsm-1.1.0a15.post1/ekfsm/devices/utils.py +0 -16
  146. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/.env +0 -0
  147. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/.envrc +0 -0
  148. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/.flake8 +0 -0
  149. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/.gitignore +0 -0
  150. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/.gitlab-ci.yml +0 -0
  151. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/.vscode/launch.json +0 -0
  152. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/.vscode/settings.json +0 -0
  153. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/LICENSE.md +0 -0
  154. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/devenv.yaml +0 -0
  155. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/.gitignore +0 -0
  156. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/Makefile +0 -0
  157. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/boards/ekf/sc5-festival.doctree +0 -0
  158. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/boards/ekf/sc9-toccata.doctree +0 -0
  159. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/boards/ekf/se5-club.doctree +0 -0
  160. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/boards/ekf/sn4-djembe.doctree +0 -0
  161. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/boards/ekf/snippets/cpci_inventory.doctree +0 -0
  162. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/boards/ekf/spv-mystic.doctree +0 -0
  163. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/boards/ekf/sq1-track.doctree +0 -0
  164. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/boards/ekf/sq3-quartet.doctree +0 -0
  165. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/boards/ekf/sur-uart.doctree +0 -0
  166. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/boards/hitron/hdrc-300s.doctree +0 -0
  167. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/index.doctree +0 -0
  168. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/intro.doctree +0 -0
  169. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/reference/index.doctree +0 -0
  170. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/doctrees/reference/systemconfig.doctree +0 -0
  171. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/.buildinfo +0 -0
  172. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_images/devices.drawio.png +0 -0
  173. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_images/ekfsm_system.drawio.png +0 -0
  174. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/cli.html +0 -0
  175. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/config.html +0 -0
  176. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/core/components.html +0 -0
  177. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/core/probe.html +0 -0
  178. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/core/slots.html +0 -0
  179. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/core/sysfs.html +0 -0
  180. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/core/utils.html +0 -0
  181. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/devices/coretemp.html +0 -0
  182. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/devices/ekf_sur_led.html +0 -0
  183. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/devices/generic.html +0 -0
  184. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/devices/gpio.html +0 -0
  185. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/devices/iio.html +0 -0
  186. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/devices/iio_thermal_humidity.html +0 -0
  187. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/devices/imu.html +0 -0
  188. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/devices/mux.html +0 -0
  189. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/devices/smbios.html +0 -0
  190. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/devices/utils.html +0 -0
  191. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/exceptions.html +0 -0
  192. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/ekfsm/log.html +0 -0
  193. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_modules/enum.html +0 -0
  194. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/boards/ekf/sc5-festival.rst.txt +0 -0
  195. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/boards/ekf/sc9-toccata.rst.txt +0 -0
  196. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/boards/ekf/se5-club.rst.txt +0 -0
  197. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/boards/ekf/sn4-djembe.rst.txt +0 -0
  198. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/boards/ekf/snippets/cpci_inventory.rst.txt +0 -0
  199. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/boards/ekf/spv-mystic.rst.txt +0 -0
  200. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/boards/ekf/sq1-track.rst.txt +0 -0
  201. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/boards/ekf/sq3-quartet.rst.txt +0 -0
  202. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/boards/ekf/sur-uart.rst.txt +0 -0
  203. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/boards/hitron/hdrc-300s.rst.txt +0 -0
  204. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/index.rst.txt +0 -0
  205. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/intro.rst.txt +0 -0
  206. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/reference/index.rst.txt +0 -0
  207. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_sources/reference/systemconfig.rst.txt +0 -0
  208. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  209. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/basic.css +0 -0
  210. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/badge_only.css +0 -0
  211. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  212. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  213. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  214. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  215. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  216. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  217. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  218. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  219. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  220. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  221. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  222. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/lato-bold.woff +0 -0
  223. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  224. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  225. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  226. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/lato-normal.woff +0 -0
  227. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  228. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/css/theme.css +0 -0
  229. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/devices.drawio.png +0 -0
  230. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/devices.drawio.svg +0 -0
  231. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/doctools.js +0 -0
  232. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/documentation_options.js +0 -0
  233. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/ekfsm_system.drawio.png +0 -0
  234. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/ekfsm_system.drawio.svg +0 -0
  235. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/file.png +0 -0
  236. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-bold.eot +0 -0
  237. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  238. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-bold.woff +0 -0
  239. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  240. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  241. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  242. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  243. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  244. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-italic.eot +0 -0
  245. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  246. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-italic.woff +0 -0
  247. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  248. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-regular.eot +0 -0
  249. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  250. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-regular.woff +0 -0
  251. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  252. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  253. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  254. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  255. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  256. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  257. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  258. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  259. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  260. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/jquery.js +0 -0
  261. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/js/badge_only.js +0 -0
  262. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/js/theme.js +0 -0
  263. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/js/versions.js +0 -0
  264. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/language_data.js +0 -0
  265. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/minus.png +0 -0
  266. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/plus.png +0 -0
  267. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/pygments.css +0 -0
  268. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/searchtools.js +0 -0
  269. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/_static/sphinx_highlight.js +0 -0
  270. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/boards/ekf/sc5-festival.html +0 -0
  271. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/boards/ekf/sc9-toccata.html +0 -0
  272. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/boards/ekf/se5-club.html +0 -0
  273. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/boards/ekf/sn4-djembe.html +0 -0
  274. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/boards/ekf/snippets/cpci_inventory.html +0 -0
  275. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/boards/ekf/spv-mystic.html +0 -0
  276. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/boards/ekf/sq1-track.html +0 -0
  277. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/boards/ekf/sq3-quartet.html +0 -0
  278. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/boards/ekf/sur-uart.html +0 -0
  279. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/boards/hitron/hdrc-300s.html +0 -0
  280. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/intro.html +0 -0
  281. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/reference/systemconfig.html +0 -0
  282. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/build/html/search.html +0 -0
  283. {ekfsm-1.1.0a15.post1/docs/source/_static → ekfsm-1.3.0a26/docs/build/latex}/devices.drawio.png +0 -0
  284. {ekfsm-1.1.0a15.post1/docs/source/_static → ekfsm-1.3.0a26/docs/build/latex}/ekfsm_system.drawio.png +0 -0
  285. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/_static/devices.drawio.svg +0 -0
  286. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/_static/ekfsm_system.drawio.svg +0 -0
  287. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/boards/ekf/sc5-festival.rst +0 -0
  288. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/boards/ekf/sc9-toccata.rst +0 -0
  289. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/boards/ekf/se5-club.rst +0 -0
  290. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/boards/ekf/sn4-djembe.rst +0 -0
  291. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/boards/ekf/snippets/cpci_inventory.rst +0 -0
  292. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/boards/ekf/spv-mystic.rst +0 -0
  293. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/boards/ekf/sq1-track.rst +0 -0
  294. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/boards/ekf/sq3-quartet.rst +0 -0
  295. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/boards/ekf/sur-uart.rst +0 -0
  296. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/conf.py +0 -0
  297. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/index.rst +0 -0
  298. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/reference/index.rst +0 -0
  299. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/docs/source/reference/systemconfig.rst +0 -0
  300. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/__init__.py +0 -0
  301. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/boards/oem/ekf/ccu.yaml +0 -0
  302. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/boards/oem/ekf/sc5-festival.yaml +0 -0
  303. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/boards/oem/ekf/sc9-toccata.yaml +0 -0
  304. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/boards/oem/ekf/se5-club.yaml +0 -0
  305. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/boards/oem/ekf/sn4-djembe.yaml +0 -0
  306. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/boards/oem/ekf/spv-mystic.yaml +0 -0
  307. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/boards/oem/ekf/sq1-track.yaml +0 -0
  308. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/boards/oem/ekf/sq3-quartet.yaml +0 -0
  309. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/boards/oem/ekf/srf-fan.yaml +0 -0
  310. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/boards/oem/ekf/sur-uart.yaml +0 -0
  311. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/core/probe.py +0 -0
  312. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/devices/imu.py +0 -0
  313. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/log.py +0 -0
  314. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/ekfsm/py.typed +0 -0
  315. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/hack/bringup_zip_i2c_devs.sh +0 -0
  316. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/__init__.py +0 -0
  317. {ekfsm-1.1.0a15.post1/tests/testdata → ekfsm-1.3.0a26/tests/data}/cfg_simple.yaml +0 -0
  318. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/locking/lock_tester.py +1 -1
  319. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sc5-hitron-only.yaml +0 -0
  320. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/__init__.py +0 -0
  321. /ekfsm-1.1.0a15.post1/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-10/new_device → /ekfsm-1.3.0a26/tests/sim/sys/bus/i2c/drivers/at24/.keep +0 -0
  322. /ekfsm-1.1.0a15.post1/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-11/new_device → /ekfsm-1.3.0a26/tests/sim/sys/bus/i2c/drivers/pca953x/.keep +0 -0
  323. /ekfsm-1.1.0a15.post1/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-12/new_device → /ekfsm-1.3.0a26/tests/sim/sys/bus/i2c/drivers/pca954x/.keep +0 -0
  324. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/class/hwmon/hwmon2/name +0 -0
  325. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/class/hwmon/hwmon2/temp1_input +0 -0
  326. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-10/firmware_node/adr +0 -0
  327. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-10/name +0 -0
  328. {ekfsm-1.1.0a15.post1/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14 → ekfsm-1.3.0a26/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-10}/new_device +0 -0
  329. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-11/firmware_node/adr +0 -0
  330. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-11/name +0 -0
  331. {ekfsm-1.1.0a15.post1/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-15 → ekfsm-1.3.0a26/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-11}/new_device +0 -0
  332. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-12/firmware_node/adr +0 -0
  333. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-12/name +0 -0
  334. {ekfsm-1.1.0a15.post1/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-16 → ekfsm-1.3.0a26/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-12}/new_device +0 -0
  335. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/firmware_node/adr +0 -0
  336. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:01/firmware_node/description +0 -0
  337. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:01/gpiochip1/dev +0 -0
  338. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:01/name +0 -0
  339. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:02/eeprom +0 -0
  340. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:02/firmware_node/description +0 -0
  341. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:02/name +0 -0
  342. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/name +0 -0
  343. {ekfsm-1.1.0a15.post1/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-17 → ekfsm-1.3.0a26/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14}/new_device +0 -0
  344. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-15/firmware_node/adr +0 -0
  345. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-15/name +0 -0
  346. {ekfsm-1.1.0a15.post1/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9 → ekfsm-1.3.0a26/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-15}/new_device +0 -0
  347. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-16/firmware_node/adr +0 -0
  348. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-16/name +0 -0
  349. {ekfsm-1.1.0a15.post1/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1 → ekfsm-1.3.0a26/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-16}/new_device +0 -0
  350. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-17/firmware_node/adr +0 -0
  351. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-17/name +0 -0
  352. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/firmware_node/adr +0 -0
  353. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:01/firmware_node/description +0 -0
  354. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:01/gpiochip1/dev +0 -0
  355. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:01/name +0 -0
  356. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:02/eeprom +0 -0
  357. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:02/firmware_node/description +0 -0
  358. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:02/name +0 -0
  359. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/name +0 -0
  360. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:00/firmware_node/description +0 -0
  361. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:00/name +0 -0
  362. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/firmware_node/description +0 -0
  363. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/curr1_input +0 -0
  364. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/curr2_input +0 -0
  365. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/in1_input +0 -0
  366. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/in2_input +0 -0
  367. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/model +0 -0
  368. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/revision +0 -0
  369. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/serial +0 -0
  370. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/temp1_input +0 -0
  371. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/vendor +0 -0
  372. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/name +0 -0
  373. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0002:00/firmware_node/description +0 -0
  374. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0002:00/name +0 -0
  375. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:1f.4/i2c-7/7-0057/eeprom +0 -0
  376. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/pci0000:00/0000:00:1f.4/i2c-7/7-0057/name +0 -0
  377. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/devices/virtual/dmi/id/board_version +0 -0
  378. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/kernel/debug/pmbus/hwmon99/status0_input +0 -0
  379. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/sys/kernel/debug/pmbus/hwmon99/status1_input +0 -0
  380. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/test_system.yaml +0 -0
  381. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/sim/test_system_inconsistent.yaml +0 -0
  382. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/srf-fan-test.yaml +0 -0
  383. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/zip2-ccu-only.yaml +0 -0
  384. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/zip2-comp1.yaml +0 -0
  385. {ekfsm-1.1.0a15.post1 → ekfsm-1.3.0a26}/tests/zip2-comp2.yaml +0 -0
@@ -29,4 +29,4 @@ sphinx:
29
29
  # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
30
30
  python:
31
31
  install:
32
- - requirements: docs/requirements.txt
32
+ - requirements: docs/requirements.txt
@@ -0,0 +1,4 @@
1
+ workflow: GitFlow/v1
2
+ branches:
3
+ main:
4
+ mode: ContinuousDeployment
@@ -1,17 +1,20 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ekfsm
3
- Version: 1.1.0a15.post1
3
+ Version: 1.3.0a26
4
4
  Summary: The EKF System Management Library (ekfsm) is a sensor monitoring suite for Compact PCI Serial devices.
5
- Author-email: Klaus Popp <klaus.popp@ci4rail.com>, Jan Jansen <jan@ekf.de>, Felix Päßler <fp@ekf.de>
5
+ Author-email: Jan Jansen <jan@ekf.de>, Klaus Popp <klaus.popp@ci4rail.com>, Felix Päßler <fp@ekf.de>
6
6
  Requires-Python: >=3.10
7
7
  Requires-Dist: anytree
8
8
  Requires-Dist: click>=8.0.1
9
9
  Requires-Dist: crcmod
10
10
  Requires-Dist: gpiod>=2.1.0
11
11
  Requires-Dist: hexdump
12
+ Requires-Dist: ipdb>=0.13.13
12
13
  Requires-Dist: more-itertools
13
14
  Requires-Dist: munch
15
+ Requires-Dist: schema>=0.7.7
14
16
  Requires-Dist: smbus2
17
+ Requires-Dist: termcolor>=3.0.1
15
18
  Requires-Dist: types-pyyaml>=6.0.12.20241230
16
19
  Requires-Dist: yamale
17
20
  Description-Content-Type: text/markdown
@@ -146,9 +149,9 @@ import ekfsm
146
149
 
147
150
  system = ekfsm.System("system.yaml")
148
151
 
149
- # alternative ways to get the SUR HwModule
150
- sur = system["SER"] # by using the hwmodule name as key
151
- sur = system.ser # by using the hwmodule name as attribute
152
+ # alternative ways to get the SUR HWModule
153
+ sur = system["SER"] # by using the HWModule name as key
154
+ sur = system.ser # by using the HWmodule name as attribute
152
155
  sur = system.slots["SLOT1"].hwmodule # by using the slot name as key
153
156
  sur = system.slots.slot1.hwmodule # by using the slot name as attribute
154
157
 
@@ -128,9 +128,9 @@ import ekfsm
128
128
 
129
129
  system = ekfsm.System("system.yaml")
130
130
 
131
- # alternative ways to get the SUR HwModule
132
- sur = system["SER"] # by using the hwmodule name as key
133
- sur = system.ser # by using the hwmodule name as attribute
131
+ # alternative ways to get the SUR HWModule
132
+ sur = system["SER"] # by using the HWModule name as key
133
+ sur = system.ser # by using the HWmodule name as attribute
134
134
  sur = system.slots["SLOT1"].hwmodule # by using the slot name as key
135
135
  sur = system.slots.slot1.hwmodule # by using the slot name as attribute
136
136
 
@@ -3,10 +3,10 @@
3
3
  "devenv": {
4
4
  "locked": {
5
5
  "dir": "src/modules",
6
- "lastModified": 1740649578,
6
+ "lastModified": 1743582803,
7
7
  "owner": "cachix",
8
8
  "repo": "devenv",
9
- "rev": "6344ff303b0098afae94b28df8dc1b9b7ac1e227",
9
+ "rev": "3dd684b5df083ca48a8db263d9406bf83fc12b3e",
10
10
  "type": "github"
11
11
  },
12
12
  "original": {
@@ -40,10 +40,10 @@
40
40
  ]
41
41
  },
42
42
  "locked": {
43
- "lastModified": 1737465171,
43
+ "lastModified": 1742649964,
44
44
  "owner": "cachix",
45
45
  "repo": "git-hooks.nix",
46
- "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17",
46
+ "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82",
47
47
  "type": "github"
48
48
  },
49
49
  "original": {
@@ -30,11 +30,26 @@
30
30
  };
31
31
 
32
32
  git-hooks.hooks = {
33
+ default-version = {
34
+ enable = true;
35
+ name = "Ensure default version";
36
+ entry = "git-reset-version";
37
+ pass_filenames = false;
38
+ };
39
+
40
+ update-docs-requirements = {
41
+ enable = true;
42
+ name = "Update requirements of documentation";
43
+ entry = "update-docs";
44
+ pass_filenames = false;
45
+ };
46
+
33
47
  # Remove trailing whitespace
34
48
  trailing-whitespace = {
35
49
  enable = true;
36
50
  package = pkgs.python3Packages.pre-commit-hooks;
37
51
  entry = "trailing-whitespace-fixer";
52
+ excludes = [ "tests/sim/sys/.*$" ];
38
53
  };
39
54
 
40
55
  # Ensure files end with a newline
@@ -47,6 +62,26 @@
47
62
  flake8.enable = true;
48
63
  };
49
64
 
65
+ scripts.update-docs.exec = ''
66
+ temp_file=$(mktemp)
67
+ trap "rm -f $temp_file" 0 2 3 15
68
+ uv export > $temp_file 2>/dev/null
69
+
70
+ if diff -q $temp_file docs/requirements.txt &>/dev/null; then
71
+ update-doc-reqs
72
+
73
+ if git diff --cached --name-only | grep -q -- 'uv.lock'; then
74
+ git add docs/requirements.txt
75
+ fi
76
+ fi
77
+ '';
78
+
79
+ scripts.git-reset-version.exec = ''
80
+ if git diff --cached --name-only | grep -q -- "^pyproject.toml"; then
81
+ uvx --from=toml-cli toml set --toml-path=pyproject.toml project.version 0.0.0 && git add pyproject.toml
82
+ fi
83
+ '';
84
+
50
85
  scripts.bump-version.exec = ''
51
86
  uvx --from=toml-cli toml set --toml-path=pyproject.toml project.version $(uvx dunamai from any --no-metadata --style semver)
52
87
  '';
@@ -57,12 +92,17 @@
57
92
  '';
58
93
 
59
94
  scripts.generate-doc-reqs.exec = ''
60
- uv export >docs/requirements.txt
95
+ uv export > docs/requirements.txt
61
96
  '';
62
97
 
63
98
  scripts.generate-coverage.exec = ''
64
- uv run --with pytest-cov pytest --cov=ekfsm --cov --cov-report term --cov-report xml:coverage.xml | perl -pe 's/\e\[?.*?[\@-~]//g' | tee pytest.log
65
- uv run --with pytest-cov pytest --cov=ekfsm --junitxml=report.xml
99
+ if [ "$EUID" -ne 0 ]; then
100
+ uv run --with pytest-cov pytest -k 'not locking' --cov=ekfsm --cov --cov-report term --cov-report xml:coverage.xml | perl -pe 's/\e\[?.*?[\@-~]//g' | tee pytest.log
101
+ uv run --with pytest-cov pytest -k 'not locking' --cov=ekfsm --junitxml=report.xml
102
+ else
103
+ uv run --with pytest-cov pytest --cov=ekfsm --cov --cov-report term --cov-report xml:coverage.xml | perl -pe 's/\e\[?.*?[\@-~]//g' | tee pytest.log
104
+ uv run --with pytest-cov pytest --cov=ekfsm --junitxml=report.xml
105
+ fi
66
106
  '';
67
107
 
68
108
  scripts.doc-coverage.exec = ''
@@ -1270,6 +1270,23 @@
1270
1270
  <span class="k">def</span><span class="w"> </span><span class="nf">write_customer_area</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
1271
1271
  <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1272
1272
  <span class="sd"> Write data to CCU EEPROM customer area.</span>
1273
+
1274
+ <span class="sd"> Parameters</span>
1275
+ <span class="sd"> ----------</span>
1276
+ <span class="sd"> data</span>
1277
+ <span class="sd"> The data to write to the customer area of the CCU EEPROM.</span>
1278
+
1279
+ <span class="sd"> Raises</span>
1280
+ <span class="sd"> ------</span>
1281
+ <span class="sd"> ValueError</span>
1282
+ <span class="sd"> If the data exceeds the customer area length.</span>
1283
+
1284
+ <span class="sd"> Example</span>
1285
+ <span class="sd"> -------</span>
1286
+ <span class="sd"> &gt;&gt;&gt; eeprom = EKF_CCU_EEPROM()</span>
1287
+ <span class="sd"> &gt;&gt;&gt; eeprom.write_customer_area(b&quot;Hello, World!&quot;)</span>
1288
+ <span class="sd"> &gt;&gt;&gt; eeprom.customer_area()</span>
1289
+ <span class="sd"> b&#39;Hello, World!\x0e\x0f\x10\xff\xff\xff...&#39;</span>
1273
1290
  <span class="sd"> &quot;&quot;&quot;</span>
1274
1291
  <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">&gt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">_customer_area_length</span><span class="p">:</span>
1275
1292
  <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Data exceeds customer area length&quot;</span><span class="p">)</span>
@@ -134,7 +134,10 @@
134
134
  <span class="k">def</span><span class="w"> </span><span class="nf">temperature</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">float</span><span class="p">:</span>
135
135
  <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
136
136
  <span class="sd"> Get the temperature from the CCU thermal/humidity sensor.</span>
137
- <span class="sd"> The temperature is read once per second.</span>
137
+
138
+ <span class="sd"> Note</span>
139
+ <span class="sd"> ----</span>
140
+ <span class="sd"> The CCU reads the temperature once per second.</span>
138
141
 
139
142
  <span class="sd"> Returns</span>
140
143
  <span class="sd"> -------</span>
@@ -411,6 +414,13 @@
411
414
  <span class="sd"> progress_callback</span>
412
415
  <span class="sd"> A callback function that is called with the current progress in bytes.</span>
413
416
 
417
+ <span class="sd"> Example</span>
418
+ <span class="sd"> -------</span>
419
+ <span class="sd"> &gt;&gt;&gt; from ekfsm.devices import EkfCcuUc</span>
420
+ <span class="sd"> &gt;&gt;&gt; ccu = EkfCcuUc(&quot;ccu&quot;)</span>
421
+ <span class="sd"> &gt;&gt;&gt; firmware = open(&quot;fw-ccu-1.0.0.bin&quot;, &quot;rb&quot;).read()</span>
422
+ <span class="sd"> &gt;&gt;&gt; # Load firmware with progress callback</span>
423
+ <span class="sd"> &gt;&gt;&gt; ccu.load_firmware(firmware, progress_callback=lambda x: print(f&quot;Progress: {x} bytes&quot;))</span>
414
424
  <span class="sd"> &quot;&quot;&quot;</span>
415
425
  <span class="k">with</span> <span class="n">Locker</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;-load_firmware&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lock</span><span class="p">():</span>
416
426
  <span class="n">offset</span> <span class="o">=</span> <span class="mi">0</span>
@@ -536,6 +546,8 @@
536
546
  <span class="sd"> This would load a parameterset with just one parameter, the default fan speed. All other parameters will</span>
537
547
  <span class="sd"> be set to their default values.</span>
538
548
 
549
+ <span class="sd"> Important</span>
550
+ <span class="sd"> ---------</span>
539
551
  <span class="sd"> In order to apply the parameterset, the CCU must be restarted.</span>
540
552
 
541
553
  <span class="sd"> Parameters</span>
@@ -543,6 +555,14 @@
543
555
  <span class="sd"> _cfg</span>
544
556
  <span class="sd"> The parameterset in JSON format.</span>
545
557
 
558
+ <span class="sd"> Example</span>
559
+ <span class="sd"> -------</span>
560
+ <span class="sd"> &gt;&gt;&gt; from ekfsm.devices import EkfCcuUc</span>
561
+ <span class="sd"> &gt;&gt;&gt; ccu = EkfCcuUc(&quot;ccu&quot;)</span>
562
+ <span class="sd"> &gt;&gt;&gt; # Load parameterset</span>
563
+ <span class="sd"> &gt;&gt;&gt; ccu.load_parameterset(&#39;{&quot;version&quot;: &quot;1.0.0&quot;, &quot;parameters&quot;: {&quot;fan-defrpm&quot;: &quot;6000&quot;}}&#39;)</span>
564
+ <span class="sd"> &gt;&gt;&gt; # Restart CCU to apply parameterset</span>
565
+ <span class="sd"> &gt;&gt;&gt; ccu.restart()</span>
546
566
  <span class="sd"> &quot;&quot;&quot;</span>
547
567
  <span class="k">with</span> <span class="n">Locker</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;-parameterset&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lock</span><span class="p">():</span>
548
568
  <span class="n">cfg</span> <span class="o">=</span> <span class="n">_cfg</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s2">&quot;utf-8&quot;</span><span class="p">)</span>
@@ -171,9 +171,8 @@
171
171
  <span class="sd"> &gt;&gt;&gt; PsuStatus.OK in status</span>
172
172
  <span class="sd"> True</span>
173
173
  <span class="sd"> &gt;&gt;&gt; # Instead, check if status is OK</span>
174
- <span class="sd"> &gt;&gt;&gt; status = PsuStatus(0x00)</span>
175
- <span class="sd"> &gt;&gt;&gt; status</span>
176
- <span class="sd"> &lt;PsuStatus.OK: 0&gt;</span>
174
+ <span class="sd"> &gt;&gt;&gt; status == PsuStatus(0x00)</span>
175
+ <span class="sd"> False</span>
177
176
  <span class="sd"> &gt;&gt;&gt; PsuStatus.OUTPUT_OVERCURRENT in status</span>
178
177
  <span class="sd"> False</span>
179
178
  <span class="sd"> &quot;&quot;&quot;</span>
@@ -71,39 +71,44 @@
71
71
  <div itemprop="articleBody">
72
72
 
73
73
  <h1>Source code for ekfsm.lock</h1><div class="highlight"><pre>
74
- <span></span><span class="kn">import</span><span class="w"> </span><span class="nn">fcntl</span>
74
+ <span></span><span class="sd">&quot;&quot;&quot;</span>
75
+ <span class="sd">Some devices or device functions don&#39;t allow concurrent access.</span>
76
+ <span class="sd">The locking mechanism is used to ensure that only one process/thread can</span>
77
+ <span class="sd">access the device (function) at a time.</span>
78
+
79
+ <span class="sd">Locking granularity is defined by the device.</span>
80
+ <span class="sd">It may be at the device level or function level.</span>
81
+
82
+ <span class="sd">Application can choose to use the locking mechanism or not.</span>
83
+ <span class="sd">By default, the locking mechanism is enabled and uses the default</span>
84
+ <span class="sd">lockfile root directory ``/var/lock/ekfsm``.</span>
85
+
86
+ <span class="sd">Use :func:`locking_configure` to enable or disable the locking mechanism or to change</span>
87
+ <span class="sd">the lockfile root directory.</span>
88
+ <span class="sd">&quot;&quot;&quot;</span>
89
+
90
+ <span class="kn">import</span><span class="w"> </span><span class="nn">fcntl</span>
75
91
  <span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
76
92
  <span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
77
93
  <span class="kn">from</span><span class="w"> </span><span class="nn">contextlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">contextmanager</span>
78
94
 
79
- <span class="c1">#</span>
80
- <span class="c1"># Some devices or device functions don&#39;t allow concurrent access.</span>
81
- <span class="c1"># The locking mechanism is used to ensure that only one process/thread can</span>
82
- <span class="c1"># access the device (function) at a time.</span>
83
- <span class="c1">#</span>
84
- <span class="c1"># Locking granularity is defined by the device.</span>
85
- <span class="c1"># It may be at the device level or function level.</span>
86
- <span class="c1">#</span>
87
- <span class="c1"># Application can choose to use the locking mechanism or not.</span>
88
- <span class="c1"># By default, the locking mechanism is enabled and uses the default</span>
89
- <span class="c1"># lockfile root directory /var/lock/ekfsm.</span>
90
- <span class="c1">#</span>
91
- <span class="c1"># Use locking_configure() to enable or disable the locking mechanism or to change</span>
92
- <span class="c1"># the lockfile root directory.</span>
93
-
94
95
  <span class="n">USE_LOCK</span> <span class="o">=</span> <span class="kc">True</span>
95
96
  <span class="n">LOCKFILE_ROOT</span> <span class="o">=</span> <span class="s2">&quot;/var/lock/ekfsm&quot;</span>
96
97
  <span class="n">ALL_LOCKERS</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="s2">&quot;Locker&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># List of all locker instances</span>
97
98
 
98
99
 
99
100
  <div class="viewcode-block" id="locking_configure">
100
- <a class="viewcode-back" href="../../reference/ekfsm.html#ekfsm.locking_configure">[docs]</a>
101
+ <a class="viewcode-back" href="../../reference/ekfsm.html#ekfsm.lock.locking_configure">[docs]</a>
101
102
  <span class="k">def</span><span class="w"> </span><span class="nf">locking_configure</span><span class="p">(</span><span class="n">enable</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">lockfile_root</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">LOCKFILE_ROOT</span><span class="p">):</span>
102
103
  <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
103
104
  <span class="sd"> Configures the locking mechanism.</span>
104
105
 
105
- <span class="sd"> :param enable: Whether to enable or disable locking.</span>
106
- <span class="sd"> :param lockfile_root: The root directory for lockfiles. (default: /var/lock/ekfsm)</span>
106
+ <span class="sd"> Parameters</span>
107
+ <span class="sd"> ----------</span>
108
+ <span class="sd"> enable</span>
109
+ <span class="sd"> Whether to enable or disable locking.</span>
110
+ <span class="sd"> lockfile_root</span>
111
+ <span class="sd"> The root directory for lockfiles.</span>
107
112
  <span class="sd"> &quot;&quot;&quot;</span>
108
113
  <span class="k">global</span> <span class="n">USE_LOCK</span><span class="p">,</span> <span class="n">LOCKFILE_ROOT</span>
109
114
  <span class="n">USE_LOCK</span> <span class="o">=</span> <span class="n">enable</span>
@@ -112,7 +117,7 @@
112
117
 
113
118
 
114
119
  <div class="viewcode-block" id="locking_cleanup">
115
- <a class="viewcode-back" href="../../reference/ekfsm.html#ekfsm.locking_cleanup">[docs]</a>
120
+ <a class="viewcode-back" href="../../reference/ekfsm.html#ekfsm.lock.locking_cleanup">[docs]</a>
116
121
  <span class="k">def</span><span class="w"> </span><span class="nf">locking_cleanup</span><span class="p">():</span>
117
122
  <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
118
123
  <span class="sd"> Cleans up all lockfiles and closes all lock file descriptors.</span>
@@ -123,6 +128,8 @@
123
128
 
124
129
 
125
130
 
131
+ <div class="viewcode-block" id="Locker">
132
+ <a class="viewcode-back" href="../../reference/ekfsm.html#ekfsm.lock.Locker">[docs]</a>
126
133
  <span class="k">class</span><span class="w"> </span><span class="nc">Locker</span><span class="p">:</span>
127
134
  <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
128
135
  <span class="sd"> A class that implements a locking mechanism using file locks.</span>
@@ -134,9 +141,12 @@
134
141
 
135
142
  <span class="sd"> Example</span>
136
143
  <span class="sd"> -------</span>
137
- <span class="sd"> with Locker(&quot;mysharedresourcename&quot;).lock():</span>
138
- <span class="sd"> # Access the shared resource here</span>
139
- <span class="sd"> pass</span>
144
+ <span class="sd"> .. code-block:: python</span>
145
+
146
+ <span class="sd"> with Locker(&quot;mysharedresourcename&quot;).lock():</span>
147
+ <span class="sd"> # Access the shared resource here</span>
148
+ <span class="sd"> pass</span>
149
+
140
150
  <span class="sd"> &quot;&quot;&quot;</span>
141
151
 
142
152
  <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">module</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
@@ -150,7 +160,20 @@
150
160
  <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lockfile_path</span><span class="p">,</span> <span class="s2">&quot;a&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
151
161
  <span class="n">ALL_LOCKERS</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
152
162
 
163
+ <div class="viewcode-block" id="Locker.cleanup">
164
+ <a class="viewcode-back" href="../../reference/ekfsm.html#ekfsm.lock.Locker.cleanup">[docs]</a>
153
165
  <span class="k">def</span><span class="w"> </span><span class="nf">cleanup</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
166
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
167
+ <span class="sd"> Cleans up the lock file and closes the lock file descriptor.</span>
168
+
169
+ <span class="sd"> Important</span>
170
+ <span class="sd"> ---------</span>
171
+ <span class="sd"> This method should be called when the lock is no longer needed.</span>
172
+
173
+ <span class="sd"> Note</span>
174
+ <span class="sd"> ----</span>
175
+ <span class="sd"> It is automatically called when the context manager exits.</span>
176
+ <span class="sd"> &quot;&quot;&quot;</span>
154
177
  <span class="k">if</span> <span class="ow">not</span> <span class="n">USE_LOCK</span><span class="p">:</span>
155
178
  <span class="k">return</span>
156
179
  <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">lock_fd</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
@@ -159,10 +182,21 @@
159
182
  <span class="n">os</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lock_fd</span><span class="p">)</span>
160
183
  <span class="bp">self</span><span class="o">.</span><span class="n">lock_fd</span> <span class="o">=</span> <span class="kc">None</span>
161
184
  <span class="k">except</span> <span class="p">(</span><span class="ne">OSError</span><span class="p">,</span> <span class="ne">AttributeError</span><span class="p">):</span>
162
- <span class="k">pass</span>
185
+ <span class="k">pass</span></div>
163
186
 
187
+
188
+ <div class="viewcode-block" id="Locker.lock">
189
+ <a class="viewcode-back" href="../../reference/ekfsm.html#ekfsm.lock.Locker.lock">[docs]</a>
164
190
  <span class="nd">@contextmanager</span>
165
191
  <span class="k">def</span><span class="w"> </span><span class="nf">lock</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
192
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
193
+ <span class="sd"> Locks the resource for exclusive access.</span>
194
+
195
+ <span class="sd"> Note</span>
196
+ <span class="sd"> ----</span>
197
+ <span class="sd"> This method is a context manager that locks the resource when entered</span>
198
+ <span class="sd"> and releases the lock when exited.</span>
199
+ <span class="sd"> &quot;&quot;&quot;</span>
166
200
  <span class="k">if</span> <span class="ow">not</span> <span class="n">USE_LOCK</span><span class="p">:</span>
167
201
  <span class="k">yield</span>
168
202
  <span class="bp">self</span><span class="o">.</span><span class="n">lock_fd</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lockfile_path</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">O_RDWR</span><span class="p">)</span>
@@ -170,7 +204,9 @@
170
204
  <span class="n">fcntl</span><span class="o">.</span><span class="n">flock</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lock_fd</span><span class="p">,</span> <span class="n">fcntl</span><span class="o">.</span><span class="n">LOCK_EX</span><span class="p">)</span>
171
205
  <span class="k">yield</span>
172
206
  <span class="k">finally</span><span class="p">:</span>
173
- <span class="bp">self</span><span class="o">.</span><span class="n">cleanup</span><span class="p">()</span>
207
+ <span class="bp">self</span><span class="o">.</span><span class="n">cleanup</span><span class="p">()</span></div>
208
+ </div>
209
+
174
210
  </pre></div>
175
211
 
176
212
  </div>
@@ -71,13 +71,15 @@
71
71
  <div itemprop="articleBody">
72
72
 
73
73
  <h1>Source code for ekfsm.system</h1><div class="highlight"><pre>
74
- <span></span><span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Any</span><span class="p">,</span> <span class="n">Generator</span>
74
+ <span></span><span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Any</span>
75
75
  <span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
76
76
  <span class="kn">from</span><span class="w"> </span><span class="nn">munch</span><span class="w"> </span><span class="kn">import</span> <span class="n">Munch</span><span class="p">,</span> <span class="n">munchify</span>
77
77
 
78
78
  <span class="kn">from</span><span class="w"> </span><span class="nn">ekfsm.core.components</span><span class="w"> </span><span class="kn">import</span> <span class="n">SysTree</span>
79
79
  <span class="kn">import</span><span class="w"> </span><span class="nn">yaml</span>
80
80
 
81
+ <span class="kn">from</span><span class="w"> </span><span class="nn">ekfsm.utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">all_board_cfg_files</span><span class="p">,</span> <span class="n">find_board_config</span>
82
+
81
83
  <span class="kn">from</span><span class="w"> </span><span class="nn">.core.slots</span><span class="w"> </span><span class="kn">import</span> <span class="n">Slot</span><span class="p">,</span> <span class="n">SlotType</span>
82
84
 
83
85
  <span class="kn">from</span><span class="w"> </span><span class="nn">.config</span><span class="w"> </span><span class="kn">import</span> <span class="n">load_config</span>
@@ -87,39 +89,6 @@
87
89
  <span class="kn">from</span><span class="w"> </span><span class="nn">.log</span><span class="w"> </span><span class="kn">import</span> <span class="n">ekfsm_logger</span>
88
90
 
89
91
 
90
- <span class="n">_CFG_DIR</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="vm">__file__</span><span class="p">)</span><span class="o">.</span><span class="n">parent</span> <span class="o">/</span> <span class="s2">&quot;boards&quot;</span>
91
-
92
-
93
- <span class="k">def</span><span class="w"> </span><span class="nf">find_board_config</span><span class="p">(</span><span class="n">module_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Path</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
94
- <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
95
- <span class="sd"> Find a matching board config in `boards/oem/` given the module type specified in</span>
96
- <span class="sd"> the system configuration file.</span>
97
-
98
- <span class="sd"> Parameters</span>
99
- <span class="sd"> ----------</span>
100
- <span class="sd"> module_type</span>
101
- <span class="sd"> Board type specified in the system configuration for a slot.</span>
102
- <span class="sd"> It must consist of an OEM and the board type, separated by whitespace. Neither</span>
103
- <span class="sd"> part may contain any other whitespace.</span>
104
- <span class="sd"> &quot;&quot;&quot;</span>
105
- <span class="n">oem</span><span class="p">,</span> <span class="n">board</span> <span class="o">=</span> <span class="n">module_type</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">maxsplit</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
106
- <span class="k">if</span> <span class="p">(</span>
107
- <span class="n">path</span> <span class="o">:=</span> <span class="n">_CFG_DIR</span> <span class="o">/</span> <span class="s2">&quot;oem&quot;</span> <span class="o">/</span> <span class="n">oem</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">/</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">board</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="si">}</span><span class="s2">.yaml&quot;</span>
108
- <span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
109
- <span class="k">return</span> <span class="n">path</span>
110
- <span class="k">return</span> <span class="kc">None</span>
111
-
112
-
113
- <span class="k">def</span><span class="w"> </span><span class="nf">all_board_cfg_files</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Generator</span><span class="p">[</span><span class="n">Path</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">]:</span>
114
- <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
115
- <span class="sd"> Generator that recursively yields all *.yaml files in a directory</span>
116
- <span class="sd"> &quot;&quot;&quot;</span>
117
- <span class="n">path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">_CFG_DIR</span><span class="p">)</span>
118
- <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">path</span><span class="o">.</span><span class="n">rglob</span><span class="p">(</span><span class="s2">&quot;*.yaml&quot;</span><span class="p">):</span>
119
- <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">is_file</span><span class="p">():</span>
120
- <span class="k">yield</span> <span class="n">item</span>
121
-
122
-
123
92
  <div class="viewcode-block" id="System">
124
93
  <a class="viewcode-back" href="../../reference/ekfsm.html#ekfsm.System">[docs]</a>
125
94
  <span class="k">class</span><span class="w"> </span><span class="nc">System</span><span class="p">(</span><span class="n">SysTree</span><span class="p">):</span>