Skip to content

Commit 0cf15fe

Browse files
committed
moves manifest polling section
1 parent def531c commit 0cf15fe

6 files changed

Lines changed: 44 additions & 32 deletions

File tree

benchmesh-serial-service/src/benchmesh_service/drivers/owon_dge/manifest.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
"reol": "\r",
1717
"def_conn_ver_command": "*IDN?"
1818
},
19+
"polling": [
20+
{
21+
"method": "poll_status",
22+
"interval": 0.6
23+
}
24+
],
1925
"instrument_class": {
2026
"AWG": {
21-
"pooling": [
22-
{
23-
"method": "poll_status",
24-
"interval": 0.6
25-
}
26-
],
2727
"ui_component": "GenericAWG",
2828
"features": {
2929
"lock": true,
@@ -33,4 +33,4 @@
3333
}
3434
}
3535
}
36-
}
36+
}

benchmesh-serial-service/src/benchmesh_service/drivers/owon_oel/manifest.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
"reol": "\r",
1717
"def_conn_ver_command": "*IDN?"
1818
},
19+
"polling": [
20+
{
21+
"method": "poll_status",
22+
"interval": 1.1
23+
}
24+
],
1925
"instrument_class": {
2026
"ELL": {
21-
"pooling": [
22-
{
23-
"method": "poll_status",
24-
"interval": 1.1
25-
}
26-
],
2727
"ui_component": "OwonOELELL",
2828
"features": {
2929
"channels": 1,
@@ -103,4 +103,4 @@
103103
}
104104
}
105105
}
106-
}
106+
}

benchmesh-serial-service/src/benchmesh_service/drivers/owon_spm/manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"reol": "\r",
1818
"def_conn_ver_command": "*IDN?"
1919
},
20-
"pooling": [
20+
"polling": [
2121
{
2222
"method": "poll_status",
2323
"interval": 2,
@@ -303,4 +303,4 @@
303303
}
304304
}
305305
}
306-
}
306+
}

benchmesh-serial-service/src/benchmesh_service/drivers/owon_xdm/manifest.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
"reol": "\r",
1717
"def_conn_ver_command": "*IDN?"
1818
},
19+
"polling": [
20+
{
21+
"method": "poll_status",
22+
"interval": 0.1
23+
}
24+
],
1925
"instrument_class": {
2026
"DMM": {
21-
"pooling": [
22-
{
23-
"method": "poll_status",
24-
"interval": 0.1
25-
}
26-
],
2727
"ui_component": "GenericDMM",
2828
"features": {
2929
"channels": 1,
@@ -479,4 +479,4 @@
479479
}
480480
}
481481
}
482-
}
482+
}

benchmesh-serial-service/src/benchmesh_service/drivers/tenma_72/manifest.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
"reol": "",
1717
"def_conn_ver_command": "*IDN?"
1818
},
19+
"polling": [
20+
{
21+
"method": "poll_status",
22+
"interval": 3
23+
}
24+
],
1925
"instrument_class": {
2026
"PSU": {
21-
"pooling": [
22-
{
23-
"method": "poll_status",
24-
"interval": 6
25-
}
26-
],
2727
"ui_component": "GenericPSU",
2828
"features": {
2929
"lock": true,
@@ -82,4 +82,4 @@
8282
}
8383
}
8484
}
85-
}
85+
}

benchmesh-serial-service/src/benchmesh_service/manifest_resolver.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,21 @@ def get_poll_intervals(self, dev: dict) -> Dict[str, float]:
7777
return out
7878
manifest = self._load_manifest(driver_key)
7979
model_cfg = self._get_model_cfg(manifest, dev)
80+
81+
# Check model-level polling first (new unified approach)
82+
model_interval = self._first_poll_interval(model_cfg)
83+
8084
inst = model_cfg.get('instrument_class') or {}
8185
for klass, cfg in (inst or {}).items():
82-
iv = self._first_poll_interval(cfg)
86+
# Use model-level interval if available, otherwise class-level
87+
iv = model_interval if model_interval is not None else self._first_poll_interval(cfg)
8388
if iv is not None:
8489
out[str(klass)] = iv
8590
# nested
8691
for subk, subcfg in (cfg or {}).items():
8792
if not isinstance(subcfg, dict) or subk in ('features','modes','pooling','polling'):
8893
continue
89-
siv = self._first_poll_interval(subcfg)
94+
siv = model_interval if model_interval is not None else self._first_poll_interval(subcfg)
9095
if siv is not None:
9196
out[str(subk)] = siv
9297
return out
@@ -108,6 +113,13 @@ def get_poll_method(self, dev: dict, klass: str) -> Optional[str]:
108113
return None
109114
manifest = self._load_manifest(driver_key)
110115
model_cfg = self._get_model_cfg(manifest, dev)
116+
117+
# Check model-level polling first (new unified approach)
118+
model_method = self._first_poll_method(model_cfg)
119+
if model_method:
120+
return model_method
121+
122+
# Fall back to class-level polling (backward compatibility)
111123
iclasses = (model_cfg or {}).get('instrument_class', {}) or {}
112124
# top-level
113125
meth = self._first_poll_method(iclasses.get(klass, {}) or {})

0 commit comments

Comments
 (0)