@matter/node 0.16.0-alpha.0-20251231-3f257a678 → 0.16.0-alpha.0-20260104-558783063
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/dist/cjs/behavior/system/software-update/SoftwareUpdateManager.d.ts +17 -6
- package/dist/cjs/behavior/system/software-update/SoftwareUpdateManager.d.ts.map +1 -1
- package/dist/cjs/behavior/system/software-update/SoftwareUpdateManager.js +73 -7
- package/dist/cjs/behavior/system/software-update/SoftwareUpdateManager.js.map +1 -1
- package/dist/cjs/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.d.ts +2 -0
- package/dist/cjs/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.js +32 -9
- package/dist/cjs/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.js.map +1 -1
- package/dist/esm/behavior/system/software-update/SoftwareUpdateManager.d.ts +17 -6
- package/dist/esm/behavior/system/software-update/SoftwareUpdateManager.d.ts.map +1 -1
- package/dist/esm/behavior/system/software-update/SoftwareUpdateManager.js +81 -8
- package/dist/esm/behavior/system/software-update/SoftwareUpdateManager.js.map +1 -1
- package/dist/esm/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.d.ts +2 -0
- package/dist/esm/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.d.ts.map +1 -1
- package/dist/esm/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.js +32 -9
- package/dist/esm/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.js.map +1 -1
- package/package.json +7 -7
- package/src/behavior/system/software-update/SoftwareUpdateManager.ts +106 -3
- package/src/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.ts +39 -14
- package/src/behaviors/ota-software-update-requestor/OtaSoftwareUpdateRequestorServer.ts +1 -1
|
@@ -32,11 +32,12 @@ export interface OtaUpdateAvailableDetails {
|
|
|
32
32
|
}
|
|
33
33
|
export declare enum OtaUpdateStatus {
|
|
34
34
|
Unknown = 0,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
WaitForConsent = 1,
|
|
36
|
+
Querying = 2,
|
|
37
|
+
Downloading = 3,
|
|
38
|
+
WaitForApply = 4,
|
|
39
|
+
Applying = 5,
|
|
40
|
+
Done = 6
|
|
40
41
|
}
|
|
41
42
|
export interface SoftwareUpdateInfo {
|
|
42
43
|
/** VendorId of the updated device */
|
|
@@ -77,7 +78,8 @@ export declare class SoftwareUpdateManager extends Behavior {
|
|
|
77
78
|
/**
|
|
78
79
|
* Used to determine if an update is existing in our storage for a peer with a certain software version.
|
|
79
80
|
*
|
|
80
|
-
* It uses the already checked details and does not check again on-demand. It considers consents already given
|
|
81
|
+
* It uses the already checked details and does not check again on-demand. It considers consents already given,
|
|
82
|
+
* but validates the peer data.
|
|
81
83
|
*/
|
|
82
84
|
updateExistsFor(peerAddress: PeerAddress, { softwareVersion, vendorId, productId, requestorCanConsent }: OtaSoftwareUpdateProvider.QueryImageRequest): Promise<OtaUpdateAvailableDetails | undefined>;
|
|
83
85
|
/**
|
|
@@ -115,6 +117,15 @@ export declare class SoftwareUpdateManager extends Behavior {
|
|
|
115
117
|
* This can be used when the update can be executed in a delayed/queued manner and it does not matter exactly when.
|
|
116
118
|
*/
|
|
117
119
|
addUpdateConsent(peerAddress: PeerAddress, vendorId: VendorId, productId: number, targetSoftwareVersion: number): Promise<boolean>;
|
|
120
|
+
/**
|
|
121
|
+
* Checks if consent exists for the given peer address and optionally for a specific target software version.
|
|
122
|
+
*/
|
|
123
|
+
hasConsent(peerAddress: PeerAddress, targetSoftwareVersion?: number): boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Checks for consent and removes it if present, also cancels if in progress. Use this to remove a formerly given
|
|
126
|
+
* consent.
|
|
127
|
+
*/
|
|
128
|
+
removeConsent(peerAddress: PeerAddress, targetSoftwareVersion?: number): Promise<void>;
|
|
118
129
|
/**
|
|
119
130
|
* Handles the status change of an OTA update for a given peer device.
|
|
120
131
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SoftwareUpdateManager.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/software-update/SoftwareUpdateManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AAExF,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EACH,KAAK,EAEL,QAAQ,EACR,YAAY,EAOZ,UAAU,EACV,aAAa,EAEb,yBAAyB,EAEzB,KAAK,EACL,SAAS,EACZ,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,
|
|
1
|
+
{"version":3,"file":"SoftwareUpdateManager.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/software-update/SoftwareUpdateManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,11 +37,12 @@ var import_protocol = require("#protocol");
|
|
|
37
37
|
const logger = import_general.Logger.get("SoftwareUpdateManager");
|
|
38
38
|
var OtaUpdateStatus = /* @__PURE__ */ ((OtaUpdateStatus2) => {
|
|
39
39
|
OtaUpdateStatus2[OtaUpdateStatus2["Unknown"] = 0] = "Unknown";
|
|
40
|
-
OtaUpdateStatus2[OtaUpdateStatus2["
|
|
41
|
-
OtaUpdateStatus2[OtaUpdateStatus2["
|
|
42
|
-
OtaUpdateStatus2[OtaUpdateStatus2["
|
|
43
|
-
OtaUpdateStatus2[OtaUpdateStatus2["
|
|
44
|
-
OtaUpdateStatus2[OtaUpdateStatus2["
|
|
40
|
+
OtaUpdateStatus2[OtaUpdateStatus2["WaitForConsent"] = 1] = "WaitForConsent";
|
|
41
|
+
OtaUpdateStatus2[OtaUpdateStatus2["Querying"] = 2] = "Querying";
|
|
42
|
+
OtaUpdateStatus2[OtaUpdateStatus2["Downloading"] = 3] = "Downloading";
|
|
43
|
+
OtaUpdateStatus2[OtaUpdateStatus2["WaitForApply"] = 4] = "WaitForApply";
|
|
44
|
+
OtaUpdateStatus2[OtaUpdateStatus2["Applying"] = 5] = "Applying";
|
|
45
|
+
OtaUpdateStatus2[OtaUpdateStatus2["Done"] = 6] = "Done";
|
|
45
46
|
return OtaUpdateStatus2;
|
|
46
47
|
})(OtaUpdateStatus || {});
|
|
47
48
|
class SoftwareUpdateManager extends import_Behavior.Behavior {
|
|
@@ -103,12 +104,30 @@ class SoftwareUpdateManager extends import_Behavior.Behavior {
|
|
|
103
104
|
get storage() {
|
|
104
105
|
return this.internal.otaService.storage;
|
|
105
106
|
}
|
|
107
|
+
/** Validate that we know the peer the update is requested for and the details match to what we know */
|
|
108
|
+
async #validatePeerDetails(peerAddress, details) {
|
|
109
|
+
const { softwareVersion, vendorId, productId } = details;
|
|
110
|
+
const peers = import_Node.Node.forEndpoint(this.endpoint).peers;
|
|
111
|
+
const node = peers.get(peerAddress);
|
|
112
|
+
const basicInfo = node?.maybeStateOf(import_basic_information.BasicInformationClient);
|
|
113
|
+
if (basicInfo?.softwareVersion === softwareVersion && basicInfo?.vendorId === vendorId && basicInfo?.productId === productId) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
106
118
|
/**
|
|
107
119
|
* Used to determine if an update is existing in our storage for a peer with a certain software version.
|
|
108
120
|
*
|
|
109
|
-
* It uses the already checked details and does not check again on-demand. It considers consents already given
|
|
121
|
+
* It uses the already checked details and does not check again on-demand. It considers consents already given,
|
|
122
|
+
* but validates the peer data.
|
|
110
123
|
*/
|
|
111
124
|
async updateExistsFor(peerAddress, { softwareVersion, vendorId, productId, requestorCanConsent }) {
|
|
125
|
+
if (!await this.#validatePeerDetails(peerAddress, { softwareVersion, vendorId, productId })) {
|
|
126
|
+
logger.info(
|
|
127
|
+
`Peer details for node ${peerAddress.toString()} do not match values the update was requested for, ignoring`
|
|
128
|
+
);
|
|
129
|
+
return void 0;
|
|
130
|
+
}
|
|
112
131
|
const availableUpdates = await this.internal.otaService.find({ vendorId, productId });
|
|
113
132
|
const candidates = availableUpdates.filter(
|
|
114
133
|
({
|
|
@@ -324,6 +343,9 @@ class SoftwareUpdateManager extends import_Behavior.Behavior {
|
|
|
324
343
|
this.events.updateDone.emit(peerAddress);
|
|
325
344
|
}
|
|
326
345
|
this.internal.updateQueue.splice(entryIndex, 1);
|
|
346
|
+
this.internal.consents = this.internal.consents.filter(
|
|
347
|
+
({ peerAddress: consentAddress, targetSoftwareVersion }) => !import_protocol.PeerAddress.is(peerAddress, consentAddress) || targetSoftwareVersion > newVersion
|
|
348
|
+
);
|
|
327
349
|
this.#triggerQueuedUpdate();
|
|
328
350
|
}
|
|
329
351
|
/**
|
|
@@ -448,6 +470,25 @@ class SoftwareUpdateManager extends import_Behavior.Behavior {
|
|
|
448
470
|
}
|
|
449
471
|
await this.#triggerUpdateOnNode(entry);
|
|
450
472
|
}
|
|
473
|
+
/** Tries to cancel an ongoing OTA update for the given peer address. */
|
|
474
|
+
async #cancelUpdate(peerAddress) {
|
|
475
|
+
const bdxProtocol = this.env.get(import_protocol.BdxProtocol);
|
|
476
|
+
await bdxProtocol.disablePeerForScope(peerAddress, this.storage, true);
|
|
477
|
+
const entryIndex = this.internal.updateQueue.findIndex(
|
|
478
|
+
(e) => e.peerAddress.fabricIndex === peerAddress.fabricIndex && e.peerAddress.nodeId === peerAddress.nodeId
|
|
479
|
+
);
|
|
480
|
+
if (entryIndex < 0) {
|
|
481
|
+
logger.warn(`No Ota update queued for node ${peerAddress.toString()}`);
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
const entry = this.internal.updateQueue[entryIndex];
|
|
485
|
+
if (entry.lastProgressStatus === 5 /* Applying */ || entry.lastProgressStatus === 6 /* Done */) {
|
|
486
|
+
logger.info(`Cannot cancel update for node ${peerAddress.toString()}, already applying or done`);
|
|
487
|
+
return;
|
|
488
|
+
}
|
|
489
|
+
this.internal.updateQueue.splice(entryIndex, 1);
|
|
490
|
+
logger.info(`Cancelled OTA update for node ${peerAddress.toString()}`);
|
|
491
|
+
}
|
|
451
492
|
/**
|
|
452
493
|
* Adds or updates a consent for a given peer address, vendor ID, product ID, and target software version.
|
|
453
494
|
* Filters out existing consents for the given peer address and replaces them with the new one.
|
|
@@ -484,6 +525,31 @@ class SoftwareUpdateManager extends import_Behavior.Behavior {
|
|
|
484
525
|
this.#queueUpdate({ vendorId, productId, targetSoftwareVersion, peerAddress, endpoint: otaEndpoint });
|
|
485
526
|
return true;
|
|
486
527
|
}
|
|
528
|
+
/**
|
|
529
|
+
* Checks if consent exists for the given peer address and optionally for a specific target software version.
|
|
530
|
+
*/
|
|
531
|
+
hasConsent(peerAddress, targetSoftwareVersion) {
|
|
532
|
+
return this.internal.consents.some(
|
|
533
|
+
(consent) => consent.peerAddress.fabricIndex === peerAddress.fabricIndex && consent.peerAddress.nodeId === peerAddress.nodeId && (targetSoftwareVersion === void 0 || consent.targetSoftwareVersion === targetSoftwareVersion)
|
|
534
|
+
);
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* Checks for consent and removes it if present, also cancels if in progress. Use this to remove a formerly given
|
|
538
|
+
* consent.
|
|
539
|
+
*/
|
|
540
|
+
removeConsent(peerAddress, targetSoftwareVersion) {
|
|
541
|
+
const consentIndex = this.internal.consents.findIndex(
|
|
542
|
+
(consent) => consent.peerAddress.fabricIndex === peerAddress.fabricIndex && consent.peerAddress.nodeId === peerAddress.nodeId && (targetSoftwareVersion === void 0 || consent.targetSoftwareVersion === targetSoftwareVersion)
|
|
543
|
+
);
|
|
544
|
+
if (consentIndex >= 0) {
|
|
545
|
+
this.internal.consents.splice(consentIndex, 1);
|
|
546
|
+
} else {
|
|
547
|
+
logger.info(
|
|
548
|
+
`No consent to remove found for node ${peerAddress.toString()}${targetSoftwareVersion !== void 0 ? ` for version ${targetSoftwareVersion}` : ""}`
|
|
549
|
+
);
|
|
550
|
+
}
|
|
551
|
+
return this.#cancelUpdate(peerAddress);
|
|
552
|
+
}
|
|
487
553
|
/**
|
|
488
554
|
* Handles the status change of an OTA update for a given peer device.
|
|
489
555
|
*
|
|
@@ -502,7 +568,7 @@ class SoftwareUpdateManager extends import_Behavior.Behavior {
|
|
|
502
568
|
return;
|
|
503
569
|
}
|
|
504
570
|
const entry = this.internal.updateQueue[entryIndex];
|
|
505
|
-
if (status ===
|
|
571
|
+
if (status === 6 /* Done */) {
|
|
506
572
|
logger.info(`OTA update completed for node`, peerAddress.toString());
|
|
507
573
|
this.internal.updateQueue.splice(entryIndex, 1);
|
|
508
574
|
this.internal.knownUpdates.delete(peerAddress.toString());
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/behavior/system/software-update/SoftwareUpdateManager.ts"],
|
|
4
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["OtaUpdateStatus", "candidate", "consent", "softwareVersion", "triggerVersionChange", "SoftwareUpdateManager"]
|
|
6
6
|
}
|
package/dist/cjs/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ interface OtaUpdateInProgressDetails {
|
|
|
15
15
|
lastState: OtaUpdateStatus;
|
|
16
16
|
timestamp: Timestamp;
|
|
17
17
|
versionToApply?: number;
|
|
18
|
+
directConsentObtained?: boolean;
|
|
18
19
|
}
|
|
19
20
|
export declare enum OtaSoftwareUpdateConsentState {
|
|
20
21
|
Granted = 0,
|
|
@@ -68,6 +69,7 @@ export declare class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdatePr
|
|
|
68
69
|
}>;
|
|
69
70
|
/**
|
|
70
71
|
* Override to customize how to check for available updates.
|
|
72
|
+
* The default logic also validates the node details like vendorId and productId and the current version.
|
|
71
73
|
* When the requestorCanConsent is true, we send the latest update we have also without a consent.
|
|
72
74
|
* All additional data like hardware, location, and MetadataForProvider can be checked here for specific logic
|
|
73
75
|
*/
|
package/dist/cjs/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OtaSoftwareUpdateProviderServer.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,yBAAyB,EACzB,eAAe,EAElB,MAAM,2DAA2D,CAAC;AAInE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,EAGH,QAAQ,EAGR,YAAY,EAIZ,SAAS,EACZ,MAAM,UAAU,CAAC;AAGlB,OAAO,EAMH,WAAW,EACX,aAAa,EAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAM3F,UAAU,0BAA0B;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"OtaSoftwareUpdateProviderServer.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,yBAAyB,EACzB,eAAe,EAElB,MAAM,2DAA2D,CAAC;AAInE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,EAGH,QAAQ,EAGR,YAAY,EAIZ,SAAS,EACZ,MAAM,UAAU,CAAC;AAGlB,OAAO,EAMH,WAAW,EACX,aAAa,EAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAM3F,UAAU,0BAA0B;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,oBAAY,6BAA6B;IACrC,OAAO,IAAA;IACP,MAAM,IAAA;IACN,SAAS,IAAA;IACT,OAAO,IAAA;CACV;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,+BAAgC,SAAQ,iCAAiC;;IAClF,SAAiB,QAAQ,EAAE,+BAA+B,CAAC,QAAQ,CAAC;IAErD,UAAU;IAczB,IAAI,aAAa,kBAKhB;IA8CD;;OAEG;IACY,UAAU,CACrB,OAAO,EAAE,yBAAyB,CAAC,iBAAiB,GACrD,OAAO,CAAC,yBAAyB,CAAC,kBAAkB,CAAC;IAsJxD;;;OAGG;IACY,kBAAkB,CAAC,EAC9B,WAAW,EACX,UAAU,GACb,EAAE,yBAAyB,CAAC,kBAAkB,GAAG,OAAO,CAAC,yBAAyB,CAAC,mBAAmB,CAAC;IAsCxG;;OAEG;IACM,mBAAmB,CAAC,EACzB,WAAW,EACX,eAAe,GAClB,EAAE,yBAAyB,CAAC,0BAA0B,GAAG,IAAI;IAW9D;;;OAGG;IACH,SAAS,CAAC,2BAA2B,CACjC,QAAQ,EAAE,yBAAyB,CAAC,iBAAiB,EACrD,cAAc,EAAE,yBAAyB,EACzC,YAAY,EAAE,WAAW,GAC1B,YAAY,CAAC;QAAE,YAAY,EAAE,6BAA6B,CAAC;QAAC,SAAS,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC;IAItF;;;;;OAKG;IACH,SAAS,CAAC,oBAAoB,CAC1B,OAAO,EAAE,yBAAyB,CAAC,iBAAiB,EACpD,WAAW,EAAE,WAAW,GACzB,YAAY,CAAC,yBAAyB,GAAG,SAAS,CAAC;CAwEzD;AAED,yBAAiB,+BAA+B,CAAC;IAC7C,MAAa,QAAQ;QACjB,2DAA2D;QAC3D,iBAAiB,0CAAiD;QAElE,aAAa,EAAG,aAAa,CAAC;KACjC;IAEc,MAAM,kBAAkB,EAAE;QACrC;;;;;;;;;;WAUG;QACH,2BAA2B,CACvB,OAAO,EAAE,yBAAyB,CAAC,iBAAiB,EACpD,aAAa,EAAE,yBAAyB,EACxC,WAAW,EAAE,WAAW,GACzB,YAAY,CAAC;YAAE,YAAY,EAAE,6BAA6B,CAAC;YAAC,SAAS,CAAC,EAAE,QAAQ,CAAA;SAAE,CAAC,CAAC;QAEvF;;;;WAIG;QACH,oBAAoB,CAChB,OAAO,EAAE,yBAAyB,CAAC,iBAAiB,EACpD,WAAW,EAAE,WAAW,GACzB,YAAY,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAAC;KAC1D,CAAC;CACL"}
|
|
@@ -125,13 +125,13 @@ class OtaSoftwareUpdateProviderServer extends import_OtaSoftwareUpdateProviderBe
|
|
|
125
125
|
return {
|
|
126
126
|
status: import_ota_software_update_provider.OtaSoftwareUpdateProvider.Status.Busy,
|
|
127
127
|
delayedActionTime: import_general.Seconds.of((0, import_general.Minutes)(5))
|
|
128
|
-
// usual bdx session timeout
|
|
128
|
+
// the usual bdx session timeout is 5 minutes, so let's use this
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
131
|
const crypto = this.env.get(import_general.Crypto);
|
|
132
132
|
const updateToken = crypto.randomBytes(OTA_UPDATE_TOKEN_LENGTH_BYTES);
|
|
133
|
-
this.#updateInProgressDetails(peerAddress, updateToken, import_SoftwareUpdateManager.OtaUpdateStatus.Querying, newSoftwareVersion);
|
|
134
133
|
if (consentRequired && !request.requestorCanConsent) {
|
|
134
|
+
this.#updateInProgressDetails(peerAddress, updateToken, import_SoftwareUpdateManager.OtaUpdateStatus.WaitForConsent, newSoftwareVersion);
|
|
135
135
|
const { consentState, delayTime = (0, import_general.Seconds)(120) } = await this.requestUserConsentForUpdate(
|
|
136
136
|
request,
|
|
137
137
|
updateDetails,
|
|
@@ -144,18 +144,28 @@ class OtaSoftwareUpdateProviderServer extends import_OtaSoftwareUpdateProviderBe
|
|
|
144
144
|
);
|
|
145
145
|
switch (consentState) {
|
|
146
146
|
case 0 /* Granted */:
|
|
147
|
+
this.#updateInProgressDetails(
|
|
148
|
+
peerAddress,
|
|
149
|
+
updateToken,
|
|
150
|
+
import_SoftwareUpdateManager.OtaUpdateStatus.Querying,
|
|
151
|
+
newSoftwareVersion,
|
|
152
|
+
true
|
|
153
|
+
);
|
|
147
154
|
break;
|
|
148
|
-
case 1 /* Denied */:
|
|
149
|
-
case 3 /* Unknown */:
|
|
150
|
-
return {
|
|
151
|
-
status: import_ota_software_update_provider.OtaSoftwareUpdateProvider.Status.NotAvailable
|
|
152
|
-
};
|
|
153
155
|
case 2 /* Obtaining */:
|
|
154
156
|
return {
|
|
155
157
|
status: import_ota_software_update_provider.OtaSoftwareUpdateProvider.Status.Busy,
|
|
156
158
|
delayedActionTime: import_general.Seconds.of(delayTime)
|
|
157
159
|
};
|
|
160
|
+
case 1 /* Denied */:
|
|
161
|
+
case 3 /* Unknown */:
|
|
162
|
+
default:
|
|
163
|
+
return {
|
|
164
|
+
status: import_ota_software_update_provider.OtaSoftwareUpdateProvider.Status.NotAvailable
|
|
165
|
+
};
|
|
158
166
|
}
|
|
167
|
+
} else {
|
|
168
|
+
this.#updateInProgressDetails(peerAddress, updateToken, import_SoftwareUpdateManager.OtaUpdateStatus.Querying, newSoftwareVersion);
|
|
159
169
|
}
|
|
160
170
|
let imageUri;
|
|
161
171
|
if (protocolsSupported.includes(import_ota_software_update_provider.OtaSoftwareUpdateProvider.DownloadProtocol.BdxSynchronous)) {
|
|
@@ -233,6 +243,13 @@ class OtaSoftwareUpdateProviderServer extends import_OtaSoftwareUpdateProviderBe
|
|
|
233
243
|
import_general.MatterError.accept(error);
|
|
234
244
|
logger.info("Error while closing BDX session for OTA update apply request, continuing anyway:", error);
|
|
235
245
|
}
|
|
246
|
+
if (!this.#hasUpdateConsent(session.peerAddress, newVersion)) {
|
|
247
|
+
this.#updateInProgressDetails(session.peerAddress, updateToken, import_SoftwareUpdateManager.OtaUpdateStatus.Unknown, newVersion);
|
|
248
|
+
return {
|
|
249
|
+
action: import_ota_software_update_provider.OtaSoftwareUpdateProvider.ApplyUpdateAction.Discontinue,
|
|
250
|
+
delayedActionTime: (0, import_general.Minutes)(2)
|
|
251
|
+
};
|
|
252
|
+
}
|
|
236
253
|
this.#updateInProgressDetails(session.peerAddress, updateToken, import_SoftwareUpdateManager.OtaUpdateStatus.Applying, newVersion);
|
|
237
254
|
return {
|
|
238
255
|
action: import_ota_software_update_provider.OtaSoftwareUpdateProvider.ApplyUpdateAction.Proceed,
|
|
@@ -261,12 +278,16 @@ class OtaSoftwareUpdateProviderServer extends import_OtaSoftwareUpdateProviderBe
|
|
|
261
278
|
}
|
|
262
279
|
/**
|
|
263
280
|
* Override to customize how to check for available updates.
|
|
281
|
+
* The default logic also validates the node details like vendorId and productId and the current version.
|
|
264
282
|
* When the requestorCanConsent is true, we send the latest update we have also without a consent.
|
|
265
283
|
* All additional data like hardware, location, and MetadataForProvider can be checked here for specific logic
|
|
266
284
|
*/
|
|
267
285
|
checkUpdateAvailable(request, peerAddress) {
|
|
268
286
|
return this.endpoint.act((agent) => agent.get(import_SoftwareUpdateManager.SoftwareUpdateManager).updateExistsFor(peerAddress, request));
|
|
269
287
|
}
|
|
288
|
+
#hasUpdateConsent(peerAddress, targetSoftwareVersion) {
|
|
289
|
+
return !!this.#inProgressDetailsForPeer(peerAddress)?.directConsentObtained || this.endpoint.act((agent) => agent.get(import_SoftwareUpdateManager.SoftwareUpdateManager).hasConsent(peerAddress, targetSoftwareVersion));
|
|
290
|
+
}
|
|
270
291
|
/**
|
|
271
292
|
* Retrieves the in-progress details for a specific peer based on the peer address and an optional update token.
|
|
272
293
|
*/
|
|
@@ -286,7 +307,7 @@ class OtaSoftwareUpdateProviderServer extends import_OtaSoftwareUpdateProviderBe
|
|
|
286
307
|
* Updates the details of an in-progress OTA update process for a specific requestor,
|
|
287
308
|
* tracking the update's state and optionally the target version to apply.
|
|
288
309
|
*/
|
|
289
|
-
#updateInProgressDetails(peerAddress, updateToken, lastState, versionToApply) {
|
|
310
|
+
#updateInProgressDetails(peerAddress, updateToken, lastState, versionToApply, directConsentObtained = false) {
|
|
290
311
|
const { fabricIndex, nodeId: requestorNodeId } = peerAddress;
|
|
291
312
|
const key = `${requestorNodeId}-${fabricIndex}-${import_general.Bytes.toHex(updateToken)}`;
|
|
292
313
|
const origDetails = this.internal.inProgressDetails.get(key);
|
|
@@ -294,7 +315,8 @@ class OtaSoftwareUpdateProviderServer extends import_OtaSoftwareUpdateProviderBe
|
|
|
294
315
|
requestorNodeId,
|
|
295
316
|
fabricIndex,
|
|
296
317
|
lastState,
|
|
297
|
-
timestamp: import_general.Time.nowMs
|
|
318
|
+
timestamp: import_general.Time.nowMs,
|
|
319
|
+
directConsentObtained
|
|
298
320
|
};
|
|
299
321
|
if (versionToApply !== void 0) {
|
|
300
322
|
if (details.versionToApply !== void 0 && details.versionToApply !== versionToApply) {
|
|
@@ -306,6 +328,7 @@ class OtaSoftwareUpdateProviderServer extends import_OtaSoftwareUpdateProviderBe
|
|
|
306
328
|
}
|
|
307
329
|
details.versionToApply = versionToApply;
|
|
308
330
|
}
|
|
331
|
+
details.directConsentObtained = directConsentObtained;
|
|
309
332
|
logger.info(
|
|
310
333
|
`OTA Update ${details.versionToApply !== void 0 ? `to version ${details.versionToApply} ` : ""}for Requestor`,
|
|
311
334
|
peerAddress.toString(),
|
package/dist/cjs/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,mCAIO;AACP,4BAAoC;AACpC,wBAAiC;AACjC,IAAAA,yBAA8B;AAC9B,0CAA0C;AAC1C,2CAA2C;AAC3C,qBAWO;AACP,kBAAqB;AAErB,sBAQO;AAEP,+CAAkD;AAxClD;AAAA;AAAA;AAAA;AAAA;AA0CA,MAAM,SAAS,sBAAO,IAAI,iCAAiC;AAE3D,MAAM,gCAAgC;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["import_access_control", "OtaSoftwareUpdateConsentState", "OtaSoftwareUpdateProviderServer"]
|
|
6
6
|
}
|
|
@@ -32,11 +32,12 @@ export interface OtaUpdateAvailableDetails {
|
|
|
32
32
|
}
|
|
33
33
|
export declare enum OtaUpdateStatus {
|
|
34
34
|
Unknown = 0,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
WaitForConsent = 1,
|
|
36
|
+
Querying = 2,
|
|
37
|
+
Downloading = 3,
|
|
38
|
+
WaitForApply = 4,
|
|
39
|
+
Applying = 5,
|
|
40
|
+
Done = 6
|
|
40
41
|
}
|
|
41
42
|
export interface SoftwareUpdateInfo {
|
|
42
43
|
/** VendorId of the updated device */
|
|
@@ -77,7 +78,8 @@ export declare class SoftwareUpdateManager extends Behavior {
|
|
|
77
78
|
/**
|
|
78
79
|
* Used to determine if an update is existing in our storage for a peer with a certain software version.
|
|
79
80
|
*
|
|
80
|
-
* It uses the already checked details and does not check again on-demand. It considers consents already given
|
|
81
|
+
* It uses the already checked details and does not check again on-demand. It considers consents already given,
|
|
82
|
+
* but validates the peer data.
|
|
81
83
|
*/
|
|
82
84
|
updateExistsFor(peerAddress: PeerAddress, { softwareVersion, vendorId, productId, requestorCanConsent }: OtaSoftwareUpdateProvider.QueryImageRequest): Promise<OtaUpdateAvailableDetails | undefined>;
|
|
83
85
|
/**
|
|
@@ -115,6 +117,15 @@ export declare class SoftwareUpdateManager extends Behavior {
|
|
|
115
117
|
* This can be used when the update can be executed in a delayed/queued manner and it does not matter exactly when.
|
|
116
118
|
*/
|
|
117
119
|
addUpdateConsent(peerAddress: PeerAddress, vendorId: VendorId, productId: number, targetSoftwareVersion: number): Promise<boolean>;
|
|
120
|
+
/**
|
|
121
|
+
* Checks if consent exists for the given peer address and optionally for a specific target software version.
|
|
122
|
+
*/
|
|
123
|
+
hasConsent(peerAddress: PeerAddress, targetSoftwareVersion?: number): boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Checks for consent and removes it if present, also cancels if in progress. Use this to remove a formerly given
|
|
126
|
+
* consent.
|
|
127
|
+
*/
|
|
128
|
+
removeConsent(peerAddress: PeerAddress, targetSoftwareVersion?: number): Promise<void>;
|
|
118
129
|
/**
|
|
119
130
|
* Handles the status change of an OTA update for a given peer device.
|
|
120
131
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SoftwareUpdateManager.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/software-update/SoftwareUpdateManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AAExF,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EACH,KAAK,EAEL,QAAQ,EACR,YAAY,EAOZ,UAAU,EACV,aAAa,EAEb,yBAAyB,EAEzB,KAAK,EACL,SAAS,EACZ,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,
|
|
1
|
+
{"version":3,"file":"SoftwareUpdateManager.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/software-update/SoftwareUpdateManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,15 +23,23 @@ import {
|
|
|
23
23
|
Time
|
|
24
24
|
} from "#general";
|
|
25
25
|
import { Node } from "#node/Node.js";
|
|
26
|
-
import {
|
|
26
|
+
import {
|
|
27
|
+
BdxProtocol,
|
|
28
|
+
DclOtaUpdateService,
|
|
29
|
+
FabricAuthority,
|
|
30
|
+
FileDesignator,
|
|
31
|
+
OtaUpdateError,
|
|
32
|
+
PeerAddress
|
|
33
|
+
} from "#protocol";
|
|
27
34
|
const logger = Logger.get("SoftwareUpdateManager");
|
|
28
35
|
var OtaUpdateStatus = /* @__PURE__ */ ((OtaUpdateStatus2) => {
|
|
29
36
|
OtaUpdateStatus2[OtaUpdateStatus2["Unknown"] = 0] = "Unknown";
|
|
30
|
-
OtaUpdateStatus2[OtaUpdateStatus2["
|
|
31
|
-
OtaUpdateStatus2[OtaUpdateStatus2["
|
|
32
|
-
OtaUpdateStatus2[OtaUpdateStatus2["
|
|
33
|
-
OtaUpdateStatus2[OtaUpdateStatus2["
|
|
34
|
-
OtaUpdateStatus2[OtaUpdateStatus2["
|
|
37
|
+
OtaUpdateStatus2[OtaUpdateStatus2["WaitForConsent"] = 1] = "WaitForConsent";
|
|
38
|
+
OtaUpdateStatus2[OtaUpdateStatus2["Querying"] = 2] = "Querying";
|
|
39
|
+
OtaUpdateStatus2[OtaUpdateStatus2["Downloading"] = 3] = "Downloading";
|
|
40
|
+
OtaUpdateStatus2[OtaUpdateStatus2["WaitForApply"] = 4] = "WaitForApply";
|
|
41
|
+
OtaUpdateStatus2[OtaUpdateStatus2["Applying"] = 5] = "Applying";
|
|
42
|
+
OtaUpdateStatus2[OtaUpdateStatus2["Done"] = 6] = "Done";
|
|
35
43
|
return OtaUpdateStatus2;
|
|
36
44
|
})(OtaUpdateStatus || {});
|
|
37
45
|
class SoftwareUpdateManager extends Behavior {
|
|
@@ -93,12 +101,30 @@ class SoftwareUpdateManager extends Behavior {
|
|
|
93
101
|
get storage() {
|
|
94
102
|
return this.internal.otaService.storage;
|
|
95
103
|
}
|
|
104
|
+
/** Validate that we know the peer the update is requested for and the details match to what we know */
|
|
105
|
+
async #validatePeerDetails(peerAddress, details) {
|
|
106
|
+
const { softwareVersion, vendorId, productId } = details;
|
|
107
|
+
const peers = Node.forEndpoint(this.endpoint).peers;
|
|
108
|
+
const node = peers.get(peerAddress);
|
|
109
|
+
const basicInfo = node?.maybeStateOf(BasicInformationClient);
|
|
110
|
+
if (basicInfo?.softwareVersion === softwareVersion && basicInfo?.vendorId === vendorId && basicInfo?.productId === productId) {
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
96
115
|
/**
|
|
97
116
|
* Used to determine if an update is existing in our storage for a peer with a certain software version.
|
|
98
117
|
*
|
|
99
|
-
* It uses the already checked details and does not check again on-demand. It considers consents already given
|
|
118
|
+
* It uses the already checked details and does not check again on-demand. It considers consents already given,
|
|
119
|
+
* but validates the peer data.
|
|
100
120
|
*/
|
|
101
121
|
async updateExistsFor(peerAddress, { softwareVersion, vendorId, productId, requestorCanConsent }) {
|
|
122
|
+
if (!await this.#validatePeerDetails(peerAddress, { softwareVersion, vendorId, productId })) {
|
|
123
|
+
logger.info(
|
|
124
|
+
`Peer details for node ${peerAddress.toString()} do not match values the update was requested for, ignoring`
|
|
125
|
+
);
|
|
126
|
+
return void 0;
|
|
127
|
+
}
|
|
102
128
|
const availableUpdates = await this.internal.otaService.find({ vendorId, productId });
|
|
103
129
|
const candidates = availableUpdates.filter(
|
|
104
130
|
({
|
|
@@ -314,6 +340,9 @@ class SoftwareUpdateManager extends Behavior {
|
|
|
314
340
|
this.events.updateDone.emit(peerAddress);
|
|
315
341
|
}
|
|
316
342
|
this.internal.updateQueue.splice(entryIndex, 1);
|
|
343
|
+
this.internal.consents = this.internal.consents.filter(
|
|
344
|
+
({ peerAddress: consentAddress, targetSoftwareVersion }) => !PeerAddress.is(peerAddress, consentAddress) || targetSoftwareVersion > newVersion
|
|
345
|
+
);
|
|
317
346
|
this.#triggerQueuedUpdate();
|
|
318
347
|
}
|
|
319
348
|
/**
|
|
@@ -438,6 +467,25 @@ class SoftwareUpdateManager extends Behavior {
|
|
|
438
467
|
}
|
|
439
468
|
await this.#triggerUpdateOnNode(entry);
|
|
440
469
|
}
|
|
470
|
+
/** Tries to cancel an ongoing OTA update for the given peer address. */
|
|
471
|
+
async #cancelUpdate(peerAddress) {
|
|
472
|
+
const bdxProtocol = this.env.get(BdxProtocol);
|
|
473
|
+
await bdxProtocol.disablePeerForScope(peerAddress, this.storage, true);
|
|
474
|
+
const entryIndex = this.internal.updateQueue.findIndex(
|
|
475
|
+
(e) => e.peerAddress.fabricIndex === peerAddress.fabricIndex && e.peerAddress.nodeId === peerAddress.nodeId
|
|
476
|
+
);
|
|
477
|
+
if (entryIndex < 0) {
|
|
478
|
+
logger.warn(`No Ota update queued for node ${peerAddress.toString()}`);
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
481
|
+
const entry = this.internal.updateQueue[entryIndex];
|
|
482
|
+
if (entry.lastProgressStatus === 5 /* Applying */ || entry.lastProgressStatus === 6 /* Done */) {
|
|
483
|
+
logger.info(`Cannot cancel update for node ${peerAddress.toString()}, already applying or done`);
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
this.internal.updateQueue.splice(entryIndex, 1);
|
|
487
|
+
logger.info(`Cancelled OTA update for node ${peerAddress.toString()}`);
|
|
488
|
+
}
|
|
441
489
|
/**
|
|
442
490
|
* Adds or updates a consent for a given peer address, vendor ID, product ID, and target software version.
|
|
443
491
|
* Filters out existing consents for the given peer address and replaces them with the new one.
|
|
@@ -474,6 +522,31 @@ class SoftwareUpdateManager extends Behavior {
|
|
|
474
522
|
this.#queueUpdate({ vendorId, productId, targetSoftwareVersion, peerAddress, endpoint: otaEndpoint });
|
|
475
523
|
return true;
|
|
476
524
|
}
|
|
525
|
+
/**
|
|
526
|
+
* Checks if consent exists for the given peer address and optionally for a specific target software version.
|
|
527
|
+
*/
|
|
528
|
+
hasConsent(peerAddress, targetSoftwareVersion) {
|
|
529
|
+
return this.internal.consents.some(
|
|
530
|
+
(consent) => consent.peerAddress.fabricIndex === peerAddress.fabricIndex && consent.peerAddress.nodeId === peerAddress.nodeId && (targetSoftwareVersion === void 0 || consent.targetSoftwareVersion === targetSoftwareVersion)
|
|
531
|
+
);
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* Checks for consent and removes it if present, also cancels if in progress. Use this to remove a formerly given
|
|
535
|
+
* consent.
|
|
536
|
+
*/
|
|
537
|
+
removeConsent(peerAddress, targetSoftwareVersion) {
|
|
538
|
+
const consentIndex = this.internal.consents.findIndex(
|
|
539
|
+
(consent) => consent.peerAddress.fabricIndex === peerAddress.fabricIndex && consent.peerAddress.nodeId === peerAddress.nodeId && (targetSoftwareVersion === void 0 || consent.targetSoftwareVersion === targetSoftwareVersion)
|
|
540
|
+
);
|
|
541
|
+
if (consentIndex >= 0) {
|
|
542
|
+
this.internal.consents.splice(consentIndex, 1);
|
|
543
|
+
} else {
|
|
544
|
+
logger.info(
|
|
545
|
+
`No consent to remove found for node ${peerAddress.toString()}${targetSoftwareVersion !== void 0 ? ` for version ${targetSoftwareVersion}` : ""}`
|
|
546
|
+
);
|
|
547
|
+
}
|
|
548
|
+
return this.#cancelUpdate(peerAddress);
|
|
549
|
+
}
|
|
477
550
|
/**
|
|
478
551
|
* Handles the status change of an OTA update for a given peer device.
|
|
479
552
|
*
|
|
@@ -492,7 +565,7 @@ class SoftwareUpdateManager extends Behavior {
|
|
|
492
565
|
return;
|
|
493
566
|
}
|
|
494
567
|
const entry = this.internal.updateQueue[entryIndex];
|
|
495
|
-
if (status ===
|
|
568
|
+
if (status === 6 /* Done */) {
|
|
496
569
|
logger.info(`OTA update completed for node`, peerAddress.toString());
|
|
497
570
|
this.internal.updateQueue.splice(entryIndex, 1);
|
|
498
571
|
this.internal.knownUpdates.delete(peerAddress.toString());
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/behavior/system/software-update/SoftwareUpdateManager.ts"],
|
|
4
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["OtaUpdateStatus", "candidate", "consent", "softwareVersion", "triggerVersionChange", "SoftwareUpdateManager"]
|
|
6
6
|
}
|
package/dist/esm/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ interface OtaUpdateInProgressDetails {
|
|
|
15
15
|
lastState: OtaUpdateStatus;
|
|
16
16
|
timestamp: Timestamp;
|
|
17
17
|
versionToApply?: number;
|
|
18
|
+
directConsentObtained?: boolean;
|
|
18
19
|
}
|
|
19
20
|
export declare enum OtaSoftwareUpdateConsentState {
|
|
20
21
|
Granted = 0,
|
|
@@ -68,6 +69,7 @@ export declare class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdatePr
|
|
|
68
69
|
}>;
|
|
69
70
|
/**
|
|
70
71
|
* Override to customize how to check for available updates.
|
|
72
|
+
* The default logic also validates the node details like vendorId and productId and the current version.
|
|
71
73
|
* When the requestorCanConsent is true, we send the latest update we have also without a consent.
|
|
72
74
|
* All additional data like hardware, location, and MetadataForProvider can be checked here for specific logic
|
|
73
75
|
*/
|
package/dist/esm/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OtaSoftwareUpdateProviderServer.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,yBAAyB,EACzB,eAAe,EAElB,MAAM,2DAA2D,CAAC;AAInE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,EAGH,QAAQ,EAGR,YAAY,EAIZ,SAAS,EACZ,MAAM,UAAU,CAAC;AAGlB,OAAO,EAMH,WAAW,EACX,aAAa,EAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAM3F,UAAU,0BAA0B;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"OtaSoftwareUpdateProviderServer.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,yBAAyB,EACzB,eAAe,EAElB,MAAM,2DAA2D,CAAC;AAInE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,EAGH,QAAQ,EAGR,YAAY,EAIZ,SAAS,EACZ,MAAM,UAAU,CAAC;AAGlB,OAAO,EAMH,WAAW,EACX,aAAa,EAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAM3F,UAAU,0BAA0B;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,oBAAY,6BAA6B;IACrC,OAAO,IAAA;IACP,MAAM,IAAA;IACN,SAAS,IAAA;IACT,OAAO,IAAA;CACV;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,+BAAgC,SAAQ,iCAAiC;;IAClF,SAAiB,QAAQ,EAAE,+BAA+B,CAAC,QAAQ,CAAC;IAErD,UAAU;IAczB,IAAI,aAAa,kBAKhB;IA8CD;;OAEG;IACY,UAAU,CACrB,OAAO,EAAE,yBAAyB,CAAC,iBAAiB,GACrD,OAAO,CAAC,yBAAyB,CAAC,kBAAkB,CAAC;IAsJxD;;;OAGG;IACY,kBAAkB,CAAC,EAC9B,WAAW,EACX,UAAU,GACb,EAAE,yBAAyB,CAAC,kBAAkB,GAAG,OAAO,CAAC,yBAAyB,CAAC,mBAAmB,CAAC;IAsCxG;;OAEG;IACM,mBAAmB,CAAC,EACzB,WAAW,EACX,eAAe,GAClB,EAAE,yBAAyB,CAAC,0BAA0B,GAAG,IAAI;IAW9D;;;OAGG;IACH,SAAS,CAAC,2BAA2B,CACjC,QAAQ,EAAE,yBAAyB,CAAC,iBAAiB,EACrD,cAAc,EAAE,yBAAyB,EACzC,YAAY,EAAE,WAAW,GAC1B,YAAY,CAAC;QAAE,YAAY,EAAE,6BAA6B,CAAC;QAAC,SAAS,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC;IAItF;;;;;OAKG;IACH,SAAS,CAAC,oBAAoB,CAC1B,OAAO,EAAE,yBAAyB,CAAC,iBAAiB,EACpD,WAAW,EAAE,WAAW,GACzB,YAAY,CAAC,yBAAyB,GAAG,SAAS,CAAC;CAwEzD;AAED,yBAAiB,+BAA+B,CAAC;IAC7C,MAAa,QAAQ;QACjB,2DAA2D;QAC3D,iBAAiB,0CAAiD;QAElE,aAAa,EAAG,aAAa,CAAC;KACjC;IAEc,MAAM,kBAAkB,EAAE;QACrC;;;;;;;;;;WAUG;QACH,2BAA2B,CACvB,OAAO,EAAE,yBAAyB,CAAC,iBAAiB,EACpD,aAAa,EAAE,yBAAyB,EACxC,WAAW,EAAE,WAAW,GACzB,YAAY,CAAC;YAAE,YAAY,EAAE,6BAA6B,CAAC;YAAC,SAAS,CAAC,EAAE,QAAQ,CAAA;SAAE,CAAC,CAAC;QAEvF;;;;WAIG;QACH,oBAAoB,CAChB,OAAO,EAAE,yBAAyB,CAAC,iBAAiB,EACpD,WAAW,EAAE,WAAW,GACzB,YAAY,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAAC;KAC1D,CAAC;CACL"}
|
|
@@ -119,13 +119,13 @@ class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBehavior
|
|
|
119
119
|
return {
|
|
120
120
|
status: OtaSoftwareUpdateProvider.Status.Busy,
|
|
121
121
|
delayedActionTime: Seconds.of(Minutes(5))
|
|
122
|
-
// usual bdx session timeout
|
|
122
|
+
// the usual bdx session timeout is 5 minutes, so let's use this
|
|
123
123
|
};
|
|
124
124
|
}
|
|
125
125
|
const crypto = this.env.get(Crypto);
|
|
126
126
|
const updateToken = crypto.randomBytes(OTA_UPDATE_TOKEN_LENGTH_BYTES);
|
|
127
|
-
this.#updateInProgressDetails(peerAddress, updateToken, OtaUpdateStatus.Querying, newSoftwareVersion);
|
|
128
127
|
if (consentRequired && !request.requestorCanConsent) {
|
|
128
|
+
this.#updateInProgressDetails(peerAddress, updateToken, OtaUpdateStatus.WaitForConsent, newSoftwareVersion);
|
|
129
129
|
const { consentState, delayTime = Seconds(120) } = await this.requestUserConsentForUpdate(
|
|
130
130
|
request,
|
|
131
131
|
updateDetails,
|
|
@@ -138,18 +138,28 @@ class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBehavior
|
|
|
138
138
|
);
|
|
139
139
|
switch (consentState) {
|
|
140
140
|
case 0 /* Granted */:
|
|
141
|
+
this.#updateInProgressDetails(
|
|
142
|
+
peerAddress,
|
|
143
|
+
updateToken,
|
|
144
|
+
OtaUpdateStatus.Querying,
|
|
145
|
+
newSoftwareVersion,
|
|
146
|
+
true
|
|
147
|
+
);
|
|
141
148
|
break;
|
|
142
|
-
case 1 /* Denied */:
|
|
143
|
-
case 3 /* Unknown */:
|
|
144
|
-
return {
|
|
145
|
-
status: OtaSoftwareUpdateProvider.Status.NotAvailable
|
|
146
|
-
};
|
|
147
149
|
case 2 /* Obtaining */:
|
|
148
150
|
return {
|
|
149
151
|
status: OtaSoftwareUpdateProvider.Status.Busy,
|
|
150
152
|
delayedActionTime: Seconds.of(delayTime)
|
|
151
153
|
};
|
|
154
|
+
case 1 /* Denied */:
|
|
155
|
+
case 3 /* Unknown */:
|
|
156
|
+
default:
|
|
157
|
+
return {
|
|
158
|
+
status: OtaSoftwareUpdateProvider.Status.NotAvailable
|
|
159
|
+
};
|
|
152
160
|
}
|
|
161
|
+
} else {
|
|
162
|
+
this.#updateInProgressDetails(peerAddress, updateToken, OtaUpdateStatus.Querying, newSoftwareVersion);
|
|
153
163
|
}
|
|
154
164
|
let imageUri;
|
|
155
165
|
if (protocolsSupported.includes(OtaSoftwareUpdateProvider.DownloadProtocol.BdxSynchronous)) {
|
|
@@ -227,6 +237,13 @@ class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBehavior
|
|
|
227
237
|
MatterError.accept(error);
|
|
228
238
|
logger.info("Error while closing BDX session for OTA update apply request, continuing anyway:", error);
|
|
229
239
|
}
|
|
240
|
+
if (!this.#hasUpdateConsent(session.peerAddress, newVersion)) {
|
|
241
|
+
this.#updateInProgressDetails(session.peerAddress, updateToken, OtaUpdateStatus.Unknown, newVersion);
|
|
242
|
+
return {
|
|
243
|
+
action: OtaSoftwareUpdateProvider.ApplyUpdateAction.Discontinue,
|
|
244
|
+
delayedActionTime: Minutes(2)
|
|
245
|
+
};
|
|
246
|
+
}
|
|
230
247
|
this.#updateInProgressDetails(session.peerAddress, updateToken, OtaUpdateStatus.Applying, newVersion);
|
|
231
248
|
return {
|
|
232
249
|
action: OtaSoftwareUpdateProvider.ApplyUpdateAction.Proceed,
|
|
@@ -255,12 +272,16 @@ class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBehavior
|
|
|
255
272
|
}
|
|
256
273
|
/**
|
|
257
274
|
* Override to customize how to check for available updates.
|
|
275
|
+
* The default logic also validates the node details like vendorId and productId and the current version.
|
|
258
276
|
* When the requestorCanConsent is true, we send the latest update we have also without a consent.
|
|
259
277
|
* All additional data like hardware, location, and MetadataForProvider can be checked here for specific logic
|
|
260
278
|
*/
|
|
261
279
|
checkUpdateAvailable(request, peerAddress) {
|
|
262
280
|
return this.endpoint.act((agent) => agent.get(SoftwareUpdateManager).updateExistsFor(peerAddress, request));
|
|
263
281
|
}
|
|
282
|
+
#hasUpdateConsent(peerAddress, targetSoftwareVersion) {
|
|
283
|
+
return !!this.#inProgressDetailsForPeer(peerAddress)?.directConsentObtained || this.endpoint.act((agent) => agent.get(SoftwareUpdateManager).hasConsent(peerAddress, targetSoftwareVersion));
|
|
284
|
+
}
|
|
264
285
|
/**
|
|
265
286
|
* Retrieves the in-progress details for a specific peer based on the peer address and an optional update token.
|
|
266
287
|
*/
|
|
@@ -280,7 +301,7 @@ class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBehavior
|
|
|
280
301
|
* Updates the details of an in-progress OTA update process for a specific requestor,
|
|
281
302
|
* tracking the update's state and optionally the target version to apply.
|
|
282
303
|
*/
|
|
283
|
-
#updateInProgressDetails(peerAddress, updateToken, lastState, versionToApply) {
|
|
304
|
+
#updateInProgressDetails(peerAddress, updateToken, lastState, versionToApply, directConsentObtained = false) {
|
|
284
305
|
const { fabricIndex, nodeId: requestorNodeId } = peerAddress;
|
|
285
306
|
const key = `${requestorNodeId}-${fabricIndex}-${Bytes.toHex(updateToken)}`;
|
|
286
307
|
const origDetails = this.internal.inProgressDetails.get(key);
|
|
@@ -288,7 +309,8 @@ class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBehavior
|
|
|
288
309
|
requestorNodeId,
|
|
289
310
|
fabricIndex,
|
|
290
311
|
lastState,
|
|
291
|
-
timestamp: Time.nowMs
|
|
312
|
+
timestamp: Time.nowMs,
|
|
313
|
+
directConsentObtained
|
|
292
314
|
};
|
|
293
315
|
if (versionToApply !== void 0) {
|
|
294
316
|
if (details.versionToApply !== void 0 && details.versionToApply !== versionToApply) {
|
|
@@ -300,6 +322,7 @@ class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBehavior
|
|
|
300
322
|
}
|
|
301
323
|
details.versionToApply = versionToApply;
|
|
302
324
|
}
|
|
325
|
+
details.directConsentObtained = directConsentObtained;
|
|
303
326
|
logger.info(
|
|
304
327
|
`OTA Update ${details.versionToApply !== void 0 ? `to version ${details.versionToApply} ` : ""}for Requestor`,
|
|
305
328
|
peerAddress.toString(),
|
package/dist/esm/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EAEI;AAAA,EACA;AAAA,OACG;AACP,SAAS,2BAA2B;AACpC,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAC9B,SAAS,iCAAiC;AAC1C,SAAS,kCAAkC;AAC3C;AAAA,EACI;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OAEG;AACP,SAAS,YAAY;AAErB;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEG;AAEP,SAAS,yCAAyC;AAElD,MAAM,SAAS,OAAO,IAAI,iCAAiC;AAE3D,MAAM,gCAAgC;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["OtaSoftwareUpdateConsentState", "OtaSoftwareUpdateProviderServer"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/node",
|
|
3
|
-
"version": "0.16.0-alpha.0-
|
|
3
|
+
"version": "0.16.0-alpha.0-20260104-558783063",
|
|
4
4
|
"description": "API for building Matter nodes",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -42,14 +42,14 @@
|
|
|
42
42
|
"#*": "./src/*"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@matter/general": "0.16.0-alpha.0-
|
|
46
|
-
"@matter/model": "0.16.0-alpha.0-
|
|
47
|
-
"@matter/types": "0.16.0-alpha.0-
|
|
48
|
-
"@matter/protocol": "0.16.0-alpha.0-
|
|
45
|
+
"@matter/general": "0.16.0-alpha.0-20260104-558783063",
|
|
46
|
+
"@matter/model": "0.16.0-alpha.0-20260104-558783063",
|
|
47
|
+
"@matter/types": "0.16.0-alpha.0-20260104-558783063",
|
|
48
|
+
"@matter/protocol": "0.16.0-alpha.0-20260104-558783063"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@matter/tools": "0.16.0-alpha.0-
|
|
52
|
-
"@matter/testing": "0.16.0-alpha.0-
|
|
51
|
+
"@matter/tools": "0.16.0-alpha.0-20260104-558783063",
|
|
52
|
+
"@matter/testing": "0.16.0-alpha.0-20260104-558783063"
|
|
53
53
|
},
|
|
54
54
|
"files": [
|
|
55
55
|
"dist/**/*",
|
|
@@ -32,7 +32,14 @@ import {
|
|
|
32
32
|
import type { ClientNode } from "#node/ClientNode.js";
|
|
33
33
|
import { Node } from "#node/Node.js";
|
|
34
34
|
import type { ServerNode } from "#node/ServerNode.js";
|
|
35
|
-
import {
|
|
35
|
+
import {
|
|
36
|
+
BdxProtocol,
|
|
37
|
+
DclOtaUpdateService,
|
|
38
|
+
FabricAuthority,
|
|
39
|
+
FileDesignator,
|
|
40
|
+
OtaUpdateError,
|
|
41
|
+
PeerAddress,
|
|
42
|
+
} from "#protocol";
|
|
36
43
|
import { VendorId } from "#types";
|
|
37
44
|
|
|
38
45
|
const logger = Logger.get("SoftwareUpdateManager");
|
|
@@ -73,6 +80,7 @@ export interface OtaUpdateAvailableDetails {
|
|
|
73
80
|
|
|
74
81
|
export enum OtaUpdateStatus {
|
|
75
82
|
Unknown,
|
|
83
|
+
WaitForConsent,
|
|
76
84
|
Querying,
|
|
77
85
|
Downloading,
|
|
78
86
|
WaitForApply,
|
|
@@ -191,15 +199,43 @@ export class SoftwareUpdateManager extends Behavior {
|
|
|
191
199
|
return this.internal.otaService.storage;
|
|
192
200
|
}
|
|
193
201
|
|
|
202
|
+
/** Validate that we know the peer the update is requested for and the details match to what we know */
|
|
203
|
+
async #validatePeerDetails(
|
|
204
|
+
peerAddress: PeerAddress,
|
|
205
|
+
details: { softwareVersion: number; vendorId: VendorId; productId: number },
|
|
206
|
+
) {
|
|
207
|
+
const { softwareVersion, vendorId, productId } = details;
|
|
208
|
+
|
|
209
|
+
const peers = (Node.forEndpoint(this.endpoint) as ServerNode).peers;
|
|
210
|
+
const node = peers.get(peerAddress);
|
|
211
|
+
const basicInfo = node?.maybeStateOf(BasicInformationClient);
|
|
212
|
+
if (
|
|
213
|
+
basicInfo?.softwareVersion === softwareVersion &&
|
|
214
|
+
basicInfo?.vendorId === vendorId &&
|
|
215
|
+
basicInfo?.productId === productId
|
|
216
|
+
) {
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
|
|
194
222
|
/**
|
|
195
223
|
* Used to determine if an update is existing in our storage for a peer with a certain software version.
|
|
196
224
|
*
|
|
197
|
-
* It uses the already checked details and does not check again on-demand. It considers consents already given
|
|
225
|
+
* It uses the already checked details and does not check again on-demand. It considers consents already given,
|
|
226
|
+
* but validates the peer data.
|
|
198
227
|
*/
|
|
199
228
|
async updateExistsFor(
|
|
200
229
|
peerAddress: PeerAddress,
|
|
201
230
|
{ softwareVersion, vendorId, productId, requestorCanConsent }: OtaSoftwareUpdateProvider.QueryImageRequest,
|
|
202
231
|
): Promise<OtaUpdateAvailableDetails | undefined> {
|
|
232
|
+
if (!(await this.#validatePeerDetails(peerAddress, { softwareVersion, vendorId, productId }))) {
|
|
233
|
+
logger.info(
|
|
234
|
+
`Peer details for node ${peerAddress.toString()} do not match values the update was requested for, ignoring`,
|
|
235
|
+
);
|
|
236
|
+
return undefined;
|
|
237
|
+
}
|
|
238
|
+
|
|
203
239
|
// We just use what we know from our last check here, so no on-demand DCL checks for now
|
|
204
240
|
const availableUpdates = await this.internal.otaService.find({ vendorId, productId });
|
|
205
241
|
|
|
@@ -237,7 +273,7 @@ export class SoftwareUpdateManager extends Behavior {
|
|
|
237
273
|
let candidate: UpdateConsentEntry | undefined;
|
|
238
274
|
let consentRequired = false;
|
|
239
275
|
if (requestorCanConsent) {
|
|
240
|
-
// Ok the request can get consent himself, so we just use the first candidate version and determine if
|
|
276
|
+
// Ok, the request can get consent himself, so we just use the first candidate version and determine if
|
|
241
277
|
// consent is needed to be requested or if we already have it
|
|
242
278
|
candidate = candidatesWithConsent[0];
|
|
243
279
|
consentRequired = !candidate.consentPeers.some(
|
|
@@ -474,6 +510,12 @@ export class SoftwareUpdateManager extends Behavior {
|
|
|
474
510
|
}
|
|
475
511
|
this.internal.updateQueue.splice(entryIndex, 1);
|
|
476
512
|
|
|
513
|
+
// Also clean up consents
|
|
514
|
+
this.internal.consents = this.internal.consents.filter(
|
|
515
|
+
({ peerAddress: consentAddress, targetSoftwareVersion }) =>
|
|
516
|
+
!PeerAddress.is(peerAddress, consentAddress) || targetSoftwareVersion > newVersion,
|
|
517
|
+
);
|
|
518
|
+
|
|
477
519
|
this.#triggerQueuedUpdate();
|
|
478
520
|
}
|
|
479
521
|
|
|
@@ -622,6 +664,34 @@ export class SoftwareUpdateManager extends Behavior {
|
|
|
622
664
|
await this.#triggerUpdateOnNode(entry);
|
|
623
665
|
}
|
|
624
666
|
|
|
667
|
+
/** Tries to cancel an ongoing OTA update for the given peer address. */
|
|
668
|
+
async #cancelUpdate(peerAddress: PeerAddress) {
|
|
669
|
+
const bdxProtocol = this.env.get(BdxProtocol);
|
|
670
|
+
|
|
671
|
+
// Disable the Peer on BdxProtocol for the OTA scope if registered and also cancel an open BDX session, if any
|
|
672
|
+
await bdxProtocol.disablePeerForScope(peerAddress, this.storage, true);
|
|
673
|
+
|
|
674
|
+
const entryIndex = this.internal.updateQueue.findIndex(
|
|
675
|
+
e => e.peerAddress.fabricIndex === peerAddress.fabricIndex && e.peerAddress.nodeId === peerAddress.nodeId,
|
|
676
|
+
);
|
|
677
|
+
if (entryIndex < 0) {
|
|
678
|
+
logger.warn(`No Ota update queued for node ${peerAddress.toString()}`);
|
|
679
|
+
return;
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
const entry = this.internal.updateQueue[entryIndex];
|
|
683
|
+
if (
|
|
684
|
+
entry.lastProgressStatus === OtaUpdateStatus.Applying ||
|
|
685
|
+
entry.lastProgressStatus === OtaUpdateStatus.Done
|
|
686
|
+
) {
|
|
687
|
+
// Too late, update is already applying or done
|
|
688
|
+
logger.info(`Cannot cancel update for node ${peerAddress.toString()}, already applying or done`);
|
|
689
|
+
return;
|
|
690
|
+
}
|
|
691
|
+
this.internal.updateQueue.splice(entryIndex, 1);
|
|
692
|
+
logger.info(`Cancelled OTA update for node ${peerAddress.toString()}`);
|
|
693
|
+
}
|
|
694
|
+
|
|
625
695
|
/**
|
|
626
696
|
* Adds or updates a consent for a given peer address, vendor ID, product ID, and target software version.
|
|
627
697
|
* Filters out existing consents for the given peer address and replaces them with the new one.
|
|
@@ -671,6 +741,39 @@ export class SoftwareUpdateManager extends Behavior {
|
|
|
671
741
|
return true;
|
|
672
742
|
}
|
|
673
743
|
|
|
744
|
+
/**
|
|
745
|
+
* Checks if consent exists for the given peer address and optionally for a specific target software version.
|
|
746
|
+
*/
|
|
747
|
+
hasConsent(peerAddress: PeerAddress, targetSoftwareVersion?: number) {
|
|
748
|
+
return this.internal.consents.some(
|
|
749
|
+
consent =>
|
|
750
|
+
consent.peerAddress.fabricIndex === peerAddress.fabricIndex &&
|
|
751
|
+
consent.peerAddress.nodeId === peerAddress.nodeId &&
|
|
752
|
+
(targetSoftwareVersion === undefined || consent.targetSoftwareVersion === targetSoftwareVersion),
|
|
753
|
+
);
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
/**
|
|
757
|
+
* Checks for consent and removes it if present, also cancels if in progress. Use this to remove a formerly given
|
|
758
|
+
* consent.
|
|
759
|
+
*/
|
|
760
|
+
removeConsent(peerAddress: PeerAddress, targetSoftwareVersion?: number) {
|
|
761
|
+
const consentIndex = this.internal.consents.findIndex(
|
|
762
|
+
consent =>
|
|
763
|
+
consent.peerAddress.fabricIndex === peerAddress.fabricIndex &&
|
|
764
|
+
consent.peerAddress.nodeId === peerAddress.nodeId &&
|
|
765
|
+
(targetSoftwareVersion === undefined || consent.targetSoftwareVersion === targetSoftwareVersion),
|
|
766
|
+
);
|
|
767
|
+
if (consentIndex >= 0) {
|
|
768
|
+
this.internal.consents.splice(consentIndex, 1);
|
|
769
|
+
} else {
|
|
770
|
+
logger.info(
|
|
771
|
+
`No consent to remove found for node ${peerAddress.toString()}${targetSoftwareVersion !== undefined ? ` for version ${targetSoftwareVersion}` : ""}`,
|
|
772
|
+
);
|
|
773
|
+
}
|
|
774
|
+
return this.#cancelUpdate(peerAddress);
|
|
775
|
+
}
|
|
776
|
+
|
|
674
777
|
/**
|
|
675
778
|
* Handles the status change of an OTA update for a given peer device.
|
|
676
779
|
*
|
|
@@ -50,6 +50,7 @@ interface OtaUpdateInProgressDetails {
|
|
|
50
50
|
lastState: OtaUpdateStatus;
|
|
51
51
|
timestamp: Timestamp;
|
|
52
52
|
versionToApply?: number;
|
|
53
|
+
directConsentObtained?: boolean;
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
export enum OtaSoftwareUpdateConsentState {
|
|
@@ -158,9 +159,6 @@ export class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBe
|
|
|
158
159
|
NodeSession.assert(session);
|
|
159
160
|
const peerAddress = session.peerAddress;
|
|
160
161
|
|
|
161
|
-
// TODO Validate vendorId, productId, softwareVersion, hardwareVersion, location from OTA Requestor Node, so
|
|
162
|
-
// get the data from the node - maybe actively via a read? Or not needed at all and we trust?
|
|
163
|
-
|
|
164
162
|
const updateDetails = await this.checkUpdateAvailable(request, peerAddress);
|
|
165
163
|
if (updateDetails === undefined) {
|
|
166
164
|
return {
|
|
@@ -186,18 +184,18 @@ export class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBe
|
|
|
186
184
|
);
|
|
187
185
|
return {
|
|
188
186
|
status: OtaSoftwareUpdateProvider.Status.Busy,
|
|
189
|
-
delayedActionTime: Seconds.of(Minutes(5)), // usual bdx session timeout
|
|
187
|
+
delayedActionTime: Seconds.of(Minutes(5)), // the usual bdx session timeout is 5 minutes, so let's use this
|
|
190
188
|
};
|
|
191
189
|
}
|
|
192
190
|
|
|
193
191
|
const crypto = this.env.get(Crypto);
|
|
194
192
|
const updateToken = crypto.randomBytes(OTA_UPDATE_TOKEN_LENGTH_BYTES);
|
|
195
193
|
|
|
196
|
-
this.#updateInProgressDetails(peerAddress, updateToken, OtaUpdateStatus.Querying, newSoftwareVersion);
|
|
197
|
-
|
|
198
194
|
// If the requestor can consent, we send the update without asking for a consent
|
|
199
195
|
// else we need to ask for consent if required by the update details
|
|
200
196
|
if (consentRequired && !request.requestorCanConsent) {
|
|
197
|
+
this.#updateInProgressDetails(peerAddress, updateToken, OtaUpdateStatus.WaitForConsent, newSoftwareVersion);
|
|
198
|
+
|
|
201
199
|
const { consentState, delayTime = Seconds(120) } = await this.requestUserConsentForUpdate(
|
|
202
200
|
request,
|
|
203
201
|
updateDetails,
|
|
@@ -211,18 +209,28 @@ export class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBe
|
|
|
211
209
|
switch (consentState) {
|
|
212
210
|
case OtaSoftwareUpdateConsentState.Granted:
|
|
213
211
|
// proceed
|
|
212
|
+
this.#updateInProgressDetails(
|
|
213
|
+
peerAddress,
|
|
214
|
+
updateToken,
|
|
215
|
+
OtaUpdateStatus.Querying,
|
|
216
|
+
newSoftwareVersion,
|
|
217
|
+
true,
|
|
218
|
+
);
|
|
214
219
|
break;
|
|
215
|
-
case OtaSoftwareUpdateConsentState.Denied:
|
|
216
|
-
case OtaSoftwareUpdateConsentState.Unknown:
|
|
217
|
-
return {
|
|
218
|
-
status: OtaSoftwareUpdateProvider.Status.NotAvailable,
|
|
219
|
-
};
|
|
220
220
|
case OtaSoftwareUpdateConsentState.Obtaining:
|
|
221
221
|
return {
|
|
222
222
|
status: OtaSoftwareUpdateProvider.Status.Busy,
|
|
223
223
|
delayedActionTime: Seconds.of(delayTime),
|
|
224
224
|
};
|
|
225
|
+
case OtaSoftwareUpdateConsentState.Denied:
|
|
226
|
+
case OtaSoftwareUpdateConsentState.Unknown:
|
|
227
|
+
default:
|
|
228
|
+
return {
|
|
229
|
+
status: OtaSoftwareUpdateProvider.Status.NotAvailable,
|
|
230
|
+
};
|
|
225
231
|
}
|
|
232
|
+
} else {
|
|
233
|
+
this.#updateInProgressDetails(peerAddress, updateToken, OtaUpdateStatus.Querying, newSoftwareVersion);
|
|
226
234
|
}
|
|
227
235
|
|
|
228
236
|
let imageUri: string;
|
|
@@ -317,10 +325,16 @@ export class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBe
|
|
|
317
325
|
} catch (error) {
|
|
318
326
|
MatterError.accept(error);
|
|
319
327
|
logger.info("Error while closing BDX session for OTA update apply request, continuing anyway:", error);
|
|
320
|
-
// TODO ?
|
|
321
328
|
}
|
|
322
|
-
|
|
323
|
-
|
|
329
|
+
|
|
330
|
+
if (!this.#hasUpdateConsent(session.peerAddress, newVersion)) {
|
|
331
|
+
this.#updateInProgressDetails(session.peerAddress, updateToken, OtaUpdateStatus.Unknown, newVersion);
|
|
332
|
+
|
|
333
|
+
return {
|
|
334
|
+
action: OtaSoftwareUpdateProvider.ApplyUpdateAction.Discontinue,
|
|
335
|
+
delayedActionTime: Minutes(2),
|
|
336
|
+
};
|
|
337
|
+
}
|
|
324
338
|
|
|
325
339
|
// Invoked by an OTA Requestor once it is ready to apply a previously downloaded Software Image.
|
|
326
340
|
// Disable BDX protocol again
|
|
@@ -363,6 +377,7 @@ export class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBe
|
|
|
363
377
|
|
|
364
378
|
/**
|
|
365
379
|
* Override to customize how to check for available updates.
|
|
380
|
+
* The default logic also validates the node details like vendorId and productId and the current version.
|
|
366
381
|
* When the requestorCanConsent is true, we send the latest update we have also without a consent.
|
|
367
382
|
* All additional data like hardware, location, and MetadataForProvider can be checked here for specific logic
|
|
368
383
|
*/
|
|
@@ -373,6 +388,13 @@ export class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBe
|
|
|
373
388
|
return this.endpoint.act(agent => agent.get(SoftwareUpdateManager).updateExistsFor(peerAddress, request));
|
|
374
389
|
}
|
|
375
390
|
|
|
391
|
+
#hasUpdateConsent(peerAddress: PeerAddress, targetSoftwareVersion?: number) {
|
|
392
|
+
return (
|
|
393
|
+
!!this.#inProgressDetailsForPeer(peerAddress)?.directConsentObtained ||
|
|
394
|
+
this.endpoint.act(agent => agent.get(SoftwareUpdateManager).hasConsent(peerAddress, targetSoftwareVersion))
|
|
395
|
+
);
|
|
396
|
+
}
|
|
397
|
+
|
|
376
398
|
/**
|
|
377
399
|
* Retrieves the in-progress details for a specific peer based on the peer address and an optional update token.
|
|
378
400
|
*/
|
|
@@ -398,6 +420,7 @@ export class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBe
|
|
|
398
420
|
updateToken: Bytes,
|
|
399
421
|
lastState: OtaUpdateStatus,
|
|
400
422
|
versionToApply?: number,
|
|
423
|
+
directConsentObtained = false,
|
|
401
424
|
) {
|
|
402
425
|
const { fabricIndex, nodeId: requestorNodeId } = peerAddress;
|
|
403
426
|
const key = `${requestorNodeId}-${fabricIndex}-${Bytes.toHex(updateToken)}`;
|
|
@@ -407,6 +430,7 @@ export class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBe
|
|
|
407
430
|
fabricIndex,
|
|
408
431
|
lastState,
|
|
409
432
|
timestamp: Time.nowMs,
|
|
433
|
+
directConsentObtained,
|
|
410
434
|
};
|
|
411
435
|
if (versionToApply !== undefined) {
|
|
412
436
|
if (details.versionToApply !== undefined && details.versionToApply !== versionToApply) {
|
|
@@ -418,6 +442,7 @@ export class OtaSoftwareUpdateProviderServer extends OtaSoftwareUpdateProviderBe
|
|
|
418
442
|
}
|
|
419
443
|
details.versionToApply = versionToApply;
|
|
420
444
|
}
|
|
445
|
+
details.directConsentObtained = directConsentObtained;
|
|
421
446
|
|
|
422
447
|
logger.info(
|
|
423
448
|
`OTA Update ${details.versionToApply !== undefined ? `to version ${details.versionToApply} ` : ""}for Requestor`,
|
|
@@ -680,7 +680,7 @@ export class OtaSoftwareUpdateRequestorServer extends OtaSoftwareUpdateRequestor
|
|
|
680
680
|
|
|
681
681
|
if (userConsentNeeded) {
|
|
682
682
|
if (!this.state.canConsent) {
|
|
683
|
-
// Ignore update because we
|
|
683
|
+
// Ignore update because we cannot do a consent, should normally never happen
|
|
684
684
|
logger.info(`OTA update requires user consent, but we cannot consent, ignoring update.`);
|
|
685
685
|
this.#markActiveOtaProviderNoUpdate(providerLocation);
|
|
686
686
|
this.#resetStateToIdle();
|