mirror of
				https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
				synced 2025-11-04 04:27:59 +00:00 
			
		
		
		
	RSSI handle unsigned int for neighbor and client stats, ClientSession Metrics details RSSI, and Mbps for Tx/Rx
This commit is contained in:
		@@ -813,21 +813,23 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
 | 
			
		||||
				if (cl.hasStats()) {
 | 
			
		||||
					if (cl.getStats().hasRssi()) {
 | 
			
		||||
						cMetrics.setRssi(cl.getStats().getRssi());
 | 
			
		||||
						int unsignedRssi = cl.getStats().getRssi();
 | 
			
		||||
						// we can only get Rssi as an unsigned int from opensync, so some shifting
 | 
			
		||||
						int signedRssi = (unsignedRssi << 1) >> 1;
 | 
			
		||||
						cMetrics.setRssi(signedRssi);
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					// we'll report each device as having a single (very long)
 | 
			
		||||
					// session
 | 
			
		||||
					cMetrics.setSessionId(smr.getClientMac());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
					// populate Rx stats
 | 
			
		||||
					if (cl.getStats().hasRxBytes()) {
 | 
			
		||||
						cMetrics.setRxBytes(cl.getStats().getRxBytes());
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					if (cl.getStats().hasRxRate()) {
 | 
			
		||||
						cMetrics.setAverageRxRate(cl.getStats().getRxRate());
 | 
			
		||||
						cMetrics.setAverageRxRate((double) (cl.getStats().getTxRate() / 1000));
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					if (cl.getStats().hasRxErrors()) {
 | 
			
		||||
@@ -849,12 +851,13 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					if (cl.getStats().hasTxRate()) {
 | 
			
		||||
						 cMetrics.setAverageTxRate(cl.getStats().getTxRate());
 | 
			
		||||
						cMetrics.setAverageTxRate(Double.valueOf((double) (cl.getStats().getTxRate() / 1000)));
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					if (cl.getStats().hasTxRate() && cl.getStats().hasRxRate()) {
 | 
			
		||||
						cMetrics.setRates(
 | 
			
		||||
								new byte[] { (byte) cl.getStats().getTxRate(), (byte) cl.getStats().getRxRate() });
 | 
			
		||||
								new byte[] { Double.valueOf((double) (cl.getStats().getTxRate() / 1000)).byteValue(),
 | 
			
		||||
										Double.valueOf((double) (cl.getStats().getRxRate() / 1000)).byteValue() });
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					if (cl.getStats().hasTxErrors()) {
 | 
			
		||||
@@ -871,7 +874,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
				LOG.debug("ApClientMetrics Report {}", cMetrics);
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
@@ -929,14 +931,16 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
				nr.setPacketType(NeighborScanPacketType.BEACON);
 | 
			
		||||
				nr.setPrivacy((nBss.getSsid() == null || nBss.getSsid().isEmpty()) ? true : false);
 | 
			
		||||
				// nr.setRate(rate);
 | 
			
		||||
				nr.setRssi(nBss.getRssi());
 | 
			
		||||
				// we can only get Rssi as an unsigned int from opensync, so some shifting
 | 
			
		||||
				int signedRssi = (nBss.getRssi() << 1) >> 1;
 | 
			
		||||
				nr.setRssi(signedRssi);
 | 
			
		||||
				// nr.setScanTimeInSeconds(scanTimeInSeconds);
 | 
			
		||||
				nr.setSecureMode(DetectedAuthMode.WPA);
 | 
			
		||||
				// nr.setSignal(signal);
 | 
			
		||||
				nr.setSsid(nBss.getSsid());
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			LOG.debug("populateNeighbourScanReports created report {} from stats {}", neighbourScanReports, neighbor);
 | 
			
		||||
//			LOG.debug("populateNeighbourScanReports created report {} from stats {}", neighbourScanReports, neighbor);
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@@ -1002,7 +1006,8 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
			ClientDhcpDetails dhcpDetails = new ClientDhcpDetails(clientSession.getDetails().getSessionId());
 | 
			
		||||
			clientSession.getDetails().setDhcpDetails(dhcpDetails);
 | 
			
		||||
			ClientSessionMetricDetails metricDetails = new ClientSessionMetricDetails();
 | 
			
		||||
			metricDetails.setRssi(client.getStats().getRssi());
 | 
			
		||||
			int signedRssi = (client.getStats().getRssi() << 1) >> 1;
 | 
			
		||||
			metricDetails.setRssi(signedRssi);
 | 
			
		||||
			metricDetails.setRxBytes(client.getStats().getRxBytes());
 | 
			
		||||
			metricDetails.setTxBytes(client.getStats().getTxBytes());
 | 
			
		||||
			metricDetails.setTotalTxPackets(client.getStats().getTxFrames());
 | 
			
		||||
@@ -1011,8 +1016,9 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
					.setTxDataFrames((int) ((int) client.getStats().getTxFrames() - client.getStats().getTxRetries()));
 | 
			
		||||
			metricDetails
 | 
			
		||||
					.setRxDataFrames((int) ((int) client.getStats().getRxFrames() - client.getStats().getRxRetries()));
 | 
			
		||||
			metricDetails.setRxMbps((float) client.getStats().getRxRate());
 | 
			
		||||
			metricDetails.setTxMbps((float) client.getStats().getTxRate());
 | 
			
		||||
			// values reported in Kbps, convert to Mbps
 | 
			
		||||
			metricDetails.setRxMbps(Float.valueOf((float) (client.getStats().getRxRate() / 1000)));
 | 
			
		||||
			metricDetails.setTxMbps(Float.valueOf((float) (client.getStats().getTxRate() / 1000)));
 | 
			
		||||
			clientSession.getDetails().setMetricDetails(metricDetails);
 | 
			
		||||
 | 
			
		||||
			clientSession = clientServiceInterface.updateSession(clientSession);
 | 
			
		||||
@@ -1057,12 +1063,9 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
			int txRetries = 0;
 | 
			
		||||
			int rxRetries = 0;
 | 
			
		||||
 | 
			
		||||
			double txRate = 0.0D;
 | 
			
		||||
			double rxRate = 0.0D;
 | 
			
		||||
			int lastRssi = 0;
 | 
			
		||||
			String ssid = null;
 | 
			
		||||
 | 
			
		||||
			List<McsStats> mcsStats = new ArrayList<McsStats>();
 | 
			
		||||
 | 
			
		||||
			Set<String> clientMacs = new HashSet<String>();
 | 
			
		||||
			for (Client client : clientReport.getClientListList()) {
 | 
			
		||||
@@ -1098,8 +1101,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
					txRetries += clientStats.getTxRetries();
 | 
			
		||||
					rxErrors += clientStats.getRxErrors();
 | 
			
		||||
					txErrors += clientStats.getTxErrors();
 | 
			
		||||
					rxRate += clientStats.getRxRate();
 | 
			
		||||
					txRate += clientStats.getTxRate();
 | 
			
		||||
 | 
			
		||||
					lastRssi = client.getStats().getRssi();
 | 
			
		||||
 | 
			
		||||
@@ -1134,7 +1135,9 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
					clientReport.getChannel(), clientReport.getBand(), clientMacs);
 | 
			
		||||
 | 
			
		||||
			SsidStatistics ssidStatistics = new SsidStatistics();
 | 
			
		||||
			ssidStatistics.setRxLastRssi(-1 * lastRssi);
 | 
			
		||||
			// we can only get Rssi as an unsigned int from opensync, so some shifting
 | 
			
		||||
			int signedRssi = (lastRssi << 1) >> 1;
 | 
			
		||||
			ssidStatistics.setRxLastRssi(signedRssi);
 | 
			
		||||
			ssidStatistics.setNumRxData(Long.valueOf(rxFrames).intValue());
 | 
			
		||||
			ssidStatistics.setRxBytes(rxBytes - rxErrors - rxRetries);
 | 
			
		||||
			ssidStatistics.setNumTxDataRetries(txRetries);
 | 
			
		||||
 
 | 
			
		||||
@@ -2677,8 +2677,8 @@ public class OvsdbDao {
 | 
			
		||||
				Map<String, Value> rowColumns = new HashMap<>();
 | 
			
		||||
				rowColumns.put("radio_type", new Atom<>(rc.freqBand));
 | 
			
		||||
				rowColumns.put("reporting_interval", new Atom<>(60));
 | 
			
		||||
				rowColumns.put("report_type", new Atom<>("average"));
 | 
			
		||||
//				rowColumns.put("sampling_interval", new Atom<>(6));
 | 
			
		||||
				rowColumns.put("report_type", new Atom<>("raw"));
 | 
			
		||||
				rowColumns.put("sampling_interval", new Atom<>(10));
 | 
			
		||||
				rowColumns.put("stats_type", new Atom<>("client"));
 | 
			
		||||
				rowColumns.put("survey_interval_ms", new Atom<>(65));
 | 
			
		||||
//				rowColumns.put("survey_type", new Atom<>("on-chan"));
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user