]> rtime.felk.cvut.cz Git - frescor/fwp.git/blobdiff - fwp/mngr/fwp_mngr.c
Resource manager gained parameters for setting wifi configuration
[frescor/fwp.git] / fwp / mngr / fwp_mngr.c
index b8f01a5ea8aa9592765b2ed4a5e19eb4f230344b..75baa517771adfcdaa7405d9d1befecc63b6614d 100644 (file)
@@ -1,29 +1,71 @@
+/**************************************************************************/
+/* ---------------------------------------------------------------------- */
+/* Copyright (C) 2006 - 2008 FRESCOR consortium partners:                */
+/*                                                                       */
+/*   Universidad de Cantabria,              SPAIN                        */
+/*   University of York,                    UK                           */
+/*   Scuola Superiore Sant'Anna,            ITALY                        */
+/*   Kaiserslautern University,             GERMANY                      */
+/*   Univ. Politécnica  Valencia,           SPAIN                       */
+/*   Czech Technical University in Prague,  CZECH REPUBLIC               */
+/*   ENEA                                   SWEDEN                       */
+/*   Thales Communication S.A.              FRANCE                       */
+/*   Visual Tools S.A.                      SPAIN                        */
+/*   Rapita Systems Ltd                     UK                           */
+/*   Evidence                               ITALY                        */
+/*                                                                       */
+/*   See http://www.frescor.org for a link to partners' websites         */
+/*                                                                       */
+/*          FRESCOR project (FP6/2005/IST/5-034026) is funded            */
+/*       in part by the European Union Sixth Framework Programme         */
+/*       The European Union is not liable of any use that may be         */
+/*       made of this code.                                              */
+/*                                                                       */
+/*                                                                       */
+/*  This file is part of FWP (Frescor WLAN Protocol)                     */
+/*                                                                       */
+/* FWP is free software; you can redistribute it and/or modify it        */
+/* under terms of the GNU General Public License as published by the     */
+/* Free Software Foundation; either version 2, or (at your option) any   */
+/* later version.  FWP is distributed in the hope that it will be        */
+/* useful, but WITHOUT ANY WARRANTY; without even the implied warranty   */
+/* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   */
+/* General Public License for more details. You should have received a   */
+/* copy of the GNU General Public License along with FWP; see file       */
+/* COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,  */
+/* Cambridge, MA 02139, USA.                                             */
+/*                                                                       */
+/* As a special exception, including FWP header files in a file,         */
+/* instantiating FWP generics or templates, or linking other files       */
+/* with FWP objects to produce an executable application, does not       */
+/* by itself cause the resulting executable application to be covered    */
+/* by the GNU General Public License. This exception does not            */
+/* however invalidate any other reasons why the executable file might be  */
+/* covered by the GNU Public License.                                    */
+/**************************************************************************/
 #include <frm_generic.h>
 #include <forb.h>
 #include <error.h>
 #include <errno.h>
+#include <getopt.h>
 #include <fres_sa_scenario.h>
 #include <stdbool.h>
 #include <ul_log.h>
-#include <frsh_distributed.h>
-#include "res_dummy.h"
+#include <ul_logreg.h>
+#include <fwp_res.h>
 #include <stdio.h>
+#include "fwp_admctrl.h"
 
-struct dummy_data {
-       int some_data;
-};
-
-
-bool admission_test(struct fres_sa_scenario *scenario, void *priv)
+#if 0
+static
+int dummy_admission_test(struct fres_sa_scenario *scenario, void *priv, 
+                               bool *schedulable)
 {
-       bool schedulable;
-       struct dummy_data *data = priv;
        struct fres_sa_contract *c;
 
-       printf("Admission test:\n");
-       data->some_data++;
+       printf("Dummy admission test:\n");
 
-       fres_sa_scenario_for_each_contract(scenario, c) {
+       fres_sa_scenario_for_each_no_cancel_contract(scenario, c) {
                fres_block_basic *basic;
                char id[40];
                fres_contract_id_to_string(id, &c->contract->id, sizeof(id));
@@ -35,29 +77,78 @@ bool admission_test(struct fres_sa_scenario *scenario, void *priv)
                       fosa_rel_time_to_msec(basic->budget));
 
        }
-       schedulable = scenario->num_contracts <= 3;
+       *schedulable = scenario->num_contracts <= 3;
        printf("=> %s\n", schedulable?"schedulable":"not schedulable");
                
-       return schedulable;
+       return 0;
 }
+#endif
 
-struct dummy_data dummy_data;
+struct frm_fwp_priv priv = {
+       .rate_mbps = 1,
+       .erp_ofdm = false,
+       .short_preamble = false,
+};
 
 static const struct fres_res_manager frm = {
        .res_type = FRSH_RT_NETWORK,
        .res_id = FRSH_NETPF_FWP,
-       .admission_test = admission_test,
-       .priv = &dummy_data
+       //.admission_test = dummy_admission_test,
+       .name = "WLAN",
+       .admission_test = fwp_admctrl_utilization,
+       .priv = &priv,
+};
+
+static struct option long_opts[] = {
+    { "loglevel",         required_argument, 0, 'l' },
+    { "bitrate",         required_argument, 0, 'b' },
+    { "ofdm",                    no_argument,       0, 'o' },
+    { "short-preamble",  no_argument,       0, 's' },
+    { 0, 0, 0, 0}
 };
 
+static void
+usage(void)
+{
+       printf("usage: fwpmngr [ options ]\n");
+       printf("  -l, --loglevel <number>|<domain>=<number>,...\n");
+       printf("  -b, --bitrate <mbits/s>\n");
+       printf("  -o, --ofdm\n");
+       printf("  -s, --short-preamble\n");
+}
+
 int main(int argc, char *argv[])
 {
        forb_orb orb;
        int ret;
+       forb_init_attr_t attr = { .orb_id = "org.frescor.frm.fwp" };
+       int  opt;
 
-       orb = forb_init(&argc, &argv, "frm_fwp");
-       if (!orb) error(1, errno, "forb_init");
+       while ((opt = getopt_long(argc, argv, "b:l:os", &long_opts[0], NULL)) != EOF) {
+               switch (opt) {
+                       case 'l':
+                               ul_log_domain_arg2levels(optarg);
+                               break;
+                       case 'b':
+                               priv.rate_mbps = atol(optarg);
+                               break;
+                       case 's':
+                               priv.short_preamble = true;
+                               break;
+                       case 'o':
+                               priv.erp_ofdm = true;
+                               break;
+                       case 'h':
+                       /*default:*/
+                               usage();
+                               exit(opt == 'h' ? 0 : 1);
+               }
+       }
 
+       orb = forb_init(&argc, &argv, &attr);
+       if (!orb) error(1, errno, "forb_init");
+       
+       fres_block_register_fwp();
        ret = frm_register_and_run(orb, &frm);
 
        if (ret != 0) {