openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.3 KiB

import os
import time
class Logger(object):
def __init__(self, root, init_data):
self.root = root
self.init_data = init_data
self.part = None
self.data_dir = None
self.cur_dir = None
self.log_file = None
self.started = False
self.log_path = None
self.lock_path = None
self.log_file = None
def open(self):
self.data_dir = self.cur_dir + "--" + str(self.part)
try:
os.makedirs(self.data_dir)
except OSError:
pass
self.log_path = os.path.join(self.data_dir, "rlog")
self.lock_path = self.log_path + ".lock"
open(self.lock_path, "wb").close()
self.log_file = open(self.log_path, "wb")
self.log_file.write(self.init_data)
def start(self):
self.part = 0
self.cur_dir = self.root + time.strftime("%Y-%m-%d--%H-%M-%S")
self.open()
self.started = True
return self.data_dir, self.part
def stop(self):
if not self.started:
return
self.log_file.close()
os.unlink(self.lock_path)
self.started = False
def rotate(self):
old_lock_path = self.lock_path
old_log_file = self.log_file
self.part += 1
self.open()
old_log_file.close()
os.unlink(old_lock_path)
return self.data_dir, self.part
def log_data(self, d):
if not self.started:
return
self.log_file.write(d)