summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--protocol/udm.proto73
1 files changed, 57 insertions, 16 deletions
diff --git a/protocol/udm.proto b/protocol/udm.proto
index c928882..0035489 100644
--- a/protocol/udm.proto
+++ b/protocol/udm.proto
@@ -19,6 +19,9 @@
*/
+//TODO: write readable proto description
+
+
enum MODULE_UI_ELEMENT_TYPE {
UI_EMPTY = 0; //helper type to set empty element
@@ -32,13 +35,26 @@ enum MODULE_UI_ELEMENT_TYPE {
message module_ui_element_info {
optional MODULE_UI_ELEMENT_TYPE type = 1 [default = UI_EMPTY];
repeated module_ui_element_info children = 2;
- required string id = 3; //internal element id used to get element value
- optional string name = 4 [default = "not set"];
+ required string id = 3; //internal element id used to get element value (should be unique for every loaded module)
+ optional string name = 4 [default = "not set"]; //can be non unique
+}
+
+message server_ui_element_data_reply {
+ required string id = 1; //should be unique for every loaded module
+ required string data = 2;
+}
+
+message client_ui_element_data_request {
+ repeated string id = 1; //should be unique for for every loaded module
}
+//TODO: settings:
+// children ?
+// dependencies
+// groups ?
+
message setting {
- required string id = 1;
- optional string name = 2 [default = "not set"];
+ optional string name = 2 [default = "not set"]; //should be unique for every loaded module
optional string default_value = 3 [default = "empty"];
optional string value = 4 [default = "empty"];
}
@@ -47,20 +63,20 @@ message settings_info {
repeated setting settings = 1;
}
+//settings_info may be unset here (server settings dependent), can be requested at any time
+
message module_info
{
- required string name = 1;
+ required string name = 1; //unique (used as module id)
required string version = 2;
optional string decription = 3 [default = "no description specified"];
+ required settings_info settings = 4; //may be ampty
+ repeated module_ui_element_info ui = 5; //always complete here
}
-enum CLIENT_MSG_TYPE {
- CLIENT_AUTH_REQUEST = 0;
- CLIENT_DATA_TRANSFER_REQUEST = 1;
-}
message client_auth_info {
@@ -68,30 +84,55 @@ message client_auth_info {
required string password = 2;
}
-message client_data_transfer_info {
- optional int64 data_size = 1;
+
+//TODO: datatransfer proto part
+// it should be in separate connection
+// it should be very simple
+// it should have as smaal overhead as possible, better none at all
+//vaviant 1: client: > request peace of data
+// server: < reply "peace of data" size or error
+// client: if no error and data size is sane start reading "data size"
+// done, server can handle more commands now
+
+//message client_data_transfer_request {
+//}
+
+//message server_data_transfer_reply {
+//}
+
+
+//TOOD: extended ui updates subscriptions proto part (ui data messages on timer, e.t.c.)
+
+//TODO: settings transfer proto part (read, write, notifications ?)
+
+enum CLIENT_MSG_TYPE {
+ CLIENT_AUTH_REQUEST = 0;
+ CLIENT_DATA_TRANSFER_REQUEST = 1;
+ CLIENT_UI_DATA_REQUEST = 2;
}
message client_msg {
required CLIENT_MSG_TYPE type = 1;
- optional string auth_token = 2;
+ optional string auth_token = 2; //this must be set in all message type's except CLIENT_AUTH_REQUEST
optional client_auth_info auth_info = 3;
- optional client_data_transfer_info data_transfer_info = 4;
+ optional client_ui_element_data_request ui_element_data_request = 4;
}
enum SERVER_MSG_TYPE {
SERVER_AUTH_REPLY = 0;
+ SERVER_UI_DATA_REPLY = 1;
}
message server_auth_info {
- required bool status = 1;
- optional string auth_token = 2;
- optional string error_description = 3;
+ required bool status = 1; //true == success, false == error
+ optional string auth_token = 2; //must be set if no error
+ optional string error_description = 3; //readable description must be set on error
}
message server_msg {
required SERVER_MSG_TYPE type = 1;
+ optional server_ui_element_data_reply ui_element_data_reply = 2;
}