@kusinta/iot-schema 0.2.0-beta.19 → 0.2.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/kusinta/iot/access/v1/acl_pb.d.ts +121 -3
- package/src/kusinta/iot/access/v1/acl_pb.js +19 -2
- package/src/kusinta/iot/access/v1/roles_pb.d.ts +102 -0
- package/src/kusinta/iot/access/v1/roles_pb.js +81 -1
- package/src/kusinta/iot/climate/v1/climate_pb.d.ts +259 -15
- package/src/kusinta/iot/climate/v1/climate_pb.js +54 -1
- package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +6 -1
- package/src/kusinta/iot/device/v1/device_event_pb.d.ts +87 -5
- package/src/kusinta/iot/device/v1/device_event_pb.js +1 -1
- package/src/kusinta/iot/device/v1/device_pb.d.ts +9 -1
- package/src/kusinta/iot/link/v1/link_pb.d.ts +17 -0
- package/src/kusinta/iot/link/v1/link_pb.js +1 -1
- package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +7 -0
- package/src/kusinta/iot/space/v1/space_pb.d.ts +62 -2
- package/src/kusinta/iot/space/v1/space_pb.js +9 -1
- package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +170 -5
- package/src/kusinta/iot/webrtc/v1/device_state_pb.js +33 -5
- package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +46 -10
- package/src/kusinta/iot/webrtc/v1/envelope_pb.js +1 -1
- package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +275 -19
- package/src/kusinta/iot/webrtc/v1/management_pb.js +32 -2
- package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +34 -4
- package/src/kusinta/iot/webrtc/v1/permission_push_pb.js +1 -1
|
@@ -90,6 +90,13 @@ export declare const IceCandidateSchema: GenMessage<IceCandidate>;
|
|
|
90
90
|
* Never an acknowledgement. A heartbeat answers no message and must not be
|
|
91
91
|
* treated as confirming one.
|
|
92
92
|
*
|
|
93
|
+
* On GatewayConnect it also lets the api-server judge whether the gateway is
|
|
94
|
+
* present. A gateway is present while its stream is open, and never lets it
|
|
95
|
+
* carry nothing for more than 30 seconds: a heartbeat fills any longer silence.
|
|
96
|
+
* A stream that has carried nothing for 90 seconds may be taken as gone, even
|
|
97
|
+
* when the transport has not yet said so. That is the gateway's presence and
|
|
98
|
+
* nothing more: a present gateway may still have lost its devices.
|
|
99
|
+
*
|
|
93
100
|
* @generated from message kusinta.iot.signaling.v1.HeartBeat
|
|
94
101
|
*/
|
|
95
102
|
export declare type HeartBeat = Message<"kusinta.iot.signaling.v1.HeartBeat"> & {
|
|
@@ -6,6 +6,7 @@ import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
|
6
6
|
import type { Message } from "@bufbuild/protobuf";
|
|
7
7
|
import type { DeviceId, GatewayId, SpaceId, TenantId, UserId } from "../../identity/v1/identity_pb.js";
|
|
8
8
|
import type { SpaceType } from "../../common/v1/types_pb.js";
|
|
9
|
+
import type { MembershipRelation } from "../../access/v1/roles_pb.js";
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Describes the file kusinta/iot/space/v1/space.proto.
|
|
@@ -51,19 +52,27 @@ export declare type Space = Message<"kusinta.iot.space.v1.Space"> & {
|
|
|
51
52
|
parentSpaceId?: SpaceId | undefined;
|
|
52
53
|
|
|
53
54
|
/**
|
|
55
|
+
* Filtered to the spaces the caller reaches, as device_ids is.
|
|
56
|
+
*
|
|
54
57
|
* @generated from field: repeated kusinta.iot.identity.v1.SpaceId sub_space_ids = 7;
|
|
55
58
|
*/
|
|
56
59
|
subSpaceIds: SpaceId[];
|
|
57
60
|
|
|
58
61
|
/**
|
|
62
|
+
* Filtered to the devices the caller may see (see webrtc.v1.SpaceTree): for service, no
|
|
63
|
+
* device a resident owns.
|
|
64
|
+
*
|
|
59
65
|
* @generated from field: repeated kusinta.iot.identity.v1.DeviceId device_ids = 8;
|
|
60
66
|
*/
|
|
61
67
|
deviceIds: DeviceId[];
|
|
62
68
|
|
|
63
69
|
/**
|
|
64
|
-
*
|
|
70
|
+
* Superseded by members, which can say that more than one person lives in an apartment,
|
|
71
|
+
* and how each member stands to the space. A gateway leaves it unset, so a client that
|
|
72
|
+
* still reads it sees no resident anywhere; read members instead.
|
|
65
73
|
*
|
|
66
|
-
* @generated from field: kusinta.iot.identity.v1.UserId resident_user_id = 9;
|
|
74
|
+
* @generated from field: kusinta.iot.identity.v1.UserId resident_user_id = 9 [deprecated = true];
|
|
75
|
+
* @deprecated
|
|
67
76
|
*/
|
|
68
77
|
residentUserId?: UserId | undefined;
|
|
69
78
|
|
|
@@ -86,6 +95,34 @@ export declare type Space = Message<"kusinta.iot.space.v1.Space"> & {
|
|
|
86
95
|
* @generated from field: string time_zone = 12;
|
|
87
96
|
*/
|
|
88
97
|
timeZone: string;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Who is filed directly on this space, and how each stands to it. Members of a space
|
|
101
|
+
* above it are listed there, not here.
|
|
102
|
+
*
|
|
103
|
+
* Filled according to who asks, since a membership list says who lives where:
|
|
104
|
+
*
|
|
105
|
+
* * a caller holding ROLE_PROPERTY_OWNER or ROLE_GATEWAY_ADMIN who reaches the space
|
|
106
|
+
* sees every member — for a home they see as service, as it stood at the last
|
|
107
|
+
* quarter hour, so that a move in or out is not timed by polling;
|
|
108
|
+
* * a resident of an apartment sees every member filed on it or on its rooms — who they
|
|
109
|
+
* live with, and anyone filed on their home as service, since being filed on a home
|
|
110
|
+
* is an act on it its residents should see. Service reach from a building or floor
|
|
111
|
+
* above is not listed; webrtc.v1.PrivacyDisclosure tells them what kinds of party
|
|
112
|
+
* hold it, without naming anyone;
|
|
113
|
+
* * anyone else sees none, residents of a building or floor included.
|
|
114
|
+
*
|
|
115
|
+
* @generated from field: repeated kusinta.iot.space.v1.SpaceMember members = 13;
|
|
116
|
+
*/
|
|
117
|
+
members: SpaceMember[];
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Set when members are not listed to this caller, so that an empty list is not read as
|
|
121
|
+
* nobody being filed here.
|
|
122
|
+
*
|
|
123
|
+
* @generated from field: bool members_withheld = 14;
|
|
124
|
+
*/
|
|
125
|
+
membersWithheld: boolean;
|
|
89
126
|
};
|
|
90
127
|
|
|
91
128
|
/**
|
|
@@ -94,3 +131,26 @@ export declare type Space = Message<"kusinta.iot.space.v1.Space"> & {
|
|
|
94
131
|
*/
|
|
95
132
|
export declare const SpaceSchema: GenMessage<Space>;
|
|
96
133
|
|
|
134
|
+
/**
|
|
135
|
+
* One membership of a space.
|
|
136
|
+
*
|
|
137
|
+
* @generated from message kusinta.iot.space.v1.SpaceMember
|
|
138
|
+
*/
|
|
139
|
+
export declare type SpaceMember = Message<"kusinta.iot.space.v1.SpaceMember"> & {
|
|
140
|
+
/**
|
|
141
|
+
* @generated from field: kusinta.iot.identity.v1.UserId user_id = 1;
|
|
142
|
+
*/
|
|
143
|
+
userId?: UserId | undefined;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* @generated from field: kusinta.iot.access.v1.MembershipRelation relation = 2;
|
|
147
|
+
*/
|
|
148
|
+
relation: MembershipRelation;
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Describes the message kusinta.iot.space.v1.SpaceMember.
|
|
153
|
+
* Use `create(SpaceMemberSchema)` to create a new message.
|
|
154
|
+
*/
|
|
155
|
+
export declare const SpaceMemberSchema: GenMessage<SpaceMember>;
|
|
156
|
+
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
|
|
5
5
|
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
6
|
+
import { file_kusinta_iot_access_v1_roles } from "../../access/v1/roles_pb.js";
|
|
6
7
|
import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb.js";
|
|
7
8
|
import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
|
|
8
9
|
|
|
@@ -10,7 +11,7 @@ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identit
|
|
|
10
11
|
* Describes the file kusinta/iot/space/v1/space.proto.
|
|
11
12
|
*/
|
|
12
13
|
export const file_kusinta_iot_space_v1_space = /*@__PURE__*/
|
|
13
|
-
fileDesc("
|
|
14
|
+
fileDesc("CiBrdXNpbnRhL2lvdC9zcGFjZS92MS9zcGFjZS5wcm90bxIUa3VzaW50YS5pb3Quc3BhY2UudjEi3AQKBVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI0CgpzcGFjZV90eXBlGAIgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZRIMCgRuYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEg0KBWZsb29yGAUgASgFEjkKD3BhcmVudF9zcGFjZV9pZBgGIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNwoNc3ViX3NwYWNlX2lkcxgHIAMoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNQoKZGV2aWNlX2lkcxgIIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEj0KEHJlc2lkZW50X3VzZXJfaWQYCSABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWRCAhgBEjQKCXRlbmFudF9pZBgKIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlRlbmFudElkEjYKCmdhdGV3YXlfaWQYCyABKAsyIi5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5HYXRld2F5SWQSEQoJdGltZV96b25lGAwgASgJEjIKB21lbWJlcnMYDSADKAsyIS5rdXNpbnRhLmlvdC5zcGFjZS52MS5TcGFjZU1lbWJlchIYChBtZW1iZXJzX3dpdGhoZWxkGA4gASgIInwKC1NwYWNlTWVtYmVyEjAKB3VzZXJfaWQYASABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSOwoIcmVsYXRpb24YAiABKA4yKS5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuTWVtYmVyc2hpcFJlbGF0aW9uQgJIAWIGcHJvdG8z", [file_kusinta_iot_access_v1_roles, file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity]);
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Describes the message kusinta.iot.space.v1.Space.
|
|
@@ -19,3 +20,10 @@ export const file_kusinta_iot_space_v1_space = /*@__PURE__*/
|
|
|
19
20
|
export const SpaceSchema = /*@__PURE__*/
|
|
20
21
|
messageDesc(file_kusinta_iot_space_v1_space, 0);
|
|
21
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Describes the message kusinta.iot.space.v1.SpaceMember.
|
|
25
|
+
* Use `create(SpaceMemberSchema)` to create a new message.
|
|
26
|
+
*/
|
|
27
|
+
export const SpaceMemberSchema = /*@__PURE__*/
|
|
28
|
+
messageDesc(file_kusinta_iot_space_v1_space, 1);
|
|
29
|
+
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
// @generated from file kusinta/iot/webrtc/v1/device_state.proto (package kusinta.iot.webrtc.v1, syntax proto3)
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
|
|
5
|
-
import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
5
|
+
import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
6
6
|
import type { Message } from "@bufbuild/protobuf";
|
|
7
7
|
import type { Device } from "../../device/v1/device_pb.js";
|
|
8
8
|
import type { EffectivePermissions } from "../../access/v1/acl_pb.js";
|
|
9
9
|
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
10
|
-
import type { PropertyUpdate } from "../../device/v1/property_update_pb.js";
|
|
11
10
|
import type { DeviceId } from "../../identity/v1/identity_pb.js";
|
|
11
|
+
import type { PropertyUpdate } from "../../device/v1/property_update_pb.js";
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Describes the file kusinta/iot/webrtc/v1/device_state.proto.
|
|
@@ -16,7 +16,9 @@ import type { DeviceId } from "../../identity/v1/identity_pb.js";
|
|
|
16
16
|
export declare const file_kusinta_iot_webrtc_v1_device_state: GenFile;
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
* Full device state sent to the app on initial WebRTC connection.
|
|
19
|
+
* Full device state sent to the app on initial WebRTC connection. Devices the recipient sees
|
|
20
|
+
* as service are as they stood at the last quarter hour, less any since taken away, each
|
|
21
|
+
* with its ServiceStatus.
|
|
20
22
|
*
|
|
21
23
|
* @generated from message kusinta.iot.webrtc.v1.DeviceStateSnapshot
|
|
22
24
|
*/
|
|
@@ -35,6 +37,15 @@ export declare type DeviceStateSnapshot = Message<"kusinta.iot.webrtc.v1.DeviceS
|
|
|
35
37
|
* @generated from field: google.protobuf.Timestamp snapshotted_at = 3;
|
|
36
38
|
*/
|
|
37
39
|
snapshottedAt?: Timestamp | undefined;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* One for every device the recipient sees, as last evaluated (see ServiceStatus). A device
|
|
43
|
+
* the recipient began to see since the last quarter hour — or began to see as its
|
|
44
|
+
* resident — has none until the next.
|
|
45
|
+
*
|
|
46
|
+
* @generated from field: repeated kusinta.iot.webrtc.v1.ServiceStatus service_statuses = 4;
|
|
47
|
+
*/
|
|
48
|
+
serviceStatuses: ServiceStatus[];
|
|
38
49
|
};
|
|
39
50
|
|
|
40
51
|
/**
|
|
@@ -43,6 +54,123 @@ export declare type DeviceStateSnapshot = Message<"kusinta.iot.webrtc.v1.DeviceS
|
|
|
43
54
|
*/
|
|
44
55
|
export declare const DeviceStateSnapshotSchema: GenMessage<DeviceStateSnapshot>;
|
|
45
56
|
|
|
57
|
+
/**
|
|
58
|
+
* What keeps a device working, as the gateway judges it, and nothing that describes the
|
|
59
|
+
* people around it. Sent for every device a recipient sees, so that an app reads a
|
|
60
|
+
* device's problems from one place whatever its view. To a recipient whose
|
|
61
|
+
* DeviceAcl.relation is SERVICE it is all they get of the device's state, beside its
|
|
62
|
+
* description-only Device: they hold no action on
|
|
63
|
+
* it and are sent no PropertyReport or DeviceEvent for it (see
|
|
64
|
+
* access.v1.MembershipRelation).
|
|
65
|
+
*
|
|
66
|
+
* Evaluated by the gateway at each quarter hour (:00, :15, :30, :45 UTC) from what it holds
|
|
67
|
+
* then, and pushed in ServiceStatusChanged when it differs from what the recipient was last
|
|
68
|
+
* sent. Between quarter hours nothing here changes, so polling learns nothing more. A
|
|
69
|
+
* change still says the device was heard within that quarter hour, and nothing finer.
|
|
70
|
+
*
|
|
71
|
+
* @generated from message kusinta.iot.webrtc.v1.ServiceStatus
|
|
72
|
+
*/
|
|
73
|
+
export declare type ServiceStatus = Message<"kusinta.iot.webrtc.v1.ServiceStatus"> & {
|
|
74
|
+
/**
|
|
75
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
|
|
76
|
+
*/
|
|
77
|
+
deviceId?: DeviceId | undefined;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Always set. The quarter hour at which the status took its current value, but never
|
|
81
|
+
* earlier than the start of the recipient's current, unbroken stretch of seeing the
|
|
82
|
+
* device, nor, for a resident, than their current residency — each start taken at the
|
|
83
|
+
* first quarter hour at or after it. When that start moves because the recipient becomes
|
|
84
|
+
* a resident, the app drops the status it held and is sent one again from the new start at
|
|
85
|
+
* the next quarter hour. These quarter hours, and the moment a device is
|
|
86
|
+
* taken away, are the only times service is given of a device in a home (see
|
|
87
|
+
* access.v1.MembershipRelation). Pushed and in a
|
|
88
|
+
* snapshot alike, so an unchanged status carries the same as_of however it arrived.
|
|
89
|
+
*
|
|
90
|
+
* @generated from field: google.protobuf.Timestamp as_of = 2;
|
|
91
|
+
*/
|
|
92
|
+
asOf?: Timestamp | undefined;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @generated from field: bool reachable = 3;
|
|
96
|
+
*/
|
|
97
|
+
reachable: boolean;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* While unreachable, the quarter hour at which the gateway found it so — not when it was
|
|
101
|
+
* last heard, which for a device that reports on change is when it was last used — and,
|
|
102
|
+
* like as_of, never earlier than those starts. Unset while reachable.
|
|
103
|
+
*
|
|
104
|
+
* @generated from field: google.protobuf.Timestamp unreachable_since = 4;
|
|
105
|
+
*/
|
|
106
|
+
unreachableSince?: Timestamp | undefined;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Remaining charge, rounded up to a multiple of ten — 4 % is sent as 10, and 0 only when
|
|
110
|
+
* the device reports none left. Absent for a device that does not report one.
|
|
111
|
+
*
|
|
112
|
+
* @generated from field: optional uint32 battery_percent = 5;
|
|
113
|
+
*/
|
|
114
|
+
batteryPercent?: number | undefined;
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* battery_low: the device reports its charge low or critical (Matter Power Source
|
|
118
|
+
* BatChargeLevel, or a vendor's low-battery flag). battery_replacement_needed: it reports
|
|
119
|
+
* that its battery must be replaced. Each is set on its own report alone.
|
|
120
|
+
*
|
|
121
|
+
* @generated from field: bool battery_low = 6;
|
|
122
|
+
*/
|
|
123
|
+
batteryLow: boolean;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @generated from field: bool battery_replacement_needed = 7;
|
|
127
|
+
*/
|
|
128
|
+
batteryReplacementNeeded: boolean;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* A device.v1.RadioQuality number, travelling as a uint32 as every enum-valued reading
|
|
132
|
+
* does. Absent: the device does not report one.
|
|
133
|
+
*
|
|
134
|
+
* @generated from field: optional uint32 radio_quality = 8;
|
|
135
|
+
*/
|
|
136
|
+
radioQuality?: number | undefined;
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Faults the device reports now, each listed once. Empty: none. A fault can follow from
|
|
140
|
+
* what someone did — a casing opened — and service learns that within the quarter hour;
|
|
141
|
+
* that much fault reporting discloses.
|
|
142
|
+
*
|
|
143
|
+
* @generated from field: repeated kusinta.iot.webrtc.v1.ServiceFault faults = 9;
|
|
144
|
+
*/
|
|
145
|
+
faults: ServiceFault[];
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Describes the message kusinta.iot.webrtc.v1.ServiceStatus.
|
|
150
|
+
* Use `create(ServiceStatusSchema)` to create a new message.
|
|
151
|
+
*/
|
|
152
|
+
export declare const ServiceStatusSchema: GenMessage<ServiceStatus>;
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* The service statuses that changed at a quarter hour, gateway → app. Apply each as an
|
|
156
|
+
* upsert keyed on device_id. Sent for every device the recipient sees, without a
|
|
157
|
+
* subscription: a service view holds no SUBSCRIBE, and needs none for this.
|
|
158
|
+
*
|
|
159
|
+
* @generated from message kusinta.iot.webrtc.v1.ServiceStatusChanged
|
|
160
|
+
*/
|
|
161
|
+
export declare type ServiceStatusChanged = Message<"kusinta.iot.webrtc.v1.ServiceStatusChanged"> & {
|
|
162
|
+
/**
|
|
163
|
+
* @generated from field: repeated kusinta.iot.webrtc.v1.ServiceStatus statuses = 1;
|
|
164
|
+
*/
|
|
165
|
+
statuses: ServiceStatus[];
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Describes the message kusinta.iot.webrtc.v1.ServiceStatusChanged.
|
|
170
|
+
* Use `create(ServiceStatusChangedSchema)` to create a new message.
|
|
171
|
+
*/
|
|
172
|
+
export declare const ServiceStatusChangedSchema: GenMessage<ServiceStatusChanged>;
|
|
173
|
+
|
|
46
174
|
/**
|
|
47
175
|
* One attribute reading streamed to the app as it happens — Matter's Report Data Action,
|
|
48
176
|
* for a single attribute.
|
|
@@ -78,7 +206,9 @@ export declare const PropertyReportSchema: GenMessage<PropertyReport>;
|
|
|
78
206
|
*
|
|
79
207
|
* Carries the full Device, descriptor plus current typed properties, so the app can
|
|
80
208
|
* render it without a follow-up read — the same payload DeviceStateSnapshot gives
|
|
81
|
-
* per device.
|
|
209
|
+
* per device. To a recipient who sees it as service, the Device carries its description
|
|
210
|
+
* only, as in a snapshot, and is sent at the next quarter hour (see
|
|
211
|
+
* access.v1.DeviceAcl.relation).
|
|
82
212
|
*
|
|
83
213
|
* Apply as an upsert keyed on descriptor.device_id, never as an insert: a device can
|
|
84
214
|
* be in the snapshot and then announced, or announced twice across a connector
|
|
@@ -106,11 +236,15 @@ export declare const DeviceAddedSchema: GenMessage<DeviceAdded>;
|
|
|
106
236
|
|
|
107
237
|
/**
|
|
108
238
|
* A device is gone, because its connector said so via connector.v1.DeviceRemoval.
|
|
239
|
+
* To a recipient who sees it as service, sent at once, as the removal from their
|
|
240
|
+
* permissions is (see LivePermissionUpdate) — if they were shown the device; otherwise not
|
|
241
|
+
* at all.
|
|
109
242
|
*
|
|
110
243
|
* A connector disconnecting is NOT a removal: an ordinary reconnect wipes the
|
|
111
244
|
* device→connector route while every device still exists, and treating that as a
|
|
112
245
|
* removal makes the whole UI flap. Unreachability is a separate signal — read
|
|
113
|
-
* device.v1.Device.last_seen
|
|
246
|
+
* ServiceStatus.reachable for that, which every recipient gets; device.v1.Device.last_seen
|
|
247
|
+
* may be unset.
|
|
114
248
|
*
|
|
115
249
|
* @generated from message kusinta.iot.webrtc.v1.DeviceRemoved
|
|
116
250
|
*/
|
|
@@ -134,3 +268,34 @@ export declare type DeviceRemoved = Message<"kusinta.iot.webrtc.v1.DeviceRemoved
|
|
|
134
268
|
*/
|
|
135
269
|
export declare const DeviceRemovedSchema: GenMessage<DeviceRemoved>;
|
|
136
270
|
|
|
271
|
+
/**
|
|
272
|
+
* A fault a device reports about itself, as service sees it.
|
|
273
|
+
*
|
|
274
|
+
* @generated from enum kusinta.iot.webrtc.v1.ServiceFault
|
|
275
|
+
*/
|
|
276
|
+
export enum ServiceFault {
|
|
277
|
+
/**
|
|
278
|
+
* @generated from enum value: SERVICE_FAULT_UNSPECIFIED = 0;
|
|
279
|
+
*/
|
|
280
|
+
UNSPECIFIED = 0,
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* An error the device reports in its own operation.
|
|
284
|
+
*
|
|
285
|
+
* @generated from enum value: SERVICE_FAULT_ERROR = 1;
|
|
286
|
+
*/
|
|
287
|
+
ERROR = 1,
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Its casing was opened or it was taken off its mount.
|
|
291
|
+
*
|
|
292
|
+
* @generated from enum value: SERVICE_FAULT_TAMPER = 2;
|
|
293
|
+
*/
|
|
294
|
+
TAMPER = 2,
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Describes the enum kusinta.iot.webrtc.v1.ServiceFault.
|
|
299
|
+
*/
|
|
300
|
+
export declare const ServiceFaultSchema: GenEnum<ServiceFault>;
|
|
301
|
+
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// @generated from file kusinta/iot/webrtc/v1/device_state.proto (package kusinta.iot.webrtc.v1, syntax proto3)
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
|
|
5
|
-
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
5
|
+
import { enumDesc, fileDesc, messageDesc, tsEnum } from "@bufbuild/protobuf/codegenv2";
|
|
6
6
|
import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
|
|
7
7
|
import { file_kusinta_iot_access_v1_acl } from "../../access/v1/acl_pb.js";
|
|
8
8
|
import { file_kusinta_iot_device_v1_device } from "../../device/v1/device_pb.js";
|
|
@@ -13,7 +13,7 @@ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identit
|
|
|
13
13
|
* Describes the file kusinta/iot/webrtc/v1/device_state.proto.
|
|
14
14
|
*/
|
|
15
15
|
export const file_kusinta_iot_webrtc_v1_device_state = /*@__PURE__*/
|
|
16
|
-
fileDesc("
|
|
16
|
+
fileDesc("CihrdXNpbnRhL2lvdC93ZWJydGMvdjEvZGV2aWNlX3N0YXRlLnByb3RvEhVrdXNpbnRhLmlvdC53ZWJydGMudjEi+wEKE0RldmljZVN0YXRlU25hcHNob3QSLgoHZGV2aWNlcxgBIAMoCzIdLmt1c2ludGEuaW90LmRldmljZS52MS5EZXZpY2USQAoLcGVybWlzc2lvbnMYAiABKAsyKy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuRWZmZWN0aXZlUGVybWlzc2lvbnMSMgoOc25hcHNob3R0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEj4KEHNlcnZpY2Vfc3RhdHVzZXMYBCADKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2VydmljZVN0YXR1cyKIAwoNU2VydmljZVN0YXR1cxI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIpCgVhc19vZhgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoJcmVhY2hhYmxlGAMgASgIEjUKEXVucmVhY2hhYmxlX3NpbmNlGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIcCg9iYXR0ZXJ5X3BlcmNlbnQYBSABKA1IAIgBARITCgtiYXR0ZXJ5X2xvdxgGIAEoCBIiChpiYXR0ZXJ5X3JlcGxhY2VtZW50X25lZWRlZBgHIAEoCBIaCg1yYWRpb19xdWFsaXR5GAggASgNSAGIAQESMwoGZmF1bHRzGAkgAygOMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNlcnZpY2VGYXVsdEISChBfYmF0dGVyeV9wZXJjZW50QhAKDl9yYWRpb19xdWFsaXR5Ik4KFFNlcnZpY2VTdGF0dXNDaGFuZ2VkEjYKCHN0YXR1c2VzGAEgAygLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlNlcnZpY2VTdGF0dXMigQEKDlByb3BlcnR5UmVwb3J0EjUKBnVwZGF0ZRgBIAEoCzIlLmt1c2ludGEuaW90LmRldmljZS52MS5Qcm9wZXJ0eVVwZGF0ZRI4ChRnYXRld2F5X3Byb2Nlc3NlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiPAoLRGV2aWNlQWRkZWQSLQoGZGV2aWNlGAEgASgLMh0ua3VzaW50YS5pb3QuZGV2aWNlLnYxLkRldmljZSJVCg1EZXZpY2VSZW1vdmVkEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEg4KBnJlYXNvbhgCIAEoCSpgCgxTZXJ2aWNlRmF1bHQSHQoZU0VSVklDRV9GQVVMVF9VTlNQRUNJRklFRBAAEhcKE1NFUlZJQ0VfRkFVTFRfRVJST1IQARIYChRTRVJWSUNFX0ZBVUxUX1RBTVBFUhACQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_device_v1_device, file_kusinta_iot_device_v1_property_update, file_kusinta_iot_identity_v1_identity]);
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Describes the message kusinta.iot.webrtc.v1.DeviceStateSnapshot.
|
|
@@ -22,24 +22,52 @@ export const file_kusinta_iot_webrtc_v1_device_state = /*@__PURE__*/
|
|
|
22
22
|
export const DeviceStateSnapshotSchema = /*@__PURE__*/
|
|
23
23
|
messageDesc(file_kusinta_iot_webrtc_v1_device_state, 0);
|
|
24
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Describes the message kusinta.iot.webrtc.v1.ServiceStatus.
|
|
27
|
+
* Use `create(ServiceStatusSchema)` to create a new message.
|
|
28
|
+
*/
|
|
29
|
+
export const ServiceStatusSchema = /*@__PURE__*/
|
|
30
|
+
messageDesc(file_kusinta_iot_webrtc_v1_device_state, 1);
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Describes the message kusinta.iot.webrtc.v1.ServiceStatusChanged.
|
|
34
|
+
* Use `create(ServiceStatusChangedSchema)` to create a new message.
|
|
35
|
+
*/
|
|
36
|
+
export const ServiceStatusChangedSchema = /*@__PURE__*/
|
|
37
|
+
messageDesc(file_kusinta_iot_webrtc_v1_device_state, 2);
|
|
38
|
+
|
|
25
39
|
/**
|
|
26
40
|
* Describes the message kusinta.iot.webrtc.v1.PropertyReport.
|
|
27
41
|
* Use `create(PropertyReportSchema)` to create a new message.
|
|
28
42
|
*/
|
|
29
43
|
export const PropertyReportSchema = /*@__PURE__*/
|
|
30
|
-
messageDesc(file_kusinta_iot_webrtc_v1_device_state,
|
|
44
|
+
messageDesc(file_kusinta_iot_webrtc_v1_device_state, 3);
|
|
31
45
|
|
|
32
46
|
/**
|
|
33
47
|
* Describes the message kusinta.iot.webrtc.v1.DeviceAdded.
|
|
34
48
|
* Use `create(DeviceAddedSchema)` to create a new message.
|
|
35
49
|
*/
|
|
36
50
|
export const DeviceAddedSchema = /*@__PURE__*/
|
|
37
|
-
messageDesc(file_kusinta_iot_webrtc_v1_device_state,
|
|
51
|
+
messageDesc(file_kusinta_iot_webrtc_v1_device_state, 4);
|
|
38
52
|
|
|
39
53
|
/**
|
|
40
54
|
* Describes the message kusinta.iot.webrtc.v1.DeviceRemoved.
|
|
41
55
|
* Use `create(DeviceRemovedSchema)` to create a new message.
|
|
42
56
|
*/
|
|
43
57
|
export const DeviceRemovedSchema = /*@__PURE__*/
|
|
44
|
-
messageDesc(file_kusinta_iot_webrtc_v1_device_state,
|
|
58
|
+
messageDesc(file_kusinta_iot_webrtc_v1_device_state, 5);
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Describes the enum kusinta.iot.webrtc.v1.ServiceFault.
|
|
62
|
+
*/
|
|
63
|
+
export const ServiceFaultSchema = /*@__PURE__*/
|
|
64
|
+
enumDesc(file_kusinta_iot_webrtc_v1_device_state, 0);
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* A fault a device reports about itself, as service sees it.
|
|
68
|
+
*
|
|
69
|
+
* @generated from enum kusinta.iot.webrtc.v1.ServiceFault
|
|
70
|
+
*/
|
|
71
|
+
export const ServiceFault = /*@__PURE__*/
|
|
72
|
+
tsEnum(ServiceFaultSchema);
|
|
45
73
|
|
|
@@ -7,13 +7,13 @@ import type { Message } from "@bufbuild/protobuf";
|
|
|
7
7
|
import type { ConnectorId, DeviceId, SpaceId } from "../../identity/v1/identity_pb.js";
|
|
8
8
|
import type { AttributeRef } from "../../access/v1/acl_pb.js";
|
|
9
9
|
import type { Space } from "../../space/v1/space_pb.js";
|
|
10
|
-
import type { ManagementAck, ManagementRequest, SpaceTree } from "./management_pb.js";
|
|
10
|
+
import type { ManagementAck, ManagementRequest, PrivacyDisclosure, SpaceTree } from "./management_pb.js";
|
|
11
11
|
import type { DeviceLink, DeviceLinkList } from "../../link/v1/link_pb.js";
|
|
12
|
-
import type { ClimateMode, RoomClimate, RoomClimateList, RoomHistory } from "../../climate/v1/climate_pb.js";
|
|
12
|
+
import type { ApartmentClimateSummary, ClimateMode, RoomClimate, RoomClimateList, RoomHistory } from "../../climate/v1/climate_pb.js";
|
|
13
13
|
import type { PairingErrorDetail, PairingWindow } from "../../common/v1/pairing_pb.js";
|
|
14
14
|
import type { ConnectorKind, DeviceOwnershipType } from "../../common/v1/types_pb.js";
|
|
15
15
|
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
16
|
-
import type { DeviceAdded, DeviceRemoved, DeviceStateSnapshot, PropertyReport } from "./device_state_pb.js";
|
|
16
|
+
import type { DeviceAdded, DeviceRemoved, DeviceStateSnapshot, PropertyReport, ServiceStatusChanged } from "./device_state_pb.js";
|
|
17
17
|
import type { LivePermissionUpdate } from "./permission_push_pb.js";
|
|
18
18
|
import type { AttributeWriteRequest, CommandResult, DeviceCommand } from "./command_pb.js";
|
|
19
19
|
import type { DeviceEventBatch } from "../../device/v1/device_event_pb.js";
|
|
@@ -344,6 +344,22 @@ export declare type ManagementResult = Message<"kusinta.iot.webrtc.v1.Management
|
|
|
344
344
|
*/
|
|
345
345
|
value: RoomHistory;
|
|
346
346
|
case: "roomHistory";
|
|
347
|
+
} | {
|
|
348
|
+
/**
|
|
349
|
+
* get_privacy_disclosure
|
|
350
|
+
*
|
|
351
|
+
* @generated from field: kusinta.iot.webrtc.v1.PrivacyDisclosure privacy_disclosure = 9;
|
|
352
|
+
*/
|
|
353
|
+
value: PrivacyDisclosure;
|
|
354
|
+
case: "privacyDisclosure";
|
|
355
|
+
} | {
|
|
356
|
+
/**
|
|
357
|
+
* get_apartment_climate_summary
|
|
358
|
+
*
|
|
359
|
+
* @generated from field: kusinta.iot.climate.v1.ApartmentClimateSummary apartment_climate_summary = 10;
|
|
360
|
+
*/
|
|
361
|
+
value: ApartmentClimateSummary;
|
|
362
|
+
case: "apartmentClimateSummary";
|
|
347
363
|
} | { case: undefined; value?: undefined };
|
|
348
364
|
};
|
|
349
365
|
|
|
@@ -392,7 +408,8 @@ export declare type StartPairing = Message<"kusinta.iot.webrtc.v1.StartPairing">
|
|
|
392
408
|
window?: PairingWindow | undefined;
|
|
393
409
|
|
|
394
410
|
/**
|
|
395
|
-
* Where to file the device once it arrives.
|
|
411
|
+
* Where to file the device once it arrives. Into a home only as PlaceDeviceInSpace
|
|
412
|
+
* allows.
|
|
396
413
|
*
|
|
397
414
|
* Optional, and the two cases differ. A caller pairing a device of their own must name a
|
|
398
415
|
* space they reach, so it is theirs and placed on arrival rather than sitting unfiled and
|
|
@@ -468,7 +485,8 @@ export declare const PairingStartedSchema: GenMessage<PairingStarted>;
|
|
|
468
485
|
* One message per request, not per device: a batch window attributes several, and a client
|
|
469
486
|
* given one message each has nothing telling it the window is over and no defined moment to
|
|
470
487
|
* stop waiting. The devices are listed here; each also arrives as an ordinary DeviceAdded
|
|
471
|
-
* as it appears
|
|
488
|
+
* as it appears — for a device the caller sees as service, at the next quarter hour — so a
|
|
489
|
+
* client may show them as they come and use this to finish.
|
|
472
490
|
*
|
|
473
491
|
* An error and a non-empty device list are not exclusive. A batch of five that attributed
|
|
474
492
|
* three and then expired reports both — three devices and NO_DEVICE_APPEARED — because
|
|
@@ -521,7 +539,12 @@ export declare const PairingFinishedSchema: GenMessage<PairingFinished>;
|
|
|
521
539
|
* again whenever its state moves.
|
|
522
540
|
*
|
|
523
541
|
* Sent only for links the recipient is entitled to see. An unfiltered one would say
|
|
524
|
-
* which devices exist and how they are arranged, to somebody entitled to neither.
|
|
542
|
+
* which devices exist and how they are arranged, to somebody entitled to neither. A link
|
|
543
|
+
* with an end in a home is not pushed to a recipient who sees it as service when it is made
|
|
544
|
+
* or changes — when its residents make one is theirs to know; service reads a home's links
|
|
545
|
+
* by ListDeviceLinks, where a new one appears from the next quarter hour. Its removal is
|
|
546
|
+
* pushed to them at once, with details_withheld, as every loss is — to those whose view
|
|
547
|
+
* held it at a quarter hour since it was made, and to nobody else.
|
|
525
548
|
*
|
|
526
549
|
* @generated from message kusinta.iot.webrtc.v1.LinkChanged
|
|
527
550
|
*/
|
|
@@ -539,7 +562,9 @@ export declare type LinkChanged = Message<"kusinta.iot.webrtc.v1.LinkChanged"> &
|
|
|
539
562
|
* and repair.
|
|
540
563
|
*
|
|
541
564
|
* `link` still carries the whole link when this is set, so the app can name what
|
|
542
|
-
* went rather than only its id
|
|
565
|
+
* went rather than only its id — as much of it as the recipient was shown, so with
|
|
566
|
+
* details_withheld to one who saw it as service. To such a recipient it means the link is
|
|
567
|
+
* gone from their view, which need not mean it is gone.
|
|
543
568
|
*
|
|
544
569
|
* @generated from field: bool removed = 2;
|
|
545
570
|
*/
|
|
@@ -652,8 +677,11 @@ export declare const ConnectorsAnnouncedSchema: GenMessage<ConnectorsAnnounced>;
|
|
|
652
677
|
/**
|
|
653
678
|
* A room's climate changed, gateway → app: its target, what set it, what it is being
|
|
654
679
|
* held at, its condition. Apply as an upsert keyed on room.space_id. Sent only for rooms
|
|
655
|
-
* the recipient may see, and whenever any field moves — a knob
|
|
656
|
-
* here without the app asking.
|
|
680
|
+
* the recipient may see, and whenever any field the recipient is sent moves — a knob
|
|
681
|
+
* turned by hand shows up here without the app asking. To a recipient who sees the room
|
|
682
|
+
* as service, what is new is sent at the next quarter hour and what is lost at once. A
|
|
683
|
+
* recipient who is sent the room with state_withheld is therefore not sent it when only
|
|
684
|
+
* withheld fields move.
|
|
657
685
|
*
|
|
658
686
|
* @generated from message kusinta.iot.webrtc.v1.RoomClimateChanged
|
|
659
687
|
*/
|
|
@@ -672,7 +700,9 @@ export declare const RoomClimateChangedSchema: GenMessage<RoomClimateChanged>;
|
|
|
672
700
|
|
|
673
701
|
/**
|
|
674
702
|
* A mode on a space was switched on, changed or ended, gateway → app. `ended` rather than
|
|
675
|
-
* kind UNSPECIFIED, so an app can still name the mode that finished.
|
|
703
|
+
* kind UNSPECIFIED, so an app can still name the mode that finished. A mode on an
|
|
704
|
+
* apartment or a room in one is sent to its residents only — whether a home stands empty
|
|
705
|
+
* is theirs to know; one on any other space, to whoever reaches it.
|
|
676
706
|
*
|
|
677
707
|
* @generated from message kusinta.iot.webrtc.v1.ClimateModeChanged
|
|
678
708
|
*/
|
|
@@ -824,6 +854,12 @@ export declare type GatewayMessage = Message<"kusinta.iot.webrtc.v1.GatewayMessa
|
|
|
824
854
|
*/
|
|
825
855
|
value: ClimateModeChanged;
|
|
826
856
|
case: "climateModeChanged";
|
|
857
|
+
} | {
|
|
858
|
+
/**
|
|
859
|
+
* @generated from field: kusinta.iot.webrtc.v1.ServiceStatusChanged service_status_changed = 23;
|
|
860
|
+
*/
|
|
861
|
+
value: ServiceStatusChanged;
|
|
862
|
+
case: "serviceStatusChanged";
|
|
827
863
|
} | { case: undefined; value?: undefined };
|
|
828
864
|
};
|
|
829
865
|
|
|
@@ -21,7 +21,7 @@ import { file_kusinta_iot_webrtc_v1_permission_push } from "./permission_push_pb
|
|
|
21
21
|
* Describes the file kusinta/iot/webrtc/v1/envelope.proto.
|
|
22
22
|
*/
|
|
23
23
|
export const file_kusinta_iot_webrtc_v1_envelope = /*@__PURE__*/
|
|
24
|
-
fileDesc("
|
|
24
|
+
fileDesc("CiRrdXNpbnRhL2lvdC93ZWJydGMvdjEvZW52ZWxvcGUucHJvdG8SFWt1c2ludGEuaW90LndlYnJ0Yy52MSIGCgRQaW5nIgYKBFBvbmciIwoRSGFuZHNoYWtlUmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJIlwKDEFwcEhhbmRzaGFrZRILCgNqd3QYASABKAkSPwoUc3Vic2NyaWJlX2RldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJJChBTdWJzY3JpYmVEZXZpY2VzEjUKCmRldmljZV9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJLChJVbnN1YnNjcmliZURldmljZXMSNQoKZGV2aWNlX2lkcxgBIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIpMBChNSZWZ1c2VkU3Vic2NyaXB0aW9uEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjUKBGNvZGUYAiABKA4yJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yQ29kZRIPCgdtZXNzYWdlGAMgASgJIpoBCg9TdWJzY3JpcHRpb25BY2sSEwoLaW5fcmVwbHlfdG8YASABKAkSNQoKc3Vic2NyaWJlZBgCIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjsKB3JlZnVzZWQYAyADKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVmdXNlZFN1YnNjcmlwdGlvbiLRAQoTUHJvcGVydHlSZWFkUmVxdWVzdBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCgZ0YXJnZXQYByABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmSgQIAhAHUg5hdHRyaWJ1dGVfbmFtZVIOY2x1c3Rlcl9pZF9oZXhSCmNsdXN0ZXJfaWRSC2VuZHBvaW50X2lkUhB2ZW5kb3JfZXh0ZW5zaW9uIswBCgxHYXRld2F5RXJyb3ISNQoEY29kZRgBIAEoDjInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5RXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkSQwoIbWV0YWRhdGEYAyADKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBItUEChBNYW5hZ2VtZW50UmVzdWx0EhMKC2luX3JlcGx5X3RvGAEgASgJEjQKBWVycm9yGAIgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEiwKBXNwYWNlGAMgASgLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2VIABI2CgpzcGFjZV90cmVlGAQgASgLMiAua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlVHJlZUgAEjMKA2FjaxgFIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50QWNrSAASNAoFbGlua3MYBiABKAsyIy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmtMaXN0SAASQAoNcm9vbV9jbGltYXRlcxgHIAEoCzInLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGVMaXN0SAASOwoMcm9vbV9oaXN0b3J5GAggASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tSGlzdG9yeUgAEkYKEnByaXZhY3lfZGlzY2xvc3VyZRgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcml2YWN5RGlzY2xvc3VyZUgAElQKGWFwYXJ0bWVudF9jbGltYXRlX3N1bW1hcnkYCiABKAsyLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SABCCAoGcmVzdWx0IvsBCgxTdGFydFBhaXJpbmcSOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSNAoGd2luZG93GAIgASgLMiQua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdXaW5kb3cSOgoQaW5pdGlhbF9zcGFjZV9pZBgDIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPQoJb3duZXJzaGlwGAQgASgOMioua3VzaW50YS5pb3QuY29tbW9uLnYxLkRldmljZU93bmVyc2hpcFR5cGUijwEKDlBhaXJpbmdTdGFydGVkEhMKC2luX3JlcGx5X3RvGAEgASgJEi4KCmV4cGlyZXNfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKBWVycm9yGAMgASgLMikua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdFcnJvckRldGFpbCKXAQoPUGFpcmluZ0ZpbmlzaGVkEhMKC2luX3JlcGx5X3RvGAEgASgJEjUKCmRldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBI4CgVlcnJvchgDIAEoCzIpLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nRXJyb3JEZXRhaWwiTQoLTGlua0NoYW5nZWQSLQoEbGluaxgBIAEoCzIfLmt1c2ludGEuaW90LmxpbmsudjEuRGV2aWNlTGluaxIPCgdyZW1vdmVkGAIgASgIIqMCChNDb25uZWN0b3JEZXNjcmlwdG9yEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIhChlzdXBwb3J0ZWRfZGV2aWNlX3R5cGVfaWRzGAMgAygNEhgKEHN1cHBvcnRzX3BhaXJpbmcYBCABKAgSHQoVc3VwcG9ydHNfcHJvdmlzaW9uaW5nGAUgASgIEhUKDWJyb2tlcnNfbGlua3MYBiABKAgSMgoEa2luZBgHIAEoDjIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5Db25uZWN0b3JLaW5kEhMKC2Rlc2NyaXB0aW9uGAggASgJIlUKE0Nvbm5lY3RvcnNBbm5vdW5jZWQSPgoKY29ubmVjdG9ycxgBIAMoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db25uZWN0b3JEZXNjcmlwdG9yIkcKElJvb21DbGltYXRlQ2hhbmdlZBIxCgRyb29tGAEgASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tQ2xpbWF0ZSJWChJDbGltYXRlTW9kZUNoYW5nZWQSMQoEbW9kZRgBIAEoCzIjLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZU1vZGUSDQoFZW5kZWQYAiABKAgiiAsKDkdhdGV3YXlNZXNzYWdlEhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRAoOc3RhdGVfc25hcHNob3QYAyABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlU3RhdGVTbmFwc2hvdEgAEkAKD3Byb3BlcnR5X3JlcG9ydBgEIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9wZXJ0eVJlcG9ydEgAEkgKEXBlcm1pc3Npb25fdXBkYXRlGAUgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpdmVQZXJtaXNzaW9uVXBkYXRlSAASPgoOY29tbWFuZF9yZXN1bHQYBiABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29tbWFuZFJlc3VsdEgAEisKBHBvbmcYCCABKAsyGy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUG9uZ0gAEkYKEmhhbmRzaGFrZV9yZWplY3RlZBgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5IYW5kc2hha2VSZWplY3RlZEgAEjQKBWVycm9yGAogASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEkIKEHN1YnNjcmlwdGlvbl9hY2sYCyABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3Vic2NyaXB0aW9uQWNrSAASOgoMZGV2aWNlX2FkZGVkGAwgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkRldmljZUFkZGVkSAASPgoOZGV2aWNlX3JlbW92ZWQYDSABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlUmVtb3ZlZEgAEkQKEW1hbmFnZW1lbnRfcmVzdWx0GA4gASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLk1hbmFnZW1lbnRSZXN1bHRIABJACg1kZXZpY2VfZXZlbnRzGBAgASgLMicua3VzaW50YS5pb3QuZGV2aWNlLnYxLkRldmljZUV2ZW50QmF0Y2hIABJACg9wYWlyaW5nX3N0YXJ0ZWQYESABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUGFpcmluZ1N0YXJ0ZWRIABJCChBwYWlyaW5nX2ZpbmlzaGVkGBIgASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlBhaXJpbmdGaW5pc2hlZEgAEjoKDGxpbmtfY2hhbmdlZBgTIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaW5rQ2hhbmdlZEgAEkoKFGNvbm5lY3RvcnNfYW5ub3VuY2VkGBQgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbm5lY3RvcnNBbm5vdW5jZWRIABJJChRyb29tX2NsaW1hdGVfY2hhbmdlZBgVIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Sb29tQ2xpbWF0ZUNoYW5nZWRIABJJChRjbGltYXRlX21vZGVfY2hhbmdlZBgWIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DbGltYXRlTW9kZUNoYW5nZWRIABJNChZzZXJ2aWNlX3N0YXR1c19jaGFuZ2VkGBcgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlNlcnZpY2VTdGF0dXNDaGFuZ2VkSABCCQoHcGF5bG9hZEoECA8QEEoECAcQCFIWYXR0cmlidXRlX3dyaXRlX3Jlc3VsdFIOcHJvcGVydHlfZXZlbnQigwUKCkFwcE1lc3NhZ2USEgoKbWVzc2FnZV9pZBgBIAEoCRIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4CgloYW5kc2hha2UYAyABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQXBwSGFuZHNoYWtlSAASNwoHY29tbWFuZBgEIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VDb21tYW5kSAASQgoMcmVhZF9yZXF1ZXN0GAUgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLlByb3BlcnR5UmVhZFJlcXVlc3RIABIrCgRwaW5nGAYgASgLMhsua3VzaW50YS5pb3Qud2VicnRjLnYxLlBpbmdIABI8CglzdWJzY3JpYmUYByABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3Vic2NyaWJlRGV2aWNlc0gAEkAKC3Vuc3Vic2NyaWJlGAggASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlVuc3Vic2NyaWJlRGV2aWNlc0gAEj4KCm1hbmFnZW1lbnQYCSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuTWFuYWdlbWVudFJlcXVlc3RIABJHCg9hdHRyaWJ1dGVfd3JpdGUYCiABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQXR0cmlidXRlV3JpdGVSZXF1ZXN0SAASPAoNc3RhcnRfcGFpcmluZxgLIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TdGFydFBhaXJpbmdIAEIJCgdwYXlsb2FkKvYBChBHYXRld2F5RXJyb3JDb2RlEiIKHkdBVEVXQVlfRVJST1JfQ09ERV9VTlNQRUNJRklFRBAAEiMKH0dBVEVXQVlfRVJST1JfQ09ERV9OT1RfRU5USVRMRUQQARImCiJHQVRFV0FZX0VSUk9SX0NPREVfSU5WQUxJRF9SRVFVRVNUEAISIgoeR0FURVdBWV9FUlJPUl9DT0RFX1VOQVZBSUxBQkxFEAMSHwobR0FURVdBWV9FUlJPUl9DT0RFX0lOVEVSTkFMEAQSLAooR0FURVdBWV9FUlJPUl9DT0RFX1NFU1NJT05fTElNSVRfUkVBQ0hFRBAFQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_common_v1_pairing, file_kusinta_iot_common_v1_types, file_kusinta_iot_device_v1_device_event, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_space_v1_space, file_kusinta_iot_webrtc_v1_command, file_kusinta_iot_webrtc_v1_device_state, file_kusinta_iot_webrtc_v1_management, file_kusinta_iot_webrtc_v1_permission_push]);
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* Describes the message kusinta.iot.webrtc.v1.Ping.
|