+/**************************************************************************/
+/* ---------------------------------------------------------------------- */
+/* 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 <ul_log.h>
+#include <ul_logreg.h>
#include <fra_generic.h>
#include <fwp.h>
//#include <fwp_fna.h>
#include "fwp_res.h"
#include "fwp_idl.h"
#include <stdio.h>
+#include <arpa/inet.h>
UL_LOG_CUST(ulogd_fra_fwp);
ul_log_domain_t ulogd_fra_fwp = {UL_LOGL_MSG, "fra_fwp"};
+UL_LOGREG_SINGLE_DOMAIN_INIT_FUNCTION(fra_fwp_logreg_domains, ulogd_fra_fwp);
static int create_vres(fres_vres_t *vres, void *priv)
{
char id[40];
fres_block_basic *basic;
fres_block_fwp_sched *fwp_sched;
+ fres_block_fwp *fwp;
fwp_vres_params_t vparams;
- fwp_vres_d_t fwp_vresd;
+ fwp_vres_d_t fwp_vresd = {0};
int rv;
+ size_t bytes;
+ char src[21] = "";
/* Prepare vres parameters */
basic = fres_contract_get_basic(vres->new);
fwp_sched = fres_contract_get_block(vres->new, FRES_BLOCK_FWP_SCHED);
+ if (!fwp_sched)
+ return FRES_ERR_NEEDS_MORE_DATA_IN_CONTRACT;
+
+ fwp = fres_contract_get_block(vres->new, FRES_BLOCK_FWP);
- //fwp_fna_network_budget_to_bytes(FRSH_NETPF_FWP, &basic->budget, &vparams.budget);
- vparams.budget = basic->budget.tv_nsec;
+ frsh_network_budget_to_bytes(FRSH_NETPF_FWP, &basic->budget, &bytes);
+ vparams.budget = bytes;
vparams.period = basic->period;
- vparams.ac_id = fwp_sched->ac_id;
+ vparams.ac_id = fwp_sched->ac_id;
+ if (fwp) {
+ vparams.src.s_addr = fwp->src;
+ snprintf(src, sizeof(src), " src=%s", inet_ntoa(vparams.src));
+ }
/* Create vres */
if ((rv = fwp_vres_create(&vparams, &fwp_vresd))) {
return rv;
vres->priv = fwp_vresd;
fres_contract_id_to_string(id, &vres->id, sizeof(id));
- printf("Creating FWP VRes (id=%s, period=%ld ms, budget=%ld bytes AC=%d)\n",
+ ul_logmsg("Creating FWP VRes (id=%s, period=%ld ms, budget=%ld bytes AC=%d%s)\n",
id, fosa_rel_time_to_msec(basic->period),
- vparams.budget, vparams.ac_id);
+ vparams.budget, vparams.ac_id, src);
return 0;
}
basic = fres_contract_get_basic(vres->allocated);
fres_contract_id_to_string(id, &vres->id, sizeof(id));
- printf("Creating FWP VRes (id=%s, period=%ld ms, budget=%ld bytes)\n",
+ ul_logmsg("Canceling FWP VRes (id=%s, period=%ld ms, budget=%ld bytes)\n",
id, fosa_rel_time_to_msec(basic->period), basic->budget.tv_sec);
return 0;
int change_vres(fres_vres_t *vres, void *priv)
{
+ char id[40];
+ fres_block_basic *basic;
+ fres_block_fwp_sched *fwp_sched;
+ fwp_vres_params_t vparams;
+ fwp_vres_d_t fwp_vresd;
+ int rv;
+ size_t bytes;
+
+ /* Prepare vres parameters */
+ basic = fres_contract_get_basic(vres->new);
+ fwp_sched = fres_contract_get_block(vres->new, FRES_BLOCK_FWP_SCHED);
+
+ frsh_network_budget_to_bytes(FRSH_NETPF_FWP, &basic->budget, &bytes);
+ vparams.budget = bytes;
+ vparams.period = basic->period;
+ vparams.ac_id = fwp_sched->ac_id;
+ fwp_vresd = vres->priv;
+
+ /* Changing vres */
+ if ((rv = fwp_vres_set_params(fwp_vresd, &vparams))) {
+ return rv;
+ }
+
+ fres_contract_id_to_string(id, &vres->id, sizeof(id));
+ printf("Changing FWP VRes (id=%s, period=%ld ms, budget=%ld bytes AC=%d)\n",
+ id, fosa_rel_time_to_msec(basic->period),
+ vparams.budget, vparams.ac_id);
+
+ vres->perceived = vres->new;
+
return 0;
}
.priv = NULL
};
-int fra_fwp_init(forb_orb orb, fres_contract_broker fcb, forb_executor_t *executor)
+int fra_fwp_init(void)
{
fres_block_register_fwp();
- return fra_register(orb, fcb, executor, &fwp_allocator);
+ return fra_register(&fwp_allocator);
}