Skip to content

Releases: qadanm/elmulator

v0.3.1

Choose a tag to compare

@qadanm qadanm released this 06 Jul 02:47

Names the GitHub Action elmulator (was elmulator serve) so the Marketplace listing and the Actions step label read as the project name. No action inputs or outputs changed.

Also refreshes the README front page (the quickstart leads with the in-process Conversation and load-by-name, plus a dedicated GitHub Actions section).

Pin qadanm/elmulator@v0.3.1, or @v0 to track the latest 0.x. The Swift package and its public API are unchanged from 0.3.0.

v0.3.0

Choose a tag to compare

@qadanm qadanm released this 06 Jul 02:18

Developer-experience release. Everything is additive except the BLE type rename, which ships with deprecated aliases so existing code keeps compiling.

Added

  • A shipped test client: an in-process Conversation and a TCP Client (Swift ElmulatorTestSupport; Python Conversation, Client, serve_in_background).
  • Bundled scenarios by name: Scenario.bundled("p0420_basic") and elmulator.load_bundled(...). Embedded in the package, so no files on disk are needed.
  • An opt-in served-conversation transcript for debugging, with a byte-level debugDump().
  • In-code scenario builders (public initializers in Swift, build_scenario in Python).
  • A helper to use expected_scan_summary: mismatches(observed:) / summary_mismatches(...).
  • A reusable GitHub Action (action.yml) that serves a scenario over TCP and exposes the port.

Changed

  • BLE types dropped the BLE prefix (CentralStack, ConnectionStateMachine, AdapterProfile, DiscoveredPeripheral, FakeCentral, and so on) so they no longer collide with a consuming app's own BLE layer. Deprecated typealiases keep the old names working for now.

Fixed

  • The CoreBluetooth-Mock bridge can honor per-piece reply delays (opt in with applyDelays: true).
  • elmulator validate works from a pip-installed wheel.

v0.2.0

Choose a tag to compare

@qadanm qadanm released this 06 Jul 01:16

API cleanup.

Renamed the Swift public types for a cleaner API. This is a breaking change for Swift consumers.

  • Scenario (was FakeELMScenario)
  • ScenarioEngine (was FakeELMScenarioEngine)
  • EngineConfiguration (was FakeELMEngineConfiguration)
  • ResponsePlan (was FakeELMResponsePlan)
  • TCPServer (was FakeELMTCPServer, in the ElmulatorTCP module)

The Python API is unchanged. The Python README now notes python -m elmulator for setups where the console script is not on PATH.

v0.1.0

Choose a tag to compare

@qadanm qadanm released this 05 Jul 23:33

First release.

A scriptable Bluetooth LE and TCP OBD2 (ELM327) adapter emulator and CI test harness.

  • Swift package (SwiftPM) and a pure standard library Python package.
  • Scenario format obd2.sim_scenario.v1, with a JSON Schema and seven example scenarios.
  • In-process BLE test double and a CoreBluetooth-Mock bridge, so iOS Bluetooth code can be tested with no radio.
  • A real BLE peripheral tool for on-device testing, plus a TCP server for any language.
  • Python and Swift servers checked against each other byte for byte by a conformance suite.

See the README and the docs folder for usage.