*cleaned up some code
*updated signal strengths to those stated in cooja core interface
This commit is contained in:
parent
d59ef75617
commit
37bbf515f2
1 changed files with 41 additions and 42 deletions
|
@ -26,7 +26,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $Id: StandardRadioMedium.java,v 1.8 2006/10/11 15:14:10 fros4943 Exp $
|
* $Id: StandardRadioMedium.java,v 1.9 2006/12/07 14:28:54 fros4943 Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package se.sics.cooja.radiomediums;
|
package se.sics.cooja.radiomediums;
|
||||||
|
@ -76,9 +76,9 @@ public class StandardRadioMedium extends RadioMedium {
|
||||||
|
|
||||||
public static final double SS_NOTHING = -200;
|
public static final double SS_NOTHING = -200;
|
||||||
|
|
||||||
public static final double SS_BAD = -110;
|
public static final double SS_BAD = -60;
|
||||||
|
|
||||||
public static final double SS_OK = -100;
|
public static final double SS_OK = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Visualizes radio traffic in the current radio medium. Allows a user to
|
* Visualizes radio traffic in the current radio medium. Allows a user to
|
||||||
|
@ -375,51 +375,50 @@ public class StandardRadioMedium extends RadioMedium {
|
||||||
pendingConnections.add(newConnection);
|
pendingConnections.add(newConnection);
|
||||||
newConnection.setSource(sendingRadio, sendingPosition, dataToSend);
|
newConnection.setSource(sendingRadio, sendingPosition, dataToSend);
|
||||||
|
|
||||||
|
// Fetch current output power indicator (scale with as percent)
|
||||||
|
// TODO Probably not the best way to use indicator
|
||||||
|
double moteInterferenceRange = INTERFERENCE_RANGE
|
||||||
|
* (0.01 * (double) sendingRadio.getCurrentOutputPowerIndicator());
|
||||||
|
double moteTransmissionRange = TRANSMITTING_RANGE
|
||||||
|
* (0.01 * (double) sendingRadio.getCurrentOutputPowerIndicator());
|
||||||
|
|
||||||
// Loop through all radios that are listening
|
// Loop through all radios that are listening
|
||||||
for (int listenNr = 0; listenNr < registeredPositions.size(); listenNr++) {
|
for (int listenNr = 0; listenNr < registeredPositions.size(); listenNr++) {
|
||||||
Radio listeningRadio = registeredRadios.get(listenNr);
|
Radio listeningRadio = registeredRadios.get(listenNr);
|
||||||
|
|
||||||
|
if (sendingRadio == listeningRadio)
|
||||||
|
continue;
|
||||||
|
if (sendingRadio.getChannel() != listeningRadio.getChannel())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
|
||||||
// If not the sending radio..
|
// If not the sending radio..
|
||||||
if (sendingRadio != listeningRadio) {
|
double distance = sendingPosition.getDistanceTo(registeredPositions
|
||||||
|
.get(listenNr));
|
||||||
|
|
||||||
double distance = sendingPosition.getDistanceTo(registeredPositions
|
if (distance <= moteTransmissionRange) {
|
||||||
.get(listenNr));
|
newConnection.addDestination(registeredRadios.get(listenNr),
|
||||||
|
registeredPositions.get(listenNr), dataToSend);
|
||||||
|
|
||||||
// Fetch current output power indicator (scale with as percent)
|
// If close enough to transmit ok..
|
||||||
// TODO Probably not the best way to use indicator
|
if (listeningRadio.isReceiving() || listeningRadio.isInterfered()) {
|
||||||
double moteInterferenceRange = INTERFERENCE_RANGE
|
// .. but listening radio already received a packet
|
||||||
* (0.01 * (double) sendingRadio
|
|
||||||
.getCurrentOutputPowerIndicator());
|
|
||||||
double moteTransmissionRange = TRANSMITTING_RANGE
|
|
||||||
* (0.01 * (double) sendingRadio
|
|
||||||
.getCurrentOutputPowerIndicator());
|
|
||||||
|
|
||||||
if (distance <= moteTransmissionRange
|
|
||||||
&& sendingRadio.getChannel() == listeningRadio.getChannel()) {
|
|
||||||
newConnection.addDestination(registeredRadios.get(listenNr),
|
|
||||||
registeredPositions.get(listenNr), dataToSend);
|
|
||||||
|
|
||||||
// If close enough to transmit ok..
|
|
||||||
if (listeningRadio.isReceiving() || listeningRadio.isInterfered()) {
|
|
||||||
// .. but listening radio already received a packet
|
|
||||||
listeningRadio.interferReception(sendingRadio
|
|
||||||
.getTransmissionEndTime());
|
|
||||||
listeningRadio.setCurrentSignalStrength(SS_BAD);
|
|
||||||
} else {
|
|
||||||
// .. send packet
|
|
||||||
listeningRadio.receivePacket(dataToSend, sendingRadio
|
|
||||||
.getTransmissionEndTime());
|
|
||||||
listeningRadio.setCurrentSignalStrength(SS_OK);
|
|
||||||
}
|
|
||||||
} else if (distance <= moteInterferenceRange
|
|
||||||
&& sendingRadio.getChannel() == listeningRadio.getChannel()) {
|
|
||||||
// If close enough to sabotage other transmissions..
|
|
||||||
listeningRadio.interferReception(sendingRadio
|
listeningRadio.interferReception(sendingRadio
|
||||||
.getTransmissionEndTime());
|
.getTransmissionEndTime());
|
||||||
listeningRadio.setCurrentSignalStrength(SS_BAD);
|
listeningRadio.setCurrentSignalStrength(SS_BAD);
|
||||||
|
} else {
|
||||||
|
// .. send packet
|
||||||
|
listeningRadio.receivePacket(dataToSend, sendingRadio
|
||||||
|
.getTransmissionEndTime());
|
||||||
|
listeningRadio.setCurrentSignalStrength(SS_OK);
|
||||||
}
|
}
|
||||||
// else too far away
|
} else if (distance <= moteInterferenceRange) {
|
||||||
|
// If close enough to sabotage other transmissions..
|
||||||
|
listeningRadio.interferReception(sendingRadio
|
||||||
|
.getTransmissionEndTime());
|
||||||
|
listeningRadio.setCurrentSignalStrength(SS_BAD);
|
||||||
}
|
}
|
||||||
|
// else too far away
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue