using radio's output power indicator to calculate transmission/interference range
(for now scaling with indicator)
This commit is contained in:
parent
c1a93baa28
commit
ddb3726e7f
|
@ -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.4 2006/10/05 08:19:41 fros4943 Exp $
|
* $Id: StandardRadioMedium.java,v 1.5 2006/10/05 14:51:35 fros4943 Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package se.sics.cooja.radiomediums;
|
package se.sics.cooja.radiomediums;
|
||||||
|
@ -240,11 +240,20 @@ public class StandardRadioMedium extends RadioMedium {
|
||||||
int x = pixelCoord.x;
|
int x = pixelCoord.x;
|
||||||
int y = pixelCoord.y;
|
int y = pixelCoord.y;
|
||||||
|
|
||||||
|
// 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) selectedMote.getInterfaces().getRadio()
|
||||||
|
.getCurrentOutputPowerIndicator());
|
||||||
|
double moteTransmissionRange = TRANSMITTING_RANGE
|
||||||
|
* (0.01 * (double) selectedMote.getInterfaces().getRadio()
|
||||||
|
.getCurrentOutputPowerIndicator());
|
||||||
|
|
||||||
Point translatedZero = transformPositionToPixel(0.0, 0.0, 0.0);
|
Point translatedZero = transformPositionToPixel(0.0, 0.0, 0.0);
|
||||||
Point translatedInterference = transformPositionToPixel(
|
Point translatedInterference = transformPositionToPixel(
|
||||||
INTERFERENCE_RANGE, INTERFERENCE_RANGE, 0.0);
|
moteInterferenceRange, moteInterferenceRange, 0.0);
|
||||||
Point translatedTransmission = transformPositionToPixel(
|
Point translatedTransmission = transformPositionToPixel(
|
||||||
TRANSMITTING_RANGE, TRANSMITTING_RANGE, 0.0);
|
moteTransmissionRange, moteTransmissionRange, 0.0);
|
||||||
|
|
||||||
translatedInterference.x = Math.abs(translatedInterference.x
|
translatedInterference.x = Math.abs(translatedInterference.x
|
||||||
- translatedZero.x);
|
- translatedZero.x);
|
||||||
|
@ -302,8 +311,9 @@ public class StandardRadioMedium extends RadioMedium {
|
||||||
|
|
||||||
private boolean isTickObserver = false;
|
private boolean isTickObserver = false;
|
||||||
|
|
||||||
private static double TRANSMITTING_RANGE = 20; // 20m
|
// Maximum ranges (SS indicator 100)
|
||||||
private static double INTERFERENCE_RANGE = 40; // 40m
|
private static double TRANSMITTING_RANGE = 50;
|
||||||
|
private static double INTERFERENCE_RANGE = 100;
|
||||||
|
|
||||||
private class RadioMediumObservable extends Observable {
|
private class RadioMediumObservable extends Observable {
|
||||||
private void transmissionStarted() {
|
private void transmissionStarted() {
|
||||||
|
@ -375,7 +385,17 @@ public class StandardRadioMedium extends RadioMedium {
|
||||||
double distance = newSendingPositions.get(sendNr).getDistanceTo(
|
double distance = newSendingPositions.get(sendNr).getDistanceTo(
|
||||||
registeredPositions.get(listenNr));
|
registeredPositions.get(listenNr));
|
||||||
|
|
||||||
if (distance <= TRANSMITTING_RANGE) {
|
// 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());
|
||||||
|
|
||||||
|
|
||||||
|
if (distance <= moteTransmissionRange) {
|
||||||
lastTickConnections[sendNr].addDestination(registeredRadios
|
lastTickConnections[sendNr].addDestination(registeredRadios
|
||||||
.get(listenNr), registeredPositions.get(listenNr),
|
.get(listenNr), registeredPositions.get(listenNr),
|
||||||
dataToSend);
|
dataToSend);
|
||||||
|
@ -388,7 +408,7 @@ public class StandardRadioMedium extends RadioMedium {
|
||||||
// .. send packet
|
// .. send packet
|
||||||
listeningRadio.receivePacket(dataToSend, sendingRadio.getTransmissionEndTime());
|
listeningRadio.receivePacket(dataToSend, sendingRadio.getTransmissionEndTime());
|
||||||
}
|
}
|
||||||
} else if (distance <= INTERFERENCE_RANGE) {
|
} else if (distance <= moteInterferenceRange) {
|
||||||
// If close enough to sabotage other transmissions..
|
// If close enough to sabotage other transmissions..
|
||||||
listeningRadio.interferReception(sendingRadio.getTransmissionEndTime());
|
listeningRadio.interferReception(sendingRadio.getTransmissionEndTime());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue