Commit Graph

16088 Commits

Author SHA1 Message Date
Tom Henderson
f78ca76519 Include additional missing headers 2022-01-22 09:26:17 -08:00
Biljana Bojovic
167aaada6e antenna, buildings, lr-wpan, lte, netanim, propagation, spectrum, wifi, wimax: Update Python bindings 2022-01-22 11:43:31 +01:00
Biljana Bojovic
33097e47d9 spectrum: GetAntenna supports antenna arrays (address Tommaso Zugno's comment on !686) 2022-01-22 11:43:31 +01:00
bbojovic
00e3374159 spectrum: ThreeGppChannelModel is adapted so it can be inherited and GetNewChannel virtual 2022-01-22 11:43:31 +01:00
bbojovic
a4b43d0132 spectrum: Move doppler term D and alpha and improve (Thanks to Sandra Lagen)
Co-authored-by: Sandra Lagen <sandra.lagen@cttc.es>

This commit also fixes an issue that was discovered during this implementation,
and that is that the stream was never assigned for the uniform random variable used for
the term D and alpha generation.

-Store term D and alpha into the channel params structure.
-Make sure to use correct angles and zenit of departure and arrival:
Save the direction of the generation of the channel params and channel matrix,
in order to know when regenerating channel matrix if the saved angles aoa, aod,
zoa and zod are of of s-to-u or u-to-s, so to properly use them.
- Simplify the type of the key of channel matrix map
- Remove unecessary if statements and abort replace by assert
- Add a more detailed description of the ThreeGppSpectrumPropagationLossModel changes
2022-01-22 11:43:28 +01:00
bbojovic
f53c28229d spectrum, propagation: Fix the way channel condition is saved and checked if equal
It seems that is not the best way to save in the structure the pointer
to the channel condition model because the underlying condition,
and later when we compare the new condition with the old one, we
are basically comparing the underlying object with itself, because
we saved the pointer to it in the structure.

Instead we should save the concrete values of LOS and O2I condition
in the 3gpp structure, and then once the ChannelCondition state changes,
we can compare these saved values against the new once.
This could not be done when the pointer was being changed because pointer
was pointing to the same object.

This fixes basically the condition in 3gpp whether th channel needs to be
updated when condition changes.
2022-01-22 11:42:20 +01:00
bbojovic
2f0a4c9957 spectrum: Split 3gpp channel matrix and channel parameters into two different structures
-Create separate base structures for matrix and params in MatrixBasedChannelModel
-Change the key of m_channelParamsMap to be based on the pair of nodeIds instead of pair of antenna arrays:
Since the parameters in the m_channelParamsMap are common for all the channels among the same pair of nodes,
these parameters should be saved per the pair of node ids, instead per the pair of panels.
On the other hand, the map m_channelMatrixMap saves the channel matrixes per the pair of antenna arrays.
- Implement the update of the channel params and channel matrix of ThreeGppChannelModel
- Fix doxygen and remove unused structures in ThreeGppChannelModel
- Save 3gpp channel matrix and long term per antenna pair instead of node pair
- Split GetNewChannel function in two parts: parameter generation and matrix generation
- Split 3gpp channel matrix and parameters into two different structures
2022-01-22 03:45:09 +01:00
bbojovic
4ca8b12ea0 spectrum: Support passing the TX and RX PhasedArrayModel objects to spectrum model
This possibility is needed for the types of spectrum propagation models that need to have a pointer
to the TX and RX antenna arrays to perform calculations, such as e.g.,
ThreeGppSpectrumPropagationLossModel, which currently has hard limitation of having a maximum of 1
antenna array instance per device. ThreeGppSpectrumPropagationLossModel now inherits a new class
PhasedArraySpectrumPropagationLossModel. Its DoCalcRxPowerSpectralDensity function has now two
additional parameters: TX and RX antenna arrays. Also, AddDevice function is removed from
ThreeGppSpectrumPropagationLossModel, because it is not anymore needed to specify for each
device its TX/RX antenna, since these are now passed as parameters. Hence, to use
ThreeGppSpectrumPropagationLossModel, when implementing Spectrum PHY features,
modules should implement the function of SpectrumPhy GetAntenna to return the instance of
PhasedArrayModel of that SpectrumPhy. These instances will be passed by MultiModelSpectrumChannel
(one of the core classes in the spectrum module) to propagation classes, children of
PhasedArraySpectrumPropagationLossModel, when it is necessary to DoCalcRxPowerSpectralDensity to
callculate the propagation loss.

Additionally: Fixed pair key generation for 3gpp channel model: Previous implementation was
using a cantor function of two integer of 32 bits and as a results was giving a unique
representatio of 32 bits. This is wrong, because such function needed even more than 64
bits to represent that value. Even if in ns-3 simulation we are not going to have such large
node numbers, we should fix this. Instead of just changing 64 bits from cantor function, I propose to
replace the cantor function with just simple concatenation of two 32 bits.

I also propose moving min and max inside of the function, to prevent some eventual future errors
in using GetKey, because with the previous implementation there was assumption that who calls GetKey
will previously sort its parameters, and first provide the min value, and then the max value,
and this was not even documented.
2022-01-22 03:42:49 +01:00
Gabriel Ferreira
33f2ee841b doc: update ns3 API 2022-01-19 16:25:03 -03:00
Gabriel Ferreira
330ffb75b6 CI: add flags required by recent openmpi to run on the CI 2022-01-19 16:25:03 -03:00
Gabriel Ferreira
70d11fe983 build: ns3 and CMake fixes
- fix scratch shortcut transformation to build target and binary
- scan scratch files for a main function to use them as the target name
- fix CMake generator parsing
- update the -- separator message
- use -- separator to forward CMake flags from ns3
- add --vis option to ns3
- embedded version fixes
    Fix NS3_VERSION_PATCH and NS3_VERSION_RELEASE_CANDIDATE default values.
    Add check-version target to CMake.
    Add --enable-build-version to ns3.
    Add --check-profile and --check-version options to ns3.
- process each scratch subdirectory as a single target
- forward ns3 arguments after -- separator to the program to run
- fix escape sequence in command-template help string
- handle modules with very long names
2022-01-19 16:25:03 -03:00
Tom Henderson
2db1e3ed8d traffic-control: Rescan APIs for Python bindings 2022-01-15 10:42:56 -08:00
Gabriel Ferreira
ab550a73dd traffic-control: Use transparent comparator
Prevents char* to string conversions, reducing allocs
2022-01-15 01:09:28 +00:00
Gabriel Ferreira
66ef21189e internet: Replace m_node->GetObject<Ipv4> with Ptr (this) 2022-01-15 01:09:28 +00:00
Gabriel Ferreira
56f35c5f25 internet: Only make packet copies when there is a connected trace 2022-01-15 01:09:28 +00:00
Gabriel Ferreira
44d311cd3b network: Add function to check if a queue would overflow 2022-01-15 01:09:28 +00:00
Gabriel Ferreira
38648bbb82 traffic-control: Use list splices to prevent allocs in dequeue 2022-01-15 01:09:28 +00:00
Gabriel Ferreira
e41e16c799 core: Reuse a global hasher instance 2022-01-15 01:09:28 +00:00
Gabriel Ferreira
bb181e0170 wifi: Reduce function calls in GetMcsForMode 2022-01-15 01:09:28 +00:00
Gabriel Ferreira
f367474ca3 wifi: Access structures with const references to prevent copies 2022-01-15 01:09:28 +00:00
Peter D. Barnes, Jr
6f3639f4cd Ignore emacs backup files correctly 2022-01-14 14:58:06 -08:00
Tom Henderson
4ee323f8fd build: (merges !837) Remove libgcrypt detection 2022-01-13 17:41:39 -08:00
Bhaskar Kataria
8c8c3b49a2 traffic-control: Fix value of MaxBurstAllowance in PIE 2022-01-13 12:25:02 -08:00
Tom Henderson
69d5a80687 wifi,wave,mesh,dsr: Update Python bindings 2022-01-09 15:22:40 -08:00
Sébastien Deronne
e605c7e54c mesh: Add EnableLogComponents in MeshHelper 2022-01-09 17:41:25 +01:00
Sébastien Deronne
3fec6c013d wifi: merge RegularWifiMac and WifiMac 2022-01-09 17:14:04 +01:00
Sébastien Deronne
a3a79e8839 wifi: Pass flag to indicate whether MCS is mandatory in CreateWifiMcs 2022-01-09 17:14:04 +01:00
Gabriel Ferreira
f81977e170 CI: Install ssh in gcc jobs 2022-01-09 10:48:33 -03:00
Gabriel Ferreira
53260b5d27 CI: Specify c++ compiler and install ssh for CI jobs with MPI 2022-01-09 04:14:41 -03:00
Gabriel Ferreira
ff3b511384 build: Bugfixes and refactoring of ns3 and CMake
Including:
- add missing command for introspected doxygen
- run get_version.sh before running doxygen
- use find_package(Doxygen) to get the doxygen executable
- silence python and sqlite find_package warnings
- return cmake returncode if configuration fails
- require GTK3 3.22
- link all libraries to print-introspected-doxygen
- replace shell with use_shell for variable name
- revert wrong changes to propagation of return codes and add test
- disable pch when ccache is found
- make --enable-sudo a post-build step and a runtime option
- add docs subparser
- add enable-sudo option
- refactor positional argument values
- fix --check option and add shell option
- replace --no-task-lines with --quiet
- replace --nowaf with --no-build
- replace --run --run-no-build with run (--no-build)
- replace ns3 documentation related arguments with targets
- document test-ns3.py
- export include directories used by ns3 libraries
- refactor CMake documentation dependency checking and behavior
- add --allow-run-as-root for running MPI examples on the CI
2022-01-09 02:48:53 -03:00
Gabriel Ferreira
7a95fb87be test: Replace nowaf option with no-build option 2022-01-09 00:59:19 -03:00
Gabriel Ferreira
65347519ed test: Return 0 during command-line introspection 2022-01-09 00:57:27 -03:00
Stefano Avallone
6c334e036a wifi: Update documentation 2022-01-08 19:23:12 +01:00
Stefano Avallone
a640191ae5 wifi: Add a channel switching test 2022-01-08 19:23:12 +01:00
Stefano Avallone
5d7acdcf19 wifi: QosTxop skips frames that cannot be forwarded to the destination 2022-01-08 19:23:12 +01:00
Stefano Avallone
961f9ab025 wifi: Doxygen fixes 2022-01-08 19:23:12 +01:00
Stefano Avallone
2a1d009116 wifi: Separate wifi standard and PHY band 2022-01-08 19:23:12 +01:00
Stefano Avallone
02c078b3c0 wifi: Delete PHY entities before changing PHY band 2022-01-08 19:23:12 +01:00
Stefano Avallone
52d84a6346 wifi: MAC is notified of channel switching and takes appropriate actions
NOTE 1: the purpose of calling the PHY capabilities changed callback in
WifiPhy::DoChannelSwitch was to have a station sending a Reassociation
Request after changing the channel width. However, changing channel width
implies a channel switching. Therefore, the station requires to associate
again and hence it is useless to invoke such callback.

NOTE 2: MAC queues were flushed upon channel switching. This is now removed
because station and AP may move to the same channel; hence, why dropping all
pending frames? Also, in case of (future) 11be multi-link devices, a channel
switching on a single link does not prevent to continue using the other links.
2022-01-08 19:23:12 +01:00
Stefano Avallone
50779c64d4 wifi: Create VhtConfiguration independently of the PHY band 2022-01-08 19:23:12 +01:00
Stefano Avallone
44771472ec wifi: MAC configures PHY dependent parameters when setting the PHY
This is in preparation for the removal of the band from the wifi standard.
2022-01-08 19:23:11 +01:00
Stefano Avallone
58f00a3677 wifi: WifiMac creates FEM based on the configured standard 2022-01-08 19:23:11 +01:00
Stefano Avallone
7c3c3f4980 wifi: WifiNetDevice holds the wifi standard 2022-01-08 19:23:11 +01:00
Tommaso Pecorella
efdb2e21f4 Doxygen related fixes 2022-01-08 07:08:25 +00:00
Tommaso Pecorella
8853f7ee14 building: doxygen tweaks 2022-01-07 23:58:20 -06:00
Peter Barnes
762494924e core: avoid GCC compiler error 2022-01-07 22:25:39 +00:00
Tommaso Pecorella
247a597f43 doxygen: fix warnings in various modules 2022-01-07 12:13:17 -06:00
Tommaso Pecorella
64f9c1c70d CI: upodate fedora and ubuntu tests 2022-01-06 16:46:50 -06:00
Tommaso Pecorella
6b50829a4b CI: revert the doxygen CI to waf 2022-01-06 13:37:06 -06:00
Tommaso Pecorella
ee6b3cb0af visualizer: fix doxygen warnings 2022-01-05 20:58:23 -06:00