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.
Files changed (146) hide show
  1. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/PKG-INFO +1 -1
  2. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/experiment_generic_var1.py +1 -1
  3. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/experiment_generic_var2.py +1 -1
  4. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/__init__.py +11 -13
  5. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/__init__.py +3 -4
  6. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/virtual_source_fixture.yaml +1 -0
  7. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/experiment/__init__.py +4 -6
  8. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/__init__.py +6 -9
  9. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/__init__.py +7 -9
  10. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/observer_fixture.yaml +27 -25
  11. 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
  12. shepherd_core-2024.11.2/shepherd_core/data_models/testbed/target_fixture.yaml +163 -0
  13. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/testbed_fixture.yaml +3 -3
  14. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/fw_tools/__init__.py +14 -17
  15. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/version.py +1 -1
  16. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/target_model.py +5 -4
  17. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/virtual_converter_model.py +8 -5
  18. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/virtual_harvester_model.py +2 -1
  19. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/writer.py +47 -54
  20. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core.egg-info/PKG-INFO +1 -1
  21. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core.egg-info/SOURCES.txt +1 -0
  22. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_testbed_fixtures.py +1 -0
  23. shepherd_core-2024.11.2/tests/test_writer.py +292 -0
  24. shepherd_core-2024.9.1/tests/test_writer.py +0 -169
  25. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/README.md +0 -0
  26. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/eenv_generator.py +0 -0
  27. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/experiment_from_yaml.yaml +0 -0
  28. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/experiment_models.py +0 -0
  29. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/firmware_model.py +0 -0
  30. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/firmware_modification.py +0 -0
  31. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/inventory.py +0 -0
  32. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/simulate_vharvester.py +0 -0
  33. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/simulate_vsource.py +0 -0
  34. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/uart_decode_waveform.py +0 -0
  35. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/uart_raw2.csv +0 -0
  36. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/examples/vsource_debug_sim.py +0 -0
  37. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/pyproject.toml +0 -0
  38. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/setup.cfg +0 -0
  39. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/__init__.py +10 -10
  40. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/calibration_hw_def.py +0 -0
  41. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/commons.py +0 -0
  42. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/__init__.py +0 -0
  43. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/cal_measurement.py +0 -0
  44. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/calibration.py +0 -0
  45. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/content.py +0 -0
  46. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/shepherd.py +0 -0
  47. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/timezone.py +0 -0
  48. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/base/wrapper.py +0 -0
  49. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/_external_fixtures.yaml +0 -0
  50. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/energy_environment.py +0 -0
  51. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/energy_environment_fixture.yaml +0 -0
  52. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/firmware.py +0 -0
  53. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/firmware_datatype.py +0 -0
  54. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/virtual_harvester.py +0 -0
  55. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/virtual_harvester_fixture.yaml +0 -0
  56. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/content/virtual_source.py +0 -0
  57. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/experiment/experiment.py +0 -0
  58. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/experiment/observer_features.py +0 -0
  59. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/experiment/target_config.py +0 -0
  60. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/readme.md +0 -0
  61. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/emulation.py +0 -0
  62. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/firmware_mod.py +0 -0
  63. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/harvest.py +0 -0
  64. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/observer_tasks.py +0 -0
  65. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/programming.py +0 -0
  66. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/task/testbed_tasks.py +0 -0
  67. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/cape.py +0 -0
  68. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/cape_fixture.yaml +0 -0
  69. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/gpio.py +0 -0
  70. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/gpio_fixture.yaml +0 -0
  71. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/mcu.py +0 -0
  72. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/mcu_fixture.yaml +0 -0
  73. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/observer.py +0 -0
  74. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/target.py +0 -0
  75. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/testbed/testbed.py +0 -0
  76. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/data_models/virtual_source_doc.txt +0 -0
  77. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/decoder_waveform/__init__.py +0 -0
  78. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/decoder_waveform/uart.py +0 -0
  79. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/fw_tools/converter.py +0 -0
  80. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/fw_tools/converter_elf.py +0 -0
  81. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/fw_tools/patcher.py +0 -0
  82. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/fw_tools/validation.py +0 -0
  83. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/inventory/__init__.py +0 -0
  84. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/inventory/python.py +0 -0
  85. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/inventory/system.py +0 -0
  86. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/inventory/target.py +0 -0
  87. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/logger.py +0 -0
  88. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/reader.py +0 -0
  89. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/testbed_client/__init__.py +2 -2
  90. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/testbed_client/cache_path.py +0 -0
  91. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/testbed_client/client_abc_fix.py +0 -0
  92. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/testbed_client/client_web.py +0 -0
  93. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/testbed_client/fixtures.py +0 -0
  94. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/testbed_client/user_model.py +0 -0
  95. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/__init__.py +3 -3
  96. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/virtual_harvester_simulation.py +0 -0
  97. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/virtual_source_model.py +0 -0
  98. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core/vsource/virtual_source_simulation.py +0 -0
  99. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core.egg-info/dependency_links.txt +0 -0
  100. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core.egg-info/requires.txt +0 -0
  101. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core.egg-info/top_level.txt +0 -0
  102. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/shepherd_core.egg-info/zip-safe +0 -0
  103. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/__init__.py +0 -0
  104. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/conftest.py +0 -0
  105. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/__init__.py +0 -0
  106. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/conftest.py +0 -0
  107. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_cal_data.yaml +0 -0
  108. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_cal_data_faulty.yaml +0 -0
  109. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_cal_meas.yaml +0 -0
  110. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_cal_meas_faulty1.yaml +0 -0
  111. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_cal_meas_faulty2.yaml +0 -0
  112. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_config_emulator.yaml +0 -0
  113. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_config_experiment.yaml +0 -0
  114. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_config_experiment_alternative.yaml +0 -0
  115. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_config_harvester.yaml +0 -0
  116. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_config_testbed.yaml +0 -0
  117. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/example_config_virtsource.yaml +0 -0
  118. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_base_models.py +0 -0
  119. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_content_fixtures.py +0 -0
  120. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_content_models.py +0 -0
  121. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_examples.py +0 -0
  122. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_experiment_models.py +0 -0
  123. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_task_generation.py +0 -0
  124. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_task_models.py +0 -0
  125. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/data_models/test_testbed_models.py +0 -0
  126. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/decoder_waveform/__init__.py +0 -0
  127. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/decoder_waveform/test_decoder.py +0 -0
  128. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/__init__.py +0 -0
  129. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/build_msp.elf +0 -0
  130. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/build_nrf.elf +0 -0
  131. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/conftest.py +0 -0
  132. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/test_converter.py +0 -0
  133. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/test_patcher.py +0 -0
  134. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/fw_tools/test_validation.py +0 -0
  135. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/inventory/__init__.py +0 -0
  136. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/inventory/test_inventory.py +0 -0
  137. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/test_cal_hw.py +0 -0
  138. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/test_examples.py +0 -0
  139. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/test_logger.py +0 -0
  140. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/test_reader.py +0 -0
  141. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/testbed_client/__init__.py +0 -0
  142. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/vsource/__init__.py +0 -0
  143. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/vsource/conftest.py +0 -0
  144. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/vsource/test_converter.py +0 -0
  145. {shepherd_core-2024.9.1 → shepherd_core-2024.11.2}/tests/vsource/test_harvester.py +0 -0
  146. {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.9.1
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, 13),
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, 13),
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
- "ShpModel",
46
- "Wrapper",
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
- "EnergyEnvironment",
59
- "EnergyDType",
60
- "VirtualSourceConfig",
52
+ "GpioTracing",
53
+ "PowerTracing",
54
+ "ShpModel",
55
+ "SystemLogging",
56
+ "TargetConfig",
61
57
  "VirtualHarvesterConfig",
