1 // Copyright 2009 Google Inc. All Rights Reserved. 2 3 package polo.wire.protobuf; 4 5 option java_outer_classname = "PoloProto"; 6 option java_package = "com.google.polo.wire.protobuf"; 7 option optimize_for = LITE_RUNTIME; 8 9 // OuterMessage - base outer message type used in the protocol. 10 11 message OuterMessage { 12 13 // MessageType indicates the type of the enclosed message (serialized in the 14 // `payload` field) 15 enum MessageType { 16 // Initialization phase 17 MESSAGE_TYPE_PAIRING_REQUEST = 10; 18 MESSAGE_TYPE_PAIRING_REQUEST_ACK = 11; 19 20 // Configuration phase 21 MESSAGE_TYPE_OPTIONS = 20; 22 MESSAGE_TYPE_CONFIGURATION = 30; 23 MESSAGE_TYPE_CONFIGURATION_ACK = 31; 24 25 // Pairing phase 26 MESSAGE_TYPE_SECRET = 40; 27 MESSAGE_TYPE_SECRET_ACK = 41; 28 } 29 30 // Protocol status states. 31 enum Status { 32 STATUS_OK = 200; 33 STATUS_ERROR = 400; 34 STATUS_BAD_CONFIGURATION = 401; 35 STATUS_BAD_SECRET = 402; 36 } 37 38 required uint32 protocol_version = 1 [default = 1]; 39 40 // Protocol status. Any status other than STATUS_OK implies a fault. 41 required Status status = 2; 42 43 // Encapsulated message. These fields are required if status is STATUS_OK. 44 optional MessageType type = 3; 45 optional bytes payload = 4; 46 47 } 48 49 50 // 51 // Initialization messages 52 // 53 54 message PairingRequest { 55 // String name of the service to pair with. The name used should be an 56 // established convention of the application protocol. 57 required string service_name = 1; 58 59 // Descriptive name of the client. 60 optional string client_name = 2; 61 } 62 63 message PairingRequestAck { 64 // Descriptive name of the server. 65 optional string server_name = 1; 66 } 67 68 69 // 70 // Configuration messages 71 // 72 73 message Options { 74 message Encoding { 75 enum EncodingType { 76 ENCODING_TYPE_UNKNOWN = 0; 77 ENCODING_TYPE_ALPHANUMERIC = 1; 78 ENCODING_TYPE_NUMERIC = 2; 79 ENCODING_TYPE_HEXADECIMAL = 3; 80 ENCODING_TYPE_QRCODE = 4; 81 } 82 83 required EncodingType type = 1; 84 required uint32 symbol_length = 2; 85 } 86 87 enum RoleType { 88 ROLE_TYPE_UNKNOWN = 0; 89 ROLE_TYPE_INPUT = 1; 90 ROLE_TYPE_OUTPUT = 2; 91 } 92 93 // List of encodings this endpoint accepts when serving as an input device. 94 repeated Encoding input_encodings = 1; 95 96 // List of encodings this endpoint can generate as an output device. 97 repeated Encoding output_encodings = 2; 98 99 // Preferred role, if any. 100 optional RoleType preferred_role = 3; 101 } 102 103 message Configuration { 104 // The encoding to be used in this session. 105 required Options.Encoding encoding = 1; 106 107 // The role of the client (ie, the one initiating pairing). This implies the 108 // peer (server) acts as the complementary role. 109 required Options.RoleType client_role = 2; 110 } 111 112 message ConfigurationAck { 113 } 114 115 116 // 117 // Pairing messages 118 // 119 120 message Secret { 121 required bytes secret = 1; 122 } 123 124 message SecretAck { 125 required bytes secret = 1; 126 } 127 128