From 976df6ca2372333aab0252ddba29eb06b223e272 Mon Sep 17 00:00:00 2001
From: Frank Rohde <frank.rohde@tu-dresden.de>
Date: Fri, 17 Sep 2021 18:30:05 +0200
Subject: [PATCH] many additions, some adjustments to SimpleScene.proto

---
 interfaces/SimpleScene/SimpleScene.proto | 64 ++++++++++++++++++++----
 1 file changed, 53 insertions(+), 11 deletions(-)

diff --git a/interfaces/SimpleScene/SimpleScene.proto b/interfaces/SimpleScene/SimpleScene.proto
index 06a2a7d..7414919 100644
--- a/interfaces/SimpleScene/SimpleScene.proto
+++ b/interfaces/SimpleScene/SimpleScene.proto
@@ -9,41 +9,78 @@ message IposConfig {
 message IposObjectConfig {
     string id = 1; // unique for each object, but there may be multiple positioning sensors for that object
     string sensorId = 2; // unique (each sensor localizes a single object)
-    string type = 3; // CeTI will send BOX,BIN,ZONE,ROBOT,HUMAN,OTHER
+    string agentType = 3; // CeTI will send BOX,BIN,ZONE,ROBOT,HUMAN,OTHER
+	string sensorType = 4; // BLUETOOTH, UWB, NFC, RFID, IMU...
 }
 
 message IposPositionUpdate {
   repeated IposObject object = 1;
 }
 
+message IposExitNotification {
+  repeated IposObject object = 1;
+}
+
 message IposObject {
   string id = 1; // unique for each object, but there may be multiple sensors
   string sensorId = 2; //unique
   string type = 3; // Applications may send BOX,BIN,ZONE,ROBOT,HUMAN,OTHER
-  IposRelativePosition position = 4;
+  IposPosition position = 4;
   IposSimpleOrientation orientation = 5;
   string lastPosUpdate = 6; // https://en.wikipedia.org/wiki/ISO_8601
 }
 
-message IposFrame {
+message IposFrameConfig {
   string id = 1; // unique for every frame, used for relative coordinates
   IposSpace space = 2; // cube defining the extension, might be (0,0,0)
-  IposPosition position = 3; // centre of the "frame" cube, absolute
-  float delta = 4; // min. Position to trigger a position update
+  IposPosition position = 3; // centre of the "frame" cube
+}
+
+message RefSystem {
+	string id = 1;
+	IposPosition position = 2; // position of origin of RefSystem. May be relative or absolute
+}
+
+message IposMonitoringRequest {
+	string frameId = 1;
+	float delta = 2; // min. change in position to trigger a position update
+	float updateFrequency = 3; // defines how many times per second a PositionUpdateEvent is sent
+	repeated string type = 4; // object-types to be observed; CeTI will send BOX,BIN,ZONE,ROBOT,HUMAN,OTHER
+	repeated string id = 5; // object-ids to be observed
+	string fusionStrategy = 6; // e.g., "accuracy" for accuracy-optimized monitoring if multiple positions sensors per agent
+	bool exit_notification = 7; // IPos will notify receiver when object has left the frame
+	repeated string properties = 8; // properties that shall be monitored: position or id or type
+	string requestorId = 9; // a requestor is, e.g., the OSM-App; FW requires this info to contact the requestor using a certain communication protocol. 
+	string requestorProtocol = 10; // communication protocol, e.g., "mqtt"; Assumption: requestor = receiver
 }
 
-// relative coordinates
-message IposRelativePosition {
-  string IposFrame_id = 1;
-  IposPosition pos = 2;
+message IposMonitoringResponse {
+	string frameId = 1;
+	string monitoringTaskId = 2;
+	string error = 3;
+}
+
+message IposMonitoringUpdateRequest {
+	string monitoringTaskId = 1;
+	IposMonitoringRequest monitoringRequest = 2; // setting delta and updateFrequency to -1 cancels the monitoring task
 }
 
-// relative coordinates
 message IposPosition {
+  string refSystemId = 1; // e.g., "WGS84" if absolute position, "ROOT" for testcases or if specific absolute position is actually irrelevant
+  IposPoint3D point = 2;
+  float accuracy = 3; // object is with 95% probability within x metres of this point (gaussian distribution)
+}
+
+message IposPoint3D {
   float x = 1; // pos in x direction in m
   float y = 2; // pos in y direction in m
   float z = 3; // pos in z direction in m (up)
-  float accuracy = 4; // object is with 95% probability within x metres of this point (gaussian distribution)
+}
+
+message POI { // point-of-interest
+	string description = 1; // e.g., "tag"
+	map<string, string> data = 2; // e.g., "id" -> tag-id; "type" -> "nfc"
+	IposPosition position = 3;
 }
 
 message IposSpace {
@@ -58,3 +95,8 @@ message IposSimpleOrientation {
   float z = 3; // there is no orientation
   float w = 4; // available
 }
+
+message SensorRegistrationRequest {
+	IposObjectConfig objectConfig = 1; // depending on sensorTyp a type-specific information will be sent
+}
+// note: Beacon-positions are POIs and should be sent to sensor after registration. Bluetooth/UWB sensor need to know a reference system id. All Beacon-position sent to the Bluetooth/UWB sensor should have the same reference system id
\ No newline at end of file
-- 
GitLab