DESERT 3.5.1
Loading...
Searching...
No Matches
uwranging_tokenbus.h
Go to the documentation of this file.
1//
2// Copyright (c) 2022 Regents of the SIGNET lab, University of Padova.
3// All rights reserved.
4//
5// Redistribution and use in source and binary forms, with or without
6// modification, are permitted provided that the following conditions
7// are met:
8// 1. Redistributions of source code must retain the above copyright
9// notice, this list of conditions and the following disclaimer.
10// 2. Redistributions in binary form must reproduce the above copyright
11// notice, this list of conditions and the following disclaimer in the
12// documentation and/or other materials provided with the distribution.
13// 3. Neither the name of the University of Padova (SIGNET lab) nor the
14// names of its contributors may be used to endorse or promote products
15// derived from this software without specific prior written permission.
16//
17// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28//
29
39#ifndef UWRANGINGTOKENBUS_H
40#define UWRANGINGTOKENBUS_H
41
42#include "uwtokenbus.h"
43
44extern packet_t PT_UWRANGING_TOKENBUS;
45
50{
51
52public:
57
61 virtual ~UwRangingTokenBus();
62
63
64protected:
65
72 virtual bool validToken(Packet *p) const override;
73
78 virtual void sendToken(int next_id) override;
79
85 virtual void Phy2MacEndRx(Packet *p) override;
86
87
92 virtual void computeDist();
93
105 virtual int command(int argc, const char *const *argv);
106
107 const int dist_num;
109 double epsilon;
110 double max_tt;
111 std::vector<std::vector<int>> dist_map;
113 std::vector<std::vector<double>> times_mat;
115 std::vector<std::vector<int>> times_age;
116 std::vector<std::vector<double>> x_mat;
118 std::vector<double> distances;
121};
122
123#endif
Class that represents a TokenBus Node.
const int dist_num
num of distances: will be initialized to n_nodes*(n_nodes-1)/2
std::vector< std::vector< double > > times_mat
vector of shape [n_nodes][n_nodes-1] holds the travel times: the first index is the node_id which has...
int id_last_range
node id from which I received the last ranging pkt
virtual void computeDist()
compute the linear regression and updates the distances vector
double max_tt
max travel time between nodes in seconds, used to discard bad nnleast_squares() results
virtual bool validToken(Packet *p) const override
Assert if the received token id is valid, i.e it follows the monotonic progression taking in account ...
virtual ~UwRangingTokenBus()
Destructor of the TokenBus class.
std::vector< double > distances
vector of shape [D], contains the one way travel times between nodes to be transformed to distances b...
std::vector< std::vector< int > > dist_map
of size [n_nodes][n_nodes] maps(nodeX,nodeY) -> distance
double time_last_range
time of last ping reception (or transmission)
std::vector< std::vector< int > > times_age
vector of shape [n_nodes][n_nodes-1] holds the age of a time (slot number in which the time was calcu...
virtual void sendToken(int next_id) override
Passes the token to the next node.
std::vector< std::vector< double > > x_mat
of size [2D][D] it's the sparse matrix with the equations coefficients (-1,0,1)
virtual int command(int argc, const char *const *argv)
TCL command interpreter.
virtual void Phy2MacEndRx(Packet *p) override
Method called when the Phy Layer finish to receive a Packet.
UwRangingTokenBus()
Default constructor of the TokenBus class.
double epsilon
difference between virtually equal distances can result in small negative numbers due to floating poi...
Class that represents a TokenBus Node.
Definition uwtokenbus.h:52
Provides the definition of the class UwTokenBus.