ekfsm 0.12.0.post1__tar.gz → 0.13.0a160.post4__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 (167) hide show
  1. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/.vscode/settings.json +1 -1
  2. ekfsm-0.13.0a160.post4/PKG-INFO +174 -0
  3. ekfsm-0.13.0a160.post4/README.md +156 -0
  4. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/requirements.txt +0 -1
  5. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/boards/ekf/ccu.rst +8 -8
  6. ekfsm-0.13.0a160.post4/docs/source/boards/ekf/se5-club.rst +8 -0
  7. ekfsm-0.13.0a160.post4/docs/source/boards/ekf/sn4-djembe.rst +8 -0
  8. ekfsm-0.13.0a160.post4/docs/source/boards/hitron/hdrc-300s.rst +63 -0
  9. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/index.rst +1 -1
  10. ekfsm-0.13.0a160.post4/ekfsm/boards/oem/ekf/se5-club.yaml +41 -0
  11. ekfsm-0.13.0a160.post4/ekfsm/boards/oem/ekf/sn4-djembe.yaml +41 -0
  12. ekfsm-0.12.0.post1/ekfsm/boards/oem/hitron/hdrc-300.yaml → ekfsm-0.13.0a160.post4/ekfsm/boards/oem/hitron/hdrc-300s.yaml +6 -2
  13. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/cli.py +6 -1
  14. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/config.py +1 -0
  15. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/core/components.py +14 -5
  16. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/core/utils.py +26 -11
  17. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/devices/__init__.py +4 -3
  18. ekfsm-0.12.0.post1/ekfsm/devices/hwmon.py → ekfsm-0.13.0a160.post4/ekfsm/devices/coretemp.py +8 -6
  19. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/devices/eeprom.py +41 -4
  20. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/devices/ekf_ccu_uc.py +2 -2
  21. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/devices/ekf_sur_led.py +2 -2
  22. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/devices/generic.py +20 -15
  23. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/devices/gpio.py +7 -7
  24. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/devices/iio_thermal_humidity.py +2 -2
  25. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/devices/mux.py +3 -3
  26. ekfsm-0.13.0a160.post4/ekfsm/devices/pmbus.py +247 -0
  27. ekfsm-0.13.0a160.post4/ekfsm/devices/smbus.py +24 -0
  28. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/simctrl.py +5 -27
  29. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/system.py +46 -19
  30. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/pyproject.toml +1 -1
  31. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/basic_sim.py +2 -1
  32. ekfsm-0.13.0a160.post4/tests/props.py +78 -0
  33. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/run.py +2 -0
  34. ekfsm-0.13.0a160.post4/tests/sc5-hitron-only.yaml +15 -0
  35. ekfsm-0.13.0a160.post4/tests/sim/sys/class/hwmon/hwmon2/name +1 -0
  36. ekfsm-0.13.0a160.post4/tests/sim/sys/class/hwmon/hwmon2/temp1_input +1 -0
  37. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:02/eeprom +0 -0
  38. ekfsm-0.13.0a160.post4/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/model +1 -0
  39. ekfsm-0.13.0a160.post4/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/temp1_input +1 -0
  40. ekfsm-0.13.0a160.post4/tests/sim/sys/kernel/debug/pmbus/hwmon99/status0_input +1 -0
  41. ekfsm-0.13.0a160.post4/tests/sim/sys/kernel/debug/pmbus/hwmon99/status1_input +1 -0
  42. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/test_system.yaml +3 -1
  43. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/test_sim1.py +8 -2
  44. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/test_sim2.py +1 -1
  45. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/zip2-smoke.yaml +6 -0
  46. ekfsm-0.13.0a160.post4/tests/zip2_psu.py +32 -0
  47. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/uv.lock +2 -2
  48. ekfsm-0.12.0.post1/PKG-INFO +0 -86
  49. ekfsm-0.12.0.post1/README.md +0 -68
  50. ekfsm-0.12.0.post1/ekfsm/devices/pmbus.py +0 -65
  51. ekfsm-0.12.0.post1/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/model +0 -1
  52. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/.env +0 -0
  53. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/.envrc +0 -0
  54. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/.flake8 +0 -0
  55. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/.gitignore +0 -0
  56. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/.gitlab-ci.yml +0 -0
  57. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/.readthedocs.yaml +0 -0
  58. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/.vscode/launch.json +0 -0
  59. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/LICENSE.md +0 -0
  60. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/devenv.lock +0 -0
  61. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/devenv.nix +0 -0
  62. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/devenv.yaml +0 -0
  63. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/.gitignore +0 -0
  64. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/Makefile +0 -0
  65. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/_static/devices.drawio.png +0 -0
  66. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/_static/devices.drawio.svg +0 -0
  67. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/_static/ekfsm_system.drawio.png +0 -0
  68. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/_static/ekfsm_system.drawio.svg +0 -0
  69. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/boards/ekf/sc9-toccata.rst +0 -0
  70. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/boards/ekf/snippets/cpci_inventory.rst +0 -0
  71. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/boards/ekf/spv-mystic.rst +0 -0
  72. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/boards/ekf/sq1-track.rst +0 -0
  73. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/boards/ekf/sq3-quartet.rst +0 -0
  74. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/boards/ekf/sur-uart.rst +0 -0
  75. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/boards.rst +0 -0
  76. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/conf.py +0 -0
  77. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/intro.rst +0 -0
  78. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/reference/ekfsm.rst +0 -0
  79. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/reference/index.rst +0 -0
  80. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/docs/source/reference/systemconfig.rst +0 -0
  81. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/__init__.py +0 -0
  82. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/boards/oem/ekf/ccu.yaml +0 -0
  83. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/boards/oem/ekf/sc5-festival.yaml +0 -0
  84. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/boards/oem/ekf/sc9-toccata.yaml +0 -0
  85. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/boards/oem/ekf/spv-mystic.yaml +0 -0
  86. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/boards/oem/ekf/sq1-track.yaml +0 -0
  87. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/boards/oem/ekf/sq3-quartet.yaml +0 -0
  88. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/boards/oem/ekf/srf-fan.yaml +0 -0
  89. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/boards/oem/ekf/sur-uart.yaml +0 -0
  90. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/core/__init__.py +0 -0
  91. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/core/probe.py +0 -0
  92. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/core/slots.py +0 -0
  93. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/core/sysfs.py +0 -0
  94. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/devices/iio.py +0 -0
  95. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/devices/imu.py +0 -0
  96. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/devices/smbios.py +0 -0
  97. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/devices/utils.py +0 -0
  98. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/exceptions.py +0 -0
  99. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/log.py +0 -0
  100. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/ekfsm/py.typed +0 -0
  101. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/hack/bringup_zip_i2c_devs.sh +0 -0
  102. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/scripts/modify-acpi-table.sh +0 -0
  103. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/__init__.py +0 -0
  104. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/ccu-test.py +0 -0
  105. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/ccu_wokwi_sim.py +0 -0
  106. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/__init__.py +0 -0
  107. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-10/firmware_node/adr +0 -0
  108. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-10/name +0 -0
  109. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-10/new_device +0 -0
  110. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-11/firmware_node/adr +0 -0
  111. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-11/name +0 -0
  112. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-11/new_device +0 -0
  113. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-12/firmware_node/adr +0 -0
  114. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-12/name +0 -0
  115. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-12/new_device +0 -0
  116. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/firmware_node/adr +0 -0
  117. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/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
  118. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:01/gpiochip1/dev +0 -0
  119. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:01/name +0 -0
  120. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/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
  121. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:02/name +0 -0
  122. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/name +0 -0
  123. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/new_device +0 -0
  124. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-15/firmware_node/adr +0 -0
  125. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-15/name +0 -0
  126. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-15/new_device +0 -0
  127. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-16/firmware_node/adr +0 -0
  128. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-16/name +0 -0
  129. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-16/new_device +0 -0
  130. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-17/firmware_node/adr +0 -0
  131. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-17/name +0 -0
  132. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-17/new_device +0 -0
  133. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/firmware_node/adr +0 -0
  134. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/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
  135. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:01/gpiochip1/dev +0 -0
  136. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:01/name +0 -0
  137. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:02/eeprom +0 -0
  138. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/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
  139. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:02/name +0 -0
  140. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/name +0 -0
  141. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/new_device +0 -0
  142. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:00/firmware_node/description +0 -0
  143. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:00/name +0 -0
  144. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/firmware_node/description +0 -0
  145. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/curr1_input +0 -0
  146. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/curr2_input +0 -0
  147. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/in1_input +0 -0
  148. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/in2_input +0 -0
  149. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/revision +0 -0
  150. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/serial +0 -0
  151. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/vendor +0 -0
  152. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/name +0 -0
  153. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0002:00/firmware_node/description +0 -0
  154. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0002:00/name +0 -0
  155. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/new_device +0 -0
  156. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:1f.4/i2c-7/7-0057/eeprom +0 -0
  157. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/sys/devices/pci0000:00/0000:00:1f.4/i2c-7/7-0057/name +0 -0
  158. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/sim/test_system_inconsistent.yaml +0 -0
  159. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/srf-fan-test.py +0 -0
  160. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/srf-fan-test.yaml +0 -0
  161. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/test_config.py +0 -0
  162. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/test_sim-ccu-eeprom.py +0 -0
  163. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/testdata/cfg_simple.yaml +0 -0
  164. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/zip2-ccu-only.yaml +0 -0
  165. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/zip2_ccu_exp.py +0 -0
  166. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/zip2_ccu_imu.py +0 -0
  167. {ekfsm-0.12.0.post1 → ekfsm-0.13.0a160.post4}/tests/zip2_smoke.py +0 -0
