Files
SDK_SG200x_V2/build/scripts/gen_sensor_config.py
forum_service 0ca73f9917 build: weekly-rls-2024-01-05
Change-Id: Idaacdb06e9b7bd435f1928d62d8b1204747380b6
2024-05-31 14:35:32 +08:00

164 lines
4.5 KiB
Python
Executable File

#!/usr/bin/env python3
# PYTHON_ARGCOMPLETE_OK
import os
import json
import build_helper
kconfig_tmpl = """
#
# Automatically generated by gen_sensor_config.py; DO NOT EDIT.
#
menu "Sensor settings"
menu "Sensor support list"
{0}
endmenu
menu "Sensor tuning param config"
{1}
endmenu
endmenu
"""
kconfig_sensor_tmpl = """
config SENSOR_{0}
bool "Choose sensor {1}"
default n
help
"y" Add sensor {1} to libsns_full.so.
"""
kconfig_param_config_menu_tmpl = """
if {0}
menu "{1}"
choice
prompt "sensor tuning param"
{2}
endchoice
endmenu
endif
"""
kconfig_param_config_tmpl = """
config SENSOR_TUNING_PARAM_{0}
bool "{1}"
"""
kconfig_param_config_str_tmpl = """
config SENSOR_TUNING_PARAM
string{0}"""
kconfig_param_config_str_item_tmpl = """
default "{1}" if SENSOR_TUNING_PARAM_{0}"""
kconfig_param_config_default_tmpl = """
menu "src"
choice
prompt "sensor tuning param"
config SENSOR_TUNING_PARAM_cv183x_src_sony_imx307
bool "sony_imx307"
endchoice
endmenu
config SENSOR_TUNING_PARAM
string
default "sony_imx307" if SENSOR_TUNING_PARAM_cv183x_src_sony_imx307
"""
def gen_sensor_support_list():
with open(build_helper.SENSOR_LIST_PATH, "r", encoding="utf-8") as fp:
sensor_list_json = json.load(fp)
sensor_list = sensor_list_json['sensor_list']
kconfig_sensor_list = ""
for sensor in sensor_list:
sensor_name_u = sensor.upper()
sensor_name_l = sensor.lower()
kconfig_sensor_list = (kconfig_sensor_list
+ kconfig_sensor_tmpl.format(sensor_name_u, sensor_name_l))
return kconfig_sensor_list
def gen_sensor_tuning_param_list():
menu_list = ""
param_str = ""
isp_tuning_path = os.path.normpath(os.path.join(build_helper.BUILD_REPO_DIR, "../isp_tuning"))
if not os.path.exists(isp_tuning_path):
print("isp_tuning_path: " + isp_tuning_path + " not exists....")
return kconfig_param_config_default_tmpl
chip_list = os.listdir(isp_tuning_path)
for arch in chip_list:
if os.path.isdir(os.path.join(isp_tuning_path, arch)) and arch != ".git":
temp_path = os.path.join(isp_tuning_path, arch)
customers_list = os.listdir(temp_path)
for customers in customers_list:
temp_path = os.path.join(isp_tuning_path, arch)
if os.path.isdir(os.path.join(temp_path, customers)):
param_config_list = ""
temp_path = os.path.join(temp_path, customers)
param_list = os.listdir(temp_path)
for param in param_list:
if os.path.isdir(os.path.join(temp_path, param)):
temp_str = kconfig_param_config_tmpl.format(
arch + "_" + customers + "_" + param,
param
)
param_config_list = param_config_list + temp_str
temp_str = kconfig_param_config_str_item_tmpl.format(
arch + "_" + customers + "_" + param,
param
)
param_str = param_str + temp_str
chips = build_helper.get_chip_list()
temp_chip_list = []
for chip_arch, xlist in chips.items():
if chip_arch.upper() == arch.upper():
for x in xlist:
temp_chip_list.append("CHIP_" + x)
if len(temp_chip_list) == 0:
print("Error: chip list is mismatch between isp_tuning and build/boards, pls check!!!")
return kconfig_param_config_default_tmpl
temp_str = kconfig_param_config_menu_tmpl.format(
" || ".join(temp_chip_list),
customers,
param_config_list
)
menu_list = menu_list + temp_str
param_str = kconfig_param_config_str_tmpl.format(param_str)
return (menu_list + param_str)
def main():
kconfig_sensor_list = gen_sensor_support_list()
kconfig_param_list = gen_sensor_tuning_param_list()
kconfig = kconfig_tmpl.format(
kconfig_sensor_list,
kconfig_param_list
)
with open(build_helper.SENSOR_KCONFIG_PATH, "w") as fp:
fp.write(kconfig)
if __name__ == "__main__":
main()