diff --git a/kura/org.eclipse.kura.nm/src/main/java/org/eclipse/kura/nm/KuraModemGPSMode.java b/kura/org.eclipse.kura.nm/src/main/java/org/eclipse/kura/nm/KuraModemGPSMode.java index 70844b7c2b..7893c18268 100644 --- a/kura/org.eclipse.kura.nm/src/main/java/org/eclipse/kura/nm/KuraModemGPSMode.java +++ b/kura/org.eclipse.kura.nm/src/main/java/org/eclipse/kura/nm/KuraModemGPSMode.java @@ -1,51 +1,59 @@ package org.eclipse.kura.nm; import java.util.EnumSet; -import java.util.Optional; import java.util.Set; import org.eclipse.kura.nm.enums.MMModemLocationSource; public enum KuraModemGPSMode { - UNMANAGED, - MANAGED_GPS; + KURA_MODEM_GPS_MODE_UNMANAGED("kuraModemGpsModeUnmanaged"), + KURA_MODEM_GPS_MODE_MANAGED_GPS("kuraModemGpsModeManagedGps"); - public static KuraModemGPSMode fromString(String mode) { - switch (mode) { - case "unmanaged": - return KuraModemGPSMode.UNMANAGED; - case "managed-gps": - return KuraModemGPSMode.MANAGED_GPS; - default: - throw new IllegalArgumentException(String.format("Unsupported modem GPS mode value: \"%s\"", mode)); - } + private final String value; + + private KuraModemGPSMode(String value) { + this.value = value; + } + + public String getValue() { + return this.value; } - public static Optional fromString(Optional mode) { - if (mode.isPresent()) { - switch (mode.get()) { - case "unmanaged": - return Optional.of(KuraModemGPSMode.UNMANAGED); - case "managed-gps": - return Optional.of(KuraModemGPSMode.MANAGED_GPS); - default: - return Optional.empty(); + public static KuraModemGPSMode fromString(String name) { + for (KuraModemGPSMode auth : KuraModemGPSMode.values()) { + if (auth.getValue().equals(name)) { + return auth; } - } else { - return Optional.empty(); } + + throw new IllegalArgumentException("Invalid modem GPS mode in snapshot: " + name); } public static Set toMMModemLocationSources(KuraModemGPSMode mode) { switch (mode) { - case UNMANAGED: + case KURA_MODEM_GPS_MODE_UNMANAGED: return EnumSet.of(MMModemLocationSource.MM_MODEM_LOCATION_SOURCE_GPS_UNMANAGED); - case MANAGED_GPS: + case KURA_MODEM_GPS_MODE_MANAGED_GPS: return EnumSet.of(MMModemLocationSource.MM_MODEM_LOCATION_SOURCE_GPS_RAW, MMModemLocationSource.MM_MODEM_LOCATION_SOURCE_GPS_NMEA); default: throw new IllegalArgumentException(String.format("Unsupported modem GPS mode value: \"%s\"", mode)); } } + + public static Set fromMMModemLocationSources(Set sources) { + Set modes = EnumSet.noneOf(KuraModemGPSMode.class); + + if (sources.contains(MMModemLocationSource.MM_MODEM_LOCATION_SOURCE_GPS_UNMANAGED)) { + modes.add(KuraModemGPSMode.KURA_MODEM_GPS_MODE_UNMANAGED); + } + + if (sources.contains(MMModemLocationSource.MM_MODEM_LOCATION_SOURCE_GPS_RAW) + && sources.contains(MMModemLocationSource.MM_MODEM_LOCATION_SOURCE_GPS_NMEA)) { + modes.add(KuraModemGPSMode.KURA_MODEM_GPS_MODE_MANAGED_GPS); + } + + return modes; + } } diff --git a/kura/org.eclipse.kura.nm/src/main/java/org/eclipse/kura/nm/ModemManagerDbusWrapper.java b/kura/org.eclipse.kura.nm/src/main/java/org/eclipse/kura/nm/ModemManagerDbusWrapper.java index 73bfba5ec9..3c39dda7a7 100644 --- a/kura/org.eclipse.kura.nm/src/main/java/org/eclipse/kura/nm/ModemManagerDbusWrapper.java +++ b/kura/org.eclipse.kura.nm/src/main/java/org/eclipse/kura/nm/ModemManagerDbusWrapper.java @@ -53,7 +53,7 @@ protected void setGPS(Optional modemDevicePath, Optional enable boolean isGPSSourceEnabled = enableGPS.isPresent() && enableGPS.get(); KuraModemGPSMode desiredGPSMode = gpsModeString.isPresent() ? KuraModemGPSMode.fromString(gpsModeString.get()) - : KuraModemGPSMode.UNMANAGED; + : KuraModemGPSMode.KURA_MODEM_GPS_MODE_UNMANAGED; Location modemLocation = this.dbusConnection.getRemoteObject(MM_BUS_NAME, modemDevicePath.get(), Location.class); diff --git a/kura/test/org.eclipse.kura.nm.test/src/test/java/org/eclipse/kura/nm/NMDbusConnectorTest.java b/kura/test/org.eclipse.kura.nm.test/src/test/java/org/eclipse/kura/nm/NMDbusConnectorTest.java index 73a345c08f..34828d07da 100644 --- a/kura/test/org.eclipse.kura.nm.test/src/test/java/org/eclipse/kura/nm/NMDbusConnectorTest.java +++ b/kura/test/org.eclipse.kura.nm.test/src/test/java/org/eclipse/kura/nm/NMDbusConnectorTest.java @@ -656,7 +656,7 @@ public void applyShouldWorkWithModemWithEnabledGPSAndUnmanagedMode() throws DBus givenNetworkConfigMapWith("net.interface.1-5.config.dhcpClient4.enabled", true); givenNetworkConfigMapWith("net.interface.1-5.config.apn", "myAwesomeAPN"); givenNetworkConfigMapWith("net.interface.1-5.config.gpsEnabled", true); - givenNetworkConfigMapWith("net.interface.1-5.config.gpsMode", "unmanaged"); + givenNetworkConfigMapWith("net.interface.1-5.config.gpsMode", "kuraModemGpsModeUnmanaged"); givenNetworkConfigMapWith("net.interface.1-5.config.resetTimeout", 0); whenApplyIsCalledWith(this.netConfig); @@ -679,7 +679,7 @@ public void applyShouldWorkWithModemWithEnabledGPSAndManagedMode() throws DBusEx givenNetworkConfigMapWith("net.interface.1-5.config.dhcpClient4.enabled", true); givenNetworkConfigMapWith("net.interface.1-5.config.apn", "myAwesomeAPN"); givenNetworkConfigMapWith("net.interface.1-5.config.gpsEnabled", true); - givenNetworkConfigMapWith("net.interface.1-5.config.gpsMode", "managed-gps"); + givenNetworkConfigMapWith("net.interface.1-5.config.gpsMode", "kuraModemGpsModeManagedGps"); givenNetworkConfigMapWith("net.interface.1-5.config.resetTimeout", 0); whenApplyIsCalledWith(this.netConfig);