diff --git a/java/iot3/mobility/build.gradle b/java/iot3/mobility/build.gradle index bc106dc3..9e33038b 100644 --- a/java/iot3/mobility/build.gradle +++ b/java/iot3/mobility/build.gradle @@ -12,7 +12,7 @@ plugins { } group 'com.orange.iot3mobility' -version '0.2.0' +version '0.2.1-dev' repositories { // Use Maven Central for resolving dependencies. diff --git a/java/iot3/mobility/src/main/java/com/orange/iot3mobility/managers/RoadSensorManager.java b/java/iot3/mobility/src/main/java/com/orange/iot3mobility/managers/RoadSensorManager.java index 4d5a3241..f891af87 100644 --- a/java/iot3/mobility/src/main/java/com/orange/iot3mobility/managers/RoadSensorManager.java +++ b/java/iot3/mobility/src/main/java/com/orange/iot3mobility/managers/RoadSensorManager.java @@ -115,6 +115,7 @@ private static void checkAndRemoveExpiredObjects() { ROAD_SENSOR_MAP.values().remove(roadSensor); } ioT3RoadSensorCallback.roadSensorExpired(roadSensor); + roadSensor.flushAllSensorObjects(); } } } diff --git a/java/iot3/mobility/src/main/java/com/orange/iot3mobility/roadobjects/RoadSensor.java b/java/iot3/mobility/src/main/java/com/orange/iot3mobility/roadobjects/RoadSensor.java index 77359581..9f823daf 100644 --- a/java/iot3/mobility/src/main/java/com/orange/iot3mobility/roadobjects/RoadSensor.java +++ b/java/iot3/mobility/src/main/java/com/orange/iot3mobility/roadobjects/RoadSensor.java @@ -270,6 +270,24 @@ private void checkAndRemoveExpiredObjects(boolean forceDelete) { } } + /** + * Use when a RoadSensor expires or is removed. + */ + public void flushAllSensorObjects() { + synchronized (sensorObjects) { + Iterator iterator = sensorObjects.iterator(); + while (iterator.hasNext()) { + SensorObject sensorObject = iterator.next(); + iterator.remove(); + synchronized (sensorObjectMap) { + // Remove by value + sensorObjectMap.values().remove(sensorObject); + } + ioT3RoadSensorCallback.sensorObjectExpired(sensorObject); + } + } + } + public ArrayList getSensorObjects() { return sensorObjects; } @@ -331,13 +349,23 @@ private SensorObjectType cpm211ObjectTypeFromObjectClass( com.orange.iot3mobility.messages.cpm.v211.model.perceivedobjectcontainer.ObjectClass objectClass) { if(objectClass.vehicle() != null) { return switch (objectClass.vehicle()) { - case 1 -> SensorObjectType.PASSENGER_CAR; - case 2 -> SensorObjectType.BUS; - case 3 -> SensorObjectType.LIGHT_TRUCK; - case 4 -> SensorObjectType.HEAVY_TRUCK; - case 5 -> SensorObjectType.TRAILER; - case 6, 8 -> SensorObjectType.SPECIAL_VEHICLES; - case 7 -> SensorObjectType.TRAM; + //*** doesn't make much sense to have VRUs here - v2.1.1 spec issue? *** + case 1 -> SensorObjectType.PEDESTRIAN; + case 2 -> SensorObjectType.CYCLIST; + case 3 -> SensorObjectType.MOPED; + case 4 -> SensorObjectType.MOTORCYCLE; + //*********************************************************************** + case 5 -> SensorObjectType.PASSENGER_CAR; + case 6 -> SensorObjectType.BUS; + case 7 -> SensorObjectType.LIGHT_TRUCK; + case 8 -> SensorObjectType.HEAVY_TRUCK; + case 9 -> SensorObjectType.TRAILER; + case 10 -> SensorObjectType.SPECIAL_VEHICLES; + case 11 -> SensorObjectType.TRAM; + case 12 -> SensorObjectType.LIGHT_VRU_VEHICLE; + case 13 -> SensorObjectType.ANIMAL; + case 14 -> SensorObjectType.AGRICULTURAL; + case 15 -> SensorObjectType.ROAD_SIDE_UNIT; default -> SensorObjectType.UNKNOWN; }; } else if(objectClass.vru() != null) { diff --git a/java/iot3/mobility/src/main/java/com/orange/iot3mobility/roadobjects/SensorObjectType.java b/java/iot3/mobility/src/main/java/com/orange/iot3mobility/roadobjects/SensorObjectType.java index c93e3b60..0ca0e278 100644 --- a/java/iot3/mobility/src/main/java/com/orange/iot3mobility/roadobjects/SensorObjectType.java +++ b/java/iot3/mobility/src/main/java/com/orange/iot3mobility/roadobjects/SensorObjectType.java @@ -16,10 +16,12 @@ public enum SensorObjectType { TRAILER, SPECIAL_VEHICLES, TRAM, + LIGHT_VRU_VEHICLE, PEDESTRIAN_GROUP, CYCLIST_GROUP, MOTORCYCLE_GROUP, ANIMAL, ANIMAL_GROUP, + AGRICULTURAL, ROAD_SIDE_UNIT }