ekfsm 1.2.0a7__py3-none-any.whl → 1.3.0a26__py3-none-any.whl

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.

ekfsm/system.py CHANGED
@@ -1,17 +1,15 @@
1
- from typing import Tuple, Any
2
1
  from pathlib import Path
3
- from munch import Munch, munchify
2
+ from typing import Any, Tuple
4
3
 
5
- from ekfsm.core.components import SysTree
6
4
  import yaml
5
+ from munch import Munch, munchify
7
6
 
7
+ from ekfsm.core.components import SysTree
8
8
  from ekfsm.utils import all_board_cfg_files, find_board_config
9
9
 
10
- from .core.slots import Slot, SlotType
11
-
12
10
  from .config import load_config
13
- from .core import HwModule
14
- from .core.slots import Slots
11
+ from .core import HWModule
12
+ from .core.slots import Slot, Slots, SlotType
15
13
  from .exceptions import ConfigError
16
14
  from .log import ekfsm_logger
17
15
 
@@ -57,7 +55,7 @@ class System(SysTree):
57
55
  -------
58
56
  >>> from ekfsm.system import System
59
57
  >>> system = System("path/to/config.yaml")
60
- >>> print(system) # Print the system configuration as trees of HwModules
58
+ >>> print(system) # Print the system configuration as trees of HWModules
61
59
  >>> system.print() # same as above
62
60
  >>> cpu = system.cpu # Access the CPU board by its name
63
61
  >>> cpu = system[0] # Access the CPU board by its slot index (index as in configuration file)
@@ -91,7 +89,7 @@ class System(SysTree):
91
89
 
92
90
  def _init_system(self, config: Path):
93
91
  self.slots: Slots = Slots()
94
- self.boards: list[HwModule] = []
92
+ self.boards: list[HWModule] = []
95
93
 
96
94
  self.master, self.master_slot_number = self._create_master()
97
95
  if self.master is None:
@@ -100,7 +98,7 @@ class System(SysTree):
100
98
  self.logger.info(f"Master board found in slot {self.master_slot_number}")
101
99
 
102
100
  for i, slot_cfg in enumerate(self.config.system_config.slots):
103
- hwmod: HwModule | Slot | None
101
+ hwmod: HWModule | Slot | None
104
102
  if i == self.master_slot_number:
105
103
  hwmod = self.master
106
104
  else:
@@ -139,7 +137,7 @@ class System(SysTree):
139
137
  """
140
138
  self.__init__(self.config_path)
141
139
 
142
- def _create_master(self) -> Tuple[HwModule | None, int]:
140
+ def _create_master(self) -> Tuple[HWModule | None, int]:
143
141
  for i, slot in enumerate(self.config.system_config.slots):
144
142
  if "attributes" in slot:
145
143
  if "is_master" in slot.attributes:
@@ -153,10 +151,10 @@ class System(SysTree):
153
151
  return None, -1 # ???
154
152
 
155
153
  def create_hwmodule(
156
- self, slot_entry: Munch, slot_number: int, master: HwModule | None
157
- ) -> Tuple[HwModule | None, Slot]:
154
+ self, slot_entry: Munch, slot_number: int, master: HWModule | None
155
+ ) -> Tuple[HWModule | None, Slot]:
158
156
  """
159
- Create HwModule object for the slot.
157
+ Create HWModule object for the slot.
160
158
 
161
159
  Parameters
162
160
  ----------
@@ -169,23 +167,19 @@ class System(SysTree):
169
167
 
170
168
  Returns
171
169
  -------
