|
From: <fle...@us...> - 2007-04-26 15:53:47
|
Revision: 651
http://svn.sourceforge.net/magicmap/?rev=651&view=rev
Author: flederohr
Date: 2007-04-26 08:52:26 -0700 (Thu, 26 Apr 2007)
Log Message:
-----------
added direct updatesignalstrength method (without use of average signalstrength) to measurementmodel
for updating the measurements that comes from the server.
Modified Paths:
--------------
trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java
trunk/magicmapclient/src/net/sf/magicmap/client/model/measurement/IMeasurementModel.java
trunk/magicmapclient/src/net/sf/magicmap/client/model/node/AccessPointSeerNode.java
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java 2007-04-26 13:06:54 UTC (rev 650)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java 2007-04-26 15:52:26 UTC (rev 651)
@@ -169,7 +169,7 @@
nodeModel.addNode(ap);
// ap.setName(mac);
}
- location.getMeasurementModel().updateScanResult(mac, r.getSignalLevel());
+ location.getMeasurementModel().directUpdateScanResult(mac, r.getSignalLevel());
if (!ap.isHidden()) location.seesAccessPoint(ap, r.getSignalLevel());
}
} else {
@@ -220,7 +220,7 @@
else {
// Neu
location.seesAccessPoint(ap, r.getSignalLevel());
- location.getMeasurementModel().updateScanResult(mac, r.getSignalLevel());
+ location.getMeasurementModel().directUpdateScanResult(mac, r.getSignalLevel());
}
}
@@ -327,7 +327,7 @@
signalLevels[i] = Math.round(10 * sr[i].getSignalLevel()) / 10;
macs[i] = sr[i].getMacAP();
}
- client.getMeasurementModel().updateScanResult(macs, signalLevels);
+ client.getMeasurementModel().directUpdateScanResult(macs, signalLevels);
}
}
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/model/measurement/IMeasurementModel.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/model/measurement/IMeasurementModel.java 2007-04-26 13:06:54 UTC (rev 650)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/model/measurement/IMeasurementModel.java 2007-04-26 15:52:26 UTC (rev 651)
@@ -23,6 +23,13 @@
* @param signalLevel the signal level.
*/
void updateScanResult(String apMac, double signalLevel);
+
+ /**
+ * Add a scanresult without using average calculation.
+ * @param apMac the accesspoints mac
+ * @param signalLevel the signal level.
+ */
+ void directUpdateScanResult(String apMac, double signalLevel);
/**
* Batch update to avoid event overflow ;-)
@@ -30,6 +37,13 @@
* @param signalLevel
*/
void updateScanResult(String[] apMac, double[] signalLevel);
+
+ /**
+ * Batch update to avoid event overflow ;-)
+ * @param apMac
+ * @param signalLevel
+ */
+ void directUpdateScanResult(String[] apMac, double[] signalLevel);
/**
* Gets the SeenAccessPoint for a given seer.
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/model/node/AccessPointSeerNode.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/model/node/AccessPointSeerNode.java 2007-04-26 13:06:54 UTC (rev 650)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/model/node/AccessPointSeerNode.java 2007-04-26 15:52:26 UTC (rev 651)
@@ -199,7 +199,41 @@
}
}
}
+
+ public void directUpdateScanResult(String apMac, double signalLevel){
+ SeenAccessPoint accessPoint = getAccessPoint(apMac);
+ final INodeModel nodeModel = AccessPointSeerNode.this.getModel();
+ if (accessPoint == null) {
+ // ein toter ap.....
+ if (signalLevel <= -Constants.MIN_SIGNALLEVEL) return;
+
+ accessPoint = new SeenAccessPoint(apMac, signalLevel);
+ addAccessPoint(accessPoint);
+ AccessPointNode apNode = nodeModel.findAccessPoint(apMac);
+ if (apNode == null) {
+ nodeModel.addNode(new AccessPointNode(apMac, nodeModel));
+ apNode = nodeModel.findAccessPoint(apMac);
+ }
+ AccessPointSeerNode.this.setSignalLevelForAcessPoint(apNode, signalLevel);
+ } else {
+ if (signalLevel > -Constants.MIN_SIGNALLEVEL) {
+ accessPoint.addSignalLevel(signalLevel);
+ } else {
+ accessPoint.addDeadSignal();
+ }
+ if (accessPoint.isTotallyDead()) {
+ removeSeenAccessPoint(accessPoint);
+ AccessPointSeerNode.this.notSeesAccessPoint(nodeModel.findAccessPoint(apMac));
+ } else {
+ updateAccessPoint(accessPoint);
+ AccessPointSeerNode.this.setSignalLevelForAcessPoint(nodeModel.findAccessPoint(apMac), accessPoint
+ .getLastSignalLevel());
+ }
+ }
+ }
+
+
public void updateScanResult(String[] apMac, double[] signalLevel){
HashSet<String> seenAps = new HashSet<String>();
for (SeenAccessPoint sap : this.get()) {
@@ -213,6 +247,20 @@
updateScanResult(mac, Double.NEGATIVE_INFINITY);
}
}
+
+ public void directUpdateScanResult(String[] apMac, double[] signalLevel){
+ HashSet<String> seenAps = new HashSet<String>();
+ for (SeenAccessPoint sap : this.get()) {
+ seenAps.add(sap.getMac());
+ }
+ for (int i = 0; i < apMac.length; ++i) {
+ seenAps.remove(apMac[i]);
+ directUpdateScanResult(apMac[i], signalLevel[i]);
+ }
+ for (String mac : seenAps) {
+ directUpdateScanResult(mac, Double.NEGATIVE_INFINITY);
+ }
+ }
/**
* Returns a list of seen access points for a given client.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|