@kusinta/iot-schema 0.2.0-beta.6 → 0.2.0-beta.8
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 +2 -1
- package/src/kusinta/iot/common/v1/pairing_pb.d.ts +5 -3
- package/src/kusinta/iot/connector/v1/connector_pb.d.ts +208 -0
- package/src/kusinta/iot/connector/v1/connector_pb.js +50 -14
- package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +13 -0
- package/src/kusinta/iot/device/v1/descriptor_pb.js +2 -1
- package/src/kusinta/iot/device/v1/device_pb.d.ts +5 -2
- package/src/kusinta/iot/link/v1/link_pb.d.ts +326 -0
- package/src/kusinta/iot/link/v1/link_pb.js +107 -0
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +15 -0
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +1 -1
- package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +9 -0
- package/src/kusinta/iot/webrtc/v1/envelope_pb.js +2 -1
- package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +103 -0
- package/src/kusinta/iot/webrtc/v1/management_pb.js +24 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kusinta/iot-schema",
|
|
3
|
-
"version": "0.2.0-beta.
|
|
3
|
+
"version": "0.2.0-beta.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": ["src"],
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"./space": "./src/kusinta/iot/space/v1/space_pb.js",
|
|
25
25
|
"./access": "./src/kusinta/iot/access/v1/acl_pb.js",
|
|
26
26
|
"./access/roles": "./src/kusinta/iot/access/v1/roles_pb.js",
|
|
27
|
+
"./link": "./src/kusinta/iot/link/v1/link_pb.js",
|
|
27
28
|
"./connector": "./src/kusinta/iot/connector/v1/connector_pb.js",
|
|
28
29
|
"./connector/service": "./src/kusinta/iot/connector/v1/connector_service_pb.js",
|
|
29
30
|
"./webrtc": "./src/kusinta/iot/webrtc/v1/envelope_pb.js",
|
|
@@ -85,9 +85,11 @@ export declare type PairingWindow = Message<"kusinta.iot.common.v1.PairingWindow
|
|
|
85
85
|
* rather than any person's. It does not suit a caller whose pairing mints personal
|
|
86
86
|
* ownership.
|
|
87
87
|
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
88
|
+
* Ignored where device_hint is set, and narrowed to one rather than refused: a hint names
|
|
89
|
+
* one device, so a window restricted to it can never produce a second arrival to attribute.
|
|
90
|
+
* The combination is meaningless rather than dangerous, and there is no honest code in
|
|
91
|
+
* PairingError for "your request contradicted itself" — refusing it would mean answering a
|
|
92
|
+
* malformed request with an entitlement decision that was never made.
|
|
91
93
|
*
|
|
92
94
|
* @generated from field: optional uint32 max_devices = 3;
|
|
93
95
|
*/
|
|
@@ -7,6 +7,7 @@ import type { Message } from "@bufbuild/protobuf";
|
|
|
7
7
|
import type { ConnectorId, DeviceId, GatewayId } from "../../identity/v1/identity_pb.js";
|
|
8
8
|
import type { ConnectorTransport } from "../../common/v1/types_pb.js";
|
|
9
9
|
import type { Device } from "../../device/v1/device_pb.js";
|
|
10
|
+
import type { DeviceLink, LinkFunction, LinkState } from "../../link/v1/link_pb.js";
|
|
10
11
|
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
11
12
|
import type { AttributeWriteRequest, CommandError, DeviceCommand } from "../../webrtc/v1/command_pb.js";
|
|
12
13
|
import type { PairingErrorDetail, PairingWindow } from "../../common/v1/pairing_pb.js";
|
|
@@ -74,6 +75,22 @@ export declare type ConnectorHandshake = Message<"kusinta.iot.connector.v1.Conne
|
|
|
74
75
|
* @generated from field: repeated kusinta.iot.device.v1.Device known_devices = 2;
|
|
75
76
|
*/
|
|
76
77
|
knownDevices: Device[];
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Every link the hub currently holds, reported the way known_devices is.
|
|
81
|
+
*
|
|
82
|
+
* Links are hub state, not gateway state: they outlive a connector restart and
|
|
83
|
+
* can be changed by anyone with access to the hub. The gateway's records are a
|
|
84
|
+
* statement of intent that can drift, so the handshake is the moment to
|
|
85
|
+
* reconcile them against what is really there. A link in the gateway's records
|
|
86
|
+
* and not here has gone; one here and not in the records was made elsewhere.
|
|
87
|
+
*
|
|
88
|
+
* Empty means "states nothing" — a connector that does not model linking is not
|
|
89
|
+
* asserting that no links exist.
|
|
90
|
+
*
|
|
91
|
+
* @generated from field: repeated kusinta.iot.link.v1.DeviceLink known_links = 3;
|
|
92
|
+
*/
|
|
93
|
+
knownLinks: DeviceLink[];
|
|
77
94
|
};
|
|
78
95
|
|
|
79
96
|
/**
|
|
@@ -82,6 +99,163 @@ export declare type ConnectorHandshake = Message<"kusinta.iot.connector.v1.Conne
|
|
|
82
99
|
*/
|
|
83
100
|
export declare const ConnectorHandshakeSchema: GenMessage<ConnectorHandshake>;
|
|
84
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Asks the connector to make a link, gateway to connector.
|
|
104
|
+
*
|
|
105
|
+
* Names two devices and a function; resolving that into whatever set of
|
|
106
|
+
* underlying connections the hub needs is the connector's work. It is expected to
|
|
107
|
+
* build the set atomically and roll back a partial one, because a half-built set
|
|
108
|
+
* is a link that lists as healthy and carries nothing.
|
|
109
|
+
*
|
|
110
|
+
* The connector is also expected to repair whatever the operation disturbs. On at
|
|
111
|
+
* least one vendor, both making and removing a link leaves the receiving device
|
|
112
|
+
* in a state it was not in before, with settings that must be captured
|
|
113
|
+
* beforehand and put back after.
|
|
114
|
+
*
|
|
115
|
+
* @generated from message kusinta.iot.connector.v1.CreateLink
|
|
116
|
+
*/
|
|
117
|
+
export declare type CreateLink = Message<"kusinta.iot.connector.v1.CreateLink"> & {
|
|
118
|
+
/**
|
|
119
|
+
* assigned by the gateway, echoed in the result
|
|
120
|
+
*
|
|
121
|
+
* @generated from field: string link_id = 1;
|
|
122
|
+
*/
|
|
123
|
+
linkId: string;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId sender = 2;
|
|
127
|
+
*/
|
|
128
|
+
sender?: DeviceId | undefined;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId receiver = 3;
|
|
132
|
+
*/
|
|
133
|
+
receiver?: DeviceId | undefined;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* @generated from field: kusinta.iot.link.v1.LinkFunction function = 4;
|
|
137
|
+
*/
|
|
138
|
+
function: LinkFunction;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Describes the message kusinta.iot.connector.v1.CreateLink.
|
|
143
|
+
* Use `create(CreateLinkSchema)` to create a new message.
|
|
144
|
+
*/
|
|
145
|
+
export declare const CreateLinkSchema: GenMessage<CreateLink>;
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Asks the connector to remove a link it previously made.
|
|
149
|
+
*
|
|
150
|
+
* @generated from message kusinta.iot.connector.v1.RemoveLink
|
|
151
|
+
*/
|
|
152
|
+
export declare type RemoveLink = Message<"kusinta.iot.connector.v1.RemoveLink"> & {
|
|
153
|
+
/**
|
|
154
|
+
* @generated from field: string link_id = 1;
|
|
155
|
+
*/
|
|
156
|
+
linkId: string;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId sender = 2;
|
|
160
|
+
*/
|
|
161
|
+
sender?: DeviceId | undefined;
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId receiver = 3;
|
|
165
|
+
*/
|
|
166
|
+
receiver?: DeviceId | undefined;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* @generated from field: kusinta.iot.link.v1.LinkFunction function = 4;
|
|
170
|
+
*/
|
|
171
|
+
function: LinkFunction;
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Describes the message kusinta.iot.connector.v1.RemoveLink.
|
|
176
|
+
* Use `create(RemoveLinkSchema)` to create a new message.
|
|
177
|
+
*/
|
|
178
|
+
export declare const RemoveLinkSchema: GenMessage<RemoveLink>;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Asks the connector what links the hub holds, for reconciliation outside a
|
|
182
|
+
* handshake.
|
|
183
|
+
*
|
|
184
|
+
* @generated from message kusinta.iot.connector.v1.ListLinks
|
|
185
|
+
*/
|
|
186
|
+
export declare type ListLinks = Message<"kusinta.iot.connector.v1.ListLinks"> & {
|
|
187
|
+
/**
|
|
188
|
+
* Unset asks for every link the hub holds.
|
|
189
|
+
*
|
|
190
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
|
|
191
|
+
*/
|
|
192
|
+
deviceId?: DeviceId | undefined;
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Describes the message kusinta.iot.connector.v1.ListLinks.
|
|
197
|
+
* Use `create(ListLinksSchema)` to create a new message.
|
|
198
|
+
*/
|
|
199
|
+
export declare const ListLinksSchema: GenMessage<ListLinks>;
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* What became of a CreateLink or RemoveLink, connector to gateway.
|
|
203
|
+
*
|
|
204
|
+
* Reports the link's observed state rather than merely whether the call was
|
|
205
|
+
* accepted. A hub will report a link as present and healthy while the devices
|
|
206
|
+
* ignore it, so "the request did not fail" is not the same claim as "the link is
|
|
207
|
+
* carrying" and must not be encoded as though it were.
|
|
208
|
+
*
|
|
209
|
+
* @generated from message kusinta.iot.connector.v1.LinkResult
|
|
210
|
+
*/
|
|
211
|
+
export declare type LinkResult = Message<"kusinta.iot.connector.v1.LinkResult"> & {
|
|
212
|
+
/**
|
|
213
|
+
* @generated from field: string link_id = 1;
|
|
214
|
+
*/
|
|
215
|
+
linkId: string;
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* @generated from field: bool success = 2;
|
|
219
|
+
*/
|
|
220
|
+
success: boolean;
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* @generated from field: kusinta.iot.link.v1.LinkState state = 3;
|
|
224
|
+
*/
|
|
225
|
+
state: LinkState;
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Why not, when success is false. For a person; never parsed.
|
|
229
|
+
*
|
|
230
|
+
* @generated from field: string detail = 4;
|
|
231
|
+
*/
|
|
232
|
+
detail: string;
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Describes the message kusinta.iot.connector.v1.LinkResult.
|
|
237
|
+
* Use `create(LinkResultSchema)` to create a new message.
|
|
238
|
+
*/
|
|
239
|
+
export declare const LinkResultSchema: GenMessage<LinkResult>;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Every link the hub holds, connector to gateway, in reply to ListLinks.
|
|
243
|
+
*
|
|
244
|
+
* @generated from message kusinta.iot.connector.v1.LinksReported
|
|
245
|
+
*/
|
|
246
|
+
export declare type LinksReported = Message<"kusinta.iot.connector.v1.LinksReported"> & {
|
|
247
|
+
/**
|
|
248
|
+
* @generated from field: repeated kusinta.iot.link.v1.DeviceLink links = 1;
|
|
249
|
+
*/
|
|
250
|
+
links: DeviceLink[];
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Describes the message kusinta.iot.connector.v1.LinksReported.
|
|
255
|
+
* Use `create(LinksReportedSchema)` to create a new message.
|
|
256
|
+
*/
|
|
257
|
+
export declare const LinksReportedSchema: GenMessage<LinksReported>;
|
|
258
|
+
|
|
85
259
|
/**
|
|
86
260
|
* @generated from message kusinta.iot.connector.v1.HandshakeAck
|
|
87
261
|
*/
|
|
@@ -521,6 +695,18 @@ export declare type SessionRequest = Message<"kusinta.iot.connector.v1.SessionRe
|
|
|
521
695
|
*/
|
|
522
696
|
value: PairingModeEnded;
|
|
523
697
|
case: "pairingModeEnded";
|
|
698
|
+
} | {
|
|
699
|
+
/**
|
|
700
|
+
* @generated from field: kusinta.iot.connector.v1.LinkResult link_result = 12;
|
|
701
|
+
*/
|
|
702
|
+
value: LinkResult;
|
|
703
|
+
case: "linkResult";
|
|
704
|
+
} | {
|
|
705
|
+
/**
|
|
706
|
+
* @generated from field: kusinta.iot.connector.v1.LinksReported links_reported = 13;
|
|
707
|
+
*/
|
|
708
|
+
value: LinksReported;
|
|
709
|
+
case: "linksReported";
|
|
524
710
|
} | { case: undefined; value?: undefined };
|
|
525
711
|
};
|
|
526
712
|
|
|
@@ -594,6 +780,28 @@ export declare type SessionResponse = Message<"kusinta.iot.connector.v1.SessionR
|
|
|
594
780
|
*/
|
|
595
781
|
value: EnterPairingMode;
|
|
596
782
|
case: "enterPairingMode";
|
|
783
|
+
} | {
|
|
784
|
+
/**
|
|
785
|
+
* The link operations. Separate cases rather than one with a verb, so a
|
|
786
|
+
* connector that models none of them fails to match rather than having to
|
|
787
|
+
* decode a request it cannot serve.
|
|
788
|
+
*
|
|
789
|
+
* @generated from field: kusinta.iot.connector.v1.CreateLink create_link = 11;
|
|
790
|
+
*/
|
|
791
|
+
value: CreateLink;
|
|
792
|
+
case: "createLink";
|
|
793
|
+
} | {
|
|
794
|
+
/**
|
|
795
|
+
* @generated from field: kusinta.iot.connector.v1.RemoveLink remove_link = 12;
|
|
796
|
+
*/
|
|
797
|
+
value: RemoveLink;
|
|
798
|
+
case: "removeLink";
|
|
799
|
+
} | {
|
|
800
|
+
/**
|
|
801
|
+
* @generated from field: kusinta.iot.connector.v1.ListLinks list_links = 13;
|
|
802
|
+
*/
|
|
803
|
+
value: ListLinks;
|
|
804
|
+
case: "listLinks";
|
|
597
805
|
} | { case: undefined; value?: undefined };
|
|
598
806
|
};
|
|
599
807
|
|
|
@@ -10,13 +10,14 @@ import { file_kusinta_iot_device_v1_device } from "../../device/v1/device_pb.js"
|
|
|
10
10
|
import { file_kusinta_iot_device_v1_device_event } from "../../device/v1/device_event_pb.js";
|
|
11
11
|
import { file_kusinta_iot_device_v1_property_update } from "../../device/v1/property_update_pb.js";
|
|
12
12
|
import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
|
|
13
|
+
import { file_kusinta_iot_link_v1_link } from "../../link/v1/link_pb.js";
|
|
13
14
|
import { file_kusinta_iot_webrtc_v1_command } from "../../webrtc/v1/command_pb.js";
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Describes the file kusinta/iot/connector/v1/connector.proto.
|
|
17
18
|
*/
|
|
18
19
|
export const file_kusinta_iot_connector_v1_connector = /*@__PURE__*/
|
|
19
|
-
fileDesc("
|
|
20
|
+
fileDesc("CihrdXNpbnRhL2lvdC9jb25uZWN0b3IvdjEvY29ubmVjdG9yLnByb3RvEhhrdXNpbnRhLmlvdC5jb25uZWN0b3IudjEi5QEKDUNvbm5lY3RvckluZm8SOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSPAoJdHJhbnNwb3J0GAQgASgOMikua3VzaW50YS5pb3QuY29tbW9uLnYxLkNvbm5lY3RvclRyYW5zcG9ydBIQCghlbmRwb2ludBgFIAEoCRIhChlzdXBwb3J0ZWRfZGV2aWNlX3R5cGVfaWRzGAYgAygNIrcBChJDb25uZWN0b3JIYW5kc2hha2USNQoEaW5mbxgBIAEoCzInLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5Db25uZWN0b3JJbmZvEjQKDWtub3duX2RldmljZXMYAiADKAsyHS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlEjQKC2tub3duX2xpbmtzGAMgAygLMh8ua3VzaW50YS5pb3QubGluay52MS5EZXZpY2VMaW5rIroBCgpDcmVhdGVMaW5rEg8KB2xpbmtfaWQYASABKAkSMQoGc2VuZGVyGAIgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSMwoIcmVjZWl2ZXIYAyABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghmdW5jdGlvbhgEIAEoDjIhLmt1c2ludGEuaW90LmxpbmsudjEuTGlua0Z1bmN0aW9uIroBCgpSZW1vdmVMaW5rEg8KB2xpbmtfaWQYASABKAkSMQoGc2VuZGVyGAIgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSMwoIcmVjZWl2ZXIYAyABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghmdW5jdGlvbhgEIAEoDjIhLmt1c2ludGEuaW90LmxpbmsudjEuTGlua0Z1bmN0aW9uIkEKCUxpc3RMaW5rcxI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJtCgpMaW5rUmVzdWx0Eg8KB2xpbmtfaWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBItCgVzdGF0ZRgDIAEoDjIeLmt1c2ludGEuaW90LmxpbmsudjEuTGlua1N0YXRlEg4KBmRldGFpbBgEIAEoCSI/Cg1MaW5rc1JlcG9ydGVkEi4KBWxpbmtzGAEgAygLMh8ua3VzaW50YS5pb3QubGluay52MS5EZXZpY2VMaW5rImgKDEhhbmRzaGFrZUFjaxIQCghhY2NlcHRlZBgBIAEoCBIOCgZyZWFzb24YAiABKAkSNgoKZ2F0ZXdheV9pZBgDIAEoCzIiLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkdhdGV3YXlJZCJxChJEZXZpY2VBbm5vdW5jZW1lbnQSLQoGZGV2aWNlGAIgASgLMh0ua3VzaW50YS5pb3QuZGV2aWNlLnYxLkRldmljZRIaChJwYWlyaW5nX3JlcXVlc3RfaWQYAyABKAlKBAgBEAJSCmRlc2NyaXB0b3IiVQoNRGV2aWNlUmVtb3ZhbBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIOCgZyZWFzb24YAiABKAkiCwoJSGVhcnRCZWF0IkcKD1N1YnNjcmliZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJJChFVbnN1YnNjcmliZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJBCgxHYXRld2F5RXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEhIKCnJlcXVlc3RfaWQYAyABKAki7QEKFkNvbm5lY3RvckNvbW1hbmRSZXN1bHQSEgoKcmVxdWVzdF9pZBgBIAEoCRIPCgdzdWNjZXNzGAIgASgIEjAKDGNvbXBsZXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMgoFZXJyb3IYBSABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29tbWFuZEVycm9yEjMKCnNldHRsZXNfYnkYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDQoLX3NldHRsZXNfYnlKBAgDEAQiXAoQRW50ZXJQYWlyaW5nTW9kZRISCgpyZXF1ZXN0X2lkGAEgASgJEjQKBndpbmRvdxgCIAEoCzIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nV2luZG93IqMBChFQYWlyaW5nTW9kZVJlc3VsdBISCgpyZXF1ZXN0X2lkGAEgASgJEhAKCGFjY2VwdGVkGAIgASgIEjgKBWVycm9yGAMgASgLMikua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdFcnJvckRldGFpbBIuCgpleHBpcmVzX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJ8ChBQYWlyaW5nTW9kZUVuZGVkEhIKCnJlcXVlc3RfaWQYASABKAkSGgoSZGV2aWNlc19hdHRyaWJ1dGVkGAIgASgNEjgKBWVycm9yGAMgASgLMikua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdFcnJvckRldGFpbCLRBgoOU2Vzc2lvblJlcXVlc3QSEgoKbWVzc2FnZV9pZBgBIAEoCRIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJBCgloYW5kc2hha2UYAyABKAsyLC5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuQ29ubmVjdG9ySGFuZHNoYWtlSAASRQoPcHJvcGVydHlfdXBkYXRlGAQgASgLMioua3VzaW50YS5pb3QuZGV2aWNlLnYxLlByb3BlcnR5VXBkYXRlQmF0Y2hIABJIChBkZXZpY2VfYW5ub3VuY2VkGAUgASgLMiwua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkRldmljZUFubm91bmNlbWVudEgAEkEKDmRldmljZV9yZW1vdmVkGAYgASgLMicua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkRldmljZVJlbW92YWxIABJKCg5jb21tYW5kX3Jlc3VsdBgHIAEoCzIwLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5Db25uZWN0b3JDb21tYW5kUmVzdWx0SAASOAoJaGVhcnRiZWF0GAggASgLMiMua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkhlYXJ0QmVhdEgAEkAKDWRldmljZV9ldmVudHMYCSABKAsyJy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlRXZlbnRCYXRjaEgAEkoKE3BhaXJpbmdfbW9kZV9yZXN1bHQYCiABKAsyKy5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuUGFpcmluZ01vZGVSZXN1bHRIABJIChJwYWlyaW5nX21vZGVfZW5kZWQYCyABKAsyKi5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuUGFpcmluZ01vZGVFbmRlZEgAEjsKC2xpbmtfcmVzdWx0GAwgASgLMiQua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkxpbmtSZXN1bHRIABJBCg5saW5rc19yZXBvcnRlZBgNIAEoCzInLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5MaW5rc1JlcG9ydGVkSABCCQoHcGF5bG9hZCLyBQoPU2Vzc2lvblJlc3BvbnNlEhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPwoNaGFuZHNoYWtlX2FjaxgDIAEoCzImLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5IYW5kc2hha2VBY2tIABI+CglzdWJzY3JpYmUYBSABKAsyKS5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuU3Vic2NyaWJlRGV2aWNlSAASQgoLdW5zdWJzY3JpYmUYBiABKAsyKy5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuVW5zdWJzY3JpYmVEZXZpY2VIABI3CgVlcnJvchgHIAEoCzImLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5HYXRld2F5RXJyb3JIABI/Cg9leGVjdXRlX2NvbW1hbmQYCCABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlQ29tbWFuZEgAEk8KF2V4ZWN1dGVfYXR0cmlidXRlX3dyaXRlGAkgASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkF0dHJpYnV0ZVdyaXRlUmVxdWVzdEgAEkgKEmVudGVyX3BhaXJpbmdfbW9kZRgKIAEoCzIqLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5FbnRlclBhaXJpbmdNb2RlSAASOwoLY3JlYXRlX2xpbmsYCyABKAsyJC5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuQ3JlYXRlTGlua0gAEjsKC3JlbW92ZV9saW5rGAwgASgLMiQua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLlJlbW92ZUxpbmtIABI5CgpsaXN0X2xpbmtzGA0gASgLMiMua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkxpc3RMaW5rc0gAQgkKB3BheWxvYWRKBAgEEAVCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_common_v1_pairing, file_kusinta_iot_common_v1_types, file_kusinta_iot_device_v1_device, file_kusinta_iot_device_v1_device_event, file_kusinta_iot_device_v1_property_update, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_webrtc_v1_command]);
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
23
|
* Describes the message kusinta.iot.connector.v1.ConnectorInfo.
|
|
@@ -32,94 +33,129 @@ export const ConnectorInfoSchema = /*@__PURE__*/
|
|
|
32
33
|
export const ConnectorHandshakeSchema = /*@__PURE__*/
|
|
33
34
|
messageDesc(file_kusinta_iot_connector_v1_connector, 1);
|
|
34
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Describes the message kusinta.iot.connector.v1.CreateLink.
|
|
38
|
+
* Use `create(CreateLinkSchema)` to create a new message.
|
|
39
|
+
*/
|
|
40
|
+
export const CreateLinkSchema = /*@__PURE__*/
|
|
41
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 2);
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Describes the message kusinta.iot.connector.v1.RemoveLink.
|
|
45
|
+
* Use `create(RemoveLinkSchema)` to create a new message.
|
|
46
|
+
*/
|
|
47
|
+
export const RemoveLinkSchema = /*@__PURE__*/
|
|
48
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 3);
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Describes the message kusinta.iot.connector.v1.ListLinks.
|
|
52
|
+
* Use `create(ListLinksSchema)` to create a new message.
|
|
53
|
+
*/
|
|
54
|
+
export const ListLinksSchema = /*@__PURE__*/
|
|
55
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 4);
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Describes the message kusinta.iot.connector.v1.LinkResult.
|
|
59
|
+
* Use `create(LinkResultSchema)` to create a new message.
|
|
60
|
+
*/
|
|
61
|
+
export const LinkResultSchema = /*@__PURE__*/
|
|
62
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 5);
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Describes the message kusinta.iot.connector.v1.LinksReported.
|
|
66
|
+
* Use `create(LinksReportedSchema)` to create a new message.
|
|
67
|
+
*/
|
|
68
|
+
export const LinksReportedSchema = /*@__PURE__*/
|
|
69
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 6);
|
|
70
|
+
|
|
35
71
|
/**
|
|
36
72
|
* Describes the message kusinta.iot.connector.v1.HandshakeAck.
|
|
37
73
|
* Use `create(HandshakeAckSchema)` to create a new message.
|
|
38
74
|
*/
|
|
39
75
|
export const HandshakeAckSchema = /*@__PURE__*/
|
|
40
|
-
messageDesc(file_kusinta_iot_connector_v1_connector,
|
|
76
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 7);
|
|
41
77
|
|
|
42
78
|
/**
|
|
43
79
|
* Describes the message kusinta.iot.connector.v1.DeviceAnnouncement.
|
|
44
80
|
* Use `create(DeviceAnnouncementSchema)` to create a new message.
|
|
45
81
|
*/
|
|
46
82
|
export const DeviceAnnouncementSchema = /*@__PURE__*/
|
|
47
|
-
messageDesc(file_kusinta_iot_connector_v1_connector,
|
|
83
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 8);
|
|
48
84
|
|
|
49
85
|
/**
|
|
50
86
|
* Describes the message kusinta.iot.connector.v1.DeviceRemoval.
|
|
51
87
|
* Use `create(DeviceRemovalSchema)` to create a new message.
|
|
52
88
|
*/
|
|
53
89
|
export const DeviceRemovalSchema = /*@__PURE__*/
|
|
54
|
-
messageDesc(file_kusinta_iot_connector_v1_connector,
|
|
90
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 9);
|
|
55
91
|
|
|
56
92
|
/**
|
|
57
93
|
* Describes the message kusinta.iot.connector.v1.HeartBeat.
|
|
58
94
|
* Use `create(HeartBeatSchema)` to create a new message.
|
|
59
95
|
*/
|
|
60
96
|
export const HeartBeatSchema = /*@__PURE__*/
|
|
61
|
-
messageDesc(file_kusinta_iot_connector_v1_connector,
|
|
97
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 10);
|
|
62
98
|
|
|
63
99
|
/**
|
|
64
100
|
* Describes the message kusinta.iot.connector.v1.SubscribeDevice.
|
|
65
101
|
* Use `create(SubscribeDeviceSchema)` to create a new message.
|
|
66
102
|
*/
|
|
67
103
|
export const SubscribeDeviceSchema = /*@__PURE__*/
|
|
68
|
-
messageDesc(file_kusinta_iot_connector_v1_connector,
|
|
104
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 11);
|
|
69
105
|
|
|
70
106
|
/**
|
|
71
107
|
* Describes the message kusinta.iot.connector.v1.UnsubscribeDevice.
|
|
72
108
|
* Use `create(UnsubscribeDeviceSchema)` to create a new message.
|
|
73
109
|
*/
|
|
74
110
|
export const UnsubscribeDeviceSchema = /*@__PURE__*/
|
|
75
|
-
messageDesc(file_kusinta_iot_connector_v1_connector,
|
|
111
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 12);
|
|
76
112
|
|
|
77
113
|
/**
|
|
78
114
|
* Describes the message kusinta.iot.connector.v1.GatewayError.
|
|
79
115
|
* Use `create(GatewayErrorSchema)` to create a new message.
|
|
80
116
|
*/
|
|
81
117
|
export const GatewayErrorSchema = /*@__PURE__*/
|
|
82
|
-
messageDesc(file_kusinta_iot_connector_v1_connector,
|
|
118
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 13);
|
|
83
119
|
|
|
84
120
|
/**
|
|
85
121
|
* Describes the message kusinta.iot.connector.v1.ConnectorCommandResult.
|
|
86
122
|
* Use `create(ConnectorCommandResultSchema)` to create a new message.
|
|
87
123
|
*/
|
|
88
124
|
export const ConnectorCommandResultSchema = /*@__PURE__*/
|
|
89
|
-
messageDesc(file_kusinta_iot_connector_v1_connector,
|
|
125
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 14);
|
|
90
126
|
|
|
91
127
|
/**
|
|
92
128
|
* Describes the message kusinta.iot.connector.v1.EnterPairingMode.
|
|
93
129
|
* Use `create(EnterPairingModeSchema)` to create a new message.
|
|
94
130
|
*/
|
|
95
131
|
export const EnterPairingModeSchema = /*@__PURE__*/
|
|
96
|
-
messageDesc(file_kusinta_iot_connector_v1_connector,
|
|
132
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 15);
|
|
97
133
|
|
|
98
134
|
/**
|
|
99
135
|
* Describes the message kusinta.iot.connector.v1.PairingModeResult.
|
|
100
136
|
* Use `create(PairingModeResultSchema)` to create a new message.
|
|
101
137
|
*/
|
|
102
138
|
export const PairingModeResultSchema = /*@__PURE__*/
|
|
103
|
-
messageDesc(file_kusinta_iot_connector_v1_connector,
|
|
139
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 16);
|
|
104
140
|
|
|
105
141
|
/**
|
|
106
142
|
* Describes the message kusinta.iot.connector.v1.PairingModeEnded.
|
|
107
143
|
* Use `create(PairingModeEndedSchema)` to create a new message.
|
|
108
144
|
*/
|
|
109
145
|
export const PairingModeEndedSchema = /*@__PURE__*/
|
|
110
|
-
messageDesc(file_kusinta_iot_connector_v1_connector,
|
|
146
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 17);
|
|
111
147
|
|
|
112
148
|
/**
|
|
113
149
|
* Describes the message kusinta.iot.connector.v1.SessionRequest.
|
|
114
150
|
* Use `create(SessionRequestSchema)` to create a new message.
|
|
115
151
|
*/
|
|
116
152
|
export const SessionRequestSchema = /*@__PURE__*/
|
|
117
|
-
messageDesc(file_kusinta_iot_connector_v1_connector,
|
|
153
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 18);
|
|
118
154
|
|
|
119
155
|
/**
|
|
120
156
|
* Describes the message kusinta.iot.connector.v1.SessionResponse.
|
|
121
157
|
* Use `create(SessionResponseSchema)` to create a new message.
|
|
122
158
|
*/
|
|
123
159
|
export const SessionResponseSchema = /*@__PURE__*/
|
|
124
|
-
messageDesc(file_kusinta_iot_connector_v1_connector,
|
|
160
|
+
messageDesc(file_kusinta_iot_connector_v1_connector, 19);
|
|
125
161
|
|
|
@@ -7,6 +7,7 @@ import type { Message } from "@bufbuild/protobuf";
|
|
|
7
7
|
import type { ConnectorId, DeviceId, SpaceId, UserId } from "../../identity/v1/identity_pb.js";
|
|
8
8
|
import type { DeviceLifecycleState, DeviceOwnershipType } from "../../common/v1/types_pb.js";
|
|
9
9
|
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
10
|
+
import type { LinkCapability } from "../../link/v1/link_pb.js";
|
|
10
11
|
import type { HomematicDeviceIdentity } from "../../vendor/homematic/v1/homematic_pb.js";
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -126,6 +127,18 @@ export declare type DeviceDescriptor = Message<"kusinta.iot.device.v1.DeviceDesc
|
|
|
126
127
|
*/
|
|
127
128
|
bridgedBy?: DeviceId | undefined;
|
|
128
129
|
|
|
130
|
+
/**
|
|
131
|
+
* What this device can be linked as, if anything — see link.v1.LinkCapability.
|
|
132
|
+
*
|
|
133
|
+
* Declared by the connector that models the device, because only it knows
|
|
134
|
+
* which of a device's connections can lead, which can follow, and what a hub
|
|
135
|
+
* will actually broker. Empty means "states nothing", never "cannot be
|
|
136
|
+
* linked": a connector that does not model linking says nothing here.
|
|
137
|
+
*
|
|
138
|
+
* @generated from field: repeated kusinta.iot.link.v1.LinkCapability link_capabilities = 20;
|
|
139
|
+
*/
|
|
140
|
+
linkCapabilities: LinkCapability[];
|
|
141
|
+
|
|
129
142
|
/**
|
|
130
143
|
* @generated from oneof kusinta.iot.device.v1.DeviceDescriptor.vendor_identity
|
|
131
144
|
*/
|
|
@@ -6,13 +6,14 @@ import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
|
6
6
|
import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
|
|
7
7
|
import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb.js";
|
|
8
8
|
import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
|
|
9
|
+
import { file_kusinta_iot_link_v1_link } from "../../link/v1/link_pb.js";
|
|
9
10
|
import { file_kusinta_iot_vendor_homematic_v1_homematic } from "../../vendor/homematic/v1/homematic_pb.js";
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Describes the file kusinta/iot/device/v1/descriptor.proto.
|
|
13
14
|
*/
|
|
14
15
|
export const file_kusinta_iot_device_v1_descriptor = /*@__PURE__*/
|
|
15
|
-
fileDesc("
|
|
16
|
+
fileDesc("CiZrdXNpbnRhL2lvdC9kZXZpY2UvdjEvZGVzY3JpcHRvci5wcm90bxIVa3VzaW50YS5pb3QuZGV2aWNlLnYxIvkGChBEZXZpY2VEZXNjcmlwdG9yEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEhMKC3ZlbmRvcl9uYW1lGAMgASgJEhQKDHByb2R1Y3RfbmFtZRgEIAEoCRIVCg1zZXJpYWxfbnVtYmVyGAUgASgJEhIKCm5vZGVfbGFiZWwYBiABKAkSEQoJdmVuZG9yX2lkGAcgASgNEhIKCnByb2R1Y3RfaWQYCCABKA0SHwoXaGFyZHdhcmVfdmVyc2lvbl9zdHJpbmcYCSABKAkSHwoXc29mdHdhcmVfdmVyc2lvbl9zdHJpbmcYCiABKAkSOgoMY29ubmVjdG9yX2lkGAsgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSMgoIc3BhY2VfaWQYDCABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEj0KCW93bmVyc2hpcBgNIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlEj4KCWxpZmVjeWNsZRgOIAEoDjIrLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VMaWZlY3ljbGVTdGF0ZRI2Cg1vd25lcl91c2VyX2lkGA8gASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEi4KCmNsYWltZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKCmJyaWRnZWRfYnkYEyABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZEgBiAEBEj4KEWxpbmtfY2FwYWJpbGl0aWVzGBQgAygLMiMua3VzaW50YS5pb3QubGluay52MS5MaW5rQ2FwYWJpbGl0eRJNCglob21lbWF0aWMYEiABKAsyOC5rdXNpbnRhLmlvdC52ZW5kb3IuaG9tZW1hdGljLnYxLkhvbWVtYXRpY0RldmljZUlkZW50aXR5SABCEQoPdmVuZG9yX2lkZW50aXR5Qg0KC19icmlkZ2VkX2J5SgQIAhADSgQIERASUhVtYXR0ZXJfZGV2aWNlX3R5cGVfaWRSCWVuZHBvaW50c0ICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_vendor_homematic_v1_homematic]);
|
|
16
17
|
|
|
17
18
|
/**
|
|
18
19
|
* Describes the message kusinta.iot.device.v1.DeviceDescriptor.
|
|
@@ -253,8 +253,11 @@ export declare type Device = Message<"kusinta.iot.device.v1.Device"> & {
|
|
|
253
253
|
endpoints: Endpoint[];
|
|
254
254
|
|
|
255
255
|
/**
|
|
256
|
-
* When the gateway last had evidence this device
|
|
257
|
-
* most recent PropertyUpdate
|
|
256
|
+
* When the gateway last had evidence this device itself — the
|
|
257
|
+
* most recent PropertyUpdate (wheter or not the property changed) or command
|
|
258
|
+
* result concerning it. Should not be advanced on a device announcement: a
|
|
259
|
+
* connector typically re-announces from its own device list, so a device with a
|
|
260
|
+
* flat battery would otherwise keep looking freshly seen.
|
|
258
261
|
* Gateway-observed, not connector-reported: no message on either leg carries a
|
|
259
262
|
* per-device liveness timestamp, so this is as precise as the device's own report
|
|
260
263
|
* interval. A device that reports every 15 minutes looks stale for 15 minutes.
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
// @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
|
|
2
|
+
// @generated from file kusinta/iot/link/v1/link.proto (package kusinta.iot.link.v1, syntax proto3)
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
|
|
5
|
+
import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
6
|
+
import type { Message } from "@bufbuild/protobuf";
|
|
7
|
+
import type { DeviceId } from "../../identity/v1/identity_pb.js";
|
|
8
|
+
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
9
|
+
import type { AttributeRef } from "../../access/v1/acl_pb.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Describes the file kusinta/iot/link/v1/link.proto.
|
|
13
|
+
*/
|
|
14
|
+
export declare const file_kusinta_iot_link_v1_link: GenFile;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* One device leading another.
|
|
18
|
+
*
|
|
19
|
+
* @generated from message kusinta.iot.link.v1.DeviceLink
|
|
20
|
+
*/
|
|
21
|
+
export declare type DeviceLink = Message<"kusinta.iot.link.v1.DeviceLink"> & {
|
|
22
|
+
/**
|
|
23
|
+
* @generated from field: string link_id = 1;
|
|
24
|
+
*/
|
|
25
|
+
linkId: string;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Which device leads. This is the control surface for the pair: for a climate
|
|
29
|
+
* link, the setpoint that governs both is written here.
|
|
30
|
+
*
|
|
31
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId sender = 2;
|
|
32
|
+
*/
|
|
33
|
+
sender?: DeviceId | undefined;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Which device follows. One sender may lead several receivers — a room with
|
|
37
|
+
* more than one radiator is the ordinary case — and each is its own link.
|
|
38
|
+
* Several senders leading one receiver is not modelled: combining two
|
|
39
|
+
* measurements needs a policy, and no policy is defined.
|
|
40
|
+
*
|
|
41
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId receiver = 3;
|
|
42
|
+
*/
|
|
43
|
+
receiver?: DeviceId | undefined;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @generated from field: kusinta.iot.link.v1.LinkFunction function = 4;
|
|
47
|
+
*/
|
|
48
|
+
function: LinkFunction;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @generated from field: kusinta.iot.link.v1.LinkMode mode = 5;
|
|
52
|
+
*/
|
|
53
|
+
mode: LinkMode;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @generated from field: kusinta.iot.link.v1.LinkState state = 6;
|
|
57
|
+
*/
|
|
58
|
+
state: LinkState;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @generated from field: google.protobuf.Timestamp created_at = 7;
|
|
62
|
+
*/
|
|
63
|
+
createdAt?: Timestamp | undefined;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Why the link is not carrying, when state says it is not. Free text for a
|
|
67
|
+
* person, never parsed.
|
|
68
|
+
*
|
|
69
|
+
* @generated from field: string state_detail = 8;
|
|
70
|
+
*/
|
|
71
|
+
stateDetail: string;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Describes the message kusinta.iot.link.v1.DeviceLink.
|
|
76
|
+
* Use `create(DeviceLinkSchema)` to create a new message.
|
|
77
|
+
*/
|
|
78
|
+
export declare const DeviceLinkSchema: GenMessage<DeviceLink>;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* What a device can be linked as, declared by the connector that models it.
|
|
82
|
+
*
|
|
83
|
+
* Without this an interface cannot offer a sensible choice: it has no way to know
|
|
84
|
+
* which of two devices may lead, whether a hub can broker them, or which
|
|
85
|
+
* attribute carries the quantity in question. Matching is mechanical — the same
|
|
86
|
+
* function, opposite directions, and a mode both ends support.
|
|
87
|
+
*
|
|
88
|
+
* Declared per device rather than per endpoint. Endpoint would be more precise,
|
|
89
|
+
* but the channels a link actually attaches to frequently carry no readings and
|
|
90
|
+
* so are not announced as endpoints at all; a per-endpoint declaration would have
|
|
91
|
+
* nowhere honest to live. The reserved range on DeviceLink is where that would go
|
|
92
|
+
* if a vendor ever needs it.
|
|
93
|
+
*
|
|
94
|
+
* @generated from message kusinta.iot.link.v1.LinkCapability
|
|
95
|
+
*/
|
|
96
|
+
export declare type LinkCapability = Message<"kusinta.iot.link.v1.LinkCapability"> & {
|
|
97
|
+
/**
|
|
98
|
+
* @generated from field: kusinta.iot.link.v1.LinkFunction function = 1;
|
|
99
|
+
*/
|
|
100
|
+
function: LinkFunction;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* @generated from field: kusinta.iot.link.v1.LinkDirection direction = 2;
|
|
104
|
+
*/
|
|
105
|
+
direction: LinkDirection;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Modes this device supports for this function. A hard link additionally
|
|
109
|
+
* requires the other end to be on the same hub, which this cannot state alone.
|
|
110
|
+
*
|
|
111
|
+
* @generated from field: repeated kusinta.iot.link.v1.LinkMode supported_modes = 3;
|
|
112
|
+
*/
|
|
113
|
+
supportedModes: LinkMode[];
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* This device's own attribute for this function — the one it reads as a
|
|
117
|
+
* sender, or the one it is driven through as a receiver. Present because the
|
|
118
|
+
* two ends of a link need not speak the same cluster.
|
|
119
|
+
*
|
|
120
|
+
* @generated from field: kusinta.iot.access.v1.AttributeRef attribute = 4;
|
|
121
|
+
*/
|
|
122
|
+
attribute?: AttributeRef | undefined;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Human-readable, from the connector, in whatever locale it was given. For
|
|
126
|
+
* display beside a choice; never matched on.
|
|
127
|
+
*
|
|
128
|
+
* @generated from field: string label = 5;
|
|
129
|
+
*/
|
|
130
|
+
label: string;
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Describes the message kusinta.iot.link.v1.LinkCapability.
|
|
135
|
+
* Use `create(LinkCapabilitySchema)` to create a new message.
|
|
136
|
+
*/
|
|
137
|
+
export declare const LinkCapabilitySchema: GenMessage<LinkCapability>;
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Every link a caller was shown, in reply to a listing.
|
|
141
|
+
*
|
|
142
|
+
* @generated from message kusinta.iot.link.v1.DeviceLinkList
|
|
143
|
+
*/
|
|
144
|
+
export declare type DeviceLinkList = Message<"kusinta.iot.link.v1.DeviceLinkList"> & {
|
|
145
|
+
/**
|
|
146
|
+
* @generated from field: repeated kusinta.iot.link.v1.DeviceLink links = 1;
|
|
147
|
+
*/
|
|
148
|
+
links: DeviceLink[];
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Describes the message kusinta.iot.link.v1.DeviceLinkList.
|
|
153
|
+
* Use `create(DeviceLinkListSchema)` to create a new message.
|
|
154
|
+
*/
|
|
155
|
+
export declare const DeviceLinkListSchema: GenMessage<DeviceLinkList>;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* What a link makes the sender do to the receiver.
|
|
159
|
+
*
|
|
160
|
+
* A function, not a cluster id, because the two ends do not necessarily speak the
|
|
161
|
+
* same cluster: a wall thermostat reports its temperature as Thermostat
|
|
162
|
+
* LocalTemperature while a bare sensor reports the same quantity as Temperature
|
|
163
|
+
* Measurement MeasuredValue. Each end states its own attribute in its
|
|
164
|
+
* LinkCapability; the function is what says the two belong together.
|
|
165
|
+
*
|
|
166
|
+
* @generated from enum kusinta.iot.link.v1.LinkFunction
|
|
167
|
+
*/
|
|
168
|
+
export enum LinkFunction {
|
|
169
|
+
/**
|
|
170
|
+
* @generated from enum value: LINK_FUNCTION_UNSPECIFIED = 0;
|
|
171
|
+
*/
|
|
172
|
+
UNSPECIFIED = 0,
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* The sender leads the receiver's climate control.
|
|
176
|
+
*
|
|
177
|
+
* Stronger than feeding a measurement, and the difference matters to anything
|
|
178
|
+
* building a UI. Both the sender's measured temperature and its setpoint reach
|
|
179
|
+
* the receiver, and the transfer is one way: the receiver reports the sender's
|
|
180
|
+
* temperature as its own, and a setpoint written to the receiver is accepted
|
|
181
|
+
* and then reverted to the sender's. So the sender is the control surface for
|
|
182
|
+
* the pair, and a setpoint control offered on a linked receiver is one that
|
|
183
|
+
* appears to work and silently undoes itself.
|
|
184
|
+
*
|
|
185
|
+
* @generated from enum value: LINK_FUNCTION_CLIMATE_LEAD = 1;
|
|
186
|
+
*/
|
|
187
|
+
CLIMATE_LEAD = 1,
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* The sender's open/closed state reaches the receiver, which acts on it —
|
|
191
|
+
* typically a contact telling a valve to stop heating an open room.
|
|
192
|
+
*
|
|
193
|
+
* Not implied by CLIMATE_LEAD: a device that leads a room's climate does not
|
|
194
|
+
* necessarily forward its own window state, and on at least one vendor it does
|
|
195
|
+
* not. Where both are wanted, both are linked.
|
|
196
|
+
*
|
|
197
|
+
* @generated from enum value: LINK_FUNCTION_WINDOW_STATE = 2;
|
|
198
|
+
*/
|
|
199
|
+
WINDOW_STATE = 2,
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* The sender is an input the receiver acts on — a button or remote.
|
|
203
|
+
*
|
|
204
|
+
* @generated from enum value: LINK_FUNCTION_REMOTE_CONTROL = 3;
|
|
205
|
+
*/
|
|
206
|
+
REMOTE_CONTROL = 3,
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Describes the enum kusinta.iot.link.v1.LinkFunction.
|
|
211
|
+
*/
|
|
212
|
+
export declare const LinkFunctionSchema: GenEnum<LinkFunction>;
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Which end of a link a device can be.
|
|
216
|
+
*
|
|
217
|
+
* @generated from enum kusinta.iot.link.v1.LinkDirection
|
|
218
|
+
*/
|
|
219
|
+
export enum LinkDirection {
|
|
220
|
+
/**
|
|
221
|
+
* @generated from enum value: LINK_DIRECTION_UNSPECIFIED = 0;
|
|
222
|
+
*/
|
|
223
|
+
UNSPECIFIED = 0,
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* can lead
|
|
227
|
+
*
|
|
228
|
+
* @generated from enum value: LINK_DIRECTION_SOURCE = 1;
|
|
229
|
+
*/
|
|
230
|
+
SOURCE = 1,
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* can follow
|
|
234
|
+
*
|
|
235
|
+
* @generated from enum value: LINK_DIRECTION_TARGET = 2;
|
|
236
|
+
*/
|
|
237
|
+
TARGET = 2,
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Describes the enum kusinta.iot.link.v1.LinkDirection.
|
|
242
|
+
*/
|
|
243
|
+
export declare const LinkDirectionSchema: GenEnum<LinkDirection>;
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* How a link is carried.
|
|
247
|
+
*
|
|
248
|
+
* @generated from enum kusinta.iot.link.v1.LinkMode
|
|
249
|
+
*/
|
|
250
|
+
export enum LinkMode {
|
|
251
|
+
/**
|
|
252
|
+
* @generated from enum value: LINK_MODE_UNSPECIFIED = 0;
|
|
253
|
+
*/
|
|
254
|
+
UNSPECIFIED = 0,
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Device to device, brokered by the hub and then carried without it. Survives
|
|
258
|
+
* a gateway outage. Requires both devices on the same hub, and the hub's own
|
|
259
|
+
* support for the function.
|
|
260
|
+
*
|
|
261
|
+
* @generated from enum value: LINK_MODE_HARD = 1;
|
|
262
|
+
*/
|
|
263
|
+
HARD = 1,
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Kept by the gateway, which reads one device and writes the other. Works
|
|
267
|
+
* across vendors and across hubs, and is the only option where no hub can
|
|
268
|
+
* broker the pair — at the cost of not surviving a gateway outage.
|
|
269
|
+
*
|
|
270
|
+
* @generated from enum value: LINK_MODE_SOFT = 2;
|
|
271
|
+
*/
|
|
272
|
+
SOFT = 2,
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Describes the enum kusinta.iot.link.v1.LinkMode.
|
|
277
|
+
*/
|
|
278
|
+
export declare const LinkModeSchema: GenEnum<LinkMode>;
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Whether a link is doing anything.
|
|
282
|
+
*
|
|
283
|
+
* There is deliberately no "created but not yet in effect" state. On current
|
|
284
|
+
* device firmware a link takes effect immediately, and on firmware old enough not
|
|
285
|
+
* to, it never takes effect at all without physical intervention — which is a
|
|
286
|
+
* refusal at creation time, not a state to wait in.
|
|
287
|
+
*
|
|
288
|
+
* Nor should ACTIVE be inferred from the hub reporting a link exists. A hub can
|
|
289
|
+
* report a link as present, unpending and healthy while the devices ignore it
|
|
290
|
+
* entirely; only behaviour distinguishes the two.
|
|
291
|
+
*
|
|
292
|
+
* @generated from enum kusinta.iot.link.v1.LinkState
|
|
293
|
+
*/
|
|
294
|
+
export enum LinkState {
|
|
295
|
+
/**
|
|
296
|
+
* @generated from enum value: LINK_STATE_UNSPECIFIED = 0;
|
|
297
|
+
*/
|
|
298
|
+
UNSPECIFIED = 0,
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* carrying
|
|
302
|
+
*
|
|
303
|
+
* @generated from enum value: LINK_STATE_ACTIVE = 1;
|
|
304
|
+
*/
|
|
305
|
+
ACTIVE = 1,
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* the sender is unreachable, gone, or the set is incomplete
|
|
309
|
+
*
|
|
310
|
+
* @generated from enum value: LINK_STATE_BROKEN = 2;
|
|
311
|
+
*/
|
|
312
|
+
BROKEN = 2,
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* the hub and our records disagree, or the hub cannot say
|
|
316
|
+
*
|
|
317
|
+
* @generated from enum value: LINK_STATE_UNKNOWN = 3;
|
|
318
|
+
*/
|
|
319
|
+
UNKNOWN = 3,
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Describes the enum kusinta.iot.link.v1.LinkState.
|
|
324
|
+
*/
|
|
325
|
+
export declare const LinkStateSchema: GenEnum<LinkState>;
|
|
326
|
+
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
|
|
2
|
+
// @generated from file kusinta/iot/link/v1/link.proto (package kusinta.iot.link.v1, syntax proto3)
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
|
|
5
|
+
import { enumDesc, fileDesc, messageDesc, tsEnum } from "@bufbuild/protobuf/codegenv2";
|
|
6
|
+
import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
|
|
7
|
+
import { file_kusinta_iot_access_v1_acl } from "../../access/v1/acl_pb.js";
|
|
8
|
+
import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Describes the file kusinta/iot/link/v1/link.proto.
|
|
12
|
+
*/
|
|
13
|
+
export const file_kusinta_iot_link_v1_link = /*@__PURE__*/
|
|
14
|
+
fileDesc("Ch5rdXNpbnRhL2lvdC9saW5rL3YxL2xpbmsucHJvdG8SE2t1c2ludGEuaW90LmxpbmsudjEi4gIKCkRldmljZUxpbmsSDwoHbGlua19pZBgBIAEoCRIxCgZzZW5kZXIYAiABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgDIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAQgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24SKwoEbW9kZRgFIAEoDjIdLmt1c2ludGEuaW90LmxpbmsudjEuTGlua01vZGUSLQoFc3RhdGUYBiABKA4yHi5rdXNpbnRhLmlvdC5saW5rLnYxLkxpbmtTdGF0ZRIuCgpjcmVhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxzdGF0ZV9kZXRhaWwYCCABKAlKBAgUEB4i+wEKDkxpbmtDYXBhYmlsaXR5EjMKCGZ1bmN0aW9uGAEgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24SNQoJZGlyZWN0aW9uGAIgASgOMiIua3VzaW50YS5pb3QubGluay52MS5MaW5rRGlyZWN0aW9uEjYKD3N1cHBvcnRlZF9tb2RlcxgDIAMoDjIdLmt1c2ludGEuaW90LmxpbmsudjEuTGlua01vZGUSNgoJYXR0cmlidXRlGAQgASgLMiMua3VzaW50YS5pb3QuYWNjZXNzLnYxLkF0dHJpYnV0ZVJlZhINCgVsYWJlbBgFIAEoCSJACg5EZXZpY2VMaW5rTGlzdBIuCgVsaW5rcxgBIAMoCzIfLmt1c2ludGEuaW90LmxpbmsudjEuRGV2aWNlTGluayqPAQoMTGlua0Z1bmN0aW9uEh0KGUxJTktfRlVOQ1RJT05fVU5TUEVDSUZJRUQQABIeChpMSU5LX0ZVTkNUSU9OX0NMSU1BVEVfTEVBRBABEh4KGkxJTktfRlVOQ1RJT05fV0lORE9XX1NUQVRFEAISIAocTElOS19GVU5DVElPTl9SRU1PVEVfQ09OVFJPTBADKmUKDUxpbmtEaXJlY3Rpb24SHgoaTElOS19ESVJFQ1RJT05fVU5TUEVDSUZJRUQQABIZChVMSU5LX0RJUkVDVElPTl9TT1VSQ0UQARIZChVMSU5LX0RJUkVDVElPTl9UQVJHRVQQAipNCghMaW5rTW9kZRIZChVMSU5LX01PREVfVU5TUEVDSUZJRUQQABISCg5MSU5LX01PREVfSEFSRBABEhIKDkxJTktfTU9ERV9TT0ZUEAIqbQoJTGlua1N0YXRlEhoKFkxJTktfU1RBVEVfVU5TUEVDSUZJRUQQABIVChFMSU5LX1NUQVRFX0FDVElWRRABEhUKEUxJTktfU1RBVEVfQlJPS0VOEAISFgoSTElOS19TVEFURV9VTktOT1dOEANCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_identity_v1_identity]);
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Describes the message kusinta.iot.link.v1.DeviceLink.
|
|
18
|
+
* Use `create(DeviceLinkSchema)` to create a new message.
|
|
19
|
+
*/
|
|
20
|
+
export const DeviceLinkSchema = /*@__PURE__*/
|
|
21
|
+
messageDesc(file_kusinta_iot_link_v1_link, 0);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Describes the message kusinta.iot.link.v1.LinkCapability.
|
|
25
|
+
* Use `create(LinkCapabilitySchema)` to create a new message.
|
|
26
|
+
*/
|
|
27
|
+
export const LinkCapabilitySchema = /*@__PURE__*/
|
|
28
|
+
messageDesc(file_kusinta_iot_link_v1_link, 1);
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Describes the message kusinta.iot.link.v1.DeviceLinkList.
|
|
32
|
+
* Use `create(DeviceLinkListSchema)` to create a new message.
|
|
33
|
+
*/
|
|
34
|
+
export const DeviceLinkListSchema = /*@__PURE__*/
|
|
35
|
+
messageDesc(file_kusinta_iot_link_v1_link, 2);
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Describes the enum kusinta.iot.link.v1.LinkFunction.
|
|
39
|
+
*/
|
|
40
|
+
export const LinkFunctionSchema = /*@__PURE__*/
|
|
41
|
+
enumDesc(file_kusinta_iot_link_v1_link, 0);
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* What a link makes the sender do to the receiver.
|
|
45
|
+
*
|
|
46
|
+
* A function, not a cluster id, because the two ends do not necessarily speak the
|
|
47
|
+
* same cluster: a wall thermostat reports its temperature as Thermostat
|
|
48
|
+
* LocalTemperature while a bare sensor reports the same quantity as Temperature
|
|
49
|
+
* Measurement MeasuredValue. Each end states its own attribute in its
|
|
50
|
+
* LinkCapability; the function is what says the two belong together.
|
|
51
|
+
*
|
|
52
|
+
* @generated from enum kusinta.iot.link.v1.LinkFunction
|
|
53
|
+
*/
|
|
54
|
+
export const LinkFunction = /*@__PURE__*/
|
|
55
|
+
tsEnum(LinkFunctionSchema);
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Describes the enum kusinta.iot.link.v1.LinkDirection.
|
|
59
|
+
*/
|
|
60
|
+
export const LinkDirectionSchema = /*@__PURE__*/
|
|
61
|
+
enumDesc(file_kusinta_iot_link_v1_link, 1);
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Which end of a link a device can be.
|
|
65
|
+
*
|
|
66
|
+
* @generated from enum kusinta.iot.link.v1.LinkDirection
|
|
67
|
+
*/
|
|
68
|
+
export const LinkDirection = /*@__PURE__*/
|
|
69
|
+
tsEnum(LinkDirectionSchema);
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Describes the enum kusinta.iot.link.v1.LinkMode.
|
|
73
|
+
*/
|
|
74
|
+
export const LinkModeSchema = /*@__PURE__*/
|
|
75
|
+
enumDesc(file_kusinta_iot_link_v1_link, 2);
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* How a link is carried.
|
|
79
|
+
*
|
|
80
|
+
* @generated from enum kusinta.iot.link.v1.LinkMode
|
|
81
|
+
*/
|
|
82
|
+
export const LinkMode = /*@__PURE__*/
|
|
83
|
+
tsEnum(LinkModeSchema);
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Describes the enum kusinta.iot.link.v1.LinkState.
|
|
87
|
+
*/
|
|
88
|
+
export const LinkStateSchema = /*@__PURE__*/
|
|
89
|
+
enumDesc(file_kusinta_iot_link_v1_link, 3);
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Whether a link is doing anything.
|
|
93
|
+
*
|
|
94
|
+
* There is deliberately no "created but not yet in effect" state. On current
|
|
95
|
+
* device firmware a link takes effect immediately, and on firmware old enough not
|
|
96
|
+
* to, it never takes effect at all without physical intervention — which is a
|
|
97
|
+
* refusal at creation time, not a state to wait in.
|
|
98
|
+
*
|
|
99
|
+
* Nor should ACTIVE be inferred from the hub reporting a link exists. A hub can
|
|
100
|
+
* report a link as present, unpending and healthy while the devices ignore it
|
|
101
|
+
* entirely; only behaviour distinguishes the two.
|
|
102
|
+
*
|
|
103
|
+
* @generated from enum kusinta.iot.link.v1.LinkState
|
|
104
|
+
*/
|
|
105
|
+
export const LinkState = /*@__PURE__*/
|
|
106
|
+
tsEnum(LinkStateSchema);
|
|
107
|
+
|
|
@@ -236,6 +236,21 @@ export declare type HmMaintenanceProps = Message<"kusinta.iot.vendor.homematic.v
|
|
|
236
236
|
* @generated from field: optional bool config_pending = 7;
|
|
237
237
|
*/
|
|
238
238
|
configPending?: boolean | undefined;
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* True while the device has spent its share of the radio band's transmit budget and
|
|
242
|
+
* must wait before sending again. The 868 MHz band permits roughly one percent duty
|
|
243
|
+
* cycle, and it regenerates at about that rate per half minute.
|
|
244
|
+
*
|
|
245
|
+
* Worth carrying rather than leaving to the connector, because a spent budget is
|
|
246
|
+
* indistinguishable from a working device that simply has nothing to say: it stays
|
|
247
|
+
* reachable, reports no error, and silently drops what it was asked to do. Anything
|
|
248
|
+
* that writes on a schedule needs to be able to see this before it concludes a device
|
|
249
|
+
* is ignoring it.
|
|
250
|
+
*
|
|
251
|
+
* @generated from field: optional bool duty_cycle = 8;
|
|
252
|
+
*/
|
|
253
|
+
dutyCycle?: boolean | undefined;
|
|
239
254
|
};
|
|
240
255
|
|
|
241
256
|
/**
|
|
@@ -9,7 +9,7 @@ import { file_kusinta_iot_vendor_v1_vendor_options } from "../../v1/vendor_optio
|
|
|
9
9
|
* Describes the file kusinta/iot/vendor/homematic/v1/homematic.proto.
|
|
10
10
|
*/
|
|
11
11
|
export const file_kusinta_iot_vendor_homematic_v1_homematic = /*@__PURE__*/
|
|
12
|
-
fileDesc("Ci9rdXNpbnRhL2lvdC92ZW5kb3IvaG9tZW1hdGljL3YxL2hvbWVtYXRpYy5wcm90bxIfa3VzaW50YS5pb3QudmVuZG9yLmhvbWVtYXRpYy52MSI4ChdIb21lbWF0aWNEZXZpY2VJZGVudGl0eRIPCgdhZGRyZXNzGAEgASgJEgwKBHR5cGUYAiABKAki/
|
|
12
|
+
fileDesc("Ci9rdXNpbnRhL2lvdC92ZW5kb3IvaG9tZW1hdGljL3YxL2hvbWVtYXRpYy5wcm90bxIfa3VzaW50YS5pb3QudmVuZG9yLmhvbWVtYXRpYy52MSI4ChdIb21lbWF0aWNEZXZpY2VJZGVudGl0eRIPCgdhZGRyZXNzGAEgASgJEgwKBHR5cGUYAiABKAki/wYKEUhtVGhlcm1vc3RhdFByb3BzEisKCmJvb3N0X21vZGUYASABKAhCEqK1GApCT09TVF9NT0RF0LUYBkgAiAEBEjUKFGJvb3N0X3RpbWVfcmVtYWluaW5nGAIgASgNQhKitRgKQk9PU1RfVElNRdC1GAVIAYgBARIvCgxjb250cm9sX21vZGUYAyABKA1CFKK1GAxDT05UUk9MX01PREXQtRgCSAKIAQESNwoQZnJvc3RfcHJvdGVjdGlvbhgEIAEoCEIYorUYEEZST1NUX1BST1RFQ1RJT07QtRgFSAOIAQESKwoKcGFydHlfbW9kZRgFIAEoCEISorUYClBBUlRZX01PREXQtRgFSASIAQESLwoMd2luZG93X3N0YXRlGAcgASgNQhSitRgMV0lORE9XX1NUQVRF0LUYB0gFiAEBEi0KC3ZhbHZlX3N0YXRlGAggASgNQhOitRgLVkFMVkVfU1RBVEXQtRgFSAaIAQESMwoOc2V0X3BvaW50X21vZGUYCSABKA1CFqK1GA5TRVRfUE9JTlRfTU9ERdC1GAdIB4gBARIzCg5hY3RpdmVfcHJvZmlsZRgKIAEoDUIWorUYDkFDVElWRV9QUk9GSUxF0LUYB0gIiAEBEkkKGWFjdHVhbF90ZW1wZXJhdHVyZV9zdGF0dXMYCyABKA1CIaK1GBlBQ1RVQUxfVEVNUEVSQVRVUkVfU1RBVFVT0LUYBUgJiAEBEjMKDnZhbHZlX2FkYXB0aW9uGAwgASgIQhaitRgOVkFMVkVfQURBUFRJT07QtRgHSAqIAQE6GKq1GBRob21lbWF0aWMudGhlcm1vc3RhdEINCgtfYm9vc3RfbW9kZUIXChVfYm9vc3RfdGltZV9yZW1haW5pbmdCDwoNX2NvbnRyb2xfbW9kZUITChFfZnJvc3RfcHJvdGVjdGlvbkINCgtfcGFydHlfbW9kZUIPCg1fd2luZG93X3N0YXRlQg4KDF92YWx2ZV9zdGF0ZUIRCg9fc2V0X3BvaW50X21vZGVCEQoPX2FjdGl2ZV9wcm9maWxlQhwKGl9hY3R1YWxfdGVtcGVyYXR1cmVfc3RhdHVzQhEKD192YWx2ZV9hZGFwdGlvbkoECAYQB1IFbGV2ZWxSFmN1cnJlbnRfcHJvZmlsZV9wZXJpb2RSEWJvb3N0X3RpbWVfcGVyaW9kIrYEChJIbU1haW50ZW5hbmNlUHJvcHMSKwoKZXJyb3JfY29kZRgBIAEoDUISorUYCkVSUk9SX0NPREXQtRgFSACIAQESJwoIc2Fib3RhZ2UYAiABKAhCEKK1GAhTQUJPVEFHRdC1GAVIAYgBARItCgtyc3NpX2RldmljZRgDIAEoEUITorUYC1JTU0lfREVWSUNF0LUYBUgCiAEBEikKCXJzc2lfcGVlchgEIAEoEUIRorUYCVJTU0lfUEVFUtC1GAVIA4gBARJHChhvcGVyYXRpbmdfdm9sdGFnZV9zdGF0dXMYBSABKA1CIKK1GBhPUEVSQVRJTkdfVk9MVEFHRV9TVEFUVVPQtRgFSASIAQESJQoHdW5yZWFjaBgGIAEoCEIPorUYB1VOUkVBQ0jQtRgFSAWIAQESMwoOY29uZmlnX3BlbmRpbmcYByABKAhCFqK1GA5DT05GSUdfUEVORElOR9C1GAVIBogBARIrCgpkdXR5X2N5Y2xlGAggASgIQhKitRgKRFVUWV9DWUNMRdC1GAVIB4gBAToZqrUYFWhvbWVtYXRpYy5tYWludGVuYW5jZUINCgtfZXJyb3JfY29kZUILCglfc2Fib3RhZ2VCDgoMX3Jzc2lfZGV2aWNlQgwKCl9yc3NpX3BlZXJCGwoZX29wZXJhdGluZ192b2x0YWdlX3N0YXR1c0IKCghfdW5yZWFjaEIRCg9fY29uZmlnX3BlbmRpbmdCDQoLX2R1dHlfY3ljbGVCAkgBYgZwcm90bzM", [file_kusinta_iot_vendor_v1_vendor_options]);
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Describes the message kusinta.iot.vendor.homematic.v1.HomematicDeviceIdentity.
|
|
@@ -8,6 +8,7 @@ import type { ConnectorId, DeviceId, SpaceId } from "../../identity/v1/identity_
|
|
|
8
8
|
import type { AttributeRef } from "../../access/v1/acl_pb.js";
|
|
9
9
|
import type { Space } from "../../space/v1/space_pb.js";
|
|
10
10
|
import type { ManagementAck, ManagementRequest, SpaceTree } from "./management_pb.js";
|
|
11
|
+
import type { DeviceLinkList } from "../../link/v1/link_pb.js";
|
|
11
12
|
import type { PairingErrorDetail, PairingWindow } from "../../common/v1/pairing_pb.js";
|
|
12
13
|
import type { DeviceOwnershipType } from "../../common/v1/types_pb.js";
|
|
13
14
|
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
@@ -318,6 +319,14 @@ export declare type ManagementResult = Message<"kusinta.iot.webrtc.v1.Management
|
|
|
318
319
|
*/
|
|
319
320
|
value: ManagementAck;
|
|
320
321
|
case: "ack";
|
|
322
|
+
} | {
|
|
323
|
+
/**
|
|
324
|
+
* list_device_links
|
|
325
|
+
*
|
|
326
|
+
* @generated from field: kusinta.iot.link.v1.DeviceLinkList links = 6;
|
|
327
|
+
*/
|
|
328
|
+
value: DeviceLinkList;
|
|
329
|
+
case: "links";
|
|
321
330
|
} | { case: undefined; value?: undefined };
|
|
322
331
|
};
|
|
323
332
|
|
|
@@ -9,6 +9,7 @@ import { file_kusinta_iot_common_v1_pairing } from "../../common/v1/pairing_pb.j
|
|
|
9
9
|
import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb.js";
|
|
10
10
|
import { file_kusinta_iot_device_v1_device_event } from "../../device/v1/device_event_pb.js";
|
|
11
11
|
import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
|
|
12
|
+
import { file_kusinta_iot_link_v1_link } from "../../link/v1/link_pb.js";
|
|
12
13
|
import { file_kusinta_iot_space_v1_space } from "../../space/v1/space_pb.js";
|
|
13
14
|
import { file_kusinta_iot_webrtc_v1_command } from "./command_pb.js";
|
|
14
15
|
import { file_kusinta_iot_webrtc_v1_device_state } from "./device_state_pb.js";
|
|
@@ -19,7 +20,7 @@ import { file_kusinta_iot_webrtc_v1_permission_push } from "./permission_push_pb
|
|
|
19
20
|
* Describes the file kusinta/iot/webrtc/v1/envelope.proto.
|
|
20
21
|
*/
|
|
21
22
|
export const file_kusinta_iot_webrtc_v1_envelope = /*@__PURE__*/
|
|
22
|
-
fileDesc("
|
|
23
|
+
fileDesc("CiRrdXNpbnRhL2lvdC93ZWJydGMvdjEvZW52ZWxvcGUucHJvdG8SFWt1c2ludGEuaW90LndlYnJ0Yy52MSIGCgRQaW5nIgYKBFBvbmciIwoRSGFuZHNoYWtlUmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJIlwKDEFwcEhhbmRzaGFrZRILCgNqd3QYASABKAkSPwoUc3Vic2NyaWJlX2RldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJJChBTdWJzY3JpYmVEZXZpY2VzEjUKCmRldmljZV9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJLChJVbnN1YnNjcmliZURldmljZXMSNQoKZGV2aWNlX2lkcxgBIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIpMBChNSZWZ1c2VkU3Vic2NyaXB0aW9uEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjUKBGNvZGUYAiABKA4yJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yQ29kZRIPCgdtZXNzYWdlGAMgASgJIpoBCg9TdWJzY3JpcHRpb25BY2sSEwoLaW5fcmVwbHlfdG8YASABKAkSNQoKc3Vic2NyaWJlZBgCIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjsKB3JlZnVzZWQYAyADKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVmdXNlZFN1YnNjcmlwdGlvbiLRAQoTUHJvcGVydHlSZWFkUmVxdWVzdBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCgZ0YXJnZXQYByABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmSgQIAhAHUg5hdHRyaWJ1dGVfbmFtZVIOY2x1c3Rlcl9pZF9oZXhSCmNsdXN0ZXJfaWRSC2VuZHBvaW50X2lkUhB2ZW5kb3JfZXh0ZW5zaW9uIswBCgxHYXRld2F5RXJyb3ISNQoEY29kZRgBIAEoDjInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5RXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkSQwoIbWV0YWRhdGEYAyADKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIrgCChBNYW5hZ2VtZW50UmVzdWx0EhMKC2luX3JlcGx5X3RvGAEgASgJEjQKBWVycm9yGAIgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEiwKBXNwYWNlGAMgASgLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2VIABI2CgpzcGFjZV90cmVlGAQgASgLMiAua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlVHJlZUgAEjMKA2FjaxgFIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50QWNrSAASNAoFbGlua3MYBiABKAsyIy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmtMaXN0SABCCAoGcmVzdWx0IvsBCgxTdGFydFBhaXJpbmcSOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSNAoGd2luZG93GAIgASgLMiQua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdXaW5kb3cSOgoQaW5pdGlhbF9zcGFjZV9pZBgDIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPQoJb3duZXJzaGlwGAQgASgOMioua3VzaW50YS5pb3QuY29tbW9uLnYxLkRldmljZU93bmVyc2hpcFR5cGUijwEKDlBhaXJpbmdTdGFydGVkEhMKC2luX3JlcGx5X3RvGAEgASgJEi4KCmV4cGlyZXNfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKBWVycm9yGAMgASgLMikua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdFcnJvckRldGFpbCKXAQoPUGFpcmluZ0ZpbmlzaGVkEhMKC2luX3JlcGx5X3RvGAEgASgJEjUKCmRldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBI4CgVlcnJvchgDIAEoCzIpLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nRXJyb3JEZXRhaWwimwgKDkdhdGV3YXlNZXNzYWdlEhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRAoOc3RhdGVfc25hcHNob3QYAyABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlU3RhdGVTbmFwc2hvdEgAEkAKD3Byb3BlcnR5X3JlcG9ydBgEIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9wZXJ0eVJlcG9ydEgAEkgKEXBlcm1pc3Npb25fdXBkYXRlGAUgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpdmVQZXJtaXNzaW9uVXBkYXRlSAASPgoOY29tbWFuZF9yZXN1bHQYBiABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29tbWFuZFJlc3VsdEgAEisKBHBvbmcYCCABKAsyGy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUG9uZ0gAEkYKEmhhbmRzaGFrZV9yZWplY3RlZBgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5IYW5kc2hha2VSZWplY3RlZEgAEjQKBWVycm9yGAogASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEkIKEHN1YnNjcmlwdGlvbl9hY2sYCyABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3Vic2NyaXB0aW9uQWNrSAASOgoMZGV2aWNlX2FkZGVkGAwgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkRldmljZUFkZGVkSAASPgoOZGV2aWNlX3JlbW92ZWQYDSABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlUmVtb3ZlZEgAEkQKEW1hbmFnZW1lbnRfcmVzdWx0GA4gASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLk1hbmFnZW1lbnRSZXN1bHRIABJACg1kZXZpY2VfZXZlbnRzGBAgASgLMicua3VzaW50YS5pb3QuZGV2aWNlLnYxLkRldmljZUV2ZW50QmF0Y2hIABJACg9wYWlyaW5nX3N0YXJ0ZWQYESABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUGFpcmluZ1N0YXJ0ZWRIABJCChBwYWlyaW5nX2ZpbmlzaGVkGBIgASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlBhaXJpbmdGaW5pc2hlZEgAQgkKB3BheWxvYWRKBAgPEBBKBAgHEAhSFmF0dHJpYnV0ZV93cml0ZV9yZXN1bHRSDnByb3BlcnR5X2V2ZW50IoMFCgpBcHBNZXNzYWdlEhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOAoJaGFuZHNoYWtlGAMgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkFwcEhhbmRzaGFrZUgAEjcKB2NvbW1hbmQYBCABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlQ29tbWFuZEgAEkIKDHJlYWRfcmVxdWVzdBgFIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9wZXJ0eVJlYWRSZXF1ZXN0SAASKwoEcGluZxgGIAEoCzIbLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QaW5nSAASPAoJc3Vic2NyaWJlGAcgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlN1YnNjcmliZURldmljZXNIABJACgt1bnN1YnNjcmliZRgIIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5VbnN1YnNjcmliZURldmljZXNIABI+CgptYW5hZ2VtZW50GAkgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLk1hbmFnZW1lbnRSZXF1ZXN0SAASRwoPYXR0cmlidXRlX3dyaXRlGAogASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkF0dHJpYnV0ZVdyaXRlUmVxdWVzdEgAEjwKDXN0YXJ0X3BhaXJpbmcYCyABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3RhcnRQYWlyaW5nSABCCQoHcGF5bG9hZCr2AQoQR2F0ZXdheUVycm9yQ29kZRIiCh5HQVRFV0FZX0VSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIjCh9HQVRFV0FZX0VSUk9SX0NPREVfTk9UX0VOVElUTEVEEAESJgoiR0FURVdBWV9FUlJPUl9DT0RFX0lOVkFMSURfUkVRVUVTVBACEiIKHkdBVEVXQVlfRVJST1JfQ09ERV9VTkFWQUlMQUJMRRADEh8KG0dBVEVXQVlfRVJST1JfQ09ERV9JTlRFUk5BTBAEEiwKKEdBVEVXQVlfRVJST1JfQ09ERV9TRVNTSU9OX0xJTUlUX1JFQUNIRUQQBUICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, 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]);
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
26
|
* Describes the message kusinta.iot.webrtc.v1.Ping.
|
|
@@ -7,6 +7,7 @@ import type { Message } from "@bufbuild/protobuf";
|
|
|
7
7
|
import type { DeviceOwnershipType, SpaceType } from "../../common/v1/types_pb.js";
|
|
8
8
|
import type { DeviceId, SpaceId, UserId } from "../../identity/v1/identity_pb.js";
|
|
9
9
|
import type { Space } from "../../space/v1/space_pb.js";
|
|
10
|
+
import type { LinkFunction, LinkMode } from "../../link/v1/link_pb.js";
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Describes the file kusinta/iot/webrtc/v1/management.proto.
|
|
@@ -383,7 +384,91 @@ export declare const ManagementAckSchema: GenMessage<ManagementAck>;
|
|
|
383
384
|
* message kind, so these can never be gated by a table keyed on the envelope case
|
|
384
385
|
* the way device messages are. Keeping them behind one case means one place that
|
|
385
386
|
* must authorize, and one refusal path that must not leak whether a target exists.
|
|
387
|
+
* Links one device to another, so the sender leads the receiver. The gateway
|
|
388
|
+
* resolves which underlying connections that needs and asks the connector for
|
|
389
|
+
* them; a caller names two devices and what the link is for.
|
|
386
390
|
*
|
|
391
|
+
* Authorized against both ends, and not symmetrically. Leading a device is a
|
|
392
|
+
* standing grant of control over it, so the receiver requires ownership or a
|
|
393
|
+
* servicing role. The sender's requirement depends on the mode: a gateway-kept
|
|
394
|
+
* link only reads what the caller can already see, while a device-to-device one
|
|
395
|
+
* writes configuration to the sender and spends its battery, which is a change
|
|
396
|
+
* to someone else's hardware.
|
|
397
|
+
*
|
|
398
|
+
* @generated from message kusinta.iot.webrtc.v1.CreateDeviceLink
|
|
399
|
+
*/
|
|
400
|
+
export declare type CreateDeviceLink = Message<"kusinta.iot.webrtc.v1.CreateDeviceLink"> & {
|
|
401
|
+
/**
|
|
402
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId sender = 1;
|
|
403
|
+
*/
|
|
404
|
+
sender?: DeviceId | undefined;
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId receiver = 2;
|
|
408
|
+
*/
|
|
409
|
+
receiver?: DeviceId | undefined;
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* @generated from field: kusinta.iot.link.v1.LinkFunction function = 3;
|
|
413
|
+
*/
|
|
414
|
+
function: LinkFunction;
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* Unset lets the gateway choose, which prefers a device-to-device link where
|
|
418
|
+
* one can be brokered: it survives a gateway outage and runs at the devices'
|
|
419
|
+
* own rate. Name one to override that.
|
|
420
|
+
*
|
|
421
|
+
* @generated from field: kusinta.iot.link.v1.LinkMode mode = 4;
|
|
422
|
+
*/
|
|
423
|
+
mode: LinkMode;
|
|
424
|
+
};
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Describes the message kusinta.iot.webrtc.v1.CreateDeviceLink.
|
|
428
|
+
* Use `create(CreateDeviceLinkSchema)` to create a new message.
|
|
429
|
+
*/
|
|
430
|
+
export declare const CreateDeviceLinkSchema: GenMessage<CreateDeviceLink>;
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Removes a link. Note that on at least one vendor, removing a link disturbs the
|
|
434
|
+
* receiver's own settings and the connector must repair them, so this is not the
|
|
435
|
+
* no-op it appears to be.
|
|
436
|
+
*
|
|
437
|
+
* @generated from message kusinta.iot.webrtc.v1.RemoveDeviceLink
|
|
438
|
+
*/
|
|
439
|
+
export declare type RemoveDeviceLink = Message<"kusinta.iot.webrtc.v1.RemoveDeviceLink"> & {
|
|
440
|
+
/**
|
|
441
|
+
* @generated from field: string link_id = 1;
|
|
442
|
+
*/
|
|
443
|
+
linkId: string;
|
|
444
|
+
};
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Describes the message kusinta.iot.webrtc.v1.RemoveDeviceLink.
|
|
448
|
+
* Use `create(RemoveDeviceLinkSchema)` to create a new message.
|
|
449
|
+
*/
|
|
450
|
+
export declare const RemoveDeviceLinkSchema: GenMessage<RemoveDeviceLink>;
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* Lists links. Unset device_id lists every link among devices the caller can
|
|
454
|
+
* reach; naming one narrows it to that device's own, in either direction.
|
|
455
|
+
*
|
|
456
|
+
* @generated from message kusinta.iot.webrtc.v1.ListDeviceLinks
|
|
457
|
+
*/
|
|
458
|
+
export declare type ListDeviceLinks = Message<"kusinta.iot.webrtc.v1.ListDeviceLinks"> & {
|
|
459
|
+
/**
|
|
460
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
|
|
461
|
+
*/
|
|
462
|
+
deviceId?: DeviceId | undefined;
|
|
463
|
+
};
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* Describes the message kusinta.iot.webrtc.v1.ListDeviceLinks.
|
|
467
|
+
* Use `create(ListDeviceLinksSchema)` to create a new message.
|
|
468
|
+
*/
|
|
469
|
+
export declare const ListDeviceLinksSchema: GenMessage<ListDeviceLinks>;
|
|
470
|
+
|
|
471
|
+
/**
|
|
387
472
|
* @generated from message kusinta.iot.webrtc.v1.ManagementRequest
|
|
388
473
|
*/
|
|
389
474
|
export declare type ManagementRequest = Message<"kusinta.iot.webrtc.v1.ManagementRequest"> & {
|
|
@@ -450,6 +535,24 @@ export declare type ManagementRequest = Message<"kusinta.iot.webrtc.v1.Managemen
|
|
|
450
535
|
*/
|
|
451
536
|
value: ListSpaces;
|
|
452
537
|
case: "listSpaces";
|
|
538
|
+
} | {
|
|
539
|
+
/**
|
|
540
|
+
* @generated from field: kusinta.iot.webrtc.v1.CreateDeviceLink create_device_link = 11;
|
|
541
|
+
*/
|
|
542
|
+
value: CreateDeviceLink;
|
|
543
|
+
case: "createDeviceLink";
|
|
544
|
+
} | {
|
|
545
|
+
/**
|
|
546
|
+
* @generated from field: kusinta.iot.webrtc.v1.RemoveDeviceLink remove_device_link = 12;
|
|
547
|
+
*/
|
|
548
|
+
value: RemoveDeviceLink;
|
|
549
|
+
case: "removeDeviceLink";
|
|
550
|
+
} | {
|
|
551
|
+
/**
|
|
552
|
+
* @generated from field: kusinta.iot.webrtc.v1.ListDeviceLinks list_device_links = 13;
|
|
553
|
+
*/
|
|
554
|
+
value: ListDeviceLinks;
|
|
555
|
+
case: "listDeviceLinks";
|
|
453
556
|
} | { case: undefined; value?: undefined };
|
|
454
557
|
};
|
|
455
558
|
|
|
@@ -5,13 +5,14 @@
|
|
|
5
5
|
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
6
6
|
import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb.js";
|
|
7
7
|
import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
|
|
8
|
+
import { file_kusinta_iot_link_v1_link } from "../../link/v1/link_pb.js";
|
|
8
9
|
import { file_kusinta_iot_space_v1_space } from "../../space/v1/space_pb.js";
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Describes the file kusinta/iot/webrtc/v1/management.proto.
|
|
12
13
|
*/
|
|
13
14
|
export const file_kusinta_iot_webrtc_v1_management = /*@__PURE__*/
|
|
14
|
-
fileDesc("CiZrdXNpbnRhL2lvdC93ZWJydGMvdjEvbWFuYWdlbWVudC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxIrABCgtDcmVhdGVTcGFjZRI0CgpzcGFjZV90eXBlGAEgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg0KBWZsb29yGAQgASgFEjkKD3BhcmVudF9zcGFjZV9pZBgFIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQizwIKC1VwZGF0ZVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI5CgpzcGFjZV90eXBlGAIgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZUgBiAEBEhEKBG5hbWUYAyABKAlIAogBARIYCgtkZXNjcmlwdGlvbhgEIAEoCUgDiAEBEhIKBWZsb29yGAUgASgFSASIAQESOwoPcGFyZW50X3NwYWNlX2lkGAYgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZEgAEhAKBmRldGFjaBgHIAEoCEgAQg8KDXBhcmVudF9jaGFuZ2VCDQoLX3NwYWNlX3R5cGVCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQggKBl9mbG9vciJSCgtEZWxldGVTcGFjZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSDwoHY2FzY2FkZRgCIAEoCCJ/
|
|
15
|
+
fileDesc("CiZrdXNpbnRhL2lvdC93ZWJydGMvdjEvbWFuYWdlbWVudC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxIrABCgtDcmVhdGVTcGFjZRI0CgpzcGFjZV90eXBlGAEgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg0KBWZsb29yGAQgASgFEjkKD3BhcmVudF9zcGFjZV9pZBgFIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQizwIKC1VwZGF0ZVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI5CgpzcGFjZV90eXBlGAIgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZUgBiAEBEhEKBG5hbWUYAyABKAlIAogBARIYCgtkZXNjcmlwdGlvbhgEIAEoCUgDiAEBEhIKBWZsb29yGAUgASgFSASIAQESOwoPcGFyZW50X3NwYWNlX2lkGAYgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZEgAEhAKBmRldGFjaBgHIAEoCEgAQg8KDXBhcmVudF9jaGFuZ2VCDQoLX3NwYWNlX3R5cGVCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQggKBl9mbG9vciJSCgtEZWxldGVTcGFjZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSDwoHY2FzY2FkZRgCIAEoCCJ/ChFBc3NpZ25Vc2VyVG9TcGFjZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSMAoHdXNlcl9pZBgCIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZEoECAMQBCJ7ChNSZW1vdmVVc2VyRnJvbVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkIn4KElBsYWNlRGV2aWNlSW5TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQigQEKFVJlbW92ZURldmljZUZyb21TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi2AEKC0NsYWltRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEj0KCW93bmVyc2hpcBgCIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlEjoKEGluaXRpYWxfc3BhY2VfaWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEhgKEHBvc3Nlc3Npb25fcHJvb2YYBCABKAkiRQoNUmVsZWFzZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJFCgpMaXN0U3BhY2VzEjcKDXJvb3Rfc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIjgKCVNwYWNlVHJlZRIrCgZzcGFjZXMYASADKAsyGy5rdXNpbnRhLmlvdC5zcGFjZS52MS5TcGFjZSIPCg1NYW5hZ2VtZW50QWNrItwBChBDcmVhdGVEZXZpY2VMaW5rEjEKBnNlbmRlchgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCHJlY2VpdmVyGAIgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSMwoIZnVuY3Rpb24YAyABKA4yIS5rdXNpbnRhLmlvdC5saW5rLnYxLkxpbmtGdW5jdGlvbhIrCgRtb2RlGAQgASgOMh0ua3VzaW50YS5pb3QubGluay52MS5MaW5rTW9kZSIjChBSZW1vdmVEZXZpY2VMaW5rEg8KB2xpbmtfaWQYASABKAkiRwoPTGlzdERldmljZUxpbmtzEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIpcHChFNYW5hZ2VtZW50UmVxdWVzdBI6CgxjcmVhdGVfc3BhY2UYASABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ3JlYXRlU3BhY2VIABI6Cgx1cGRhdGVfc3BhY2UYAiABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuVXBkYXRlU3BhY2VIABI6CgxkZWxldGVfc3BhY2UYAyABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGVsZXRlU3BhY2VIABJIChRhc3NpZ25fdXNlcl90b19zcGFjZRgEIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Bc3NpZ25Vc2VyVG9TcGFjZUgAEkwKFnJlbW92ZV91c2VyX2Zyb21fc3BhY2UYBSABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlVXNlckZyb21TcGFjZUgAEkoKFXBsYWNlX2RldmljZV9pbl9zcGFjZRgGIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QbGFjZURldmljZUluU3BhY2VIABJQChhyZW1vdmVfZGV2aWNlX2Zyb21fc3BhY2UYByABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlRGV2aWNlRnJvbVNwYWNlSAASOgoMY2xhaW1fZGV2aWNlGAggASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkNsYWltRGV2aWNlSAASPgoOcmVsZWFzZV9kZXZpY2UYCSABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVsZWFzZURldmljZUgAEjgKC2xpc3Rfc3BhY2VzGAogASgLMiEua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RTcGFjZXNIABJFChJjcmVhdGVfZGV2aWNlX2xpbmsYCyABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ3JlYXRlRGV2aWNlTGlua0gAEkUKEnJlbW92ZV9kZXZpY2VfbGluaxgMIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVEZXZpY2VMaW5rSAASQwoRbGlzdF9kZXZpY2VfbGlua3MYDSABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdERldmljZUxpbmtzSABCCQoHcmVxdWVzdEoECA4QD0ICSAFiBnByb3RvMw", [file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_space_v1_space]);
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* Describes the message kusinta.iot.webrtc.v1.CreateSpace.
|
|
@@ -97,10 +98,31 @@ export const SpaceTreeSchema = /*@__PURE__*/
|
|
|
97
98
|
export const ManagementAckSchema = /*@__PURE__*/
|
|
98
99
|
messageDesc(file_kusinta_iot_webrtc_v1_management, 11);
|
|
99
100
|
|
|
101
|
+
/**
|
|
102
|
+
* Describes the message kusinta.iot.webrtc.v1.CreateDeviceLink.
|
|
103
|
+
* Use `create(CreateDeviceLinkSchema)` to create a new message.
|
|
104
|
+
*/
|
|
105
|
+
export const CreateDeviceLinkSchema = /*@__PURE__*/
|
|
106
|
+
messageDesc(file_kusinta_iot_webrtc_v1_management, 12);
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Describes the message kusinta.iot.webrtc.v1.RemoveDeviceLink.
|
|
110
|
+
* Use `create(RemoveDeviceLinkSchema)` to create a new message.
|
|
111
|
+
*/
|
|
112
|
+
export const RemoveDeviceLinkSchema = /*@__PURE__*/
|
|
113
|
+
messageDesc(file_kusinta_iot_webrtc_v1_management, 13);
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Describes the message kusinta.iot.webrtc.v1.ListDeviceLinks.
|
|
117
|
+
* Use `create(ListDeviceLinksSchema)` to create a new message.
|
|
118
|
+
*/
|
|
119
|
+
export const ListDeviceLinksSchema = /*@__PURE__*/
|
|
120
|
+
messageDesc(file_kusinta_iot_webrtc_v1_management, 14);
|
|
121
|
+
|
|
100
122
|
/**
|
|
101
123
|
* Describes the message kusinta.iot.webrtc.v1.ManagementRequest.
|
|
102
124
|
* Use `create(ManagementRequestSchema)` to create a new message.
|
|
103
125
|
*/
|
|
104
126
|
export const ManagementRequestSchema = /*@__PURE__*/
|
|
105
|
-
messageDesc(file_kusinta_iot_webrtc_v1_management,
|
|
127
|
+
messageDesc(file_kusinta_iot_webrtc_v1_management, 15);
|
|
106
128
|
|