You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.5 KiB

"""
ADB数据模型定义
"""
from typing import Optional, List
from pydantic import BaseModel, Field
from enum import Enum
class DeviceStatus(str, Enum):
"""设备状态枚举"""
DEVICE = "device"
OFFLINE = "offline"
UNAUTHORIZED = "unauthorized"
BOOTLOADER = "bootloader"
RECOVERY = "recovery"
SIDELOAD = "sideload"
DISCONNECTED = "disconnected"
class DeviceInfo(BaseModel):
"""设备信息模型"""
serial: str = Field(..., description="设备序列号")
status: DeviceStatus = Field(..., description="设备状态")
model: Optional[str] = Field(None, description="设备型号")
manufacturer: Optional[str] = Field(None, description="制造商")
android_version: Optional[str] = Field(None, description="Android版本")
sdk_version: Optional[int] = Field(None, description="SDK版本")
class DeviceEvent(BaseModel):
"""设备事件模型"""
present: bool = Field(..., description="设备是否连接")
serial: str = Field(..., description="设备序列号")
status: DeviceStatus = Field(..., description="设备状态")
class ForwardInfo(BaseModel):
"""端口转发信息模型"""
serial: str = Field(..., description="设备序列号")
local: str = Field(..., description="本地地址")
remote: str = Field(..., description="远程地址")
class ShellCommand(BaseModel):
"""Shell命令模型"""
command: str = Field(..., description="要执行的命令")
timeout: Optional[int] = Field(30, description="命令超时时间(秒)")
class ShellResponse(BaseModel):
"""Shell命令响应模型"""
success: bool = Field(..., description="是否成功")
output: str = Field(..., description="命令输出")
error: Optional[str] = Field(None, description="错误信息")
exit_code: Optional[int] = Field(None, description="退出码")
class ForwardRequest(BaseModel):
"""端口转发请求模型"""
serial: str = Field(..., description="设备序列号")
local: str = Field(..., description="本地地址 (格式: tcp:port 或 localabstract:name)")
remote: str = Field(..., description="远程地址 (格式: tcp:port 或 localabstract:name)")
norebind: bool = Field(False, description="是否禁止重新绑定")
class ServerInfo(BaseModel):
"""ADB服务器信息模型"""
version: int = Field(..., description="服务器版本")
host: str = Field(..., description="服务器主机")
port: int = Field(..., description="服务器端口")
status: str = Field(..., description="服务器状态")