def main(self):
     det = Dosimeter(**self.LEDS)  # Initialise dosimeter object from dosimeter.py
     det.activatePin(self.led_power)
     sleep_time = 300
     if self.args.test:
         sleep_time = 10 # seconds
     while True: # Run until error or KeyboardInterrupt (Ctrl + C)
         p = Process(target = det.ping, args=(self.led_network,))
         p.start()
         p.join() # Will block main thread execution until ping succeeds, else blinks in parallel
         GPIO.remove_event_detect(SIG_PIN)
         GPIO.add_event_detect(SIG_PIN, GPIO.FALLING, callback = det.updateCount_basic, bouncetime=1)
         sleep(sleep_time)
         self.getAndSendData(det = det, sleep_time = sleep_time) # time in seconds
    def main(self):
        # Initialise dosimeter object from dosimeter.py
        det = Dosimeter(max_accumulation_time_sec=3600, **self.LEDS)
        det.activatePin(self.led_power)
        sleep_time = 300
        if self.args.test:
            sleep_time = 30  # seconds
        dt = datetime.timedelta(seconds=sleep_time)

        # now we are keeping track of our accumulation time intervals
        #   in this block, not in Dosimeter
        curStart = datetime.datetime.now()
        curEnd = curStart + dt
        timeCheckFactor = 30

        while True:
            # Run until error or KeyboardInterrupt (Ctrl + C)
            p = Process(target=det.ping, args=(self.led_network,))
            p.start()
            p.join()
            # p.join() will block main thread execution until ping succeeds,
            #   else blinks in parallel
            GPIO.remove_event_detect(SIG_PIN)
            GPIO.add_event_detect(
                SIG_PIN, GPIO.FALLING, callback=det.updateCount_basic,
                bouncetime=1)
            while datetime.datetime.now() < curEnd:
                # Wait until the accumulation time interval is up
                # If timeCheckFactor==1, then the intervals of the while True
                #   loop would slowly get out of sync with the start/end times,
                #   due to the additional processing time for commands before
                #   and after the sleep command.
                sleep(sleep_time / timeCheckFactor)
            self.getAndSendData(det, curStart, curEnd)  # time in sec
            curStart = curEnd + datetime.timedelta(seconds=0)   # copy
            curEnd = curEnd + dt