World Ocean Simulation System (WOSS) library
uw-woss-channel.h
Go to the documentation of this file.
1/* WOSS - World Ocean Simulation System -
2 *
3 * Copyright (C) 2009 Federico Guerra
4 * and regents of the SIGNET lab, University of Padova
5 *
6 * Author: Federico Guerra - federico@guerra-tlc.com
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation;
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21
22/*
23 * This software has been developed by Federico Guerra and SIGNET lab,
24 * University of Padova, in collaboration with the NATO Centre for
25 * Maritime Research and Experimentation (http://www.cmre.nato.int ;
26 * E-mail: pao@cmre.nato.int), whose support is gratefully acknowledged.
27 */
28
29
40#ifndef UW_WOSS_CHANNEL_H
41#define UW_WOSS_CHANNEL_H
42
43
44#include <channel-module.h>
45#include <underwater.h>
46#include <woss-manager.h>
47
48
49namespace woss {
50 class TimeArr;
51 class WossManager;
52}
53
54
56
57
63class WossChannelModule : public ChannelModule
64{
65
66
67 public:
68
69
71
72 virtual ~ WossChannelModule();
73
74
75 virtual int command(int argc, const char*const* argv);
76
77
78 virtual void recv(Packet* p, ChSAP* chsap);
79
80
81 protected:
82
83
84 typedef ::std::vector< ChSAP* > ChSAPVector;
85
86
87 double getPropDelay( const woss::CoordZ& s, const woss::CoordZ& d);
88
89
90 woss::CoordZPairVect computeCoordZPairVect( ChSAP* dest );
91
92 woss::SimFreq computeSimFreq( Packet* p );
93
94 woss::TimeArrVector computeTimeArrVector( const woss::CoordZPairVect& coords, const woss::SimFreq& sim_freq );
95
96 void checkTimeArrVector( const woss::CoordZPairVect& coords, woss::TimeArrVector& channels );
97
98 void schedulePacketCopies( const woss::CoordZPairVect& coords, const woss::TimeArrVector& channels, const woss::SimFreq& sim_freq, Packet* p );
99
100 void deleteChannels( woss::TimeArrVector& channels );
101
102
103 double channel_eq_snr_threshold_db;
104
105 double channel_symbol_resolution;
106
107 double channel_eq_time;
108
109 double channel_eq_attenuation_db;
110
111 double channel_max_distance; // [m]
112
113
114 woss::WossManager* woss_manager;
115
116 ChannelEstimator* channel_estimator;
117
118
119 Underwater uw;
120
121 ChSAPVector chsap_vector;
122
123};
124
125
126#endif /* UW_WOSS_CHANNEL_H */
127
Class for channel estimation and averaging.
Definition uw-woss-channel-estimator.h:60
WossChannelModule class for channel calculations with WOSS.
Definition uw-woss-channel.h:64
3D-Coordinates (lat, long, depth) class definitions and functions library
Definition coordinates-definitions.h:403
Abstract class that interfaces Pressure or TimeArr requests from user layer.
Definition woss-manager.h:93
Provides the interface for woss::WossManager, woss::WossManagerResDb and woss::WossManagerResDbMT cla...
::std::vector< CoordZPair > CoordZPairVect
Definition woss-manager.h:61
::std::vector< TimeArr * > TimeArrVector
Definition woss-manager.h:83
::std::pair< double, double > SimFreq
Definition woss-manager.h:67