ekfsm 1.4.0a37__tar.gz → 1.4.0a40__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 (191) hide show
  1. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/PKG-INFO +1 -1
  2. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/core/utils.py +1 -0
  3. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/button.py +6 -1
  4. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/buttonArray.py +23 -3
  5. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/colorLed.py +25 -6
  6. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/thermal_humidity.py +10 -5
  7. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/watchdog.py +11 -3
  8. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/pyproject.toml +1 -1
  9. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/.env +0 -0
  10. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/.envrc +0 -0
  11. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/.flake8 +0 -0
  12. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/.gitattributes +0 -0
  13. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/.gitignore +0 -0
  14. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/.gitlab-ci.yml +0 -0
  15. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/.readthedocs.yaml +0 -0
  16. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/.vscode/launch.json +0 -0
  17. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/.vscode/settings.json +0 -0
  18. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/GitVersion.yml +0 -0
  19. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/LICENSE.md +0 -0
  20. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/README.md +0 -0
  21. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/devenv.lock +0 -0
  22. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/devenv.nix +0 -0
  23. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/devenv.yaml +0 -0
  24. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/.gitignore +0 -0
  25. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/Makefile +0 -0
  26. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/requirements.txt +0 -0
  27. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/_static/devices.drawio.png +0 -0
  28. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/_static/devices.drawio.svg +0 -0
  29. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/_static/ekfsm_system.drawio.png +0 -0
  30. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/_static/ekfsm_system.drawio.svg +0 -0
  31. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/boards/ekf/ccu.rst +0 -0
  32. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/boards/ekf/sc5-festival.rst +0 -0
  33. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/boards/ekf/sc9-toccata.rst +0 -0
  34. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/boards/ekf/se5-club.rst +0 -0
  35. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/boards/ekf/sn4-djembe.rst +0 -0
  36. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/boards/ekf/snippets/cpci_inventory.rst +0 -0
  37. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/boards/ekf/spv-mystic.rst +0 -0
  38. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/boards/ekf/sq1-track.rst +0 -0
  39. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/boards/ekf/sq3-quartet.rst +0 -0
  40. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/boards/ekf/sur-uart.rst +0 -0
  41. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/boards/hitron/hdrc-300s.rst +0 -0
  42. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/boards.rst +0 -0
  43. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/conf.py +0 -0
  44. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/index.rst +0 -0
  45. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/intro.rst +0 -0
  46. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/reference/ekfsm.rst +0 -0
  47. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/reference/index.rst +0 -0
  48. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/docs/source/reference/systemconfig.rst +0 -0
  49. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/__init__.py +0 -0
  50. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/boards/oem/ekf/ccu.yaml +0 -0
  51. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/boards/oem/ekf/sc5-festival.yaml +0 -0
  52. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/boards/oem/ekf/sc9-toccata.yaml +0 -0
  53. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/boards/oem/ekf/se5-club.yaml +0 -0
  54. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/boards/oem/ekf/sn4-djembe.yaml +0 -0
  55. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/boards/oem/ekf/spv-mystic.yaml +0 -0
  56. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/boards/oem/ekf/sq1-track.yaml +0 -0
  57. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/boards/oem/ekf/sq3-quartet.yaml +0 -0
  58. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/boards/oem/ekf/srf-fan.yaml +0 -0
  59. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/boards/oem/ekf/sur-uart.yaml +0 -0
  60. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/boards/oem/ekf/z1010.yaml +0 -0
  61. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/boards/oem/hitron/hdrc-300s.yaml +0 -0
  62. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/cli.py +0 -0
  63. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/config.py +0 -0
  64. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/core/__init__.py +0 -0
  65. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/core/components.py +0 -0
  66. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/core/probe.py +0 -0
  67. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/core/slots.py +0 -0
  68. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/core/sysfs.py +0 -0
  69. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/__init__.py +0 -0
  70. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/coretemp.py +0 -0
  71. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/eeprom.py +0 -0
  72. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/ekf_ccu_uc.py +0 -0
  73. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/ekf_sur_led.py +0 -0
  74. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/generic.py +0 -0
  75. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/gpio.py +0 -0
  76. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/iio.py +0 -0
  77. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/iio_thermal_humidity.py +0 -0
  78. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/imu.py +0 -0
  79. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/io4edge.py +0 -0
  80. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/ledArray.py +0 -0
  81. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/mux.py +0 -0
  82. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/pixelDisplay.py +0 -0
  83. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/pmbus.py +0 -0
  84. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/smbios.py +0 -0
  85. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/smbus.py +0 -0
  86. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/devices/utils.py +0 -0
  87. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/exceptions.py +0 -0
  88. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/lock.py +0 -0
  89. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/log.py +0 -0
  90. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/py.typed +0 -0
  91. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/simctrl.py +0 -0
  92. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/system.py +0 -0
  93. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/ekfsm/utils.py +0 -0
  94. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/hack/bringup_zip_i2c_devs.sh +0 -0
  95. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/scripts/modify-acpi-table.sh +0 -0
  96. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/__init__.py +0 -0
  97. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/basic_sim.py +0 -0
  98. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/cctv.py +0 -0
  99. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/cctv.yaml +0 -0
  100. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/ccu-test.py +0 -0
  101. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/ccu_wokwi_sim.py +0 -0
  102. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/data/cfg_simple.yaml +0 -0
  103. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/locking/lock_tester.py +0 -0
  104. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/locking/test_lock.py +0 -0
  105. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/props.py +0 -0
  106. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/run.py +0 -0
  107. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sc5-hitron-only.yaml +0 -0
  108. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/SQ3.png +0 -0
  109. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/__init__.py +0 -0
  110. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/bus/i2c/drivers/at24/.keep +0 -0
  111. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/bus/i2c/drivers/pca953x/.keep +0 -0
  112. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/bus/i2c/drivers/pca954x/.keep +0 -0
  113. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/class/hwmon/hwmon2/name +0 -0
  114. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/class/hwmon/hwmon2/temp1_input +0 -0
  115. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-10/firmware_node/adr +0 -0
  116. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-10/name +0 -0
  117. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-10/new_device +0 -0
  118. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-11/firmware_node/adr +0 -0
  119. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-11/name +0 -0
  120. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-11/new_device +0 -0
  121. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-12/firmware_node/adr +0 -0
  122. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-12/name +0 -0
  123. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-12/new_device +0 -0
  124. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/firmware_node/adr +0 -0
  125. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/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
  126. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:01/gpiochip1/dev +0 -0
  127. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:01/name +0 -0
  128. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:02/eeprom +0 -0
  129. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/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
  130. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:02/name +0 -0
  131. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/name +0 -0
  132. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/new_device +0 -0
  133. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-15/firmware_node/adr +0 -0
  134. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-15/name +0 -0
  135. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-15/new_device +0 -0
  136. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-16/firmware_node/adr +0 -0
  137. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-16/name +0 -0
  138. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-16/new_device +0 -0
  139. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-17/firmware_node/adr +0 -0
  140. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-17/name +0 -0
  141. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-17/new_device +0 -0
  142. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/firmware_node/adr +0 -0
  143. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/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
  144. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:01/gpiochip1/dev +0 -0
  145. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:01/name +0 -0
  146. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:02/eeprom +0 -0
  147. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/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
  148. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:02/name +0 -0
  149. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/name +0 -0
  150. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/new_device +0 -0
  151. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:00/firmware_node/description +0 -0
  152. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:00/name +0 -0
  153. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/firmware_node/description +0 -0
  154. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/curr1_input +0 -0
  155. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/curr2_input +0 -0
  156. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/in1_input +0 -0
  157. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/in2_input +0 -0
  158. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/model +0 -0
  159. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/revision +0 -0
  160. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/serial +0 -0
  161. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/temp1_input +0 -0
  162. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/vendor +0 -0
  163. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/name +0 -0
  164. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0002:00/firmware_node/description +0 -0
  165. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0002:00/name +0 -0
  166. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/new_device +0 -0
  167. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:1f.4/i2c-7/7-0057/eeprom +0 -0
  168. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/pci0000:00/0000:00:1f.4/i2c-7/7-0057/name +0 -0
  169. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/devices/virtual/dmi/id/board_version +0 -0
  170. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/kernel/debug/pmbus/hwmon99/status0_input +0 -0
  171. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/sys/kernel/debug/pmbus/hwmon99/status1_input +0 -0
  172. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/test_system.yaml +0 -0
  173. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sim/test_system_inconsistent.yaml +0 -0
  174. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sq3-only.py +0 -0
  175. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/sq3-only.yaml +0 -0
  176. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/srf-fan-test.py +0 -0
  177. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/srf-fan-test.yaml +0 -0
  178. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/test_config.py +0 -0
  179. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/test_module_schema.py +0 -0
  180. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/test_sim-ccu-eeprom.py +0 -0
  181. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/test_sim1.py +0 -0
  182. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/test_sim2.py +0 -0
  183. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/zip2-ccu-only.yaml +0 -0
  184. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/zip2-comp1.yaml +0 -0
  185. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/zip2-comp1_smoke.py +0 -0
  186. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/zip2-comp2.yaml +0 -0
  187. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/zip2-comp2_smoke.py +0 -0
  188. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/zip2_ccu_exp.py +0 -0
  189. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/zip2_ccu_imu.py +0 -0
  190. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/tests/zip2_psu.py +0 -0
  191. {ekfsm-1.4.0a37 → ekfsm-1.4.0a40}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ekfsm
