xref: /aosp_15_r20/external/openscreen/osp/msgs/osp_messages.cddl (revision 3f982cf4871df8771c9d4abe6e9a6f8d829b2736)
1*3f982cf4SFabien Sanglard; Open Screen protocol spec: https://webscreens.github.io/openscreenprotocol/#appendix-a
2*3f982cf4SFabien Sanglard; CDDL spec: https://tools.ietf.org/html/draft-ietf-cbor-cddl-08
3*3f982cf4SFabien Sanglard
4*3f982cf4SFabien Sanglard; type key 10
5*3f982cf4SFabien Sanglardagent-info-request = {
6*3f982cf4SFabien Sanglard  request
7*3f982cf4SFabien Sanglard}
8*3f982cf4SFabien Sanglard
9*3f982cf4SFabien Sanglard; type key 11
10*3f982cf4SFabien Sanglardagent-info-response = {
11*3f982cf4SFabien Sanglard  response
12*3f982cf4SFabien Sanglard  1: agent-info ; agent-info
13*3f982cf4SFabien Sanglard}
14*3f982cf4SFabien Sanglard
15*3f982cf4SFabien Sanglardagent-info = {
16*3f982cf4SFabien Sanglard  0: text ; friendly-name
17*3f982cf4SFabien Sanglard  1: text ; model-name
18*3f982cf4SFabien Sanglard  ; ...
19*3f982cf4SFabien Sanglard}
20*3f982cf4SFabien Sanglard
21*3f982cf4SFabien Sanglard; type key 12
22*3f982cf4SFabien Sanglardagent-status-request = {
23*3f982cf4SFabien Sanglard  request
24*3f982cf4SFabien Sanglard  ? 1: status ; status
25*3f982cf4SFabien Sanglard}
26*3f982cf4SFabien Sanglard
27*3f982cf4SFabien Sanglard; type key 13
28*3f982cf4SFabien Sanglardagent-status-response = {
29*3f982cf4SFabien Sanglard  response
30*3f982cf4SFabien Sanglard  ? 1: status ; status
31*3f982cf4SFabien Sanglard}
32*3f982cf4SFabien Sanglard
33*3f982cf4SFabien Sanglardrequest = (
34*3f982cf4SFabien Sanglard 0: request-id ; request-id
35*3f982cf4SFabien Sanglard)
36*3f982cf4SFabien Sanglard
37*3f982cf4SFabien Sanglardresponse = (
38*3f982cf4SFabien Sanglard 0: request-id ; request-id
39*3f982cf4SFabien Sanglard)
40*3f982cf4SFabien Sanglard
41*3f982cf4SFabien Sanglardrequest-id = uint
42*3f982cf4SFabien Sanglard
43*3f982cf4SFabien Sanglardmicroseconds = uint
44*3f982cf4SFabien Sanglard
45*3f982cf4SFabien Sanglard; type key 1001
46*3f982cf4SFabien Sanglardauthentication-request = {
47*3f982cf4SFabien Sanglard  request
48*3f982cf4SFabien Sanglard  1: authentication-mechanism ; mechanism
49*3f982cf4SFabien Sanglard  2: bytes ; salt
50*3f982cf4SFabien Sanglard  3: uint ; cost
51*3f982cf4SFabien Sanglard}
52*3f982cf4SFabien Sanglard
53*3f982cf4SFabien Sanglard; type key 1002
54*3f982cf4SFabien Sanglardauthentication-response = {
55*3f982cf4SFabien Sanglard  response
56*3f982cf4SFabien Sanglard  1: authentication-response-result ; result
57*3f982cf4SFabien Sanglard  2: bytes ; proof
58*3f982cf4SFabien Sanglard}
59*3f982cf4SFabien Sanglard
60*3f982cf4SFabien Sanglard; type key 1003
61*3f982cf4SFabien Sanglardauthentication-result = {
62*3f982cf4SFabien Sanglard  1: authentication-result-result ; result
63*3f982cf4SFabien Sanglard}
64*3f982cf4SFabien Sanglard
65*3f982cf4SFabien Sanglardauthentication-mechanism = &(
66*3f982cf4SFabien Sanglard  hkdf-of-scrypt-of-psk: 1
67*3f982cf4SFabien Sanglard)
68*3f982cf4SFabien Sanglard
69*3f982cf4SFabien Sanglardauthentication-response-result = &(
70*3f982cf4SFabien Sanglard  ok: 0
71*3f982cf4SFabien Sanglard  unknown-error: 1
72*3f982cf4SFabien Sanglard  mechanism-unknown: 2
73*3f982cf4SFabien Sanglard  salt-too-small: 3
74*3f982cf4SFabien Sanglard  cost-too-low: 4
75*3f982cf4SFabien Sanglard  cost-too-high: 5
76*3f982cf4SFabien Sanglard  secret-unknown: 6
77*3f982cf4SFabien Sanglard  calculation-took-too-long: 7
78*3f982cf4SFabien Sanglard)
79*3f982cf4SFabien Sanglard
80*3f982cf4SFabien Sanglardauthentication-result-result = &(
81*3f982cf4SFabien Sanglard  authenticated: 0
82*3f982cf4SFabien Sanglard  unknown-error: 1
83*3f982cf4SFabien Sanglard  proof-invalid: 2
84*3f982cf4SFabien Sanglard)
85*3f982cf4SFabien Sanglard
86*3f982cf4SFabien Sanglard; type key 14
87*3f982cf4SFabien Sanglardpresentation-url-availability-request = {
88*3f982cf4SFabien Sanglard  request
89*3f982cf4SFabien Sanglard  1: [* text] ; urls
90*3f982cf4SFabien Sanglard  2: microseconds ; watch-duration
91*3f982cf4SFabien Sanglard  3: uint ; watch-id
92*3f982cf4SFabien Sanglard}
93*3f982cf4SFabien Sanglard
94*3f982cf4SFabien Sanglard; type key 15
95*3f982cf4SFabien Sanglardpresentation-url-availability-response = {
96*3f982cf4SFabien Sanglard  response
97*3f982cf4SFabien Sanglard  1: [* url-availability] ; url-availabilities
98*3f982cf4SFabien Sanglard}
99*3f982cf4SFabien Sanglard
100*3f982cf4SFabien Sanglard; type key 103
101*3f982cf4SFabien Sanglardpresentation-url-availability-event = {
102*3f982cf4SFabien Sanglard  1: uint ; watch-id
103*3f982cf4SFabien Sanglard  2: [* url-availability] ; url-availabilities
104*3f982cf4SFabien Sanglard}
105*3f982cf4SFabien Sanglard
106*3f982cf4SFabien Sanglard; idea: use HTTP response codes?
107*3f982cf4SFabien Sanglardurl-availability = &(
108*3f982cf4SFabien Sanglard  available: 0
109*3f982cf4SFabien Sanglard  unavailable: 1
110*3f982cf4SFabien Sanglard  invalid: 10
111*3f982cf4SFabien Sanglard)
112*3f982cf4SFabien Sanglard
113*3f982cf4SFabien Sanglard; type key 104
114*3f982cf4SFabien Sanglardpresentation-start-request = {
115*3f982cf4SFabien Sanglard  request
116*3f982cf4SFabien Sanglard  1: text ; presentation-id
117*3f982cf4SFabien Sanglard  2: text ; url
118*3f982cf4SFabien Sanglard  3: [* http-header] ; headers
119*3f982cf4SFabien Sanglard}
120*3f982cf4SFabien Sanglard
121*3f982cf4SFabien Sanglardhttp-header = [
122*3f982cf4SFabien Sanglard  key: text
123*3f982cf4SFabien Sanglard  value: text
124*3f982cf4SFabien Sanglard]
125*3f982cf4SFabien Sanglard
126*3f982cf4SFabien Sanglard; type key 105
127*3f982cf4SFabien Sanglardpresentation-start-response = {
128*3f982cf4SFabien Sanglard  response
129*3f982cf4SFabien Sanglard  1: &result ; result
130*3f982cf4SFabien Sanglard  2: uint ; connection-id
131*3f982cf4SFabien Sanglard}
132*3f982cf4SFabien Sanglard
133*3f982cf4SFabien Sanglard; type key 106
134*3f982cf4SFabien Sanglardpresentation-termination-request = {
135*3f982cf4SFabien Sanglard  request
136*3f982cf4SFabien Sanglard  1: text ; presentation-id
137*3f982cf4SFabien Sanglard  2: &(
138*3f982cf4SFabien Sanglard    controller-called-terminate: 10
139*3f982cf4SFabien Sanglard    user-terminated-via-controller: 11
140*3f982cf4SFabien Sanglard    unknown: 255
141*3f982cf4SFabien Sanglard  )
142*3f982cf4SFabien Sanglard ; reason
143*3f982cf4SFabien Sanglard}
144*3f982cf4SFabien Sanglard
145*3f982cf4SFabien Sanglard; type key 107
146*3f982cf4SFabien Sanglardpresentation-termination-response = {
147*3f982cf4SFabien Sanglard  response
148*3f982cf4SFabien Sanglard  1: &result ; result
149*3f982cf4SFabien Sanglard}
150*3f982cf4SFabien Sanglard
151*3f982cf4SFabien Sanglard; type key 108
152*3f982cf4SFabien Sanglardpresentation-termination-event = {
153*3f982cf4SFabien Sanglard  1: text ; presentation-id
154*3f982cf4SFabien Sanglard  2: &(
155*3f982cf4SFabien Sanglard    receiver-called-terminate: 1
156*3f982cf4SFabien Sanglard    user-terminated-via-receiver: 2
157*3f982cf4SFabien Sanglard    controller-called-terminate: 10
158*3f982cf4SFabien Sanglard    user-terminated-via-controller: 11
159*3f982cf4SFabien Sanglard    receiver-replaced-presentation: 20
160*3f982cf4SFabien Sanglard    receiver-idle-too-long: 30
161*3f982cf4SFabien Sanglard    receiver-attempted-to-navigate: 31
162*3f982cf4SFabien Sanglard    receiver-powering-down: 100
163*3f982cf4SFabien Sanglard    receiver-crashed: 101
164*3f982cf4SFabien Sanglard    unknown: 255
165*3f982cf4SFabien Sanglard  ) ; reason
166*3f982cf4SFabien Sanglard}
167*3f982cf4SFabien Sanglard
168*3f982cf4SFabien Sanglard; type key 109
169*3f982cf4SFabien Sanglardpresentation-connection-open-request = {
170*3f982cf4SFabien Sanglard  request
171*3f982cf4SFabien Sanglard  1: text ; presentation-id
172*3f982cf4SFabien Sanglard  2: text ; url
173*3f982cf4SFabien Sanglard}
174*3f982cf4SFabien Sanglard
175*3f982cf4SFabien Sanglard; type key 110
176*3f982cf4SFabien Sanglardpresentation-connection-open-response = {
177*3f982cf4SFabien Sanglard  response
178*3f982cf4SFabien Sanglard  1: &result ; result
179*3f982cf4SFabien Sanglard  2: uint; connection-id
180*3f982cf4SFabien Sanglard}
181*3f982cf4SFabien Sanglard
182*3f982cf4SFabien Sanglard; type key 111
183*3f982cf4SFabien Sanglardpresentation-connection-close-request = {
184*3f982cf4SFabien Sanglard  request
185*3f982cf4SFabien Sanglard  1: uint ; connection-id
186*3f982cf4SFabien Sanglard}
187*3f982cf4SFabien Sanglard
188*3f982cf4SFabien Sanglard; type key 112
189*3f982cf4SFabien Sanglardpresentation-connection-close-response = {
190*3f982cf4SFabien Sanglard  response
191*3f982cf4SFabien Sanglard  ; TODO(btolsch): Update the spec or revert.
192*3f982cf4SFabien Sanglard  1: &(success: 0, invalid-connection-id: 1) ; result
193*3f982cf4SFabien Sanglard}
194*3f982cf4SFabien Sanglard
195*3f982cf4SFabien Sanglard; type key 113
196*3f982cf4SFabien Sanglardpresentation-connection-close-event = {
197*3f982cf4SFabien Sanglard  1: uint; connection-id
198*3f982cf4SFabien Sanglard  2: &(
199*3f982cf4SFabien Sanglard    close-method-called: 1
200*3f982cf4SFabien Sanglard    connection-object-discarded: 10
201*3f982cf4SFabien Sanglard    unrecoverable-error-while-sending-or-receiving-message: 100
202*3f982cf4SFabien Sanglard  ) ; reason
203*3f982cf4SFabien Sanglard  ? 3: text ; error-message
204*3f982cf4SFabien Sanglard}
205*3f982cf4SFabien Sanglard
206*3f982cf4SFabien Sanglard; type key 16
207*3f982cf4SFabien Sanglardpresentation-connection-message = {
208*3f982cf4SFabien Sanglard  1: uint ; connection-id
209*3f982cf4SFabien Sanglard  2: bytes / text ; message
210*3f982cf4SFabien Sanglard}
211*3f982cf4SFabien Sanglard
212*3f982cf4SFabien Sanglardstatus = {
213*3f982cf4SFabien Sanglard  status: text
214*3f982cf4SFabien Sanglard}
215*3f982cf4SFabien Sanglard
216*3f982cf4SFabien Sanglardresult = (
217*3f982cf4SFabien Sanglard  success: 1
218*3f982cf4SFabien Sanglard  invalid-url: 10
219*3f982cf4SFabien Sanglard  invalid-presentation-id: 11
220*3f982cf4SFabien Sanglard  timeout: 100
221*3f982cf4SFabien Sanglard  transient-error: 101
222*3f982cf4SFabien Sanglard  permanent-error: 102
223*3f982cf4SFabien Sanglard  terminating: 103
224*3f982cf4SFabien Sanglard  unknown-error: 199
225*3f982cf4SFabien Sanglard)
226