review fixes: shared mock capture window, 2-position controller caveat
Мок-бэкенд ставил каждому трейсу свой capture_end_ns, потому что метка бралась в момент создания трейса. На реальном железе все комбинации коллекции выходят из одного синхронизированного цикла и делят одно окно — мок теперь ведёт себя так же, иначе он вводит в заблуждение при чтении записанных меток. В README контроллера добавлена оговорка: прошивка рассчитана ровно на два положения ключа. Хост допускает и 4, но тогда положение перестаёт быть чередованием одного бита и нужен контроллер на две управляющие линии. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -22,6 +22,12 @@
|
|||||||
а не от того, какой порт сейчас излучает. Если у ключа больше двух состояний,
|
а не от того, какой порт сейчас излучает. Если у ключа больше двух состояний,
|
||||||
лишние входы замыкаются джампером.
|
лишние входы замыкаются джампером.
|
||||||
|
|
||||||
|
> Прошивка рассчитана **ровно на два положения** ключа
|
||||||
|
> (`stimulus_switch_positions: 2` на хосте). Хост технически допускает и 4
|
||||||
|
> положения, но тогда положение перестаёт быть простым чередованием одного бита
|
||||||
|
> и потребуется контроллер на две управляющие линии — эта прошивка для такого
|
||||||
|
> режима не годится.
|
||||||
|
|
||||||
Если положению A соответствует лог. 1, а не 0 — поменяйте `kSwitchActiveLow`
|
Если положению A соответствует лог. 1, а не 0 — поменяйте `kSwitchActiveLow`
|
||||||
в [`src/main.cpp`](src/main.cpp).
|
в [`src/main.cpp`](src/main.cpp).
|
||||||
|
|
||||||
|
|||||||
@@ -446,9 +446,15 @@ class MultiDeviceLibreVnaService:
|
|||||||
s11=s11,
|
s11=s11,
|
||||||
s21=s21,
|
s21=s21,
|
||||||
capture_start_ns=mock_sweep_start_ns,
|
capture_start_ns=mock_sweep_start_ns,
|
||||||
capture_end_ns=time.monotonic_ns(),
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
# One shared window, as on real hardware: every combo of a collection comes
|
||||||
|
# out of the same synchronized cycle. Stamping each trace as it is built
|
||||||
|
# would instead spread the ends over the generation loop, which never
|
||||||
|
# happens natively and would mislead anyone reading mock captures.
|
||||||
|
mock_sweep_end_ns = time.monotonic_ns()
|
||||||
|
for trace in traces:
|
||||||
|
trace.capture_end_ns = mock_sweep_end_ns
|
||||||
self._mock_phase += 0.05
|
self._mock_phase += 0.05
|
||||||
return SweepCollection(
|
return SweepCollection(
|
||||||
collection_id=int(collection_id),
|
collection_id=int(collection_id),
|
||||||
|
|||||||
Reference in New Issue
Block a user