diff options
Diffstat (limited to 'proto/polo.proto')
-rw-r--r-- | proto/polo.proto | 127 |
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; +} + |