]> rtime.felk.cvut.cz Git - frescor/fwp.git/blobdiff - fwp/mngr/fwp_admctrl.c
Bitrate increased to 22 Mbps, added utilization export for GUI
[frescor/fwp.git] / fwp / mngr / fwp_admctrl.c
index 39c5f53a92557183b0c17f61d65149335118d855..575a8b4e2dd76bae3ba778e176a547532cb47d94 100644 (file)
@@ -1,3 +1,48 @@
+/**************************************************************************/
+/* ---------------------------------------------------------------------- */
+/* 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 <fres_sa_scenario.h>
 #include <fwp.h>
 #include "fwp_idl.h"
 #define CTS_FRAME_SIZE 14
 #define ACK_FRAME_SIZE 14
 
-#define BITRATE_BPS (1000*1000)
 #define ASLOTTIME_USEC 20      /* 802.11g-2003 p. 46 */
 #define ASIFSTIME_USEC 10
 #define ADIFSTIME_USEC (ASIFSTIME_USEC + 2*ASLOTTIME_USEC)
 #define AAIFSTIME_USEC(n) (ASIFSTIME_USEC + (n)*ASLOTTIME_USEC)
 
-#define TXTIME_USEC(bytes) ((int64_t)(bytes) * 8 * SEC_TO_USEC / BITRATE_BPS)
-
-
 /* Default values from 802.11e */
 const int aifsn[FWP_AC_NUM] = { 2, 2, 3, 7 };
 const int cwmin[FWP_AC_NUM] = { 3, 7, 15, 15 };
@@ -104,7 +145,7 @@ int fwp_admctrl_utilization(struct fres_sa_scenario *scenario, void *priv,
 {
        int utilization = 0;
 
-       const int rate = 1*1000*1000;
+       const int rate = 22*1000*1000;
        const bool erp_ofdm = false;
        const bool short_preamble = false;
        struct fres_sa_contract *c, *c_new = NULL;
@@ -123,13 +164,13 @@ int fwp_admctrl_utilization(struct fres_sa_scenario *scenario, void *priv,
                fres_contract_id_to_string(id, &c->contract->id, sizeof(id));
                basic = fres_contract_get_basic(c->contract);
 
-               printf("  processing: id=%s, period=%ld ms, budget=%ld ms\n",
+               frsh_network_budget_to_bytes(FRSH_NETPF_FWP,&basic->budget,&bytes);
+               printf("  processing: id=%s, period=%ld ms, budget=%lu bytes\n",
                       id,
                       fosa_rel_time_to_msec(basic->period),
-                      fosa_rel_time_to_msec(basic->budget));
+                      (long unsigned int)bytes);
 
                /* Calculate protocol overhead */
-               frsh_network_budget_to_bytes(FRSH_NETPF_FWP,&basic->budget,&bytes);
                fragments = (bytes + MTU - 1) / MTU;
 
                if (fragments == 0)
@@ -157,7 +198,7 @@ int fwp_admctrl_utilization(struct fres_sa_scenario *scenario, void *priv,
 
                basic = fres_contract_get_basic(c->contract);
                period_usec = fosa_rel_time_to_msec(basic->period)*1000;
-               if (c->status == FRES_SA_CONTRACT_NEW) {
+               if (c->contract == c->new) {
                        c_new = c;
                        if (period_usec == 0) {
                                goto not_schedulable;
@@ -172,7 +213,9 @@ int fwp_admctrl_utilization(struct fres_sa_scenario *scenario, void *priv,
        }       
        if (utilization >= 10000 * 96/100) {
                goto not_schedulable;
-       } 
+       }
+
+       scenario->utilization = utilization/100; /* For GUI */
        
        basic = fres_contract_get_basic(c_new->contract);
        /*int d = c->deadline_usec;*/