release: bump version to 0.71.0
This commit is contained in:
@@ -7,8 +7,23 @@ import time
|
||||
from dataclasses import asdict, dataclass, field
|
||||
from typing import Any, Literal
|
||||
|
||||
GestureName = Literal["rotate_left", "rotate_right", "zoom_in", "zoom_out", "confirm"]
|
||||
PROTOCOL_VERSION = "motion.v2"
|
||||
|
||||
GestureName = Literal[
|
||||
"rotate_left",
|
||||
"rotate_right",
|
||||
"rotate_up",
|
||||
"rotate_down",
|
||||
"zoom_in",
|
||||
"zoom_out",
|
||||
"focus_prev",
|
||||
"focus_next",
|
||||
"layer_prev",
|
||||
"layer_next",
|
||||
"confirm",
|
||||
]
|
||||
GesturePhase = Literal["start", "active", "end", "discrete"]
|
||||
InputMode = Literal["single", "dual_redundant", "single_fallback", "calibrated_3d"]
|
||||
|
||||
|
||||
def now_ms() -> int:
|
||||
@@ -25,6 +40,10 @@ class GestureEvent:
|
||||
seq: int = 0
|
||||
source: str = "motion-agent"
|
||||
mode: str = "single"
|
||||
protocol_version: str = PROTOCOL_VERSION
|
||||
camera_id: str = "unknown"
|
||||
input_mode: str = "single"
|
||||
fusion: dict[str, Any] | None = None
|
||||
payload: dict[str, Any] = field(default_factory=dict)
|
||||
type: Literal["gesture"] = "gesture"
|
||||
|
||||
@@ -41,9 +60,17 @@ class StatusEvent:
|
||||
camera_count: int
|
||||
active_camera_ids: tuple[str, ...] = ()
|
||||
mode: str = "single"
|
||||
protocol_version: str = PROTOCOL_VERSION
|
||||
input_mode: str = "single"
|
||||
armed: bool = False
|
||||
paused: bool = False
|
||||
devices_open: bool = False
|
||||
recognizer: str = "mediapipe-opencv"
|
||||
fps: float = 0.0
|
||||
recognition_fps: float = 0.0
|
||||
last_gesture: str | None = None
|
||||
last_fusion_reason: str | None = None
|
||||
enabled_gestures: tuple[str, ...] = ()
|
||||
error: str | None = None
|
||||
timestamp_ms: int = field(default_factory=now_ms)
|
||||
source: str = "motion-agent"
|
||||
@@ -59,6 +86,7 @@ class StatusEvent:
|
||||
@dataclass(frozen=True)
|
||||
class HeartbeatEvent:
|
||||
timestamp_ms: int = field(default_factory=now_ms)
|
||||
protocol_version: str = PROTOCOL_VERSION
|
||||
source: str = "motion-agent"
|
||||
type: Literal["heartbeat"] = "heartbeat"
|
||||
|
||||
@@ -87,6 +115,8 @@ class SkeletonEvent:
|
||||
timestamp_ms: int = field(default_factory=now_ms)
|
||||
source: str = "motion-agent"
|
||||
mode: str = "single"
|
||||
protocol_version: str = PROTOCOL_VERSION
|
||||
input_mode: str = "single"
|
||||
type: Literal["skeleton"] = "skeleton"
|
||||
|
||||
def to_dict(self) -> dict[str, Any]:
|
||||
@@ -94,3 +124,22 @@ class SkeletonEvent:
|
||||
|
||||
def to_json(self) -> str:
|
||||
return json.dumps(self.to_dict(), ensure_ascii=False, separators=(",", ":"))
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class CommandResultEvent:
|
||||
command: str
|
||||
request_id: str | None = None
|
||||
ok: bool = True
|
||||
status: dict[str, Any] = field(default_factory=dict)
|
||||
error: str | None = None
|
||||
timestamp_ms: int = field(default_factory=now_ms)
|
||||
protocol_version: str = PROTOCOL_VERSION
|
||||
source: str = "motion-agent"
|
||||
type: Literal["command_result"] = "command_result"
|
||||
|
||||
def to_dict(self) -> dict[str, Any]:
|
||||
return asdict(self)
|
||||
|
||||
def to_json(self) -> str:
|
||||
return json.dumps(self.to_dict(), ensure_ascii=False, separators=(",", ":"))
|
||||
|
||||
Reference in New Issue
Block a user