// 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; }