Skip to main content

Controlling Transmission Range from within the Simulation

While simulating scenarios with the ONE simulator, one typically defines one or more network interfaces, and add them to the nodes as required. This use case prevails in most of the scenarios. However, a drawback here is that different network interfaces are mutually incompatible — an interface of type 1 can't communicate with any interface not of type 1.

Under certain circumstances, it might be required to control the transmission range of one or more network interfaces dynamically from within the simulation. For example, in one of my works, "On emotional aspects in Mission-Oriented Opportunistic Networks", I have considered the case where users occasionally turn off their device radios based on their contemporary emotions. In particular, the following shows how to set the radio range to 0:
ModuleCommunicationBus comBus = host.getComBus();

// Store the original radio range the first time it is reset
if (this.originalRadioRange == -1) {
 this.originalRadioRange = Double.valueOf(
   (Double) comBus
   .getProperty(NetworkInterface.RANGE_ID));
}

// If the radio was made OFF, restore the radio
double range = (Double) comBus.getProperty(NetworkInterface.RANGE_ID);

// Some related logic here ... skipped

if (range == 0.0) {
  comBus.updateProperty(NetworkInterface.RANGE_ID, 
   originalRadioRange);
}
 
Here, the original radio range (set in the settings file) is stored the first time the code is executed. Next, the NetworkInterface.RANGE_ID property is used to retrieve/update the current transmission range. Use this code along with your logic to change the transmission range.

Update (06 June 2014):

The above code snippet is unlikely to be written in the NetworkInterface class. One can incorporate this into his/her own routing/application module. However, this should not be written inside any constructor or any method invoked by the constructor. A suitable candidate would be the update() method with some checks.

Update (23 December 2016):

The method described above would not work for nodes that have more than one network interface.

Comments

  1. I want to create two interfaces:
    1. for cars . it has lower range , say 30m
    2. for special type of nodes which can take message from car and send it to other car or to same special node. it would have higher range say 200m.

    How can i implement it. Please help.

    ReplyDelete
    Replies
    1. You can create two different types of network interfaces in simulation scenario. However, they would be incompatible. Alternatively, reduce/increase the transmission range of the relevant nodes dynamically once the simulation begins as discussed above.

      Delete
    2. In which .java file i have to implement it. Please explain more about implementation and how can i achieve my objective. i am confused.

      Delete
  2. How can i obtain contact time at first node using ONE simulator

    ReplyDelete
  3. Hi Barun,
    I want to create my own message event generator. Do I have to register this class with the simualtor? If yes, then how? Please help me with this.

    ReplyDelete

Post a Comment

Popular posts from this blog

Text Highlighting in Latex

While preparing a manuscript with Latex, it is often useful to highlight the changes made in the current revision with a different color. This can be achieved using the \ textcolor command provided by Latex. For example, \textcolor {red}{Hello World} would display the string "Hello World" in red color. However, the final/published copy of the manuscript does not contain any highlighted text. Therefore, if a large volume of changes were made, it becomes tiresome at the end to find and remove all the individual portions of highlighted text. This can be circumvented by defining a utility command to switch highlighting on and off as desired. In the following, we define a new Latex command, highlighttext , for this purpose. The command takes only a single argument—the text to be highlighted.     \usepackage {color}    % For highlighting changes in this version with red color   \newcommand { \highlighttext }[1] { \textcolor {red}{#1}}   % Remove all text highlighting

The ONE Knowledge Base

The Opportunistic Network Environment (ONE) simulator has become largely popular and widely used in research on DTNs and Opportunistic Networks. The simulator has an associated friendly community, where users can ask questions and get their doubts clarified. Indeed, the community is vibrant and its members are useful. However, there are two issues with this community. First, the archives of the community's mailing list are not public. This is unlike many other similar lists hosted using Mailman, which are public and, therefore, can be searched using Google. Hence, time and again people have asked the question -- how to search the email archives? The second issue is largely due to the first. Due to the lack of searching facility over the archives, often same question tend to be asked by the new users repeatedly. People here are patient enough to reply to them. But such necessity could be entirely discounted had there been a facility to search the archives. In particular, it w

The ONE KB has a new home

The ONE Knowledge Base is now hosted at http://theonekb.pythonanywhere.com/ If you are unaware, the ONE KB allows you to search the old email archives of the simulator's community. Therefore, if you have any question related to simulation, you may query the existing database at the above link. Chances are good that your question might already have been answered previously. If not, you can still post an email to the community's mailing list. Have you tried the ONE KB already? How was your experience? Was it helpful? Let me know in the comments!