DESERT 4.0.0
uwPosBasedRt.h
Go to the documentation of this file.
1//
2// Copyright (c) 2017 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 UW_POS_BASED_RT_H
40#define UW_POS_BASED_RT_H
41
42#define DROP_NEXT_HOP_NOT_FOUND "NNF"
43#define DROP_IP_NOT_SET "INS"
44
45#define pi (4 * atan(1.0))
46
47#include "node-core.h"
48#include "uwPosBasedRt-hdr.h"
49#include "uwPosEstimation.h"
50#include "uwip-module.h"
51#include "uwsmposition.h"
52#include <list>
53#include <map>
54#include <module.h>
55#include <tclcl.h>
56#include <utility>
57
58class UwPosBasedRt : public Module
59{
60public:
65
69 virtual ~UwPosBasedRt();
70
71protected:
82 virtual int command(int, const char *const *);
83
89 virtual void recv(Packet *p);
90
96 virtual void initPkt(Packet *p);
97
103 virtual void updatePosInfo(Packet *p);
104
110 virtual uint8_t findNextHop(const Packet *p);
111
120 virtual void addRoute(
121 const uint8_t &dst, const uint8_t &next, const int toFixedNode);
122
128 virtual void setMaxTxRange(double newRange);
129
130private:
137 virtual double nodesDistance(Position &p1, Position &p2);
138
139 uint8_t ipAddr;
140
141 double timestamp;
143 double ROV_speed;
144 double maxTxRange;
147 Position node_pos;
149 std::map<uint8_t, uint8_t> static_routing;
152 std::map<uint8_t, UwPosEstimation>
155 int debug_;
156};
157
158#endif // UW_POS_BASED_RT_H
Definition uwPosBasedRt.h:59
std::map< uint8_t, UwPosEstimation > ROV_routing
Definition uwPosBasedRt.h:153
virtual int command(int, const char *const *)
Definition uwPosBasedRt.cpp:87
double ROV_speed
Definition uwPosBasedRt.h:143
virtual ~UwPosBasedRt()
Definition uwPosBasedRt.cpp:82
virtual void recv(Packet *p)
Definition uwPosBasedRt.cpp:144
virtual void setMaxTxRange(double newRange)
Definition uwPosBasedRt.cpp:429
uint8_t ipAddr
Definition uwPosBasedRt.h:139
virtual void addRoute(const uint8_t &dst, const uint8_t &next, const int toFixedNode)
Definition uwPosBasedRt.cpp:389
double maxTxRange
Definition uwPosBasedRt.h:144
std::map< uint8_t, uint8_t > static_routing
Definition uwPosBasedRt.h:149
virtual uint8_t findNextHop(const Packet *p)
Definition uwPosBasedRt.cpp:327
virtual void updatePosInfo(Packet *p)
Definition uwPosBasedRt.cpp:253
double timestamp
Definition uwPosBasedRt.h:141
Position node_pos
Definition uwPosBasedRt.h:147
UwPosBasedRt()
Definition uwPosBasedRt.cpp:59
int debug_
Definition uwPosBasedRt.h:155
virtual void initPkt(Packet *p)
Definition uwPosBasedRt.cpp:205
virtual double nodesDistance(Position &p1, Position &p2)
Definition uwPosBasedRt.cpp:376
Provides the header description for UwPosBasedRt packets.
Estimate position given initial point, end point and time.
Provides the UWIP packets header description. Definition of the class that define the network layer.
Provides the definition of the class UWSMPosition.