1 #include <frm_generic.h>
5 #include <fres_sa_scenario.h>
9 #include <frsh_distributed.h>
10 #include "functions.h"
11 #include <cluster_tree.h>
14 TOPOLOGY_PARAMS topology;
17 struct cluster_tree configuration = {
31 int admission_test(struct fres_sa_scenario *scenario, void *priv, bool *schedulable)
33 struct cluster_tree *configuration = priv;
34 TOPOLOGY_PARAMS *topology = &configuration->topology;
35 struct fres_sa_contract *c;
36 APPLICATION_PARAMS application_params;
38 OUTPUT_PARAMS output_params;
40 application_params.ack_enable = FALSE;
41 application_params.mpdu = 120;
42 application_params.number_of_alfas = scenario->num_contracts;
44 application_params.alfa_data =
45 (ALFA *)malloc((application_params.number_of_alfas)*sizeof(ALFA));
46 if (application_params.alfa_data == NULL) return -1;
49 fres_sa_scenario_for_each_contract(scenario, c) {
50 fres_block_cluster_tree_traffic *traffic;
51 ALFA *alfa = &application_params.alfa_data[i++];
52 traffic = fres_contract_get_block(c->contract,
53 FRES_BLOCK_CLUSTER_TREE_TRAFFIC);
57 output_params.buffer_requirements =
58 (int *) malloc((topology->height+topology->h_sink+2)*sizeof(int));
59 if (output_params.buffer_requirements == NULL)
62 output_params.number_of_time_slots =
63 (int *) malloc((topology->height+topology->h_sink)*sizeof(int));
64 if(output_params.number_of_time_slots == NULL)
67 /* Call the real admission test */
68 ret = ct_wsn(*topology, application_params, &output_params);
72 printf("error-code: %d\n", output_params.error_params.error_code);
74 /* TODO: Compare deadlines with the result */
78 free((void *)output_params.number_of_time_slots);
79 free((void *)output_params.buffer_requirements);
80 free((void *)application_params.alfa_data);
85 static const struct fres_res_manager frm = {
86 .res_type = FRSH_RT_NETWORK,
87 .res_id = FRSH_NETPF_CLUSTER_TREE,
88 .admission_test = admission_test,
89 .priv = &configuration,
93 int main(int argc, char *argv[])
98 orb = forb_init(&argc, &argv, "frm_cluster_tree");
99 if (!orb) error(1, errno, "forb_init");
101 fres_block_register_cluster_tree();
103 ret = frm_register_and_run(orb, &frm);
106 error(1, errno, "frm_generic_run failed");