58
+ "VirtualSourceConfig",
59
+ "Wrapper",
62
60
  ]
@@ -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:
@@ -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
  ]
@@ -22,18 +22,15 @@ from .programming import ProgrammingTask
22
22
  from .testbed_tasks import TestbedTasks
23
23
 
24
24
  __all__ = [
25
- # Hierarchical Order
26
- "TestbedTasks",
27
- "ObserverTasks",
28
- "FirmwareModTask",
29
- "ProgrammingTask",
25
+ "Compression",
30
26
  "EmulationTask",
27
+ "FirmwareModTask",
31
28
  "HarvestTask",
32
- # Enums
33
- "Compression",
34
- # helper functions
35
- "prepare_task",
29
+ "ObserverTasks",
30
+ "ProgrammingTask",
31
+ "TestbedTasks",
36
32
  "extract_tasks",
33
+ "prepare_task",
37
34
  ]
38
35
 
39
36
 
@@ -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
- # enums
26
- "ProgrammerProtocol",
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: II70
28
- eth_port: B22
29
- description: mid-mid in room
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: nRF52_FRAM_001
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: nRF52_FRAM_002
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: nRF52_FRAM_003
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: nRF52_FRAM_004
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: nRF52_FRAM_011
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: nRF52_FRAM_017 # TODO: not validated
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: nRF52_FRAM_008
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: nRF52_FRAM_016
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: nRF52_FRAM_009 # TODO: not validated
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: nRF52_FRAM_010
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: II69
171
- eth_port: B14
172
- description: lower mid on east-side
171
+ room: tbd
172
+ eth_port: tbd
173
+ description: tbd
173
174
  cape:
174
175
  name: cape61
175
- target_a:
176
- name: nRF52_FRAM_007
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: nRF52_FRAM_014
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: nRF52_FRAM_005
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: nRF52_FRAM_006
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
- "determine_type",
79
- "determine_arch",
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
  ]
@@ -1,3 +1,3 @@
1
1
  """Separated string avoids circular imports."""
2
2
 
3
- version: str = "2024.9.1"
3
+ version: str = "2024.11.2"
@@ -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-3
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 recursion converges fast
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
- if abs(I_R / I_D - 1) < 1e-6:
94
- break
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
@@ -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 = True
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 self.V_mid_uV < self.V_disable_output_threshold_uV:
204
+ if V_mid_uV_now < self.V_disable_output_threshold_uV:
202
205
  self.is_outputting = False
203
- elif self.V_mid_uV >= self.V_enable_output_threshold_uV:
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 self.V_mid_uV <= self._cfg.V_pwr_good_disable_threshold_uV:
213
+ if V_mid_uV_now <= self._cfg.V_pwr_good_disable_threshold_uV:
211
214
  self.power_good = False
212
- elif self.V_mid_uV >= self._cfg.V_pwr_good_enable_threshold_uV:
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
 
@@ -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