platypush/platypush/plugins/gps/_model.py

48 lines
1.0 KiB
Python

from datetime import datetime
from dataclasses import dataclass, field
from enum import Enum
from typing import Dict, Optional
class DeviceMode(Enum):
"""
GPS device mode.
"""
NO_FIX = 1 # No fix
TWO_D = 2 # 2D fix
THREE_D = 3 # 3D fix (including altitude)
@dataclass
class GpsDevice:
"""
Models the GPS device.
"""
path: str
activated: Optional[datetime] = None
native: bool = False
baudrate: Optional[int] = None
parity: str = 'N'
stopbits: Optional[int] = None
cycle: Optional[float] = None
driver: Optional[str] = None
subtype: Optional[str] = None
mode: Optional[DeviceMode] = None
@dataclass
class GpsStatus:
"""
Models the status of the GPS service.
"""
latitude: Optional[float] = None
longitude: Optional[float] = None
altitude: Optional[float] = None
speed: Optional[float] = None
satellites_used: int = 0
devices: Dict[str, GpsDevice] = field(default_factory=dict)
timestamp: Optional[datetime] = None