From dddec3c7e096fb91ab7d84d116d6ffc31f14d634 Mon Sep 17 00:00:00 2001 From: Mathieu LEFEBVRE Date: Tue, 16 Jun 2026 13:46:58 +0200 Subject: [PATCH 1/3] java/iot3mobility: v0.2.1-dev Signed-off-by: Mathieu LEFEBVRE --- java/iot3/mobility/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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. From 677118ac40bc0ba633bcf59c7ee5cbcf0f3469f5 Mon Sep 17 00:00:00 2001 From: Mathieu LEFEBVRE Date: Tue, 16 Jun 2026 13:46:27 +0200 Subject: [PATCH 2/3] java/iot3mobility: flush all SensorObjects of a RoadSensor when it expires Signed-off-by: Mathieu LEFEBVRE --- .../managers/RoadSensorManager.java | 1 + .../iot3mobility/roadobjects/RoadSensor.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) 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..3bab77a3 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; } From 7637e58838cc56551f2dc6e5c7d71164722cbb7a Mon Sep 17 00:00:00 2001 From: Mathieu LEFEBVRE Date: Tue, 16 Jun 2026 17:20:14 +0200 Subject: [PATCH 3/3] java/iot3mobility: fix CPM v2.1.1 perceived vehicle object classification error JSON schema v2.1.1 changed the vehicle PO classification compared to v1.2.1. Original classification seemed to make more sense (i.e. vehicles only) while the new one os aligned with CAM station type classification (including VRUs). Signed-off-by: Mathieu LEFEBVRE --- .../iot3mobility/roadobjects/RoadSensor.java | 24 +++++++++++++------ .../roadobjects/SensorObjectType.java | 2 ++ 2 files changed, 19 insertions(+), 7 deletions(-) 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 3bab77a3..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 @@ -349,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 }