Skip to content
Open
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
21 changes: 21 additions & 0 deletions obd_ai/catalog.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,27 @@ def as_mapping(self) -> Mapping[str, ApprovedCommand]:
description="Read current ECU/control module voltage.",
obd_command_name="CONTROL_MODULE_VOLTAGE",
),
_CommandDefinition(
key="short_fuel_trim_bank_1",
public_name="Short Fuel Trim Bank 1",
category="fuel",
description="Read short-term fuel trim for bank 1.",
obd_command_name="SHORT_FUEL_TRIM_1",
),
_CommandDefinition(
key="long_fuel_trim_bank_1",
public_name="Long Fuel Trim Bank 1",
category="fuel",
description="Read long-term fuel trim for bank 1.",
obd_command_name="LONG_FUEL_TRIM_1",
),
_CommandDefinition(
key="mass_air_flow",
public_name="Mass Air Flow",
category="powertrain",
description="Read current mass air flow rate.",
obd_command_name="MAF",
),
_CommandDefinition(
key="engine_run_time",
public_name="Engine Run Time",
Expand Down
4 changes: 4 additions & 0 deletions obd_ai/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,8 @@ def serialize_connection_metadata(
status: str,
is_connected: Optional[bool] = None,
port_name: Optional[str] = None,
protocol_id: Optional[str] = None,
protocol_name: Optional[str] = None,
) -> Dict[str, JsonValue]:
"""Serialize transport-level connection metadata."""

Expand All @@ -154,6 +156,8 @@ def serialize_connection_metadata(
"status": status,
"is_connected": is_connected,
"port_name": port_name,
"protocol_id": protocol_id,
"protocol_name": protocol_name,
}


Expand Down
21 changes: 20 additions & 1 deletion obd_ai/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from __future__ import annotations

from typing import Callable, Optional
from typing import Any, Callable, Optional

import obd
from obd.OBDResponse import OBDResponse
Expand Down Expand Up @@ -66,12 +66,31 @@ def port_name(self) -> str:
return self._connection.port_name()

def connection_metadata(self):
protocol_id = self._safe_optional_connection_call("protocol_id")
protocol_name = self._safe_optional_connection_call("protocol_name")
if protocol_id is not None:
protocol_id = str(protocol_id)
if protocol_name is not None:
protocol_name = str(protocol_name)

return serialize_connection_metadata(
status=self.status(),
is_connected=self.is_connected(),
port_name=self.port_name(),
protocol_id=protocol_id,
protocol_name=protocol_name,
)

def _safe_optional_connection_call(self, method_name: str) -> Optional[Any]:
method = getattr(self._connection, method_name, None)
if method is None:
return None

try:
return method()
except Exception:
return None

def close(self) -> None:
self._connection.close()

Expand Down
Loading