172
- HwModule and Slot. HwModule is None if it cannot be created.
170
+ HWModule and Slot. HWodule is None if it cannot be created.
173
171
  """
174
172
  slot = self._create_slot(slot_entry, slot_number, master)
175
173
  board_type = slot_entry.desired_hwmodule_type
176
174
  board_name = slot_entry.desired_hwmodule_name
177
175
 
178
- self.logger.debug(
179
- f"Creating hwmodule {board_type} (desired name: {board_name}) in slot {slot.name}"
180
- )
176
+ self.logger.debug(f"Creating HWModule {board_type} (desired name: {board_name}) in slot {slot.name}")
181
177
 
182
178
  if board_type != "":
183
179
  # try to create first the desired board
184
180
  path = find_board_config(board_type)
185
181
  if path is None:
186
- self.logger.error(
187
- f"No board config found for {board_type} (desired name: {board_name})"
188
- )
182
+ self.logger.error(f"No board config found for {board_type} (desired name: {board_name})")
189
183
  return None, slot
190
184
 
191
185
  try:
@@ -194,26 +188,22 @@ class System(SysTree):
194
188
  except Exception as e:
195
189
  if self.abort:
196
190
  self.logger.error(
197
- f"failed to create desired hwmodule {board_type} (as {board_name}): {e}. Aborting!"
191
+ f"failed to create desired HWModule {board_type} (as {board_name}): {e}. Aborting!"
198
192
  )
199
193
  raise e
200
194
  else:
201
195
  self.logger.error(
202
- f"failed to create desired hwmodule {board_type} (as {board_name}): {e}. Leaving slot empty!"
196
+ f"failed to create desired HWModule {board_type} (as {board_name}): {e}. Leaving slot empty!"
203
197
  )
204
198
  return None, slot
205
199
 
206
200
  # try to probe desired board type
207
201
  if hwmod.probe():
208
- self.logger.info(
209
- f"Found desired board type {hwmod.board_type} for slot {slot.name}"
210
- )
202
+ self.logger.info(f"Found desired board type {hwmod.board_type} for slot {slot.name}")
211
203
  return hwmod, slot
212
204
 
213
205
  # try all other boards types. Maybe someone inserted the wrong board
214
- self.logger.info(
215
- f"Probing failed. Trying all other board types for slot {slot.name}"
216
- )
206
+ self.logger.info(f"Probing failed. Trying all other board types for slot {slot.name}")
217
207
  for path in all_board_cfg_files():
218
208
  try:
219
209
  hwmod = self._create_hwmodule_from_cfg_file(slot, board_name, path)
@@ -222,22 +212,16 @@ class System(SysTree):
222
212
  # ??? should we log this?
223
213
  continue
224
214
  except Exception as e:
225
- self.logger.debug(
226
- f"failed to create hwmodule {path} for slot {slot.name}: {e}"
227
- )
215
+ self.logger.debug(f"failed to create HWmodule {path} for slot {slot.name}: {e}")
228
216
  continue
229
217
 
230
218
  if hwmod.probe():
231
- self.logger.info(
232
- f"Found other board type {hwmod.board_type} for slot {slot.name}"
233
- )
219
+ self.logger.info(f"Found other board type {hwmod.board_type} for slot {slot.name}")
234
220
  return hwmod, slot
235
221
 
236
222
  return None, slot
237
223
 
238
- def _create_slot(
239
- self, slot_entry: Munch, slot_number: int, master: HwModule | None
240
- ) -> Slot:
224
+ def _create_slot(self, slot_entry: Munch, slot_number: int, master: HWModule | None) -> Slot:
241
225
  attributes = None
242
226
  if "attributes" in slot_entry:
243
227
  attributes = slot_entry.attributes
@@ -253,16 +237,14 @@ class System(SysTree):
253
237
  attributes,
254
238
  )
255
239
 
256
- def _create_hwmodule_from_cfg_file(
257
- self, slot: Slot, board_name: str, path: Path
258
- ) -> HwModule:
240
+ def _create_hwmodule_from_cfg_file(self, slot: Slot, board_name: str, path: Path) -> HWModule:
259
241
  """
260
- Try to create a HwModule object from a board config file.
242
+ Try to create a HWModule object from a board config file.
261
243
  It does not probe the hardware.
262
244
 
263
245
  Returns
264
246
  -------
265
- HwModule object.
247
+ HWModule object.
266
248
 
267
249
  Raises
268
250
  ------
@@ -279,11 +261,9 @@ class System(SysTree):
279
261
  cfg = munchify(yaml_data)
280
262
  # only instantiate if slot type matches
281
263
  if cfg.slot_type != slot.slot_type.to_string():
