blob: fbe95e9adbe99a2ca1d35c3f0cef53a74114b489 [file] [log] [blame]
// 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;
}