ekfsm 1.2.0a7__py3-none-any.whl → 1.3.0a32__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/boards/oem/hitron/hdrc-300s.yaml +1 -1
- ekfsm/cli.py +6 -8
- ekfsm/config.py +14 -6
- ekfsm/core/__init__.py +5 -5
- ekfsm/core/components.py +4 -4
- ekfsm/core/slots.py +6 -13
- ekfsm/core/sysfs.py +183 -13
- ekfsm/core/utils.py +104 -64
- ekfsm/devices/__init__.py +8 -7
- ekfsm/devices/coretemp.py +11 -10
- ekfsm/devices/eeprom.py +52 -39
- ekfsm/devices/ekf_ccu_uc.py +37 -46
- ekfsm/devices/ekf_sur_led.py +6 -2
- ekfsm/devices/generic.py +141 -88
- ekfsm/devices/gpio.py +33 -25
- ekfsm/devices/iio.py +15 -31
- ekfsm/devices/iio_thermal_humidity.py +12 -13
- ekfsm/devices/mux.py +11 -6
- ekfsm/devices/pmbus.py +60 -67
- ekfsm/devices/smbios.py +10 -8
- ekfsm/devices/smbus.py +1 -1
- ekfsm/devices/utils.py +0 -9
- ekfsm/exceptions.py +28 -7
- ekfsm/lock.py +1 -1
- ekfsm/simctrl.py +37 -83
- ekfsm/system.py +44 -70
- ekfsm/utils.py +9 -6
- {ekfsm-1.2.0a7.dist-info → ekfsm-1.3.0a32.dist-info}/METADATA +8 -5
- ekfsm-1.3.0a32.dist-info/RECORD +46 -0
- ekfsm-1.2.0a7.dist-info/RECORD +0 -46
- {ekfsm-1.2.0a7.dist-info → ekfsm-1.3.0a32.dist-info}/WHEEL +0 -0
- {ekfsm-1.2.0a7.dist-info → ekfsm-1.3.0a32.dist-info}/entry_points.txt +0 -0
ekfsm/system.py
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
from typing import Tuple, Any
|
|
2
1
|
from pathlib import Path
|
|
3
|
-
from
|
|
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
|
|
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
|
|
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[
|
|
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:
|
|
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[
|
|
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:
|
|
157
|
-
) -> Tuple[
|
|
154
|
+
self, slot_entry: Munch, slot_number: int, master: HWModule | None
|
|
155
|
+
) -> Tuple[HWModule | None, Slot]:
|
|
158
156
|
"""
|
|
159
|
-
Create
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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) ->
|
|
276
|
+
def get_module_in_slot(self, idx: int) -> HWModule | None:
|
|
297
277
|
"""
|
|
298
|
-
Get the
|
|
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
|
-
|
|
307
|
-
The
|
|
286
|
+
HWModule
|
|
287
|
+
The HWModule in the given slot.
|
|
308
288
|
None
|
|
309
|
-
If no
|
|
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) ->
|
|
296
|
+
def get_module_by_name(self, name: str) -> HWModule | None:
|
|
321
297
|
"""
|
|
322
|
-
Get the
|
|
298
|
+
Get the HWModule by its name.
|
|
323
299
|
|
|
324
300
|
Parameters
|
|
325
301
|
----------
|
|
326
302
|
name
|
|
327
|
-
The name of the
|
|
303
|
+
The name of the HWModule.
|
|
328
304
|
|
|
329
305
|
Returns
|
|
330
306
|
-------
|
|
331
|
-
|
|
332
|
-
The
|
|
307
|
+
HWModule
|
|
308
|
+
The HWModule with the given name.
|
|
333
309
|
None
|
|
334
|
-
If no
|
|
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) ->
|
|
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
|
-
|
|
359
|
-
|
|
360
|
-
|
|
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.
|
|
3
|
+
Version: 1.3.0a32
|
|
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>,
|
|
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
|
|
150
|
-
sur = system["SER"] # by using the
|
|
151
|
-
sur = system.ser # by using the
|
|
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.0a32.dist-info/METADATA,sha256=bFvKuhXnQh1_Bl-VYr6uWsUOuCXdNx_sZ7W8fXQUSWA,6634
|
|
44
|
+
ekfsm-1.3.0a32.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
45
|
+
ekfsm-1.3.0a32.dist-info/entry_points.txt,sha256=WhUR4FzuxPoGrbTOKLsNJO7NAnk2qd4T30fqzN1yLw8,45
|
|
46
|
+
ekfsm-1.3.0a32.dist-info/RECORD,,
|
ekfsm-1.2.0a7.dist-info/RECORD
DELETED
|
@@ -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,,
|
|
File without changes
|
|
File without changes
|