From 99a4c2cb23a85ce42b02c960578e6f431a29b35c Mon Sep 17 00:00:00 2001 From: David Wehr <dawehr@iastate.edu> Date: Sun, 5 Feb 2017 23:51:48 -0600 Subject: [PATCH] Fixed bug with populating the exec_input_vals array. --- quad/computation_graph/src/computation_graph.c | 10 +++++++--- quad/computation_graph/src/main.c | 8 ++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/quad/computation_graph/src/computation_graph.c b/quad/computation_graph/src/computation_graph.c index ac02dc324..ad122600a 100644 --- a/quad/computation_graph/src/computation_graph.c +++ b/quad/computation_graph/src/computation_graph.c @@ -103,10 +103,14 @@ void graph_compute_node_rec(struct computation_graph *graph, int node_id, int de if (graph->nodes[src_cntl_id].processed_state == UNPROCESSED) { graph_compute_node_rec(graph, src_cntl_id, depth + 1); } - int src_output_id = node->input_srcs[input_id].controller_output; - exec_input_vals[input_id] = graph->nodes[src_cntl_id].output_values[src_output_id]; } } + // Populate the exec_input_vals array for computation + for (input_id = 0; input_id < node->type->n_inputs; input_id++) { + int src_cntl_id = node->input_srcs[input_id].controller_id; + int src_output_id = node->input_srcs[input_id].controller_output; + exec_input_vals[input_id] = graph->nodes[src_cntl_id].output_values[src_output_id]; + } (*node->type->execute)(node->state, node->param_values, exec_input_vals, node->output_values); node->processed_state = PROCESSED; } @@ -140,7 +144,7 @@ int export_dot(const struct computation_graph* graph, FILE* of) { fprintf(of, "|<f%d> [%s=%.3f]\n", j+1+node->type->n_inputs, node->type->param_names[j],node->param_values[j]); } fprintf(of, "\"]\n"); // Close label bracket - // + // Make connections from for (j = 0; j < node->type->n_inputs; j++) { struct graph_node* src_node = &graph->nodes[node->input_srcs[j].controller_id]; int output_id = node->input_srcs[j].controller_output; diff --git a/quad/computation_graph/src/main.c b/quad/computation_graph/src/main.c index 8be7d30ec..025781d9a 100644 --- a/quad/computation_graph/src/main.c +++ b/quad/computation_graph/src/main.c @@ -8,9 +8,9 @@ int main() { struct computation_graph *graph = create_graph(); - int const1 = graph_add_node_const(graph, "Const 1"); + int const1 = graph_add_node_const(graph, "Const 2"); graph_set_param_val(graph, const1, CONST_SET, 2); - int const2 = graph_add_node_const(graph, "Const 2"); + int const2 = graph_add_node_const(graph, "Const 1"); graph_set_param_val(graph, const2, CONST_SET, 3); int add1_id = graph_add_node_add(graph, "Add"); @@ -22,8 +22,8 @@ int main() { graph_set_source(graph, gain1_id, GAIN_INPUT, add1_id, ADD_SUM); int mult1_id = graph_add_node_mult(graph, "Mult"); - graph_set_source(graph, mult1_id, MULT_MULTIPLICAND1, gain1_id, GAIN_RESULT); - graph_set_source(graph, mult1_id, MULT_MULTIPLICAND2, const1, CONST_VAL); + graph_set_source(graph, mult1_id, MULT_MULTIPLICAND2, gain1_id, GAIN_RESULT); + graph_set_source(graph, mult1_id, MULT_MULTIPLICAND1, const1, CONST_VAL); graph_compute_node(graph, mult1_id); -- GitLab