Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions packages/embeddedci-mcp/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog — `embeddedci-mcp`

## 2.13.8

- Requires `embeddedci` 2.13.7. `capture_la` takes `trigger_pre_samples`, and its result reports
`pre_samples` and `truncated` (LA up to 48 MS/s with gateware v50).

## 2.13.7

- Requires `embeddedci` 2.13.6, so `capture_adc` `oversample` always works.
Expand Down
4 changes: 2 additions & 2 deletions packages/embeddedci-mcp/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "hatchling.build"

[project]
name = "embeddedci-mcp"
version = "2.13.7"
version = "2.13.8"
description = "MCP server that lets AI agents drive an EmbeddedCI BenchPod hardware-in-the-loop bench"
readme = "README.md"
requires-python = ">=3.10"
Expand All @@ -26,7 +26,7 @@ classifiers = [
dependencies = [
# cloud: the embeddedci:<device> destination; discovery: connect("discover") over mDNS;
# analysis: dominant frequency in capture summaries.
"embeddedci[cloud,discovery,analysis]>=2.13.6,<3",
"embeddedci[cloud,discovery,analysis]>=2.13.7,<3",
"mcp>=1.12,<2",
"anyio>=4",
"pydantic>=2.7",
Expand Down
4 changes: 2 additions & 2 deletions packages/embeddedci-mcp/server.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"name": "io.github.embeddedci-com/embeddedci-mcp",
"title": "EmbeddedCI BenchPod",
"description": "Drive a BenchPod hardware-in-the-loop bench: power, flash, UART, I2C, CAN, analog and logic.",
"version": "2.13.7",
"version": "2.13.8",
"websiteUrl": "https://www.embeddedci.com/docs/benchpod-mcp",
"repository": {
"url": "https://github.com/embeddedci-com/embeddedci-python",
Expand All @@ -15,7 +15,7 @@
"registryType": "pypi",
"registryBaseUrl": "https://pypi.org",
"identifier": "embeddedci-mcp",
"version": "2.13.7",
"version": "2.13.8",
"runtimeHint": "uvx",
"transport": {
"type": "stdio"
Expand Down
10 changes: 1 addition & 9 deletions packages/embeddedci-mcp/src/embeddedci_mcp/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -288,15 +288,7 @@ def _channel(pod: Any, value: Any, key: str) -> int:

def _trigger(la: Any, edge: str, pre_samples: int = 0) -> Optional[Trigger]:
"""A :class:`Trigger` for the capture tools (the SDK resolves wiring names)."""
if la is None:
return None
if not pre_samples: # an SDK older than pre_samples takes the two arguments
return Trigger(la, edge) # type: ignore[arg-type]
try:
return Trigger(la, edge, pre_samples) # type: ignore[arg-type,call-arg]
except TypeError:
raise ValueError("trigger_pre_samples needs embeddedci with Trigger(pre_samples=...); "
"upgrade the embeddedci package") from None
return None if la is None else Trigger(la, edge, pre_samples) # type: ignore[arg-type]


# -- connection ---------------------------------------------------------------------
Expand Down
4 changes: 1 addition & 3 deletions packages/embeddedci-mcp/src/embeddedci_mcp/summaries.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,7 @@ def la_summary(la: LaCapture) -> m.LaCaptureResult:
))
return m.LaCaptureResult(samples=len(la), sample_rate_hz=rate, duration=la.duration,
channels=channels, trigger=trigger_text(la.trigger),
# getattr: an SDK older than these fields (the MCP's minimum pin)
pre_samples=getattr(la, "pre_samples", 0),
truncated=getattr(la, "truncated", "") or None)
pre_samples=la.pre_samples, truncated=la.truncated or None)


# -- wiring, pins and power ------------------------------------------------------------
Expand Down
8 changes: 8 additions & 0 deletions packages/embeddedci/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog — `embeddedci`

## 2.13.7

- `capture_la` goes up to 48 MS/s with gateware v50 (firmware 3.9.6+): above 12 MS/s the pod records
only the changes and replies in the usual form, so the call is unchanged.
- `Trigger(la, edge, pre_samples=N)`: `capture_la` also returns up to N samples from before the
trigger (gateware v50+); `LaCapture.pre_samples` says how many it holds.
- `LaCapture.truncated`: `"busy"` or `"memory"` when a capture above 12 MS/s stopped early.

## 2.13.6

- `BenchPod.capture_adc(..., oversample=True)` converts at 400 kS/s and averages down to the requested
Expand Down
2 changes: 1 addition & 1 deletion packages/embeddedci/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "hatchling.build"

[project]
name = "embeddedci"
version = "2.13.6"
version = "2.13.7"
description = "BenchPod SDK and pytest plugin for EmbeddedCI hardware-in-the-loop testing"
readme = "README.md"
requires-python = ">=3.10"
Expand Down