54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
import abc
|
|
from datetime import datetime
|
|
from typing import Any, Dict
|
|
|
|
|
|
class BaseModule(abc.ABC):
|
|
"""
|
|
Abstract Base Class that defines the mandatory interface for all PyMsc modules.
|
|
Ensures that different communication channels follow the same logic.
|
|
"""
|
|
|
|
def __init__(self, name: str):
|
|
self.module_name = name
|
|
self.is_running = False
|
|
|
|
@abc.abstractmethod
|
|
def initialize(self, config: Dict[str, Any]) -> bool:
|
|
"""
|
|
Setup the communication and resources.
|
|
:param config: Dictionary containing IP, ports, or hardware addresses.
|
|
:return: True if initialization is successful, False otherwise.
|
|
"""
|
|
pass
|
|
|
|
@abc.abstractmethod
|
|
def start_session(self) -> None:
|
|
"""
|
|
Starts the data acquisition or simulation.
|
|
"""
|
|
self.is_running = True
|
|
|
|
@abc.abstractmethod
|
|
def stop_session(self) -> None:
|
|
"""
|
|
Stops the module and releases resources.
|
|
"""
|
|
self.is_running = False
|
|
|
|
@abc.abstractmethod
|
|
def get_status(self) -> Dict[str, Any]:
|
|
"""
|
|
Returns the health status of the module.
|
|
:return: A dictionary with status information.
|
|
"""
|
|
pass
|
|
|
|
def get_system_timestamp(self) -> float:
|
|
"""
|
|
Helper to get a uniform system timestamp for data normalization.
|
|
:return: Current system time in seconds (float).
|
|
"""
|
|
now = datetime.now()
|
|
timestamp = now.timestamp()
|
|
return timestamp |