コード例 #1
0
ファイル: agents.py プロジェクト: jontsai/raspberrypi_gpio
 def __init__(self, pin_config=None, *args, **kwargs):
     #threading.Thread.__init__(self, *args, **kwargs)
     super(BaseRPiAgent, self).__init__(*args, **kwargs)
     self.pins = BaseRPiPinConfig(cleanup=True) if pin_config is None else pin_config
     self.should_run = True
     self.routine = None
     self.set_routine_settings()
     self.running_time = 0
コード例 #2
0
ファイル: agents.py プロジェクト: jontsai/raspberrypi_gpio
class BaseRPiAgent(threading.Thread):
    def __init__(self, pin_config=None, *args, **kwargs):
        #threading.Thread.__init__(self, *args, **kwargs)
        super(BaseRPiAgent, self).__init__(*args, **kwargs)
        self.pins = BaseRPiPinConfig(cleanup=True) if pin_config is None else pin_config
        self.should_run = True
        self.routine = None
        self.set_routine_settings()
        self.running_time = 0

    def set_routine_settings(self):
        """Initialize routine settings to defaults
        """
        self.routine_settings = DEFAULT_ROUTINE_SETTINGS

    def run(self):
        print 'Running %s' % (self.__class__.__name__,)
        while self.should_run:
            self.execute_routine()
            # CYCLE_SLEEP_DURATION expresed in milliseconds to prevent rounding errors
            sleep(CYCLE_SLEEP_DURATION / 1000.)
            self.running_time += CYCLE_SLEEP_DURATION

    def get_routine(self):
        routine = self.routine if hasattr(self, 'routine') else None
        return routine

    def execute_routine(self):
        """Abstract method
        """
        pass

    def terminate(self):
        self.should_run = False
        # routine = self.get_routine()
        # if routine:
        #     while False and routine.is_alive():
        #         print 'Waiting for children threads to die...'
        #         sleep(1)
        print 'Cleaning up...'
        self.pins.cleanup()