@@ -2,7 +2,7 @@
2
2
  "mypy-type-checker.reportingScope": "workspace",
3
3
  "editor.defaultFormatter": "ms-python.black-formatter",
4
4
  "editor.formatOnSave": true,
5
- "mypy-type-checker.preferDaemon": false,
5
+ "mypy-type-checker.preferDaemon": true,
6
6
  "mypy-type-checker.importStrategy": "fromEnvironment",
7
7
  "autoDocstring.docstringFormat": "numpy-notypes",
8
8
  "autoDocstring.startOnNewLine": true,
@@ -0,0 +1,174 @@
1
+ Metadata-Version: 2.4
2
+ Name: ekfsm
3
+ Version: 0.13.0a160.post4
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>
6
+ Requires-Python: >=3.10
7
+ Requires-Dist: anytree
8
+ Requires-Dist: click>=8.0.1
9
+ Requires-Dist: crcmod
10
+ Requires-Dist: gpiod>=2.1.0
11
+ Requires-Dist: hexdump
12
+ Requires-Dist: more-itertools
13
+ Requires-Dist: munch
14
+ Requires-Dist: smbus2
15
+ Requires-Dist: types-pyyaml>=6.0.12.20241230
16
+ Requires-Dist: yamale
17
+ Description-Content-Type: text/markdown
18
+
19
+ # ekfsm - EKF system management library
20
+
21
+ Provides a python library framework for access to system management functions on Linux based modular hardware systems,
22
+ such as CompactPCI-Serial systems.
23
+
24
+ ## Features
25
+
26
+ - System configuration via YAML configuration file
27
+ - Obtain inventory information of the system and its components
28
+ - Obtain sensor information, such as temperature, humidity, voltage, current, accelerometer, gyroscope, etc.
29
+ - Write and read EEPROM contents
30
+ - Access to system level functions, such as system LEDs, system fan, system power supply, etc.
31
+ - Supports simulation mode for development and testing
32
+ - Probing of desired boards in configured slots
33
+
34
+ ## Requirements
35
+
36
+ Prior to the use of I2C, PMBus or GPIO devices using the API, those devices have to be initialised by ACPI or manual device setup.
37
+
38
+ ### Example
39
+
40
+ In order to initialize an EEPROM of type AT24 behind a Mux channel 0, manualy add the device:
41
+
42
+ ```bash
43
+ cd /sys/bus/i2c/devices/0-0074/channel-0/
44
+ echo 24c02 0x55 >new_device
45
+ ```
46
+
47
+ Now we can access the EEPROM contents:
48
+
49
+ ```bash
50
+ hd 8-0055/eeprom
51
+ 00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
52
+ *
53
+ 00000100
54
+ ```
55
+
56
+
57
+ ## Installation
58
+
59
+ To install the package via pip, you have to use a virtual environment to ensure full operabilty.
60
+ *Note: CLI entrypoint script won't work if installed in the system store!*
61
+
62
+ ### Prepare virtual environment
63
+
64
+ First, name, create and activate your virtual environment (here `myvenv`):
65
+
66
+ ```bash
67
+ $ python -m venv myvenv
68
+ $ source myvenv/bin/activate
69
+ ```
70
+
71
+ ### Package install
72
+
73
+ Now install the ekfsm package and all dependencies from the [project pypi registry](https://gitlab.ekf.com/libs/apis/ekfsm/-/packages):
74
+
75
+ ```bash
76
+ (myvenv) $ pip install ekfsm --index-url https://gitlab.ekf.com/api/v4/projects/407/packages/pypi/simple
77
+ Looking in indexes: https://gitlab.ekf.com/api/v4/projects/407/packages/pypi/simple
78
+ Collecting ekfsm
79
+ Downloading https://gitlab.ekf.com/api/v4/projects/407/packages/pypi/files/e400ee46de9346c086ce708675977cc6ab080c8c016d360970c82d1c436f7c89/ekfsm-0.12.0-py3-none-any.whl (43 kB)
80
+ Collecting anytree (from ekfsm)
81
+ Using cached anytree-2.12.1-py3-none-any.whl.metadata (8.1 kB)
82
+ Collecting click>=8.0.1 (from ekfsm)
83
+ Using cached click-8.1.8-py3-none-any.whl.metadata (2.3 kB)
84
+ Collecting crcmod (from ekfsm)
85
+ Using cached crcmod-1.7-cp312-cp312-linux_x86_64.whl
86
+ Collecting gpiod>=2.1.0 (from ekfsm)
87
+ Using cached gpiod-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.1 kB)
88
+ Collecting hexdump (from ekfsm)
89
+ Using cached hexdump-3.3-py3-none-any.whl
90
+ Collecting more-itertools (from ekfsm)
91
+ Using cached more_itertools-10.6.0-py3-none-any.whl.metadata (37 kB)
92
+ Collecting munch (from ekfsm)
93
+ Using cached munch-4.0.0-py2.py3-none-any.whl.metadata (5.9 kB)
94
+ Collecting smbus2 (from ekfsm)
95
+ Using cached smbus2-0.5.0-py2.py3-none-any.whl.metadata (6.9 kB)
96
+ Collecting types-pyyaml>=6.0.12.20241230 (from ekfsm)
97
+ Using cached types_PyYAML-6.0.12.20241230-py3-none-any.whl.metadata (1.8 kB)
98
+ Collecting yamale (from ekfsm)
99
+ Using cached yamale-6.0.0-py3-none-any.whl.metadata (22 kB)
100
+ Collecting six (from anytree->ekfsm)
101
+ Using cached six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
102
+ Collecting pyyaml (from yamale->ekfsm)
103
+ Using cached PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)
104
+ Using cached click-8.1.8-py3-none-any.whl (98 kB)
105
+ Using cached gpiod-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (103 kB)
106
+ Using cached types_PyYAML-6.0.12.20241230-py3-none-any.whl (20 kB)
107
+ Using cached anytree-2.12.1-py3-none-any.whl (44 kB)
108
+ Using cached more_itertools-10.6.0-py3-none-any.whl (63 kB)
109
+ Using cached munch-4.0.0-py2.py3-none-any.whl (9.9 kB)
110
+ Using cached smbus2-0.5.0-py2.py3-none-any.whl (11 kB)
111
+ Using cached yamale-6.0.0-py3-none-any.whl (57 kB)
112
+ Using cached PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (767 kB)
113
+ Using cached six-1.17.0-py2.py3-none-any.whl (11 kB)
114
+ Installing collected packages: smbus2, hexdump, crcmod, types-pyyaml, six, pyyaml, munch, more-itertools, gpiod, click, yamale, anytree, ekfsm
115
+ Successfully installed anytree-2.12.1 click-8.1.8 crcmod-1.7 ekfsm-0.12.0 gpiod-2.3.0 hexdump-3.3 more-itertools-10.6.0 munch-4.0.0 pyyaml-6.0.2 six-1.17.0 smbus2-0.5.0 types-pyyaml-6.0.12.20241230 yamale-6.0.0
116
+ ```
117
+
118
+ ## Example Usage Scenario
119
+
120
+ To use the library for a desired system, it must be configured in a system config yaml file:
121
+
122
+ ```yaml
123
+ # Example config
124
+ system_config:
125
+ name: "Simple System"
126
+ slots:
127
+ - name: SYSTEM_SLOT
128
+ slot_type: CPCI_S0_SYS
129
+ desired_hwmodule_type: EKF SC9-Toccata
130
+ desired_hwmodule_name: CPU
131
+ attributes:
132
+ is_master: true
133
+ - name: SLOT1
134
+ slot_type: CPCI_S0_PER
135
+ desired_hwmodule_type: EKF SRF-SUR
136
+ desired_hwmodule_name: SER
137
+ attributes:
138
+ slot_coding: 0x1
139
+ ```
140
+
141
+ ### API
142
+
143
+ If you want to access the LEDs on the EKF SUR-UART, you can do the following:
144
+ ```python
145
+ import ekfsm
146
+
147
+ system = ekfsm.System("system.yaml")
148
+
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
+ sur = system.slots["SLOT1"].hwmodule # by using the slot name as key
153
+ sur = system.slots.slot1.hwmodule # by using the slot name as attribute
154
+
155
+ # accessing the LED device
156
+ sur.led_a.set(0,"purple") # set the color of the LED to purple
157
+ ```
158
+
159
+ For further infos on all API aspects, please see the [API Reference](https://ekfsm.readthedocs.io/en/main/reference/index.html).
160
+
161
+ ### CLI
162
+
163
+ Upon activation of a venv provided with the ekfsm library, an entry point script `ekfsm-cli` is exported in the current shell.
164
+
165
+ See `ekfsm-cli -h` for a help on the usage.
166
+
167
+
168
+ ## Resources
169
+
170
+ [Documentation](https://ekfsm.readthedocs.io/en/main/)
171
+
172
+ [Source Code](https://gitlab.ekf.com/libs/apis/ekfsm)
173
+
174
+ [Developer Wiki](https://gitlab.ekf.com/libs/apis/ekfsm/-/wikis/home)
@@ -0,0 +1,156 @@
1
+ # ekfsm - EKF system management library
2
+
3
+ Provides a python library framework for access to system management functions on Linux based modular hardware systems,
4
+ such as CompactPCI-Serial systems.
5
+
6
+ ## Features
7
+
8
+ - System configuration via YAML configuration file
9
+ - Obtain inventory information of the system and its components
10
+ - Obtain sensor information, such as temperature, humidity, voltage, current, accelerometer, gyroscope, etc.
11
+ - Write and read EEPROM contents
12
+ - Access to system level functions, such as system LEDs, system fan, system power supply, etc.
13
+ - Supports simulation mode for development and testing
14
+ - Probing of desired boards in configured slots
15
+
16
+ ## Requirements
17
+
18
+ Prior to the use of I2C, PMBus or GPIO devices using the API, those devices have to be initialised by ACPI or manual device setup.
19
+
20
+ ### Example
21
+
22
+ In order to initialize an EEPROM of type AT24 behind a Mux channel 0, manualy add the device:
23
+
24
+ ```bash
25
+ cd /sys/bus/i2c/devices/0-0074/channel-0/
26
+ echo 24c02 0x55 >new_device
27
+ ```
28
+
29
+ Now we can access the EEPROM contents:
30
+
31
+ ```bash
32
+ hd 8-0055/eeprom
33
+ 00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
34
+ *
35
+ 00000100
36
+ ```
37
+
38
+
39
+ ## Installation
40
+
41
+ To install the package via pip, you have to use a virtual environment to ensure full operabilty.
42
+ *Note: CLI entrypoint script won't work if installed in the system store!*
43
+
44
+ ### Prepare virtual environment
45
+
46
+ First, name, create and activate your virtual environment (here `myvenv`):
47
+
48
+ ```bash
49
+ $ python -m venv myvenv
50
+ $ source myvenv/bin/activate
51
+ ```
52
+
53
+ ### Package install
54
+
55
+ Now install the ekfsm package and all dependencies from the [project pypi registry](https://gitlab.ekf.com/libs/apis/ekfsm/-/packages):
56
+
57
+ ```bash
58
+ (myvenv) $ pip install ekfsm --index-url https://gitlab.ekf.com/api/v4/projects/407/packages/pypi/simple
59
+ Looking in indexes: https://gitlab.ekf.com/api/v4/projects/407/packages/pypi/simple
60
+ Collecting ekfsm
61
+ Downloading https://gitlab.ekf.com/api/v4/projects/407/packages/pypi/files/e400ee46de9346c086ce708675977cc6ab080c8c016d360970c82d1c436f7c89/ekfsm-0.12.0-py3-none-any.whl (43 kB)
62
+ Collecting anytree (from ekfsm)
63
+ Using cached anytree-2.12.1-py3-none-any.whl.metadata (8.1 kB)
64
+ Collecting click>=8.0.1 (from ekfsm)
65
+ Using cached click-8.1.8-py3-none-any.whl.metadata (2.3 kB)
66
+ Collecting crcmod (from ekfsm)
67
+ Using cached crcmod-1.7-cp312-cp312-linux_x86_64.whl
68
+ Collecting gpiod>=2.1.0 (from ekfsm)
69
+ Using cached gpiod-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.1 kB)
70
+ Collecting hexdump (from ekfsm)
71
+ Using cached hexdump-3.3-py3-none-any.whl
72
+ Collecting more-itertools (from ekfsm)
73
+ Using cached more_itertools-10.6.0-py3-none-any.whl.metadata (37 kB)
74
+ Collecting munch (from ekfsm)
75
+ Using cached munch-4.0.0-py2.py3-none-any.whl.metadata (5.9 kB)
76
+ Collecting smbus2 (from ekfsm)
77
+ Using cached smbus2-0.5.0-py2.py3-none-any.whl.metadata (6.9 kB)
78
+ Collecting types-pyyaml>=6.0.12.20241230 (from ekfsm)
79
+ Using cached types_PyYAML-6.0.12.20241230-py3-none-any.whl.metadata (1.8 kB)
80
+ Collecting yamale (from ekfsm)
81
+ Using cached yamale-6.0.0-py3-none-any.whl.metadata (22 kB)
82
+ Collecting six (from anytree->ekfsm)
83
+ Using cached six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
84
+ Collecting pyyaml (from yamale->ekfsm)
85
+ Using cached PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)
86
+ Using cached click-8.1.8-py3-none-any.whl (98 kB)
87
+ Using cached gpiod-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (103 kB)
88
+ Using cached types_PyYAML-6.0.12.20241230-py3-none-any.whl (20 kB)
89
+ Using cached anytree-2.12.1-py3-none-any.whl (44 kB)
90
+ Using cached more_itertools-10.6.0-py3-none-any.whl (63 kB)
91
+ Using cached munch-4.0.0-py2.py3-none-any.whl (9.9 kB)
92
+ Using cached smbus2-0.5.0-py2.py3-none-any.whl (11 kB)
93
+ Using cached yamale-6.0.0-py3-none-any.whl (57 kB)
94
+ Using cached PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (767 kB)
95
+ Using cached six-1.17.0-py2.py3-none-any.whl (11 kB)
96
+ Installing collected packages: smbus2, hexdump, crcmod, types-pyyaml, six, pyyaml, munch, more-itertools, gpiod, click, yamale, anytree, ekfsm
97
+ Successfully installed anytree-2.12.1 click-8.1.8 crcmod-1.7 ekfsm-0.12.0 gpiod-2.3.0 hexdump-3.3 more-itertools-10.6.0 munch-4.0.0 pyyaml-6.0.2 six-1.17.0 smbus2-0.5.0 types-pyyaml-6.0.12.20241230 yamale-6.0.0
98
+ ```
99
+
100
+ ## Example Usage Scenario
101
+
102
+ To use the library for a desired system, it must be configured in a system config yaml file:
103
+
104
+ ```yaml
105
+ # Example config
106
+ system_config:
107
+ name: "Simple System"
108
+ slots:
109
+ - name: SYSTEM_SLOT
110
+ slot_type: CPCI_S0_SYS
111
+ desired_hwmodule_type: EKF SC9-Toccata
112
+ desired_hwmodule_name: CPU
113
+ attributes:
114
+ is_master: true
115
+ - name: SLOT1
116
+ slot_type: CPCI_S0_PER
117
+ desired_hwmodule_type: EKF SRF-SUR
118
+ desired_hwmodule_name: SER
119
+ attributes:
120
+ slot_coding: 0x1
121
+ ```
122
+
123
+ ### API
124
+
125
+ If you want to access the LEDs on the EKF SUR-UART, you can do the following:
126
+ ```python
127
+ import ekfsm
128
+
129
+ system = ekfsm.System("system.yaml")
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
134
+ sur = system.slots["SLOT1"].hwmodule # by using the slot name as key
135
+ sur = system.slots.slot1.hwmodule # by using the slot name as attribute
136
+
137
+ # accessing the LED device
138
+ sur.led_a.set(0,"purple") # set the color of the LED to purple
139
+ ```
140
+
141
+ For further infos on all API aspects, please see the [API Reference](https://ekfsm.readthedocs.io/en/main/reference/index.html).
142
+
143
+ ### CLI
144
+
145
+ Upon activation of a venv provided with the ekfsm library, an entry point script `ekfsm-cli` is exported in the current shell.
146
+
147
+ See `ekfsm-cli -h` for a help on the usage.
148
+
149
+
150
+ ## Resources
151
+
152
+ [Documentation](https://ekfsm.readthedocs.io/en/main/)
153
+
154
+ [Source Code](https://gitlab.ekf.com/libs/apis/ekfsm)
155
+
156
+ [Developer Wiki](https://gitlab.ekf.com/libs/apis/ekfsm/-/wikis/home)
@@ -1,6 +1,5 @@
1
1
  # This file was autogenerated by uv via the following command:
2
2
  # uv export
3
- -e .
4
3
  alabaster==1.0.0 \
5
4
  --hash=sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e \
6
5
  --hash=sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b
@@ -5,7 +5,7 @@ EKF CCU
5
5
  ===========
6
6
 
7
7
 
8
- Chassis Inventory (Object: `system_inventory``)
8
+ Chassis Inventory (Object: `system_inventory`)
9
9
  ===============================================
10
10
 
11
11
  The system inventory provides access to the chassis inventory, such as the vendor, model, serial number, and revision.
@@ -60,7 +60,7 @@ CCU Management (Object: `management`)
60
60
  +--------------------------------------------------------------+-----------------------------------------------+----------------------------------------------------+
61
61
  | :meth:`~ekfsm.devices.ekf_ccu_uc.EKFCcuUc.load_parameterset` | Load a parameterset into the CCU | ``{"version": "1.0.0", "parameters": { ... } }`` |
62
62
  +--------------------------------------------------------------+-----------------------------------------------+----------------------------------------------------+
63
- | :meth:`~ekfsm.devices.ekf_ccu_uc.EKFCcuUc.restart` | Restart the CCU | - |
63
+ | :meth:`~ekfsm.devices.ekf_ccu_uc.EKFCcuUc.restart` | Restart the CCU | N/A |
64
64
  +--------------------------------------------------------------+-----------------------------------------------+----------------------------------------------------+
65
65
 
66
66
 
@@ -72,7 +72,7 @@ The system state controller provides method to influence the CCU's system state
72
72
  +--------------------------------------------------------+----------------------------------------+---------------+
73
73
  | Method | Description | Example Value |
74
74
  +--------------------------------------------------------+----------------------------------------+---------------+
75
- | :meth:`~ekfsm.devices.ekf_ccu_uc.EKFCcuUc.wd_trigger` | Trigger Watchdog | - |
75
+ | :meth:`~ekfsm.devices.ekf_ccu_uc.EKFCcuUc.wd_trigger` | Trigger Watchdog | N/A |
76
76
  +--------------------------------------------------------+----------------------------------------+---------------+
77
77
  | :meth:`~ekfsm.devices.ekf_ccu_uc.EKFCcuUc.sw_shutdown` | Tell CCU that we are going to shutdown | ``50`` |
78
78
  +--------------------------------------------------------+----------------------------------------+---------------+
@@ -93,11 +93,11 @@ Fan Controller (Object: `fan`)
93
93
  Inertial Measurement Unit (Object: `imu`)
94
94
  =========================================
95
95
 
96
- +-------------------------------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
97
- | Method | Description | Example Value |
98
- +-------------------------------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
99
- | :meth:`~ekfsm.devices.ekf_ccu_uc.EKFCcuUc.imu_sample` | Read the next IMU sample | ``[-0.0047884033203125, -0.0143652099609375, 9.859322436523437], gyro: [-0.3662109375, -0.54931640625, 0.18310546875], lost: False`` |
100
- +-------------------------------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
96
+ +-----------------------------------------------------------------+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
97
+ | Method | Description | Example Value |
98
+ +-----------------------------------------------------------------+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
99
+ | :meth:`sample() <ekfsm.devices.ekf_ccu_uc.EKFCcuUc.imu_sample>` | Read the next IMU sample | ``accel: [-0.0047884033203125, -0.0143652099609375, 9.859322436523437], gyro: [-0.3662109375, -0.54931640625, 0.18310546875], lost: False`` |
100
+ +-----------------------------------------------------------------+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
101
101
 
102
102
  Thermal and Humidity Sensor (Object: `th`)
103
103
  ==========================================
@@ -0,0 +1,8 @@
1
+ ================
2
+ EKF SE5-CLUB
3
+ ================
4
+
5
+ Inventory
6
+ =========
7
+
8
+ .. include:: snippets/cpci_inventory.rst
@@ -0,0 +1,8 @@
1
+ ================
2
+ EKF SN4-DJEMBE
3
+ ================
4
+
5
+ Inventory
6
+ =========
7
+
8
+ .. include:: snippets/cpci_inventory.rst
@@ -0,0 +1,63 @@
1
+ ================
2
+ HITRON HDRC-300S
3
+ ================
4
+
5
+ Inventory (Object: `inventory`)
6
+ =================================
7
+
8
+ The inventory provides access to the PSU inventory, such as the vendor, model, serial number, and revision.
9
+
10
+ +---------------------------------------------+-------------------+----------------------------+
11
+ | Method | Description | Example Value |
12
+ +---------------------------------------------+-------------------+----------------------------+
13
+ | :meth:`~ekfsm.devices.pmbus.PmBus.vendor` | Get vendor | ``Hitron`` |
14
+ +---------------------------------------------+-------------------+----------------------------+
15
+ | :meth:`~ekfsm.devices.pmbus.PmBus.model` | Get model | ``HDRC300S-110J-D120E(N)`` |
16
+ +---------------------------------------------+-------------------+----------------------------+
17
+ | :meth:`~ekfsm.devices.pmbus.PmBus.serial` | Get serial number | ``23450506`` |
18
+ +---------------------------------------------+-------------------+----------------------------+
19
+ | :meth:`~ekfsm.devices.pmbus.PmBus.revision` | Get Prevision | ``0A`` |
20
+ +---------------------------------------------+-------------------+----------------------------+
21
+
22
+ Device Temperature (Object: `th`)
23
+ ==================================
24
+
25
+ +---------------------------------------------------------------+---------------------+---------------+
26
+ | Method | Description | Example Value |
27
+ +---------------------------------------------------------------+---------------------+---------------+
28
+ | :meth:`temperature() <ekfsm.devices.pmbus.PmBus.temp1_input>` | Get the temperature | ``-10`` |
29
+ +---------------------------------------------------------------+---------------------+---------------+
30
+
31
+ Main Output (Object: `main`)
32
+ ==============================
33
+
34
+ The `main` object respresent the main output module (+12V) of the PSU.
35
+
36
+ +------------------------------------------------------------+---------------------------+---------------------------------------------------------------+
37
+ | Method | Description | Example Value |
38
+ +------------------------------------------------------------+---------------------------+---------------------------------------------------------------+
39
+ | :meth:`voltage() <ekfsm.devices.pmbus.PmBus.in1_input>` | Get actual output voltage | ``12.1`` |
40
+ +------------------------------------------------------------+---------------------------+---------------------------------------------------------------+
41
+ | :meth:`current() <ekfsm.devices.pmbus.PmBus.curr1_input>` | Get actual output current | ``2.5`` |
42
+ +------------------------------------------------------------+---------------------------+---------------------------------------------------------------+
43
+ | :meth:`status() <ekfsm.devices.pmbus.PmBus.status0_input>` | Get diagnostics | ``<PsuStatus.OUTPUT_OVERVOLTAGE``|``OUTPUT_OVERCURRENT: 48>`` |
44
+ +------------------------------------------------------------+---------------------------+---------------------------------------------------------------+
45
+
46
+
47
+ Standby Output (Object: `sby`)
48
+ ==============================
49
+
50
+ The `sby` object respresent the secondary output module (+5V) of the PSU.
51
+
52
+ +------------------------------------------------------------+---------------------------+---------------------------------------------------------------+
53
+ | Method | Description | Example Value |
54
+ +------------------------------------------------------------+---------------------------+---------------------------------------------------------------+
55
+ | :meth:`voltage() <ekfsm.devices.pmbus.PmBus.in2_input>` | Get actual output voltage | ``5.1`` |
56
+ +------------------------------------------------------------+---------------------------+---------------------------------------------------------------+
57
+ | :meth:`current() <ekfsm.devices.pmbus.PmBus.curr2_input>` | Get actual output current | ``0.2`` |
58
+ +------------------------------------------------------------+---------------------------+---------------------------------------------------------------+
59
+ | :meth:`status() <ekfsm.devices.pmbus.PmBus.status1_input>` | Get diagnostics | ``<PsuStatus.OUTPUT_OVERVOLTAGE``|``OUTPUT_OVERCURRENT: 48>`` |
60
+ +------------------------------------------------------------+---------------------------+---------------------------------------------------------------+
61
+
62
+ .. warning::
63
+ The `status()` methods only work if the debug filesystem is mounted.
@@ -3,7 +3,7 @@
3
3
  You can adapt this file completely to your liking, but it should at least
4
4
  contain the root `toctree` directive.
5
5
 
6
- Welcom to EKF System Management Library documentation!
6
+ Welcome to EKF System Management Library documentation!
7
7
  ======================================================
8
8
 
9
9
 
@@ -0,0 +1,41 @@
1
+ id: 64
2
+ name: "EKF SE5-CLUB"
3
+ slot_type: CPCI_S0_PER
4
+ children:
5
+ - device_type: I2CMux
6
+ name: "MUX"
7
+ addr: 0x70
8
+ slot_coding_mask: 0x07
9
+ children:
10
+ - device_type: MuxChannel
11
+ name: "CH00"
12
+ channel_id: 0
13
+ children:
14
+ - device_type: EKFIdentificationIOExpander
15
+ name: "GPIO"
16
+ addr: 0x3D
17
+ provides:
18
+ inventory:
19
+ - revision
20
+ - device_type: EKF_EEPROM
21
+ name: "EEPROM"
22
+ addr: 0x55
23
+ provides:
24
+ inventory:
25
+ - vendor
26
+ - serial
27
+ - model
28
+ - repaired_at
29
+ - manufactured_at
30
+ - device_type: MuxChannel
31
+ name: "CH01"
32
+ channel_id: 1
33
+ children:
34
+ - device_type: MuxChannel
35
+ name: "CH02"
36
+ channel_id: 2
37
+ children:
38
+ - device_type: MuxChannel
39
+ name: "CH03"
40
+ channel_id: 3
41
+ children:
@@ -0,0 +1,41 @@
1
+ id: 61
2
+ name: "EKF SN4-DJEMBE"
3
+ slot_type: CPCI_S0_PER
4
+ children:
5
+ - device_type: I2CMux
6
+ name: "MUX"
7
+ addr: 0x70
8
+ slot_coding_mask: 0x07
9
+ children:
10
+ - device_type: MuxChannel
11
+ name: "CH00"
12
+ channel_id: 0
13
+ children:
14
+ - device_type: EKFIdentificationIOExpander
15
+ name: "GPIO"
16
+ addr: 0x3D
17
+ provides:
18
+ inventory:
19
+ - revision
20
+ - device_type: EKF_EEPROM
21
+ name: "EEPROM"
22
+ addr: 0x55
23
+ provides:
24
+ inventory:
25
+ - vendor
26
+ - serial
27
+ - model
28
+ - repaired_at
29
+ - manufactured_at
30
+ - device_type: MuxChannel
31
+ name: "CH01"
32
+ channel_id: 1
33
+ children:
34
+ - device_type: MuxChannel
35
+ name: "CH02"
36
+ channel_id: 2
37
+ children:
38
+ - device_type: MuxChannel
39
+ name: "CH03"
40
+ channel_id: 3
41
+ children:
@@ -1,5 +1,5 @@
1
- id: HDRC300
2
- name: "HITRON HDRC-300"
1
+ id: HDRC300S-110J-D120E(N)
2
+ name: "Hitron HDRC-300S"
3
3
  slot_type: CPCI_S0_PSU
4
4
  children:
5
5
  - device_type: PmBus
@@ -15,6 +15,10 @@ children:
15
15
  main:
16
16
  - voltage: in1_input
17
17
  - current: curr1_input
18
+ - status: status0_input
18
19
  sby:
19
20
  - voltage: in2_input
20
21
  - current: curr2_input
22
+ - status: status1_input
23
+ th:
24
+ - temperature: temp1_input
@@ -75,9 +75,12 @@ def cli(verbose, debug, sysfs, config):
75
75
  @click.option("--revision", "-r", is_flag=False, help="Write chassis revision")
76
76
  @click.option("--model", "-m", is_flag=False, help="Write chassis model")
77
77
  @click.option("--custom", "-c", is_flag=False, help="Write chassis custom information")
78
- def write(serial, unit, vendor, revision, model, custom):
78
+ @click.option("--version", "-v", is_flag=True, help="Write schema version")
79
+ def write(serial, unit, vendor, revision, model, custom, version):
79
80
  """Write data to the system"""
80
81
  chassis = sm.ccu.chassis_inventory
82
+ eeprom = sm.ccu.mux.ch00.eeprom
83
+
81
84
  if serial:
82
85
  chassis.write_serial(serial)
83
86
  if unit:
@@ -90,6 +93,8 @@ def write(serial, unit, vendor, revision, model, custom):
90
93
  chassis.write_model(model)
91
94
  if custom:
92
95
  chassis.write_customer_area(custom)
96
+ if version:
97
+ eeprom.write_version(version)
93
98
 
94
99
 
95
100
  @cli.command()
@@ -7,6 +7,7 @@ from typing import Any, List, Tuple
7
7
  schema_str = """
8
8
  system_config:
9
9
  name: str()
10
+ aggregates: map(required=False)
10
11
  slots: list(include('slot'))
11
12
  ---
12
13
  slot:
@@ -11,16 +11,17 @@ if TYPE_CHECKING:
11
11
  from .slots import Slot
12
12
 
13
13
 
14
- class SystemComponent(NodeMixin):
14
+ class SysTree(NodeMixin):
15
15
  """
16
16
  Base class for all system components including Hardware Modules and Devices.
17
17
  """
18
18
 
19
- def __init__(self, name: str):
19
+ def __init__(self, name: str, abort: bool = False) -> None:
20
20
  from ekfsm.log import ekfsm_logger
21
21
 
22
22
  self.logger = ekfsm_logger(name)
23
23
  self.name = name
24
+ self.abort = abort
24
25
 
25
26
  def _render_tree(self) -> str:
26
27
  output = ""
@@ -35,18 +36,26 @@ class SystemComponent(NodeMixin):
35
36
  print(self)
36
37
 
37
38
 
38
- class HwModule(SystemComponent):
39
+ class HwModule(SysTree):
39
40
  """
40
41
  A HwModule represents an instantiation of a specifc hw board type,
41
42
  for example an instance of an EKF SC9 board.
42
43
  """
43
44
 
44
- def __init__(self, instance_name: str, config: dict, slot: Slot) -> None:
45
+ def __init__(
46
+ self,
47
+ instance_name: str,
48
+ config: dict,
49
+ slot: Slot,
50
+ abort: bool = False,
51
+ *args,
52
+ **kwargs,
53
+ ) -> None:
45
54
  from ekfsm.core.utils import deserialize_hardware_tree
46
55
 
47
56
  from .slots import SlotType
48
57
 
49
- super().__init__(instance_name)
58
+ super().__init__(instance_name, abort=abort)
50
59
  self._slot: Slot = slot
51
60
  self.config = config
52
61