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