Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions modules/superbuild/options.nix
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,24 @@ in
default = [ ];
};

mainRobot = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = "Name of the MainRobot";
};

enabled = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = "Name of the Enabled controller";
};

timeStep = lib.mkOption {
type = lib.types.nullOr lib.types.number;
default = null;
description = "TimeStep";
};

runtime = lib.mkOption {
type = lib.types.submodule { options = runtimeOptions; };
default = { };
Expand Down
16 changes: 16 additions & 0 deletions modules/superbuild/resolver.nix
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,17 @@ let

mkRuntime = mkComponent;

# 1. Added defaults to mkPreset
mkPreset = {
mainRobot = null;
enabled = null;
timeStep = null;
runtime = mkRuntime;
devel = mkComponent;
};

preferString = previous: next: if next != null && next != "" then next else previous;
preferNumber = previous: next: if next != null then next else previous;

mergeComponent = left: right: {
apps = left.apps ++ right.apps;
Expand All @@ -35,6 +40,9 @@ let
mergeRuntime = mergeComponent;

mergePreset = left: right: {
mainRobot = preferString (left.mainRobot or null) (right.mainRobot or null);
enabled = preferString (left.enabled or null) (right.enabled or null);
timeStep = preferNumber (left.timeStep or null) (right.timeStep or null);
runtime = mergeRuntime left.runtime right.runtime;
devel = mergeComponent left.devel right.devel;
};
Expand All @@ -56,7 +64,11 @@ let

project = cfg.project;

# 2. Ensured overlay includes configuration items from project top-level
projectOverlay = {
mainRobot = project.mainRobot or null;
enabled = project.enabled or null;
timeStep = project.timeStep or null;
runtime = project.runtime;
devel = project.devel;
};
Expand Down Expand Up @@ -90,7 +102,11 @@ in
mkPreset
selectedConfiguration
;
# 3. Made mainRobot, enabled, and timeStep directly available at the root of resolved
resolved = {
mainRobot = base.mainRobot;
enabled = base.enabled;
timeStep = base.timeStep;
inherit base release devel;
};
}
7 changes: 7 additions & 0 deletions modules/superbuild/superbuild.nix
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ let
if isDevel then resolver.resolved.devel.runtime else resolver.resolved.release.runtime;
develOverlay = resolver.resolved.devel.devel;

mainRobot = resolver.resolved.mainRobot;
enabled = resolver.resolved.enabled;
timeStep = resolver.resolved.timeStep;

localPath = "$PWD/${relativeLocalPath}";
localInstallPath = "${localPath}/install";

Expand Down Expand Up @@ -167,6 +171,9 @@ in

cat <<EOF_CONF > $PROJECT_DIR/mc_rtc.yaml
---
${lib.optionalString (mainRobot != null && mainRobot != "") "MainRobot: \"${mainRobot}\""}
${lib.optionalString (enabled != null && enabled != "") "Enabled: \"${enabled}\""}
${lib.optionalString (timeStep != null) "Timestep: ${toString timeStep}"}
ControllerModulePaths: [${mkModulePaths "mc_controller" shellControllers}]
RobotModulePaths: [${mkModulePaths "mc_robots" shellRobots}]
ObserverModulePaths: [${mkModulePaths "mc_observers" shellObservers}]
Expand Down
Loading