18#include <unordered_set>
44 SignalRoute(std::string input, std::string output,
double g = 1.0,
double o = 0.0,
67 [[nodiscard]] std::vector<std::string>
Validate()
const {
68 std::vector<std::string> errors;
70 errors.push_back(
"SignalRoute: input_path is empty");
73 errors.push_back(
"SignalRoute: output_path is empty");
76 errors.push_back(
"SignalRoute: delay cannot be negative");
113 void AddRoute(
const std::string &input_path,
const std::string &output_path,
115 routes_.emplace_back(input_path, output_path, gain);
130 if (!errors.empty()) {
131 std::string msg =
"Signal routing validation failed:\n";
132 for (
const auto &err : errors) {
133 msg +=
" - " + err +
"\n";
139 for (
const auto &route : routes_) {
140 bp.
WireWithGain(route.input_path, route.output_path, route.gain);
151 std::vector<std::string> errors;
153 for (
const auto &route : routes_) {
155 errors.push_back(
"Output not found: '" + route.output_path +
"'");
157 if (!bp.
HasInput(route.input_path)) {
158 errors.push_back(
"Input not found: '" + route.input_path +
"'");
178 std::unordered_set<std::string> wired;
179 for (
const auto &route : routes_) {
180 wired.insert(route.input_path);
184 std::vector<std::string> unwired;
185 for (
const auto &input : all_inputs) {
186 if (wired.find(input) == wired.end()) {
187 unwired.push_back(input);
197 [[nodiscard]]
const std::vector<SignalRoute> &
GetRoutes()
const {
return routes_; }
207 [[nodiscard]] std::size_t
Size()
const {
return routes_.size(); }
210 std::vector<SignalRoute> routes_;
Component-facing facade for signal registration and resolution.
Consolidated error handling for Icarus.
Component-facing facade for signal registration and resolution.
Definition Backplane.hpp:32
std::vector< std::string > GetDeclaredInputs() const
Get all declared input paths.
Definition Backplane.hpp:427
void WireWithGain(const std::string &input_path, const std::string &output_path, double gain=1.0)
Wire an input to a source with a gain factor.
Definition Backplane.hpp:389
bool HasOutput(const std::string &full_name) const
Check if an output signal exists.
Definition Backplane.hpp:411
bool HasInput(const std::string &full_name) const
Check if an input port exists.
Definition Backplane.hpp:418
Centralized signal routing configuration.
Definition SignalRouter.hpp:103
std::vector< std::string > ValidateRoutes(const Backplane< Scalar > &bp) const
Validate routes without applying.
Definition SignalRouter.hpp:150
const std::vector< SignalRoute > & GetRoutes() const
Get all routes for inspection.
Definition SignalRouter.hpp:197
std::size_t Size() const
Get number of routes.
Definition SignalRouter.hpp:207
void AddRoute(const std::string &input_path, const std::string &output_path, double gain=1.0)
Add a route with parameters.
Definition SignalRouter.hpp:113
void AddRoute(const SignalRoute &route)
Add a route.
Definition SignalRouter.hpp:108
std::vector< std::string > GetUnwiredInputs(const Backplane< Scalar > &bp) const
Get unwired inputs after routing.
Definition SignalRouter.hpp:173
void ApplyRoutes(Backplane< Scalar > &bp)
Apply all routes to the backplane.
Definition SignalRouter.hpp:127
void Clear()
Clear all routes.
Definition SignalRouter.hpp:202
Definition SignalRouter.hpp:22
Definition AggregationTypes.hpp:13
WiringError RoutingError
Definition Error.hpp:431
A single signal route with optional transformations.
Definition SignalRouter.hpp:31
std::string input_path
Full path: Entity.Component.signal (destination).
Definition SignalRouter.hpp:32
double gain
Scale factor applied on read.
Definition SignalRouter.hpp:36
double EffectiveGain(int32_t current_phase) const
Definition SignalRouter.hpp:51
double offset
Bias added after gain.
Definition SignalRouter.hpp:37
std::vector< std::string > Validate() const
Validate route paths.
Definition SignalRouter.hpp:67
bool IsActiveInPhase(int32_t current_phase) const
Check if route is active in given phase.
Definition SignalRouter.hpp:62
std::set< int32_t > active_phases
Phase gating: if non-empty, route only active when current phase is in this set.
Definition SignalRouter.hpp:41
std::string output_path
Full path: Entity.Component.signal (source).
Definition SignalRouter.hpp:33
double delay
Transport delay in seconds.
Definition SignalRouter.hpp:38
SignalRoute(std::string input, std::string output, double g=1.0, double o=0.0, double d=0.0)
Definition SignalRouter.hpp:44