summaryrefslogtreecommitdiff
path: root/proto/polo.proto
diff options
context:
space:
mode:
Diffstat (limited to 'proto/polo.proto')
-rw-r--r--proto/polo.proto127
1 files changed, 127 insertions, 0 deletions
diff --git a/proto/polo.proto b/proto/polo.proto
new file mode 100644
index 0000000..fbe95e9
--- /dev/null
+++ b/proto/polo.proto
@@ -0,0 +1,127 @@
+// Copyright 2009 Google Inc. All Rights Reserved.
+
+package polo.wire.protobuf;
+
+option java_outer_classname = "PoloProto";
+option java_package = "com.google.polo.wire.protobuf";
+option optimize_for = LITE_RUNTIME;
+
+// OuterMessage - base outer message type used in the protocol.
+
+message OuterMessage {
+
+ // MessageType indicates the type of the enclosed message (serialized in the
+ // `payload` field)
+ enum MessageType {
+ // Initialization phase
+ MESSAGE_TYPE_PAIRING_REQUEST = 10;
+ MESSAGE_TYPE_PAIRING_REQUEST_ACK = 11;
+
+ // Configuration phase
+ MESSAGE_TYPE_OPTIONS = 20;
+ MESSAGE_TYPE_CONFIGURATION = 30;
+ MESSAGE_TYPE_CONFIGURATION_ACK = 31;
+
+ // Pairing phase
+ MESSAGE_TYPE_SECRET = 40;
+ MESSAGE_TYPE_SECRET_ACK = 41;
+ }
+
+ // Protocol status states.
+ enum Status {
+ STATUS_OK = 200;
+ STATUS_ERROR = 400;
+ STATUS_BAD_CONFIGURATION = 401;
+ STATUS_BAD_SECRET = 402;
+ }
+
+ required uint32 protocol_version = 1 [default = 1];
+
+ // Protocol status. Any status other than STATUS_OK implies a fault.
+ required Status status = 2;
+
+ // Encapsulated message. These fields are required if status is STATUS_OK.
+ optional MessageType type = 3;
+ optional bytes payload = 4;
+
+}
+
+
+//
+// Initialization messages
+//
+
+message PairingRequest {
+ // String name of the service to pair with. The name used should be an
+ // established convention of the application protocol.
+ required string service_name = 1;
+
+ // Descriptive name of the client.
+ optional string client_name = 2;
+}
+
+message PairingRequestAck {
+ // Descriptive name of the server.
+ optional string server_name = 1;
+}
+
+
+//
+// Configuration messages
+//
+
+message Options {
+ message Encoding {
+ enum EncodingType {
+ ENCODING_TYPE_UNKNOWN = 0;
+ ENCODING_TYPE_ALPHANUMERIC = 1;
+ ENCODING_TYPE_NUMERIC = 2;
+ ENCODING_TYPE_HEXADECIMAL = 3;
+ ENCODING_TYPE_QRCODE = 4;
+ }
+
+ required EncodingType type = 1;
+ required uint32 symbol_length = 2;
+ }
+
+ enum RoleType {
+ ROLE_TYPE_UNKNOWN = 0;
+ ROLE_TYPE_INPUT = 1;
+ ROLE_TYPE_OUTPUT = 2;
+ }
+
+ // List of encodings this endpoint accepts when serving as an input device.
+ repeated Encoding input_encodings = 1;
+
+ // List of encodings this endpoint can generate as an output device.
+ repeated Encoding output_encodings = 2;
+
+ // Preferred role, if any.
+ optional RoleType preferred_role = 3;
+}
+
+message Configuration {
+ // The encoding to be used in this session.
+ required Options.Encoding encoding = 1;
+
+ // The role of the client (ie, the one initiating pairing). This implies the
+ // peer (server) acts as the complementary role.
+ required Options.RoleType client_role = 2;
+}
+
+message ConfigurationAck {
+}
+
+
+//
+// Pairing messages
+//
+
+message Secret {
+ required bytes secret = 1;
+}
+
+message SecretAck {
+ required bytes secret = 1;
+}
+