From f541e586ebb490fbb1c0695cf5b12920edc81653 Mon Sep 17 00:00:00 2001 From: Joshua Lafleur <77811114+JoshLafleur@users.noreply.github.com> Date: Sat, 23 Nov 2024 22:40:06 -0500 Subject: [PATCH] =?UTF-8?q?Revert=20"Made=20Nodes=20platform=20dependant?= =?UTF-8?q?=20and=20not=20variant=20dependant.=20Variants=20to=20=E2=80=A6?= =?UTF-8?q?"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SConstruct | 5 +- components/bms_worker/SConscript | 240 +++++++++++------------ components/bms_worker/src/CAN/CANIO-tx.c | 1 + components/bms_worker/variants.yaml | 42 ++++ site_scons/platforms.yaml | 30 +-- site_scons/site_tools/variants.py | 2 +- 6 files changed, 180 insertions(+), 140 deletions(-) diff --git a/SConstruct b/SConstruct index 75d2ce78..367644d3 100644 --- a/SConstruct +++ b/SConstruct @@ -61,8 +61,9 @@ if platform: if targets: # TODO: Handle pass - for part in platforms[platform]["ecu"]: - target_dict[part] = platforms[platform]["ecu"][part] + for parts in platforms[platform]["ecu"]: + for id in parts: + target_dict[id] = parts[id] else: print( f"Platform string '{platform}' does not match any platform in 'site_scons/platforms.yaml'" diff --git a/components/bms_worker/SConscript b/components/bms_worker/SConscript index e2271e83..cf01379e 100644 --- a/components/bms_worker/SConscript +++ b/components/bms_worker/SConscript @@ -295,134 +295,126 @@ binaries_crced = [] asms = [] for config_id, config in configs.items(): - nodes = [] - try: - nodes = list(range(0, CONFIG_IDS[config_id]["nodes"])) - except Exception as e: - print("No nodeId specified, assuming Network Node 0.") - nodes = [ 0 ] - - for nodeId in nodes: - variant_dir = BUILDS_DIR.Dir( - "_".join(config["description"].split(" ")) + f"_{config_id}/Node{nodeId}" + variant_dir = BUILDS_DIR.Dir( + "_".join(config["description"].split(" ")) + f"_{config_id}" + ) + generated_dir = variant_dir.Dir("generated") + makedirs(generated_dir.abspath, exist_ok=True) + + generated_sources = NETWORK_ENV.GenerateNodes({ f"bmsw_{config['options']['canIdOffset']}": generated_dir, }) + + if "features" in config: + features = {"features": env.GenerateFeatures(feature_definitions, config["features"]) } + generated_features = render_generated_files(features, renderers["featureDefs"], generated_dir) + else: + generated_features = None + + if "options" in config: + generated_defs = render_generated_files(config["options"], renderers["buildDefs"], generated_dir) + else: + generated_defs = None + + ## actually compile stuff + include_dirs = paths + [generated_dir] + env["CPPPATH"] = include_dirs + + uds_env = env.Clone() + uds_env.Append( + CCFLAGS=[ + "-Wno-missing-prototypes", + "-Wno-unused-parameter", + "-DBYTE_ORDER=_BYTE_ORDER", + "-DLITTLE_ENDIAN=_LITTLE_ENDIAN", + "-Wno-inline", + "-Wno-conversion", + ] + ) + + rtos_env.Append( + CPPPATH=paths, + CCFLAGS=common_flags + c_flags + free_rtos_flags, + ) + + objs = [] # store objects here + + # compile platform files + objs.extend( + compile_objects( + env, + platform_src_files, + variant_dir=variant_dir, + target_dir="embedded/", + CPPPATH=paths + [generated_dir], ) - generated_dir = variant_dir.Dir("generated") - makedirs(generated_dir.abspath, exist_ok=True) - - generated_sources = NETWORK_ENV.GenerateNodes({ f"bmsw_{nodeId}": generated_dir, }) - - if "features" in config: - features = {"features": env.GenerateFeatures(feature_definitions, config["features"]) } - generated_features = render_generated_files(features, renderers["featureDefs"], generated_dir) - else: - generated_features = None - - if "options" in config and config["options"] is not None: - generated_defs = render_generated_files(config["options"], renderers["buildDefs"], generated_dir) - else: - generated_defs = None - - ## actually compile stuff - include_dirs = paths + [generated_dir] - env["CPPPATH"] = include_dirs - - uds_env = env.Clone() - uds_env.Append( - CCFLAGS=[ - "-Wno-missing-prototypes", - "-Wno-unused-parameter", - "-DBYTE_ORDER=_BYTE_ORDER", - "-DLITTLE_ENDIAN=_LITTLE_ENDIAN", - "-Wno-inline", - "-Wno-conversion", - ] - ) - - rtos_env.Append( - CPPPATH=paths, - CCFLAGS=common_flags + c_flags + free_rtos_flags, + ) + + # compile rtos source files + objs.extend( + compile_objects( + rtos_env, + rtos_src_files, + variant_dir=variant_dir, + target_dir="FreeRTOS/", + CPPPATH=paths + [generated_dir], ) - - objs = [] # store objects here - - # compile platform files - objs.extend( - compile_objects( - env, - platform_src_files, - variant_dir=variant_dir, - target_dir="embedded/", - CPPPATH=paths + [generated_dir], - ) + ) + + gen_srcs = [] + for generated_source in generated_sources: + gen_srcs += [generated_dir.File(generated_source)] + + # compile project source files + objs.extend( + compile_objects( + env, + src_files, + variant_dir=variant_dir, + CPPPATH=paths + [generated_dir], ) - - # compile rtos source files - objs.extend( - compile_objects( - rtos_env, - rtos_src_files, - variant_dir=variant_dir, - target_dir="FreeRTOS/", - CPPPATH=paths + [generated_dir], - ) + ) + + # compile UDS source files + objs.extend(compile_objects(uds_env, uds_srcs, variant_dir=variant_dir, target_dir="uds/")) + + objs.extend( + compile_objects( + env, + gen_srcs, + variant_dir=variant_dir, + target_dir=variant_dir.Dir("generated/obj"), + CPPPATH=paths + [generated_dir], ) - - gen_srcs = [] - for generated_source in generated_sources: - gen_srcs += [generated_dir.File(generated_source)] - - # compile project source files - objs.extend( - compile_objects( - env, - src_files, - variant_dir=variant_dir, - CPPPATH=paths + [generated_dir], - ) - ) - - # compile UDS source files - objs.extend(compile_objects(uds_env, uds_srcs, variant_dir=variant_dir, target_dir="uds/")) - - objs.extend( - compile_objects( - env, - gen_srcs, - variant_dir=variant_dir, - target_dir=variant_dir.Dir("generated/obj"), - CPPPATH=paths + [generated_dir], - ) - ) - - - # link all the compiled objects into an elf - elf, map = env.Program( - variant_dir.File(ARTIFACT_NAME + ".elf"), - objs, - MAPFILE=variant_dir.File(ARTIFACT_NAME + ".map"), - ) - elfs.append(elf) - Depends(elf, env["LINKSCRIPT"]) - Clean(elf, variant_dir) - - # generate a binary for flashing - binary = env.Bin(source=elf) - binaries.append(binary) - - crc_env = PLATFORM_ENV.Clone(tools=["hextools"]) - - # generate the CRCd binary - binaries_crced.append( - crc_env.InjectMpeg2CRC(source=binary, start_addr=APP_START_ADDR) - ) - - # Generate compile_commands.json - compile_db = env.CompilationDatabase(variant_dir.File("compile_commands.json")) - Depends(compile_db, objs) - # generate it by default - Default(compile_db) - # add an alias to _only_ generate the compilation database - env.Alias("compiledb", compile_db) + ) + + + # link all the compiled objects into an elf + elf, map = env.Program( + variant_dir.File(ARTIFACT_NAME + ".elf"), + objs, + MAPFILE=variant_dir.File(ARTIFACT_NAME + ".map"), + ) + elfs.append(elf) + Depends(elf, env["LINKSCRIPT"]) + Clean(elf, variant_dir) + + # generate a binary for flashing + binary = env.Bin(source=elf) + binaries.append(binary) + + crc_env = PLATFORM_ENV.Clone(tools=["hextools"]) + + # generate the CRCd binary + binaries_crced.append( + crc_env.InjectMpeg2CRC(source=binary, start_addr=APP_START_ADDR) + ) + + # Generate compile_commands.json + compile_db = env.CompilationDatabase(variant_dir.File("compile_commands.json")) + Depends(compile_db, objs) + # generate it by default + Default(compile_db) + # add an alias to _only_ generate the compilation database + env.Alias("compiledb", compile_db) Default(binaries_crced) diff --git a/components/bms_worker/src/CAN/CANIO-tx.c b/components/bms_worker/src/CAN/CANIO-tx.c index a22daf07..dd565310 100644 --- a/components/bms_worker/src/CAN/CANIO-tx.c +++ b/components/bms_worker/src/CAN/CANIO-tx.c @@ -20,6 +20,7 @@ #include "string.h" // imports for data access +#include "BuildDefines_generated.h" #include "BatteryMonitoring.h" #include "Cooling.h" #include "Environment.h" diff --git a/components/bms_worker/variants.yaml b/components/bms_worker/variants.yaml index ad5c4312..113ef6c3 100644 --- a/components/bms_worker/variants.yaml +++ b/components/bms_worker/variants.yaml @@ -1,6 +1,48 @@ configs: 0: description: BMS Worker + options: + canIdOffset: 0 + features: + feature_bmsw_faults: false + feature_uds: true + + 1: + description: BMS Worker + options: + canIdOffset: 1 + features: + feature_bmsw_faults: false + feature_uds: true + + 2: + description: BMS Worker + options: + canIdOffset: 2 + features: + feature_bmsw_faults: false + feature_uds: true + + 3: + description: BMS Worker + options: + canIdOffset: 3 + features: + feature_bmsw_faults: false + feature_uds: true + + 4: + description: BMS Worker + options: + canIdOffset: 4 + features: + feature_bmsw_faults: false + feature_uds: true + + 5: + description: BMS Worker + options: + canIdOffset: 5 features: feature_bmsw_faults: false feature_uds: true diff --git a/site_scons/platforms.yaml b/site_scons/platforms.yaml index 9f12fee7..6aad8b3c 100644 --- a/site_scons/platforms.yaml +++ b/site_scons/platforms.yaml @@ -1,15 +1,19 @@ cfr24: ecu: - bmsw: - 0: - nodes: 6 - bmsb: - 0: - bl: - 0: # BMS Worker - 1: # BMS Worker - 2: # BMS Worker - 3: # BMS Worker - 4: # BMS Worker - 5: # BMS Worker - 10: # BMS Boss + - bmsw: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - bmsb: + - 0 + - bl: + - 0 # BMS Worker + - 1 # BMS Worker + - 2 # BMS Worker + - 3 # BMS Worker + - 4 # BMS Worker + - 5 # BMS Worker + - 10 # BMS Boss diff --git a/site_scons/site_tools/variants.py b/site_scons/site_tools/variants.py index d19bb214..bee77b9e 100644 --- a/site_scons/site_tools/variants.py +++ b/site_scons/site_tools/variants.py @@ -80,7 +80,7 @@ def GenerateVariants(env, variants_file: FS.File, config_ids: List[int] = list() if config_ids: return dict(filter(lambda item: item[0] in config_ids, variants["configs"].items())) - return variants["configs"] + return variants["configs"] def generate(env):