You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
3.8 KiB
226 lines
3.8 KiB
4 months ago
|
; Open Screen protocol spec: https://webscreens.github.io/openscreenprotocol/#appendix-a
|
||
|
; CDDL spec: https://tools.ietf.org/html/draft-ietf-cbor-cddl-08
|
||
|
|
||
|
; type key 10
|
||
|
agent-info-request = {
|
||
|
request
|
||
|
}
|
||
|
|
||
|
; type key 11
|
||
|
agent-info-response = {
|
||
|
response
|
||
|
1: agent-info ; agent-info
|
||
|
}
|
||
|
|
||
|
agent-info = {
|
||
|
0: text ; friendly-name
|
||
|
1: text ; model-name
|
||
|
; ...
|
||
|
}
|
||
|
|
||
|
; type key 12
|
||
|
agent-status-request = {
|
||
|
request
|
||
|
? 1: status ; status
|
||
|
}
|
||
|
|
||
|
; type key 13
|
||
|
agent-status-response = {
|
||
|
response
|
||
|
? 1: status ; status
|
||
|
}
|
||
|
|
||
|
request = (
|
||
|
0: request-id ; request-id
|
||
|
)
|
||
|
|
||
|
response = (
|
||
|
0: request-id ; request-id
|
||
|
)
|
||
|
|
||
|
request-id = uint
|
||
|
|
||
|
microseconds = uint
|
||
|
|
||
|
; type key 1001
|
||
|
authentication-request = {
|
||
|
request
|
||
|
1: authentication-mechanism ; mechanism
|
||
|
2: bytes ; salt
|
||
|
3: uint ; cost
|
||
|
}
|
||
|
|
||
|
; type key 1002
|
||
|
authentication-response = {
|
||
|
response
|
||
|
1: authentication-response-result ; result
|
||
|
2: bytes ; proof
|
||
|
}
|
||
|
|
||
|
; type key 1003
|
||
|
authentication-result = {
|
||
|
1: authentication-result-result ; result
|
||
|
}
|
||
|
|
||
|
authentication-mechanism = &(
|
||
|
hkdf-of-scrypt-of-psk: 1
|
||
|
)
|
||
|
|
||
|
authentication-response-result = &(
|
||
|
ok: 0
|
||
|
unknown-error: 1
|
||
|
mechanism-unknown: 2
|
||
|
salt-too-small: 3
|
||
|
cost-too-low: 4
|
||
|
cost-too-high: 5
|
||
|
secret-unknown: 6
|
||
|
calculation-took-too-long: 7
|
||
|
)
|
||
|
|
||
|
authentication-result-result = &(
|
||
|
authenticated: 0
|
||
|
unknown-error: 1
|
||
|
proof-invalid: 2
|
||
|
)
|
||
|
|
||
|
; type key 14
|
||
|
presentation-url-availability-request = {
|
||
|
request
|
||
|
1: [* text] ; urls
|
||
|
2: microseconds ; watch-duration
|
||
|
3: uint ; watch-id
|
||
|
}
|
||
|
|
||
|
; type key 15
|
||
|
presentation-url-availability-response = {
|
||
|
response
|
||
|
1: [* url-availability] ; url-availabilities
|
||
|
}
|
||
|
|
||
|
; type key 103
|
||
|
presentation-url-availability-event = {
|
||
|
1: uint ; watch-id
|
||
|
2: [* url-availability] ; url-availabilities
|
||
|
}
|
||
|
|
||
|
; idea: use HTTP response codes?
|
||
|
url-availability = &(
|
||
|
available: 0
|
||
|
unavailable: 1
|
||
|
invalid: 10
|
||
|
)
|
||
|
|
||
|
; type key 104
|
||
|
presentation-start-request = {
|
||
|
request
|
||
|
1: text ; presentation-id
|
||
|
2: text ; url
|
||
|
3: [* http-header] ; headers
|
||
|
}
|
||
|
|
||
|
http-header = [
|
||
|
key: text
|
||
|
value: text
|
||
|
]
|
||
|
|
||
|
; type key 105
|
||
|
presentation-start-response = {
|
||
|
response
|
||
|
1: &result ; result
|
||
|
2: uint ; connection-id
|
||
|
}
|
||
|
|
||
|
; type key 106
|
||
|
presentation-termination-request = {
|
||
|
request
|
||
|
1: text ; presentation-id
|
||
|
2: &(
|
||
|
controller-called-terminate: 10
|
||
|
user-terminated-via-controller: 11
|
||
|
unknown: 255
|
||
|
)
|
||
|
; reason
|
||
|
}
|
||
|
|
||
|
; type key 107
|
||
|
presentation-termination-response = {
|
||
|
response
|
||
|
1: &result ; result
|
||
|
}
|
||
|
|
||
|
; type key 108
|
||
|
presentation-termination-event = {
|
||
|
1: text ; presentation-id
|
||
|
2: &(
|
||
|
receiver-called-terminate: 1
|
||
|
user-terminated-via-receiver: 2
|
||
|
controller-called-terminate: 10
|
||
|
user-terminated-via-controller: 11
|
||
|
receiver-replaced-presentation: 20
|
||
|
receiver-idle-too-long: 30
|
||
|
receiver-attempted-to-navigate: 31
|
||
|
receiver-powering-down: 100
|
||
|
receiver-crashed: 101
|
||
|
unknown: 255
|
||
|
) ; reason
|
||
|
}
|
||
|
|
||
|
; type key 109
|
||
|
presentation-connection-open-request = {
|
||
|
request
|
||
|
1: text ; presentation-id
|
||
|
2: text ; url
|
||
|
}
|
||
|
|
||
|
; type key 110
|
||
|
presentation-connection-open-response = {
|
||
|
response
|
||
|
1: &result ; result
|
||
|
2: uint; connection-id
|
||
|
}
|
||
|
|
||
|
; type key 111
|
||
|
presentation-connection-close-request = {
|
||
|
request
|
||
|
1: uint ; connection-id
|
||
|
}
|
||
|
|
||
|
; type key 112
|
||
|
presentation-connection-close-response = {
|
||
|
response
|
||
|
; TODO(btolsch): Update the spec or revert.
|
||
|
1: &(success: 0, invalid-connection-id: 1) ; result
|
||
|
}
|
||
|
|
||
|
; type key 113
|
||
|
presentation-connection-close-event = {
|
||
|
1: uint; connection-id
|
||
|
2: &(
|
||
|
close-method-called: 1
|
||
|
connection-object-discarded: 10
|
||
|
unrecoverable-error-while-sending-or-receiving-message: 100
|
||
|
) ; reason
|
||
|
? 3: text ; error-message
|
||
|
}
|
||
|
|
||
|
; type key 16
|
||
|
presentation-connection-message = {
|
||
|
1: uint ; connection-id
|
||
|
2: bytes / text ; message
|
||
|
}
|
||
|
|
||
|
status = {
|
||
|
status: text
|
||
|
}
|
||
|
|
||
|
result = (
|
||
|
success: 1
|
||
|
invalid-url: 10
|
||
|
invalid-presentation-id: 11
|
||
|
timeout: 100
|
||
|
transient-error: 101
|
||
|
permanent-error: 102
|
||
|
terminating: 103
|
||
|
unknown-error: 199
|
||
|
)
|