Commit 38356b48 authored by Yann Garcia's avatar Yann Garcia
Browse files

Bug fixed in UE counting

parent 2cf07c21
Loading
Loading
Loading
Loading
+40 −13
Changes for js-apps/frontend/src/js/util/scenario-utils.js: 40 added lines, 13 removed lines.
Original line number Diff line number Diff line
@@ -67,7 +67,8 @@ import {
  UE_APP_TYPE_STR,
  EDGE_APP_TYPE_STR,
  CLOUD_APP_TYPE_STR,
  DEFAULT_VELOCITY_THRESHOLD
  DEFAULT_VELOCITY_THRESHOLD,
  isExternalNwSimulatorScenario
} from '../app-constants';

import {
@@ -333,6 +334,27 @@ export function getNetworkInfo(scenario) {
  return null;
}

/**
 * GIS MOVEMENT class: stationary / low / high.
 * SUMO UEs often have velocity 0 (no GIS path); classify by name or map icon
 * so monaco-harbor cars/peds are not all counted as stationary.
 */
export function ueSpeedClass(pl, velocityThreshold) {
  var v = pl && pl.geoData ? pl.geoData.velocity : 0;
  if (v && v !== 0) {
    return v >= velocityThreshold ? 'hv' : 'lv';
  }
  var name = ((pl && pl.name) || '').toLowerCase();
  var icon = (pl && pl.meta && pl.meta['display.map.icon']) || '';
  if (name.indexOf('ue-car') === 0 || icon.indexOf('car') !== -1) {
    return 'hv';
  }
  if (name.indexOf('ue-ped') === 0 || icon.indexOf('walk') !== -1) {
    return 'lv';
  }
  return 'zv';
}

export function parseUes(scenario) {
  var totalHv = 0, totalLv = 0, totalZv = 0;
  var initHv = -1, initLv = -1, initZv = -1;
@@ -389,20 +411,18 @@ export function parseUes(scenario) {
        for (var l in nl.physicalLocations) {
          var pl = nl.physicalLocations[l];
          if ((pl.type === 'UE') && (pl.geoData)) {
            if (!pl.geoData.velocity || pl.geoData.velocity === 0) {
              totalZv++;
              zvList.push({name: pl.name, parentName: nl.name, geoData: pl.geoData, meta: pl.meta,
                connected: pl.connected, wireless: pl.wireless, wirelessType: pl.wirelessType, macId: pl.macId, processes: pl.processes});
            } else {
              if (pl.geoData.velocity >= velocityThreshold) {
            var entry = {name: pl.name, parentName: nl.name, geoData: pl.geoData, meta: pl.meta,
              connected: pl.connected, wireless: pl.wireless, wirelessType: pl.wirelessType, macId: pl.macId, processes: pl.processes};
            var speedClass = ueSpeedClass(pl, velocityThreshold);
            if (speedClass === 'hv') {
              totalHv++;
                hvList.push({name: pl.name, parentName: nl.name, geoData: pl.geoData, meta: pl.meta,
                  connected: pl.connected, wireless: pl.wireless, wirelessType: pl.wirelessType, macId: pl.macId, processes: pl.processes});
              } else {
              hvList.push(entry);
            } else if (speedClass === 'lv') {
              totalLv++;
                lvList.push({name: pl.name, parentName: nl.name, geoData: pl.geoData, meta: pl.meta,
                  connected: pl.connected, wireless: pl.wireless, wirelessType: pl.wirelessType, macId: pl.macId, processes: pl.processes});
              }
              lvList.push(entry);
            } else {
              totalZv++;
              zvList.push(entry);
            }
          }
        }
@@ -415,6 +435,13 @@ export function parseUes(scenario) {
  if (initLv === -1) { initLv = totalLv; }
  if (initZv === -1) { initZv = totalZv; }

  // Keep all SUMO UEs visible even if CouchDB still has stale 8-static userMeta.
  if (isExternalNwSimulatorScenario(scenario.name, scenario)) {
    initHv = totalHv;
    initLv = totalLv;
    initZv = totalZv;
  }

  return {
    initHv: initHv,
    initLv: initLv,