Exemple #1
0
class Board(object):

    """
    Base class for Board hardware implementations
    """

    __metaclass__ = ABCMeta

    def __init__(self):

        self.emitter = EventEmitter()

        self.hardware_event_job = SCHEDULER.add_job(
            self.update_hardware_state,
            "interval",
            seconds=ms(100),
            coalesce=True,
            max_instances=1
        )

    def trigger_hardware_event(self, event, *args, **kwargs):

        """
        Signal hardware event.
        """

        self.emitter.emit(event, *args, **kwargs)

    def add_event_handler(self, event, handler, once=False):

        """
        Add hardware event handler.
        """

        if once:
            self.emitter.once(event, handler)
        else:
            self.emitter.on(event, handler)

    def remove_event_handler(self, event, handler):

        """
        Remove hardware event handler.
        """

        self.emitter.remove(event, handler)

    @abstractmethod
    def update_hardware_state(self):

        """
        Abstract method for updating hardware state.
        """

        pass