openpilot v0.9.6 release
date: 2024-02-21T23:02:42 master commit: 0b4d08fab8e35a264bc7383e878538f8083c33e5
This commit is contained in:
33
rednose/helpers/__init__.py
Normal file
33
rednose/helpers/__init__.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import os
|
||||
import platform
|
||||
from cffi import FFI
|
||||
|
||||
TEMPLATE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'templates'))
|
||||
|
||||
|
||||
def write_code(folder, name, code, header):
|
||||
if not os.path.exists(folder):
|
||||
os.mkdir(folder)
|
||||
|
||||
open(os.path.join(folder, f"{name}.cpp"), 'w', encoding='utf-8').write(code)
|
||||
open(os.path.join(folder, f"{name}.h"), 'w', encoding='utf-8').write(header)
|
||||
|
||||
|
||||
def load_code(folder, name):
|
||||
shared_ext = "dylib" if platform.system() == "Darwin" else "so"
|
||||
shared_fn = os.path.join(folder, f"lib{name}.{shared_ext}")
|
||||
header_fn = os.path.join(folder, f"{name}.h")
|
||||
|
||||
with open(header_fn, encoding='utf-8') as f:
|
||||
header = f.read()
|
||||
|
||||
# is the only thing that can be parsed by cffi
|
||||
header = "\n".join([line for line in header.split("\n") if line.startswith("void ")])
|
||||
|
||||
ffi = FFI()
|
||||
ffi.cdef(header)
|
||||
return (ffi, ffi.dlopen(shared_fn))
|
||||
|
||||
|
||||
class KalmanError(Exception):
|
||||
pass
|
||||
Reference in New Issue
Block a user