This commit is contained in:
Dmytro Bogovych 2023-08-22 18:55:00 +03:00
parent 6afb7f9f12
commit 4db0350dfe
5 changed files with 21 additions and 17 deletions

View File

@ -384,10 +384,10 @@ def run_probe():
break
# Process tasks and measure spent time
start_time = time.monotonic()
start_time = utils.get_monotonic_time()
for t in TASK_LIST.tasks:
if t["scheduled_time"] <= time.monotonic():
if t["scheduled_time"] <= utils.get_monotonic_time():
if t["command"] == "call":
try:
# Remove sheduled time
@ -405,7 +405,7 @@ def run_probe():
except Exception as err:
utils.log_error(message="Unexpected error.", err=err)
spent_time = time.monotonic() - start_time
spent_time = utils.get_monotonic_time() - start_time
# Wait 1 minute
if spent_time < 60:

View File

@ -10,6 +10,7 @@ import smtplib
import socket
import sox
import io
import time
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
@ -28,6 +29,12 @@ the_log = None
# 1 minute network timeout
NETWORK_TIMEOUT = 15
start_system_time = time.time()
start_monotonic_time = time.monotonic()
def get_monotonic_time():
return time.monotonic() - start_monotonic_time + start_system_time
def open_log_file(path: str, mode: str):
global the_log

View File

@ -39,14 +39,14 @@ class LogcatEventSource(multiprocessing.Process):
process_poll.register(process_logcat.stdout, select.POLLIN)
# Monitoring start time
current_timestamp = time.monotonic()
current_timestamp = utils.get_monotonic_time()
# Read logcat output line by line
while self.terminate_flag.value == 0:
# Check if time limit is hit
if time.monotonic() - current_timestamp > self.timelimit:
if utils.get_monotonic_time() - current_timestamp > self.timelimit:
break
current_timestamp = time.monotonic()
current_timestamp = utils.get_monotonic_time()
# Look for available data on stdout
try:

View File

@ -280,12 +280,12 @@ def gsm_monitor(file_to_play: str, file_to_record: str, on_start, on_finish, on_
utils.log(f'Playing device resolved to {AUDIO_DEV_PLAY}')
# Monitoring start time
timestamp_start = time.monotonic()
timestamp_start = utils.get_monotonic_time()
# Call start time
timestamp_call = None
if ROLE == Role.Caller:
timestamp_call = time.monotonic()
timestamp_call = utils.get_monotonic_time()
# Should call to be stopped ?
force_call_stop = False
@ -295,7 +295,7 @@ def gsm_monitor(file_to_play: str, file_to_record: str, on_start, on_finish, on_
# Read logcat output line by line
while True:
# Check if time limit is hit
if time.monotonic() - timestamp_start > TIME_LIMIT_MONITORING:
if utils.get_monotonic_time() - timestamp_start > TIME_LIMIT_MONITORING:
break
# Check if limit of calls hit
@ -304,7 +304,7 @@ def gsm_monitor(file_to_play: str, file_to_record: str, on_start, on_finish, on_
# Check if call hit maximum length - smth goes weird, exit from the script
if timestamp_call:
if time.monotonic() - timestamp_call > TIME_LIMIT_CALL:
if util.get_monotonic_time() - timestamp_call > TIME_LIMIT_CALL:
utils.log_verbose(f'Call time limit ({TIME_LIMIT_CALL}s). Stop the call.')
timestamp_call = None
@ -419,7 +419,7 @@ def gsm_monitor(file_to_play: str, file_to_record: str, on_start, on_finish, on_
utils.log_verbose(f'Detected call start notification from the mobile helper app, trying to start audio.')
# Save call start time
timestamp_call = time.monotonic()
timestamp_call = utils.get_monotonic_time()
# Is audio failed
audio_failed = False

View File

@ -6,9 +6,6 @@ import utils
import json
from crontab import CronTab
start_system_time = time.time()
start_monotonic_time = time.monotonic()
class Phone:
identifier: int = 0
@ -112,20 +109,20 @@ class TaskList:
# https://crontab.guru is good for crontab strings generation
# Use monotonic time source!
current_time = time.monotonic()
current_time = utils.get_monotonic_time()
for task in self.tasks:
if 'scheduled_time' not in task and 'schedule' in task:
# No schedule flag, so time to schedule
try:
cron_string = task['schedule'].strip()
if cron_string == '* * * * *':
task['scheduled_time'] = time.monotonic() - 0.001 # To ensure further comparison will not be affected by precision errors
task['scheduled_time'] = utils.get_monotonic_time() - 0.001 # To ensure further comparison will not be affected by precision errors
else:
cron = CronTab(task['schedule'])
task['scheduled_time'] = current_time + cron.next(default_utc=True)
# Just to help in further log reading & debugging - show the scheduled time in readable form
task['scheduled_time_str'] = time.ctime(task['scheduled_time'] - start_monotonic_time + start_system_time)
task['scheduled_time_str'] = time.ctime(task['scheduled_time'])
except:
utils.log_error("Error", sys.exc_info()[0])