Add branding splash and simulator cycle timing
This commit is contained in:
@@ -331,19 +331,23 @@ def run_simulator_scenario(payload: SimulatorScenarioCreate, db: Session = Depen
|
||||
elif payload.scenario == "cycle_signal_edge":
|
||||
current_value = machine.cycle_signal_edge != "falling"
|
||||
previous_value = not current_value
|
||||
last_cycle_at = None
|
||||
if machine.last_cycle_at is not None:
|
||||
last_cycle_at = machine.last_cycle_at.replace(tzinfo=UTC) if machine.last_cycle_at.tzinfo is None else machine.last_cycle_at.astimezone(UTC)
|
||||
current_event_time = last_cycle_at + timedelta(seconds=cycle_time_sec) if last_cycle_at is not None else now
|
||||
events.extend(
|
||||
[
|
||||
SimulatorEventCreate(
|
||||
machine_id=machine.code,
|
||||
event_type="digital_input_changed",
|
||||
timestamp=now - timedelta(milliseconds=max(machine.debounce_ms + 100, 500)),
|
||||
timestamp=current_event_time - timedelta(milliseconds=max(machine.debounce_ms + 100, 500)),
|
||||
input_name="cycle_signal",
|
||||
input_value=previous_value,
|
||||
),
|
||||
SimulatorEventCreate(
|
||||
machine_id=machine.code,
|
||||
event_type="digital_input_changed",
|
||||
timestamp=now,
|
||||
timestamp=current_event_time,
|
||||
input_name="cycle_signal",
|
||||
input_value=current_value,
|
||||
cycle_time_sec=cycle_time_sec,
|
||||
|
||||
@@ -195,3 +195,23 @@ def test_simulator_debounce_noise_is_ignored(db_session: Session) -> None:
|
||||
assert result["scenario"] == "debounce_noise"
|
||||
assert len(result["events"]) == 2
|
||||
assert cycles == []
|
||||
|
||||
|
||||
def test_simulator_passive_edge_uses_requested_real_cycle_time(db_session: Session) -> None:
|
||||
machine = seed_running_machine(db_session)
|
||||
machine.last_cycle_at = datetime(2026, 6, 14, 8, 0, tzinfo=timezone.utc)
|
||||
db_session.commit()
|
||||
|
||||
result = run_simulator_scenario(
|
||||
SimulatorScenarioCreate(
|
||||
machine_id=machine.code,
|
||||
scenario="cycle_signal_edge",
|
||||
cycle_time_sec=12,
|
||||
),
|
||||
db_session,
|
||||
)
|
||||
|
||||
cycle = db_session.execute(select(Cycle).where(Cycle.machine_id == machine.id)).scalar_one()
|
||||
assert result["scenario"] == "cycle_signal_edge"
|
||||
assert len(result["events"]) == 2
|
||||
assert cycle.cycle_time_sec == 12
|
||||
|
||||
Reference in New Issue
Block a user