const frsh_contract_t *contract,
fna_vres_id_t *vres)
{
- int accepted;
+ int ret;
+ bool accepted;
frescan_ss_t ss;
frescan_contract_t frescan_contract;
DEBUG(FRESCAN_FNA_ENABLE_DEBUG,
"frsh contract->frescan contract\n");
- // TODO: budget is stored as number of can frames in tv_sec
+ // NOTE: budget is stored as number of can frames in tv_sec
frescan_contract.min_values.budget = contract->budget_min.tv_sec;
frescan_contract.min_values.period = contract->period_max;
frescan_contract.max_values.budget = contract->budget_max.tv_sec;
frescan_contract.max_values.period = contract->period_min;
+ // TODO: put 0 if we want the sa module to assign the prios
frescan_contract.prio = contract->preemption_level;
DEBUG(FRESCAN_FNA_ENABLE_DEBUG, "calling frescan_bwres_negotiate\n");
- accepted = frescan_bwres_negotiate((frescan_network_t)resource_id,
- &frescan_contract,
- &ss); // TODO: associate the contract with the ss
+ ret = frescan_bwres_negotiate((frescan_network_t)resource_id,
+ &frescan_contract,
+ &ss,
+ &accepted);
+ if (ret != 0) return -1;
- if (accepted == 0) {
+ if (accepted == true) {
DEBUG(FRESCAN_FNA_ENABLE_DEBUG, "contract accepted\n");
*vres = (fna_vres_id_t)ss;
+ return 0;
} else {
DEBUG(FRESCAN_FNA_ENABLE_DEBUG, "contract not accepted\n");
+ return -1; // TODO: change to constant FNA_REJECTED
}
-
- return accepted;
}
/**