282
- raise ConfigError(
283
- f"Slot type mismatch for slot {slot.name}: {cfg.slot_type} != {slot.slot_type}"
284
- )
264
+ raise ConfigError(f"Slot type mismatch for slot {slot.name}: {cfg.slot_type} != {slot.slot_type}")
285
265
 
286
- hwmod = HwModule(
266
+ hwmod = HWModule(
287
267
  instance_name=board_name,
288
268
  config=yaml_data,
289
269
  slot=slot,
@@ -293,9 +273,9 @@ class System(SysTree):
293
273
 
294
274
  return hwmod
295
275
 
296
- def get_module_in_slot(self, idx: int) -> HwModule | None:
276
+ def get_module_in_slot(self, idx: int) -> HWModule | None:
297
277
  """
298
- Get the hwmodule in the given slot.
278
+ Get the HWModule in the given slot.
299
279
 
300
280
  Parameters
301
281
  ----------
@@ -303,35 +283,31 @@ class System(SysTree):
303
283
  The slot index.
304
284
  Returns
305
285
  -------
306
- HwModule
307
- The hwmodule in the given slot.
286
+ HWModule
287
+ The HWModule in the given slot.
308
288
  None
309
- If no hwmodule is present in the given slot.
289
+ If no HWModule is present in the given slot.
310
290
  """
311
291
  return next(
312
- (
313
- v.hwmodule
314
- for k, v in self.slots.items()
315
- if getattr(v, "number", None) == idx
316
- ),
292
+ (v.hwmodule for k, v in self.slots.items() if getattr(v, "number", None) == idx),
317
293
  None,
318
294
  )
319
295
 
320
- def get_module_by_name(self, name: str) -> HwModule | None:
296
+ def get_module_by_name(self, name: str) -> HWModule | None:
321
297
  """
322
- Get the hwmodule by its name.
298
+ Get the HWModule by its name.
323
299
 
324
300
  Parameters
325
301
  ----------
326
302
  name
327
- The name of the hwmodule.
303
+ The name of the HWModule.
328
304
 
329
305
  Returns
330
306
  -------
331
- HwModule
332
- The hwmodule with the given name.
307
+ HWModule
308
+ The HWModule with the given name.
333
309
  None
334
- If no hwmodule is present with the given name.
310
+ If no HWModule is present with the given name.
335
311
  """
336
312
  return next(
337
313
  (b for b in self.boards if getattr(b, "instance_name", None) == name),
@@ -341,7 +317,7 @@ class System(SysTree):
341
317
  def __iter__(self):
342
318
  return iter(self.boards)
343
319
 
344
- def __getitem__(self, key) -> HwModule:
320
+ def __getitem__(self, key) -> HWModule:
345
321
  if isinstance(key, int):
346
322
  value = self.get_module_in_slot(key)
347
323
  else:
@@ -355,12 +331,10 @@ class System(SysTree):
355
331
  def __getattr__(self, name: str) -> Any:
356
332
  """Access board by attribute using dot notation"""
357
333
  # This fixes mypy error: "... has no object ..."
358
- hwModule = self.get_module_by_name(name)
359
- if hwModule is not None:
360
- return hwModule
361
- raise AttributeError(
362
- f"'{type(self).__name__}' object has no board with name '{name}'"
363
- )
334
+ if (hw_module := self.get_module_by_name(name)) is not None:
335
+ return hw_module
336
+
337
+ raise AttributeError(f"'{type(self).__name__}' object has no board with name '{name}'")
364
338
 
365
339
  def __repr__(self):
366
340
  return f"System (name={self.name})"
ekfsm/utils.py CHANGED
@@ -1,7 +1,5 @@
1
- from typing import Generator
2
-
3
-
4
1
  from pathlib import Path
2
+ from typing import Generator
5
3
 
6
4
  _CFG_DIR = Path(__file__).parent / "boards"
7
5
 
@@ -19,9 +17,7 @@ def find_board_config(module_type: str) -> Path | None:
19
17
  part may contain any other whitespace.
20
18
  """
21
19
  oem, board = module_type.split(maxsplit=1)
22
- if (
23
- path := _CFG_DIR / "oem" / oem.strip().lower() / f"{board.strip().lower()}.yaml"
24
- ).exists():
20
+ if (path := _CFG_DIR / "oem" / oem.strip().lower() / f"{board.strip().lower()}.yaml").exists():
25
21
  return path
26
22
  return None
27
23
 
@@ -39,3 +35,10 @@ def all_board_cfg_files() -> Generator[Path, None, None]:
39
35
  for item in path.rglob("*.yaml"):
40
36
  if item.is_file():
41
37
  yield item
38
+
39
+
40
+ def next_or_raise(it, exc):
41
+ value = next(it, None)
42
+ if value is None:
43
+ raise exc
44
+ return value
@@ -1,17 +1,20 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ekfsm
3
- Version: 1.2.0a7
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
 
@@ -0,0 +1,46 @@
1
+ ekfsm/__init__.py,sha256=R12o_igFRTqlHUD9jyrOIPq2nBpTUWuvIPgCytBlVzk,142
2
+ ekfsm/cli.py,sha256=_z3a4VIw3eW6ajiLN-Nu6dB7G8SBgpTlY9CUFbC1LVE,3934
3
+ ekfsm/config.py,sha256=ezgr1fFAkbePy3cLnKfSpIZJ5nt54ysBHCbdCErYFB0,1186
4
+ ekfsm/exceptions.py,sha256=BELn0182Ixl6kSQ7gkIe3mlsrYXmTU-oSki-Hhrk5Z8,1605
5
+ ekfsm/lock.py,sha256=dnPjLXWfWIRnLcGec8g-imuqbmqqXWza8OGhS9Aqydk,3236
6
+ ekfsm/log.py,sha256=_GC8Y7a4fFV4_DNicbwQ-5rRzNQU6WSotXd2etXSrZk,866
7
+ ekfsm/py.typed,sha256=1gNRtmxvYcVqDDEyAzBLnD8dAOweUfYxW2ZPdJzN1fg,102
8
+ ekfsm/simctrl.py,sha256=WXPpWIju6b8Ch7FZW1PaPrWn7D7fP6gw37-ri-OJERE,5382
9
+ ekfsm/system.py,sha256=mReq8vRD6YGHlw37RzRlvwzsEM3OPjogneCVJ_XmOFU,11646
10
+ ekfsm/utils.py,sha256=eOgr4da-dxoMQ6ymjgx_nyBbea8Ck_LAQ8uLM4JgH3c,1179
11
+ ekfsm/boards/oem/ekf/ccu.yaml,sha256=qgr7YZO0kEddD9K6tv6222NyozkRNuF7NFw6hyX0XgE,2094
12
+ ekfsm/boards/oem/ekf/sc5-festival.yaml,sha256=_0kS5GegfyOt5CTJc9kY6HJbr9yZo4i18sVo6F4KE9c,772
13
+ ekfsm/boards/oem/ekf/sc9-toccata.yaml,sha256=btLgQMSsW0tRipnUYUkVQSIsjzxfKq0NXaQ1fMMyBRI,771
14
+ ekfsm/boards/oem/ekf/se5-club.yaml,sha256=j3u6sDwXMUBM0LNKwVm920w3T3tzjia2BRTQb2rRPZo,1049
15
+ ekfsm/boards/oem/ekf/sn4-djembe.yaml,sha256=ddLDdw7JpPpvR3TmlcTxNVNTOueTl6_A9LSveFrtz3E,1051
16
+ ekfsm/boards/oem/ekf/spv-mystic.yaml,sha256=zcLiNE7wVdXIT4vkwEYSqQ8ff-KEjCHfHnQzzPXJQ4E,1804
17
+ ekfsm/boards/oem/ekf/sq1-track.yaml,sha256=YU83BQjGu-4ejirwnGxd38sJme859kdRovkZyiOJciU,1050
18
+ ekfsm/boards/oem/ekf/sq3-quartet.yaml,sha256=pBB7Tv0IWLkFUYBs3tFvZriA-uqPuPIgzjaN0aHT4e4,1052
19
+ ekfsm/boards/oem/ekf/srf-fan.yaml,sha256=Mcu1Q8B1Ih10hoc_hbkGlppBmbOFcufsVUR42iW4Rwc,1368
20
+ ekfsm/boards/oem/ekf/sur-uart.yaml,sha256=VaNP2BSlNTi1lDco16Ma9smPEAMaVKvx-ZNDcm3QptM,1890
21
+ ekfsm/boards/oem/hitron/hdrc-300s.yaml,sha256=SwBHTWVqENBun_iZattPbvA9koc-LOI_MIXjLahKyyI,548
22
+ ekfsm/core/__init__.py,sha256=xfuU072JY_--561hfSS8ToBM-wgswY4Z-YwDMZkVA6c,348
23
+ ekfsm/core/components.py,sha256=gEChRquC2fEi3Y4BUa_EzvFkO45u95FT1rDg1lEdfHE,3836
24
+ ekfsm/core/probe.py,sha256=DgJvkvMjVk09n0Rzn13ybRvidrmFn_D2PD56XS-KgxU,262
25
+ ekfsm/core/slots.py,sha256=R26kfUnRzuspIPEMHFMBTkhgALu0Tuq7uGgvtfpafGs,6520
26
+ ekfsm/core/sysfs.py,sha256=CWH1BXlanHAFzK6KY23qLuFvBZ7Q9td3X6JLRwb3vu0,7309
27
+ ekfsm/core/utils.py,sha256=D5AcGp7xCsf1qA2hHHWe1bOnrpZlTOaq2srITn6bRkk,4194
28
+ ekfsm/devices/__init__.py,sha256=BYq4a7e3eF0GGpoKeBpoNISLIbAjAVMNqnGM_Taw8dE,937
29
+ ekfsm/devices/coretemp.py,sha256=UEsPTMYm05qNCnqnPtbAoYdIfvVGkDl9rJg3tkAP748,1992
30
+ ekfsm/devices/eeprom.py,sha256=cwcaM2YCKrw6du8d4zT_M3e4oFJh3XNQc5cQM2vqERE,33090
31
+ ekfsm/devices/ekf_ccu_uc.py,sha256=hjs5r7TKsrFhyyGKClgSFBpchQpFcE7fTZeuLrYiflY,15905
32
+ ekfsm/devices/ekf_sur_led.py,sha256=qpCn7qj4v27QjxB5xTC5wIXKfefpveOd3FPK3JElyVk,1997
33
+ ekfsm/devices/generic.py,sha256=LboZ7eanyC2xUnSX3-S7VCA87aTbJenlGtKsUk5JS2Q,12858
34
+ ekfsm/devices/gpio.py,sha256=37P7uu-ncg0TWf0Xs1iZM-PrX7F_09asd4IhWj6z21Y,10058
35
+ ekfsm/devices/iio.py,sha256=1Jyh5wJ53DxvpWNBqYW07kkaAN9446ebWGCMk2UIuWM,1265
36
+ ekfsm/devices/iio_thermal_humidity.py,sha256=KCeEqBlczroxp-hjsiRlXQdmmnJR9Ck3d3ztths5Vvc,1547
37
+ ekfsm/devices/imu.py,sha256=GwJrnC-WztpE5oGnkIp-laFkSp3_gbSp9YpJ8jBsUOs,423
38
+ ekfsm/devices/mux.py,sha256=QpVWsD43Mx1mtCDG_nOxtHeIeU2Cigc62UljJ_utSXQ,1974
39
+ ekfsm/devices/pmbus.py,sha256=fi_kR7TlkcqYhHuB7PA2PjANCYmo3MSPeV-B5ZI_WrQ,7004
40
+ ekfsm/devices/smbios.py,sha256=4P-sxOW27pkzIfVlvFNyVJOcZlYgk2KCTCEUvKf5D94,1067
41
+ ekfsm/devices/smbus.py,sha256=kbtjEnfrVI6lbfqAbojVqO5nnnpa6HanLf0X2iZjgCg,500
42
+ ekfsm/devices/utils.py,sha256=qeDNpTpQ3bLGYERAH5lMsifmOaEcQ32FOwEt8tvmjWU,174
43
+ ekfsm-1.3.0a26.dist-info/METADATA,sha256=tSSeLJ7dUXApngd0_rzISDWKpVLLKI5UPiTBTPW-p34,6634
44
+ ekfsm-1.3.0a26.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
45
+ ekfsm-1.3.0a26.dist-info/entry_points.txt,sha256=WhUR4FzuxPoGrbTOKLsNJO7NAnk2qd4T30fqzN1yLw8,45
46
+ ekfsm-1.3.0a26.dist-info/RECORD,,
@@ -1,46 +0,0 @@
1
- ekfsm/__init__.py,sha256=R12o_igFRTqlHUD9jyrOIPq2nBpTUWuvIPgCytBlVzk,142
2
- ekfsm/cli.py,sha256=JmTO1TyxrTlGTkQo8ndSR7nj0grSGuQdh9ugXx1IeQE,3919
3
- ekfsm/config.py,sha256=FTk47f3qA05Zv6Cy_L_5XlGmmbC9z_kPdQJKpVoHkWs,924
4
- ekfsm/exceptions.py,sha256=25P677GxfBTdBWHRngPce0bmhcLg7MFeTtuAvguxd90,1310
5
- ekfsm/lock.py,sha256=XWLu2yhgIs16oSyc_4jdVUobbxyYlYOjZi1EFgHsXVU,3236
6
- ekfsm/log.py,sha256=_GC8Y7a4fFV4_DNicbwQ-5rRzNQU6WSotXd2etXSrZk,866
7
- ekfsm/py.typed,sha256=1gNRtmxvYcVqDDEyAzBLnD8dAOweUfYxW2ZPdJzN1fg,102
8
- ekfsm/simctrl.py,sha256=NkmjvqOym9Wruh0f14Od6gHfEgPMAkxUzMQ-nvzcM3Q,6681
9
- ekfsm/system.py,sha256=kBukgVyPJYTh_ilauEEANG2KKqHWOrQBYLhVdG679HM,12028
10
- ekfsm/utils.py,sha256=IKQrGr8UzUJpqj365uQqIWDRTAgpVC0OUmqIKzt_9T0,1081
11
- ekfsm/boards/oem/ekf/ccu.yaml,sha256=qgr7YZO0kEddD9K6tv6222NyozkRNuF7NFw6hyX0XgE,2094
12
- ekfsm/boards/oem/ekf/sc5-festival.yaml,sha256=_0kS5GegfyOt5CTJc9kY6HJbr9yZo4i18sVo6F4KE9c,772
13
- ekfsm/boards/oem/ekf/sc9-toccata.yaml,sha256=btLgQMSsW0tRipnUYUkVQSIsjzxfKq0NXaQ1fMMyBRI,771
14
- ekfsm/boards/oem/ekf/se5-club.yaml,sha256=j3u6sDwXMUBM0LNKwVm920w3T3tzjia2BRTQb2rRPZo,1049
15
- ekfsm/boards/oem/ekf/sn4-djembe.yaml,sha256=ddLDdw7JpPpvR3TmlcTxNVNTOueTl6_A9LSveFrtz3E,1051
16
- ekfsm/boards/oem/ekf/spv-mystic.yaml,sha256=zcLiNE7wVdXIT4vkwEYSqQ8ff-KEjCHfHnQzzPXJQ4E,1804
17
- ekfsm/boards/oem/ekf/sq1-track.yaml,sha256=YU83BQjGu-4ejirwnGxd38sJme859kdRovkZyiOJciU,1050
18
- ekfsm/boards/oem/ekf/sq3-quartet.yaml,sha256=pBB7Tv0IWLkFUYBs3tFvZriA-uqPuPIgzjaN0aHT4e4,1052
19
- ekfsm/boards/oem/ekf/srf-fan.yaml,sha256=Mcu1Q8B1Ih10hoc_hbkGlppBmbOFcufsVUR42iW4Rwc,1368
20
- ekfsm/boards/oem/ekf/sur-uart.yaml,sha256=VaNP2BSlNTi1lDco16Ma9smPEAMaVKvx-ZNDcm3QptM,1890
21
- ekfsm/boards/oem/hitron/hdrc-300s.yaml,sha256=E567QsRPvyAEXpXOeF1OvX2AoQK8BTxI0C7QVBFlT_k,548
22
- ekfsm/core/__init__.py,sha256=NVgbM5fBDbPhP5HtzMTKfloe9u5xutm47DM9Vt_kbRU,348
23
- ekfsm/core/components.py,sha256=dh71jM_OJ8QhTzou-5L6RaF3abXgE470KJfxQRqq1CY,3836
24
- ekfsm/core/probe.py,sha256=DgJvkvMjVk09n0Rzn13ybRvidrmFn_D2PD56XS-KgxU,262
25
- ekfsm/core/slots.py,sha256=pKBkPUxv-Lz9GxCrlnZu4gR7f59tQ0GW1MBs7nblqaI,6582
26
- ekfsm/core/sysfs.py,sha256=CVGxUEdhmJjRw8ZfnjL3hUwm6oWsp3ZKPG2qGUFYIiY,2283
27
- ekfsm/core/utils.py,sha256=EoPOuRmLlvHvGneDcKjP7Qbjfsc4XlMbLeaSFRObt_E,3145
28
- ekfsm/devices/__init__.py,sha256=UtFLCtAdpDJ3OaY7fedk13bx90NMsfxhyVAHV13t2U4,936
29
- ekfsm/devices/coretemp.py,sha256=oco909zpXw9BqkLWV3dJma1_Q23M2EUGsgdcs4QtFjU,1966
30
- ekfsm/devices/eeprom.py,sha256=4UjydeDxZT7w2zXkhZu7GUuHYu8sAidT8xuVtkt4OJw,32389
31
- ekfsm/devices/ekf_ccu_uc.py,sha256=bVdxaiXtrJC2-tSRv1rGUzm4wOxL20QfTL4NIKdRJE8,16092
32
- ekfsm/devices/ekf_sur_led.py,sha256=dY2EIqUx4-LV7ipCEIg8DfXWlGxpspRmEtEhVfHY6LI,1871
33
- ekfsm/devices/generic.py,sha256=9FDj8hhiCQAFmA5tt3lv1JPIZyAb3XCCriDIoR61kcE,10821
34
- ekfsm/devices/gpio.py,sha256=hlJ3yJ8jSGUIkPpjymani0EcxYJX2iEybGbnV8N0O5E,9552
35
- ekfsm/devices/iio.py,sha256=gMOJGdg2PvFbAvlBpLfDTIc_-9i1Z3OLpuabTke6N3I,1480
36
- ekfsm/devices/iio_thermal_humidity.py,sha256=gALZ1B4f1ePGAEL7Q5VxbubgC3CgtC9RBM9F4YWuH4E,1478
37
- ekfsm/devices/imu.py,sha256=GwJrnC-WztpE5oGnkIp-laFkSp3_gbSp9YpJ8jBsUOs,423
38
- ekfsm/devices/mux.py,sha256=C2h5w8eXrL4RXXebCSnNY-VShTgeqmYDMvGSunapBqk,1830
39
- ekfsm/devices/pmbus.py,sha256=5nIvuUkY20YwXTIpd3lebdu2dU-he_IJ7wLz1EUTrzc,7078
40
- ekfsm/devices/smbios.py,sha256=gDDYtfCd7njzqxJBKJxIR2BMCK6-uZxUVxC9y0hnz4g,1009
41
- ekfsm/devices/smbus.py,sha256=zD9b6PehipMw-xoaOMC-oorDVxBoo30hc98gyFxFLs0,500
42
- ekfsm/devices/utils.py,sha256=4-0Kmvy4ou8R71afNj6RqdBTjLW4SMWPHqVrzB2RUZw,397
43
- ekfsm-1.2.0a7.dist-info/METADATA,sha256=VUyieRTVS_l9ZWkP1ctAYgFAK5s9tv3V_mUOTBXkePM,6543
44
- ekfsm-1.2.0a7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
45
- ekfsm-1.2.0a7.dist-info/entry_points.txt,sha256=WhUR4FzuxPoGrbTOKLsNJO7NAnk2qd4T30fqzN1yLw8,45
46
- ekfsm-1.2.0a7.dist-info/RECORD,,