shepherd-core 2024.9.1__tar.gz → 2024.11.2__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.
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/PKG-INFO +1 -1
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/experiment_generic_var1.py +1 -1
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/experiment_generic_var2.py +1 -1
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/__init__.py +11 -13
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/__init__.py +3 -4
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/virtual_source_fixture.yaml +1 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/experiment/__init__.py +4 -6
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/__init__.py +6 -9
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/__init__.py +7 -9
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/observer_fixture.yaml +27 -25
- shepherd_core-2024.9.1/shepherd_core/data_models/testbed/target_fixture.yaml → shepherd_core-2024.11.2/shepherd_core/data_models/testbed/target_fixture.old1 +1 -1
- shepherd_core-2024.11.2/shepherd_core/data_models/testbed/target_fixture.yaml +163 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/testbed_fixture.yaml +3 -3
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/fw_tools/__init__.py +14 -17
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/version.py +1 -1
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/target_model.py +5 -4
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/virtual_converter_model.py +8 -5
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/virtual_harvester_model.py +2 -1
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/writer.py +47 -54
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core.egg-info/PKG-INFO +1 -1
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core.egg-info/SOURCES.txt +1 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_testbed_fixtures.py +1 -0
- shepherd_core-2024.11.2/tests/test_writer.py +292 -0
- shepherd_core-2024.9.1/tests/test_writer.py +0 -169
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/README.md +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/eenv_generator.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/experiment_from_yaml.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/experiment_models.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/firmware_model.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/firmware_modification.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/inventory.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/simulate_vharvester.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/simulate_vsource.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/uart_decode_waveform.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/uart_raw2.csv +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/vsource_debug_sim.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/pyproject.toml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/setup.cfg +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/__init__.py +10 -10
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/calibration_hw_def.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/commons.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/__init__.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/cal_measurement.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/calibration.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/content.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/shepherd.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/timezone.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/wrapper.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/_external_fixtures.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/energy_environment.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/energy_environment_fixture.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/firmware.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/firmware_datatype.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/virtual_harvester.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/virtual_harvester_fixture.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/virtual_source.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/experiment/experiment.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/experiment/observer_features.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/experiment/target_config.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/readme.md +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/emulation.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/firmware_mod.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/harvest.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/observer_tasks.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/programming.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/testbed_tasks.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/cape.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/cape_fixture.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/gpio.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/gpio_fixture.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/mcu.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/mcu_fixture.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/observer.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/target.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/testbed.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/virtual_source_doc.txt +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/decoder_waveform/__init__.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/decoder_waveform/uart.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/fw_tools/converter.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/fw_tools/converter_elf.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/fw_tools/patcher.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/fw_tools/validation.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/inventory/__init__.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/inventory/python.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/inventory/system.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/inventory/target.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/logger.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/reader.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/testbed_client/__init__.py +2 -2
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/testbed_client/cache_path.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/testbed_client/client_abc_fix.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/testbed_client/client_web.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/testbed_client/fixtures.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/testbed_client/user_model.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/__init__.py +3 -3
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/virtual_harvester_simulation.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/virtual_source_model.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/virtual_source_simulation.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core.egg-info/dependency_links.txt +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core.egg-info/requires.txt +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core.egg-info/top_level.txt +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core.egg-info/zip-safe +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/__init__.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/conftest.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/__init__.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/conftest.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_cal_data.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_cal_data_faulty.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_cal_meas.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_cal_meas_faulty1.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_cal_meas_faulty2.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_config_emulator.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_config_experiment.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_config_experiment_alternative.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_config_harvester.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_config_testbed.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_config_virtsource.yaml +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_base_models.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_content_fixtures.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_content_models.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_examples.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_experiment_models.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_task_generation.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_task_models.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_testbed_models.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/decoder_waveform/__init__.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/decoder_waveform/test_decoder.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/__init__.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/build_msp.elf +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/build_nrf.elf +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/conftest.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/test_converter.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/test_patcher.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/test_validation.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/inventory/__init__.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/inventory/test_inventory.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/test_cal_hw.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/test_examples.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/test_logger.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/test_reader.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/testbed_client/__init__.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/vsource/__init__.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/vsource/conftest.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/vsource/test_converter.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/vsource/test_harvester.py +0 -0
- {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/vsource/test_z.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: shepherd_core
|
|
3
|
-
Version: 2024.
|
|
3
|
+
Version: 2024.11.2
|
|
4
4
|
Summary: Programming- and CLI-Interface for the h5-dataformat of the Shepherd-Testbed
|
|
5
5
|
Author-email: Ingmar Splitt <ingmar.splitt@tu-dresden.de>
|
|
6
6
|
Maintainer-email: Ingmar Splitt <ingmar.splitt@tu-dresden.de>
|
|
@@ -41,7 +41,7 @@ xp = Experiment(
|
|
|
41
41
|
duration=30,
|
|
42
42
|
target_configs=[
|
|
43
43
|
TargetConfig(
|
|
44
|
-
target_IDs=range(7,
|
|
44
|
+
target_IDs=range(7, 12),
|
|
45
45
|
custom_IDs=range(1, 100), # note: longer list is OK
|
|
46
46
|
energy_env=EnergyEnvironment(name="eenv_static_3000mV_50mA_3600s"),
|
|
47
47
|
firmware1=Firmware(
|
|
@@ -38,7 +38,7 @@ xp = Experiment(
|
|
|
38
38
|
duration=30,
|
|
39
39
|
target_configs=[
|
|
40
40
|
TargetConfig(
|
|
41
|
-
target_IDs=range(7,
|
|
41
|
+
target_IDs=range(7, 12),
|
|
42
42
|
custom_IDs=range(1, 100), # note: longer list is OK
|
|
43
43
|
energy_env=EnergyEnvironment(name="eenv_static_3000mV_50mA_3600s"),
|
|
44
44
|
firmware1=Firmware.from_firmware(
|
|
@@ -34,29 +34,27 @@ from .experiment.observer_features import SystemLogging
|
|
|
34
34
|
from .experiment.target_config import TargetConfig
|
|
35
35
|
|
|
36
36
|
__all__ = [
|
|
37
|
-
# Core
|
|
38
|
-
"CapeData",
|
|
39
37
|
"CalibrationCape",
|
|
40
38
|
"CalibrationEmulator",
|
|
41
39
|
"CalibrationHarvester",
|
|
42
|
-
"CalibrationSeries",
|
|
43
40
|
"CalibrationPair",
|
|
41
|
+
"CalibrationSeries",
|
|
42
|
+
"CapeData",
|
|
44
43
|
"ContentModel",
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
# User Content
|
|
44
|
+
"EnergyDType",
|
|
45
|
+
"EnergyEnvironment",
|
|
48
46
|
"Experiment",
|
|
49
|
-
"TargetConfig",
|
|
50
47
|
"Firmware",
|
|
51
48
|
"FirmwareDType",
|
|
52
|
-
"SystemLogging",
|
|
53
|
-
"PowerTracing",
|
|
54
|
-
"GpioTracing",
|
|
55
49
|
"GpioActuation",
|
|
56
50
|
"GpioEvent",
|
|
57
51
|
"GpioLevel",
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
52
|
+
"GpioTracing",
|
|
53
|
+
"PowerTracing",
|
|
54
|
+
"ShpModel",
|
|
55
|
+
"SystemLogging",
|
|
56
|
+
"TargetConfig",
|
|
61
57
|
"VirtualHarvesterConfig",
|
|
58
|
+
"VirtualSourceConfig",
|
|
59
|
+
"Wrapper",
|
|
62
60
|
]
|
{shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/__init__.py
RENAMED
|
@@ -11,11 +11,10 @@ from .virtual_harvester import VirtualHarvesterConfig
|
|
|
11
11
|
from .virtual_source import VirtualSourceConfig
|
|
12
12
|
|
|
13
13
|
__all__ = [
|
|
14
|
+
"EnergyDType",
|
|
14
15
|
"EnergyEnvironment",
|
|
15
|
-
"VirtualSourceConfig",
|
|
16
|
-
"VirtualHarvesterConfig",
|
|
17
16
|
"Firmware",
|
|
18
|
-
# Enums
|
|
19
|
-
"EnergyDType",
|
|
20
17
|
"FirmwareDType",
|
|
18
|
+
"VirtualHarvesterConfig",
|
|
19
|
+
"VirtualSourceConfig",
|
|
21
20
|
]
|
|
@@ -102,6 +102,7 @@
|
|
|
102
102
|
enable_feedback_to_hrv: true # src can control a cv-harvester for ivcurve
|
|
103
103
|
V_intermediate_enable_threshold_mV: 2000
|
|
104
104
|
V_intermediate_disable_threshold_mV: 1800 # nRF draw ~0.5 mA below that point
|
|
105
|
+
# TODO: put switch-output into special nRF Version
|
|
105
106
|
|
|
106
107
|
- datatype: VirtualSourceConfig
|
|
107
108
|
parameters:
|
{shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/experiment/__init__.py
RENAMED
|
@@ -14,13 +14,11 @@ from .target_config import TargetConfig
|
|
|
14
14
|
|
|
15
15
|
__all__ = [
|
|
16
16
|
"Experiment",
|
|
17
|
-
"TargetConfig",
|
|
18
|
-
# Features
|
|
19
|
-
"PowerTracing",
|
|
20
|
-
"GpioTracing",
|
|
21
17
|
"GpioActuation",
|
|
22
18
|
"GpioEvent",
|
|
23
|
-
"SystemLogging",
|
|
24
|
-
# Enums
|
|
25
19
|
"GpioLevel",
|
|
20
|
+
"GpioTracing",
|
|
21
|
+
"PowerTracing",
|
|
22
|
+
"SystemLogging",
|
|
23
|
+
"TargetConfig",
|
|
26
24
|
]
|
{shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/__init__.py
RENAMED
|
@@ -22,18 +22,15 @@ from .programming import ProgrammingTask
|
|
|
22
22
|
from .testbed_tasks import TestbedTasks
|
|
23
23
|
|
|
24
24
|
__all__ = [
|
|
25
|
-
|
|
26
|
-
"TestbedTasks",
|
|
27
|
-
"ObserverTasks",
|
|
28
|
-
"FirmwareModTask",
|
|
29
|
-
"ProgrammingTask",
|
|
25
|
+
"Compression",
|
|
30
26
|
"EmulationTask",
|
|
27
|
+
"FirmwareModTask",
|
|
31
28
|
"HarvestTask",
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
"prepare_task",
|
|
29
|
+
"ObserverTasks",
|
|
30
|
+
"ProgrammingTask",
|
|
31
|
+
"TestbedTasks",
|
|
36
32
|
"extract_tasks",
|
|
33
|
+
"prepare_task",
|
|
37
34
|
]
|
|
38
35
|
|
|
39
36
|
|
{shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/__init__.py
RENAMED
|
@@ -16,17 +16,15 @@ from .target import Target
|
|
|
16
16
|
from .testbed import Testbed
|
|
17
17
|
|
|
18
18
|
__all__ = [
|
|
19
|
-
"Testbed",
|
|
20
|
-
"Observer",
|
|
21
|
-
"Cape",
|
|
22
|
-
"Target",
|
|
23
|
-
"MCU",
|
|
24
19
|
"GPIO",
|
|
25
|
-
|
|
26
|
-
"
|
|
20
|
+
"MCU",
|
|
21
|
+
"Cape",
|
|
27
22
|
"Direction",
|
|
28
|
-
"TargetPort",
|
|
29
|
-
# custom types
|
|
30
23
|
"IdInt16",
|
|
31
24
|
"MACStr",
|
|
25
|
+
"Observer",
|
|
26
|
+
"ProgrammerProtocol",
|
|
27
|
+
"Target",
|
|
28
|
+
"TargetPort",
|
|
29
|
+
"Testbed",
|
|
32
30
|
]
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
latitude: 0
|
|
15
15
|
cape:
|
|
16
16
|
name: cape53
|
|
17
|
-
target_a:
|
|
18
|
-
name: nRF52_FRAM_018
|
|
17
|
+
# target_a:
|
|
18
|
+
# name: nRF52_FRAM_018
|
|
19
19
|
created: 2022-12-12 12:12:12
|
|
20
20
|
active: false
|
|
21
21
|
- datatype: observer
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
name: sheep01
|
|
25
25
|
ip: 192.168.165.201
|
|
26
26
|
mac: 18:62:E4:E4:41:8D
|
|
27
|
-
room:
|
|
28
|
-
eth_port:
|
|
29
|
-
description: mid
|
|
27
|
+
room: II69
|
|
28
|
+
eth_port: B14
|
|
29
|
+
description: lower mid on east-side
|
|
30
30
|
cape:
|
|
31
31
|
name: cape51
|
|
32
32
|
target_a:
|
|
33
|
-
name:
|
|
33
|
+
name: nRF52_FRAM_1392_386
|
|
34
34
|
created: 2023-09-22 12:12:12
|
|
35
35
|
- datatype: observer
|
|
36
36
|
parameters:
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
cape:
|
|
45
45
|
name: cape52
|
|
46
46
|
target_a:
|
|
47
|
-
name:
|
|
47
|
+
name: nRF52_FRAM_1392_378
|
|
48
48
|
created: 2023-09-22 12:12:12
|
|
49
49
|
- datatype: observer
|
|
50
50
|
parameters:
|
|
@@ -57,9 +57,10 @@
|
|
|
57
57
|
description: north-east-corner
|
|
58
58
|
cape:
|
|
59
59
|
name: cape63
|
|
60
|
-
target_a:
|
|
61
|
-
name:
|
|
60
|
+
# target_a:
|
|
61
|
+
# name:
|
|
62
62
|
created: 2023-09-22 12:12:12
|
|
63
|
+
active: false
|
|
63
64
|
- datatype: observer
|
|
64
65
|
parameters:
|
|
65
66
|
id: 4
|
|
@@ -72,7 +73,7 @@
|
|
|
72
73
|
cape:
|
|
73
74
|
name: cape54
|
|
74
75
|
target_a:
|
|
75
|
-
name:
|
|
76
|
+
name: nRF52_FRAM_1392_395
|
|
76
77
|
created: 2023-09-22 12:12:12
|
|
77
78
|
- datatype: observer
|
|
78
79
|
parameters:
|
|
@@ -86,7 +87,7 @@
|
|
|
86
87
|
cape:
|
|
87
88
|
name: cape55
|
|
88
89
|
target_a:
|
|
89
|
-
name:
|
|
90
|
+
name: nRF52_FRAM_1392_393
|
|
90
91
|
target_b:
|
|
91
92
|
name: target_nRF52_01 # ONLY VIRTUAL - for unittests
|
|
92
93
|
created: 2023-09-22 12:12:12
|
|
@@ -102,7 +103,7 @@
|
|
|
102
103
|
cape:
|
|
103
104
|
name: cape56
|
|
104
105
|
target_a:
|
|
105
|
-
name:
|
|
106
|
+
name: nRF52_FRAM_1392_396
|
|
106
107
|
created: 2023-09-22 12:12:12
|
|
107
108
|
- datatype: observer
|
|
108
109
|
parameters:
|
|
@@ -116,7 +117,7 @@
|
|
|
116
117
|
cape:
|
|
117
118
|
name: cape57
|
|
118
119
|
target_a:
|
|
119
|
-
name:
|
|
120
|
+
name: nRF52_FRAM_1392_387
|
|
120
121
|
created: 2023-09-22 12:12:12
|
|
121
122
|
- datatype: observer
|
|
122
123
|
parameters:
|
|
@@ -129,8 +130,8 @@
|
|
|
129
130
|
description: north-east-corner
|
|
130
131
|
cape:
|
|
131
132
|
name: cape58
|
|
132
|
-
target_a:
|
|
133
|
-
name:
|
|
133
|
+
# target_a:
|
|
134
|
+
# name:
|
|
134
135
|
created: 2023-09-22 12:12:12
|
|
135
136
|
active: false # TODO: cape is broken for now
|
|
136
137
|
- datatype: observer
|
|
@@ -145,7 +146,7 @@
|
|
|
145
146
|
cape:
|
|
146
147
|
name: cape65
|
|
147
148
|
target_a:
|
|
148
|
-
name:
|
|
149
|
+
name: nRF52_FRAM_1392_385
|
|
149
150
|
created: 2023-09-22 12:12:12
|
|
150
151
|
- datatype: observer
|
|
151
152
|
parameters:
|
|
@@ -159,7 +160,7 @@
|
|
|
159
160
|
cape:
|
|
160
161
|
name: cape59
|
|
161
162
|
target_a:
|
|
162
|
-
name:
|
|
163
|
+
name: nRF52_FRAM_1392_377
|
|
163
164
|
created: 2023-09-22 12:12:12
|
|
164
165
|
- datatype: observer
|
|
165
166
|
parameters:
|
|
@@ -167,14 +168,15 @@
|
|
|
167
168
|
name: sheep11
|
|
168
169
|
ip: 192.168.165.211
|
|
169
170
|
mac: 18:62:E4:E4:0E:5D
|
|
170
|
-
room:
|
|
171
|
-
eth_port:
|
|
172
|
-
description:
|
|
171
|
+
room: tbd
|
|
172
|
+
eth_port: tbd
|
|
173
|
+
description: tbd
|
|
173
174
|
cape:
|
|
174
175
|
name: cape61
|
|
175
|
-
target_a:
|
|
176
|
-
name:
|
|
176
|
+
# target_a:
|
|
177
|
+
# name:
|
|
177
178
|
created: 2023-09-22 12:12:12
|
|
179
|
+
active: false
|
|
178
180
|
- datatype: observer
|
|
179
181
|
parameters:
|
|
180
182
|
id: 12
|
|
@@ -187,7 +189,7 @@
|
|
|
187
189
|
cape:
|
|
188
190
|
name: cape62
|
|
189
191
|
target_a:
|
|
190
|
-
name:
|
|
192
|
+
name: nRF52_FRAM_1392_384
|
|
191
193
|
created: 2023-09-22 12:12:12
|
|
192
194
|
- datatype: observer
|
|
193
195
|
parameters:
|
|
@@ -202,7 +204,7 @@
|
|
|
202
204
|
cape:
|
|
203
205
|
name: cape60
|
|
204
206
|
target_a:
|
|
205
|
-
name:
|
|
207
|
+
name: nRF52_FRAM_1392_379
|
|
206
208
|
created: 2023-09-22 12:12:12
|
|
207
209
|
- datatype: observer
|
|
208
210
|
parameters:
|
|
@@ -217,5 +219,5 @@
|
|
|
217
219
|
cape:
|
|
218
220
|
name: cape64
|
|
219
221
|
target_a:
|
|
220
|
-
name:
|
|
222
|
+
name: nRF52_FRAM_1392_390
|
|
221
223
|
created: 2023-09-22 12:12:12
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# https://github.com/orgua/shepherd_v2_planning/blob/main/doc_testbed/Target_pre-deployment-tests.xlsx
|
|
4
4
|
- datatype: target
|
|
5
5
|
parameters:
|
|
6
|
-
id: 6 # Outer ID - selected by user - can be rearranged
|
|
6
|
+
id: 6 # Outer ID - selected by user for XP - can be rearranged
|
|
7
7
|
name: nRF52_FRAM_001 # inner ID - used to link all parts together
|
|
8
8
|
version: v1.0
|
|
9
9
|
description: nRF52 as MCU + Radio, MSP430FR as SPI-FRAM or additional MCU
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
---
|
|
2
|
+
# more human-readable test-protocol @
|
|
3
|
+
# https://github.com/orgua/shepherd_v2_planning/blob/main/doc_testbed/Target_pre-deployment-tests.xlsx
|
|
4
|
+
- datatype: target
|
|
5
|
+
parameters:
|
|
6
|
+
id: 2 # Outer ID - selected by user for XP - can be rearranged
|
|
7
|
+
name: nRF52_FRAM_1392_377 # inner ID - used to link all parts together
|
|
8
|
+
version: v1.3
|
|
9
|
+
description: nRF52 as MCU + Radio, MSP430FR as SPI-FRAM or additional MCU
|
|
10
|
+
comment: slight scratches from manufacturing
|
|
11
|
+
created: 2024-11-29
|
|
12
|
+
mcu1:
|
|
13
|
+
name: nRF52
|
|
14
|
+
mcu2:
|
|
15
|
+
name: MSP430FR
|
|
16
|
+
- datatype: target
|
|
17
|
+
parameters:
|
|
18
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
19
|
+
id: 8
|
|
20
|
+
name: nRF52_FRAM_1392_378
|
|
21
|
+
- datatype: target
|
|
22
|
+
parameters:
|
|
23
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
24
|
+
id: 9
|
|
25
|
+
name: nRF52_FRAM_1392_379
|
|
26
|
+
- datatype: target
|
|
27
|
+
parameters:
|
|
28
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
29
|
+
id: 1392380
|
|
30
|
+
name: nRF52_FRAM_1392_380
|
|
31
|
+
comment: msp fails to program
|
|
32
|
+
active: false
|
|
33
|
+
- datatype: target
|
|
34
|
+
parameters:
|
|
35
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
36
|
+
id: 1392381
|
|
37
|
+
name: nRF52_FRAM_1392_381
|
|
38
|
+
comment: nrf failed to program in testbed (but was fine before)
|
|
39
|
+
- datatype: target
|
|
40
|
+
parameters:
|
|
41
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
42
|
+
id: 1392382
|
|
43
|
+
name: nRF52_FRAM_1392_382
|
|
44
|
+
comment: msp fails to program
|
|
45
|
+
active: false
|
|
46
|
+
- datatype: target
|
|
47
|
+
parameters:
|
|
48
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
49
|
+
id: 1392383
|
|
50
|
+
name: nRF52_FRAM_1392_383
|
|
51
|
+
comment: nrf failed to program in testbed (but was fine before)
|
|
52
|
+
- datatype: target
|
|
53
|
+
parameters:
|
|
54
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
55
|
+
id: 4
|
|
56
|
+
name: nRF52_FRAM_1392_384
|
|
57
|
+
- datatype: target
|
|
58
|
+
parameters:
|
|
59
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
60
|
+
id: 5
|
|
61
|
+
name: nRF52_FRAM_1392_385
|
|
62
|
+
- datatype: target
|
|
63
|
+
parameters:
|
|
64
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
65
|
+
id: 6
|
|
66
|
+
name: nRF52_FRAM_1392_386
|
|
67
|
+
- datatype: target
|
|
68
|
+
parameters:
|
|
69
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
70
|
+
id: 7
|
|
71
|
+
name: nRF52_FRAM_1392_387
|
|
72
|
+
- datatype: target
|
|
73
|
+
parameters:
|
|
74
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
75
|
+
id: 1392388
|
|
76
|
+
name: nRF52_FRAM_1392_388
|
|
77
|
+
comment: msp fails to program, msp removed, in darmstadt
|
|
78
|
+
mcu2: null
|
|
79
|
+
active: false
|
|
80
|
+
- datatype: target
|
|
81
|
+
parameters:
|
|
82
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
83
|
+
id: 1392389
|
|
84
|
+
name: nRF52_FRAM_1392_389
|
|
85
|
+
comment: msp fails to program, msp removed, in darmstadt
|
|
86
|
+
mcu2: null
|
|
87
|
+
active: false
|
|
88
|
+
- datatype: target
|
|
89
|
+
parameters:
|
|
90
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
91
|
+
id: 10
|
|
92
|
+
name: nRF52_FRAM_1392_390
|
|
93
|
+
- datatype: target
|
|
94
|
+
parameters:
|
|
95
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
96
|
+
id: 1392391
|
|
97
|
+
name: nRF52_FRAM_1392_391
|
|
98
|
+
comment: nrf failed to program in testbed (but was fine before)
|
|
99
|
+
- datatype: target
|
|
100
|
+
parameters:
|
|
101
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
102
|
+
id: 1392392
|
|
103
|
+
name: nRF52_FRAM_1392_392
|
|
104
|
+
comment: msp fails to program
|
|
105
|
+
active: false
|
|
106
|
+
- datatype: target
|
|
107
|
+
parameters:
|
|
108
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
109
|
+
id: 1
|
|
110
|
+
name: nRF52_FRAM_1392_393
|
|
111
|
+
- datatype: target
|
|
112
|
+
parameters:
|
|
113
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
114
|
+
id: 1392394
|
|
115
|
+
name: nRF52_FRAM_1392_394
|
|
116
|
+
comment: msp fails to program
|
|
117
|
+
active: false
|
|
118
|
+
- datatype: target
|
|
119
|
+
parameters:
|
|
120
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
121
|
+
id: 3
|
|
122
|
+
name: nRF52_FRAM_1392_395
|
|
123
|
+
comment: initial test unit
|
|
124
|
+
- datatype: target
|
|
125
|
+
parameters:
|
|
126
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
127
|
+
id: 11
|
|
128
|
+
name: nRF52_FRAM_1392_396
|
|
129
|
+
- datatype: target
|
|
130
|
+
parameters:
|
|
131
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
132
|
+
id: 1392397
|
|
133
|
+
name: nRF52_FRAM_1392_397
|
|
134
|
+
- datatype: target
|
|
135
|
+
parameters:
|
|
136
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
137
|
+
id: 1392398
|
|
138
|
+
name: nRF52_FRAM_1392_398
|
|
139
|
+
- datatype: target
|
|
140
|
+
parameters:
|
|
141
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
142
|
+
id: 1392399
|
|
143
|
+
name: nRF52_FRAM_1392_399
|
|
144
|
+
comment: LabPrototype
|
|
145
|
+
- datatype: target
|
|
146
|
+
parameters:
|
|
147
|
+
inherit_from: nRF52_FRAM_1392_377
|
|
148
|
+
id: 1392400
|
|
149
|
+
name: nRF52_FRAM_1392_400
|
|
150
|
+
comment: in darmstadt
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
- datatype: target
|
|
154
|
+
parameters:
|
|
155
|
+
id: 1001
|
|
156
|
+
name: target_nRF52_01
|
|
157
|
+
version: v2.1r0
|
|
158
|
+
description: single target PCB, v2.1r0
|
|
159
|
+
comment: ONLY VIRTUAL - NOT REAL - for unittests
|
|
160
|
+
mcu1:
|
|
161
|
+
name: nRF52
|
|
162
|
+
mcu2: null
|
|
163
|
+
created: 2022-12-12 12:12:12
|
|
@@ -11,15 +11,15 @@
|
|
|
11
11
|
observers:
|
|
12
12
|
- name: sheep01
|
|
13
13
|
- name: sheep02
|
|
14
|
-
- name: sheep03
|
|
14
|
+
# - name: sheep03
|
|
15
15
|
- name: sheep04
|
|
16
16
|
- name: sheep05
|
|
17
17
|
- name: sheep06
|
|
18
18
|
- name: sheep07
|
|
19
|
-
- name: sheep08
|
|
19
|
+
# - name: sheep08
|
|
20
20
|
- name: sheep09
|
|
21
21
|
- name: sheep10
|
|
22
|
-
- name: sheep11
|
|
22
|
+
# - name: sheep11
|
|
23
23
|
- name: sheep12
|
|
24
24
|
- name: sheep13
|
|
25
25
|
- name: sheep14
|
|
@@ -53,28 +53,25 @@ from .validation import is_hex_msp430
|
|
|
53
53
|
from .validation import is_hex_nrf52
|
|
54
54
|
|
|
55
55
|
__all__ = [
|
|
56
|
-
# patcher
|
|
57
|
-
"read_uid",
|
|
58
|
-
"modify_uid",
|
|
59
|
-
"modify_symbol_value",
|
|
60
|
-
"find_symbol",
|
|
61
|
-
"read_symbol",
|
|
62
|
-
"read_arch",
|
|
63
|
-
# converter
|
|
64
|
-
"elf_to_hex",
|
|
65
|
-
"file_to_base64",
|
|
66
56
|
"base64_to_file",
|
|
67
|
-
"file_to_hash",
|
|
68
57
|
"base64_to_hash",
|
|
58
|
+
"determine_arch",
|
|
59
|
+
"determine_type",
|
|
60
|
+
"elf_to_hex",
|
|
69
61
|
"extract_firmware",
|
|
62
|
+
"file_to_base64",
|
|
63
|
+
"file_to_hash",
|
|
64
|
+
"find_symbol",
|
|
70
65
|
"firmware_to_hex",
|
|
71
|
-
# validation
|
|
72
|
-
"is_hex",
|
|
73
|
-
"is_hex_msp430",
|
|
74
|
-
"is_hex_nrf52",
|
|
75
66
|
"is_elf",
|
|
76
67
|
"is_elf_msp430",
|
|
77
68
|
"is_elf_nrf52",
|
|
78
|
-
"
|
|
79
|
-
"
|
|
69
|
+
"is_hex",
|
|
70
|
+
"is_hex_msp430",
|
|
71
|
+
"is_hex_nrf52",
|
|
72
|
+
"modify_symbol_value",
|
|
73
|
+
"modify_uid",
|
|
74
|
+
"read_arch",
|
|
75
|
+
"read_symbol",
|
|
76
|
+
"read_uid",
|
|
80
77
|
]
|
|
@@ -79,10 +79,10 @@ class DiodeTarget(TargetABC):
|
|
|
79
79
|
|
|
80
80
|
def step(self, voltage_uV: int, *, pwr_good: bool) -> float:
|
|
81
81
|
if pwr_good or not self.ctrl:
|
|
82
|
-
V_CC = voltage_uV * 1e-
|
|
82
|
+
V_CC = voltage_uV * 1e-6
|
|
83
83
|
V_D = V_CC / 2
|
|
84
84
|
I_R = I_D = 0
|
|
85
|
-
# there is no direct formular, but this
|
|
85
|
+
# there is no direct formular, but this iteration converges fast
|
|
86
86
|
for _ in range(10):
|
|
87
87
|
# low voltages tend to produce log(x<0)=err
|
|
88
88
|
with suppress(ValueError):
|
|
@@ -90,8 +90,9 @@ class DiodeTarget(TargetABC):
|
|
|
90
90
|
# both currents are positive and should be identical
|
|
91
91
|
I_R = max(0.0, (V_CC - V_D) / self.R_Ohm)
|
|
92
92
|
I_D = max(0.0, self.I_S * math.expm1(V_D / self.c1))
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
with suppress(ZeroDivisionError):
|
|
94
|
+
if abs(I_R / I_D - 1) < 1e-6:
|
|
95
|
+
break
|
|
95
96
|
# take mean of both currents and determine a new V_D
|
|
96
97
|
V_D = V_CC - self.R_Ohm * (I_R + I_D) / 2
|
|
97
98
|
return 1e9 * (I_R + I_D) / 2 # = nA
|
{shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/virtual_converter_model.py
RENAMED
|
@@ -101,7 +101,7 @@ class VirtualConverterModel:
|
|
|
101
101
|
|
|
102
102
|
# pulled from update_states_and_output() due to easier static init
|
|
103
103
|
self.sample_count: int = 0xFFFFFFF0
|
|
104
|
-
self.is_outputting: bool =
|
|
104
|
+
self.is_outputting: bool = False
|
|
105
105
|
self.vsource_skip_gpio_logging: bool = False
|
|
106
106
|
|
|
107
107
|
def calc_inp_power(self, input_voltage_uV: float, input_current_nA: float) -> int:
|
|
@@ -180,6 +180,7 @@ class VirtualConverterModel:
|
|
|
180
180
|
|
|
181
181
|
# TODO: add range-checks for add, sub Ops
|
|
182
182
|
def update_cap_storage(self) -> int:
|
|
183
|
+
# TODO: this calculation is wrong for everything beside boost-cnv
|
|
183
184
|
if self.enable_storage:
|
|
184
185
|
V_mid_prot_uV = max(1.0, self.V_mid_uV)
|
|
185
186
|
P_sum_fW = self.P_inp_fW - self.P_out_fW
|
|
@@ -194,22 +195,24 @@ class VirtualConverterModel:
|
|
|
194
195
|
def update_states_and_output(self) -> int:
|
|
195
196
|
self.sample_count += 1
|
|
196
197
|
check_thresholds = self.sample_count >= self._cfg.interval_check_thresholds_n
|
|
198
|
+
V_mid_uV_now = self.V_mid_uV
|
|
199
|
+
# copy avoids not enabling pwr_good (due to large dV_enable_output_uV)
|
|
197
200
|
|
|
198
201
|
if check_thresholds:
|
|
199
202
|
self.sample_count = 0
|
|
200
203
|
if self.is_outputting:
|
|
201
|
-
if
|
|
204
|
+
if V_mid_uV_now < self.V_disable_output_threshold_uV:
|
|
202
205
|
self.is_outputting = False
|
|
203
|
-
elif
|
|
206
|
+
elif V_mid_uV_now >= self.V_enable_output_threshold_uV:
|
|
204
207
|
self.is_outputting = True
|
|
205
208
|
self.V_mid_uV -= self.dV_enable_output_uV
|
|
206
209
|
|
|
207
210
|
if check_thresholds or self._cfg.immediate_pwr_good_signal:
|
|
208
211
|
# generate power-good-signal
|
|
209
212
|
if self.power_good:
|
|
210
|
-
if
|
|
213
|
+
if V_mid_uV_now <= self._cfg.V_pwr_good_disable_threshold_uV:
|
|
211
214
|
self.power_good = False
|
|
212
|
-
elif
|
|
215
|
+
elif V_mid_uV_now >= self._cfg.V_pwr_good_enable_threshold_uV:
|
|
213
216
|
self.power_good = self.is_outputting
|
|
214
217
|
# set batok pin to state ... TODO?
|
|
215
218
|
|
{shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/virtual_harvester_model.py
RENAMED
|
@@ -170,8 +170,9 @@ class VirtualHarvesterModel:
|
|
|
170
170
|
|
|
171
171
|
_voltage_uV, _current_nA = self.ivcurve_2_cv(_voltage_uV, _current_nA)
|
|
172
172
|
if self.interval_step < self._cfg.duration_n:
|
|
173
|
+
self.voltage_set_uV = self.voc_now
|
|
174
|
+
elif self.interval_step == self._cfg.duration_n:
|
|
173
175
|
self.voltage_set_uV = int(self.voc_now * self._cfg.setpoint_n8 / 256)
|
|
174
|
-
_current_nA = 0
|
|
175
176
|
|
|
176
177
|
return _voltage_uV, _current_nA
|
|
177
178
|
|