3
- Version: 1.4.0a37
3
+ Version: 1.4.0a40
4
4
  Summary: The EKF System Management Library (ekfsm) is a sensor monitoring suite for Compact PCI Serial devices.
5
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
@@ -88,6 +88,7 @@ _device_structure = Schema(
88
88
  Optional("slot_coding_mask"): int,
89
89
  Optional("channel_id"): int,
90
90
  Optional("service_suffix"): str,
91
+ Optional("keepaliveInterval"): int,
91
92
  Optional("provides"): {
92
93
  Optional(str): [Use(provides_validator)],
93
94
  },
@@ -4,7 +4,7 @@ from ekfsm.devices.generic import Device
4
4
 
5
5
  class Button(Device):
6
6
  """
7
- Device class for handling a button array.
7
+ Device class for handling a single button as part on array.
8
8
  """
9
9
 
10
10
  def __init__(
@@ -35,6 +35,11 @@ class Button(Device):
35
35
  def handler(self, func: Callable | None, *args, **kwargs):
36
36
  """
37
37
  Handle button events with a callback function.
38
+
39
+ Parameters
40
+ ----------
41
+ func : Callable | None
42
+ The function to call on button events. If None, no function is called.
38
43
  """
39
44
  if callable(func):
40
45
  self._handler = func
@@ -8,7 +8,13 @@ import io4edge_client.functionblock as fb
8
8
 
9
9
  class ButtonArray(Device):
10
10
  """
11
- Device class for handling a button array.
11
+ Device class for handling an io4edge button array.
12
+
13
+ To read button events, call the `read` method in a separate thread.
14
+
15
+ Note
16
+ ----
17
+ Button handlers are called in the context of the `read` method's thread and need to be set in the Button instances.
12
18
  """
13
19
 
14
20
  def __init__(
@@ -18,6 +24,7 @@ class ButtonArray(Device):
18
24
  children: list[Device] | None = None,
19
25
  abort: bool = False,
20
26
  service_suffix: str | None = None,
27
+ keepaliveInterval: int = 10000,
21
28
  *args,
22
29
  **kwargs,
23
30
  ):
@@ -33,12 +40,14 @@ class ButtonArray(Device):
33
40
 
34
41
  self.service_addr = f"{parent.deviceId}-{self.service_suffix}"
35
42
 
36
- self.client = binio.Client(self.service_addr)
43
+ self.client = binio.Client(
44
+ self.service_addr, command_timeout=keepaliveInterval / 1000 + 5
45
+ )
37
46
 
38
47
  self.subscriptionType = binio.Pb.SubscriptionType.BINARYIOTYPEB_ON_RISING_EDGE
39
48
  self.stream_cfg = fb.Pb.StreamControlStart(
40
49
  bucketSamples=1, # 1 sample per bucket, also ein event pro bucket
41
- keepaliveInterval=10000, # rueckmeldung auch ohne events alle 10 Sekunden
50
+ keepaliveInterval=keepaliveInterval,
42
51
  bufferedSamples=2, # 2 samples werden gepuffert
43
52
  low_latency_mode=True, # schickt soweit moeglich sofort die Events
44
53
  )
@@ -46,6 +55,17 @@ class ButtonArray(Device):
46
55
  def read(self, stop_event: threading.Event | None = None, timeout: float = 0.1):
47
56
  """
48
57
  Read all button events and dispatch to handlers.
58
+
59
+ Parameters
60
+ ----------
61
+ stop_event : threading.Event, optional
62
+ Event to signal stopping the reading loop. If None, the loop will run indefinitely.
63
+ timeout : float, optional
64
+ Timeout for reading from the stream in seconds. Default is 0.1 seconds.
65
+
66
+ Note
67
+ ----
68
+ This method blocks and should be run in a separate thread.
49
69
  """
50
70
  self.client.start_stream(
51
71
  binio.Pb.StreamControlStart(
@@ -32,18 +32,37 @@ class ColorLED(Device):
32
32
  def get(self) -> tuple[Color, bool]:
33
33
  """
34
34
  Get color LED state.
35
- @raises RuntimeError: if the command fails
36
- @raises TimeoutError: if the command times out
35
+
36
+ Returns
37
+ -------
38
+ Current color and blink state.
39
+
40
+ Raises
41
+ ------
42
+ RuntimeError
43
+ if the command fails
44
+ TimeoutError
45
+ if the command times out
37
46
  """
38
47
  return self.client.get(self.channel_id)
39
48
 
40
49
  def set(self, color: Color, blink: bool) -> None:
41
50
  """
42
51
  Set the color of the color LED.
43
- @param Color: The color to set the LED to.
44
- @param blink: Whether to blink the LED.
45
- @raises RuntimeError: if the command fails
46
- @raises TimeoutError: if the command times out
52
+
53
+ Parameters
54
+ ----------
55
+ color : Color
56
+ The color to set the LED to.
57
+ blink : bool
58
+ Whether to blink the LED.
59
+
60
+ Raises
61
+ ------
62
+ RuntimeError
63
+ if the command fails
64
+ TimeoutError
65
+ if the command times out
47
66
  """
48
67
  self.client.set(self.channel_id, color, blink)
49
68
 
@@ -32,13 +32,18 @@ class ThermalHumidity(Device):
32
32
 
33
33
  self.client = Client(self.service_addr)
34
34
 
35
- def __repr__(self):
36
- return f"{self.name}; Service Address: {self.service_addr}"
37
-
38
35
  def temperature(self) -> float:
39
36
  """
40
37
  Get the temperature in Celsius.
41
- @raises RuntimeError: if the command fails
42
- @raises TimeoutError: if the command times out
38
+
39
+ Raises
40
+ ------
41
+ RuntimeError
42
+ if the command fails
43
+ TimeoutError
44
+ if the command times out
43
45
  """
44
46
  return self.client.value()
47
+
48
+ def __repr__(self):
49
+ return f"{self.name}; Service Address: {self.service_addr}"
@@ -5,7 +5,7 @@ from io4edge_client.watchdog import Client
5
5
 
6
6
  class Watchdog(Device):
7
7
  """
8
- Device class for handling a color LED.
8
+ Device class for handling an application watchdog.
9
9
  """
10
10
 
11
11
  def __init__(
@@ -38,7 +38,15 @@ class Watchdog(Device):
38
38
  def kick(self) -> None:
39
39
  """
40
40
  Kick the watchdog.
41
- @raises RuntimeError: if the command fails
42
- @raises TimeoutError: if the command times out
41
+
42
+ Raises
43
+ ------
44
+ RuntimeError
45
+ if the command fails
46
+ TimeoutError
47
+ if the command times out
43
48
  """
44
49
  self.client.kick()
50
+
51
+ def __repr__(self):
52
+ return f"{self.name}; Service Address: {self.service_addr}"
@@ -27,7 +27,7 @@ authors = [
27
27
  ]
28
28
  description = "The EKF System Management Library (ekfsm) is a sensor monitoring suite for Compact PCI Serial devices."
29
29
  requires-python = ">=3.10"
30
- version = "1.4.0-alpha.37"
30
+ version = "1.4.0-alpha.40"
31
31
 
32
32
  [project.scripts]
33
33
  ekfsm-cli = "ekfsm.cli:main"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes