@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.
Files changed (20) hide show
  1. package/dist/cjs/behavior/system/software-update/SoftwareUpdateManager.d.ts +17 -6
  2. package/dist/cjs/behavior/system/software-update/SoftwareUpdateManager.d.ts.map +1 -1
  3. package/dist/cjs/behavior/system/software-update/SoftwareUpdateManager.js +73 -7
  4. package/dist/cjs/behavior/system/software-update/SoftwareUpdateManager.js.map +1 -1
  5. package/dist/cjs/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.d.ts +2 -0
  6. package/dist/cjs/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.d.ts.map +1 -1
  7. package/dist/cjs/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.js +32 -9
  8. package/dist/cjs/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.js.map +1 -1
  9. package/dist/esm/behavior/system/software-update/SoftwareUpdateManager.d.ts +17 -6
  10. package/dist/esm/behavior/system/software-update/SoftwareUpdateManager.d.ts.map +1 -1
  11. package/dist/esm/behavior/system/software-update/SoftwareUpdateManager.js +81 -8
  12. package/dist/esm/behavior/system/software-update/SoftwareUpdateManager.js.map +1 -1
  13. package/dist/esm/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.d.ts +2 -0
  14. package/dist/esm/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.d.ts.map +1 -1
  15. package/dist/esm/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.js +32 -9
  16. package/dist/esm/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.js.map +1 -1
  17. package/package.json +7 -7
  18. package/src/behavior/system/software-update/SoftwareUpdateManager.ts +106 -3
  19. package/src/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.ts +39 -14
  20. 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
- Querying = 1,
36
- Downloading = 2,
37
- WaitForApply = 3,
38
- Applying = 4,
39
- Done = 5
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":"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"}
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,EAEH,mBAAmB,EAEnB,cAAc,EAEd,WAAW,EACd,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIlC,UAAU,aAAa;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED,UAAU,gBAAiB,SAAQ,aAAa;IAC5C,QAAQ,EAAE,QAAQ,CAAC;IACnB,sBAAsB,CAAC,EAAE,SAAS,CAAC;IACnC,kBAAkB,CAAC,EAAE,eAAe,CAAC;CACxC;AAcD,MAAM,WAAW,yBAAyB;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wBAAwB,EAAE,MAAM,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,KAAK,CAAC;CAChC;AAED,oBAAY,eAAe;IACvB,OAAO,IAAA;IACP,cAAc,IAAA;IACd,QAAQ,IAAA;IACR,WAAW,IAAA;IACX,YAAY,IAAA;IACZ,QAAQ,IAAA;IACR,IAAI,IAAA;CACP;AAED,MAAM,WAAW,kBAAkB;IAC/B,qCAAqC;IACrC,QAAQ,EAAE,QAAQ,CAAC;IAEnB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAElB,6CAA6C;IAC7C,eAAe,EAAE,MAAM,CAAC;IAExB,oDAAoD;IACpD,qBAAqB,EAAE,MAAM,CAAC;IAE9B,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,iDAAiD;IACjD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;;IAC/C,gBAAyB,EAAE,qBAAqB;IAExC,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC;IACnC,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,CAAC;IACzC,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC;IAE9B,UAAU;IAkEzB,IAAI,OAAO,sCAEV;IAsBD;;;;;OAKG;IACG,eAAe,CACjB,WAAW,EAAE,WAAW,EACxB,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,yBAAyB,CAAC,iBAAiB,GAC3G,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAmFjD;;;;;;;OAOG;IACG,YAAY,CAAC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,UAAU,CAAC;QAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;KAAO;qBAiCvC,WAAW;cAAQ,kBAAkB;;IAuK3F;;OAEG;IACH,SAAS,CAAC,uBAAuB,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB;IA2G7F;;;;;;OAMG;IACG,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM;IAwDhH;;;;;;OAMG;IACG,gBAAgB,CAClB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,qBAAqB,EAAE,MAAM;IAsCjC;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE,qBAAqB,CAAC,EAAE,MAAM;IASnE;;;OAGG;IACH,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,qBAAqB,CAAC,EAAE,MAAM;IAiBtE;;;;;;OAMG;IACH,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,MAAM;IA4BxE,CAAC,MAAM,CAAC,YAAY,CAAC;CAQvC;AAED,yBAAiB,qBAAqB,CAAC;IACnC,MAAa,KAAK;QACd,+DAA+D;QAC/D,kBAAkB,UAAS;QAE3B,oCAAoC;QACpC,mBAAmB,WAAa;QAEhC,+DAA+D;QAC/D,yBAAyB,UAAQ;QAEjC,4FAA4F;QAC5F,oBAAoB,WAAa;KACpC;IAED,MAAa,QAAQ;QACjB,oHAAoH;QACpH,QAAQ,kBAA8B;QAEtC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;QAErC,UAAU,EAAG,mBAAmB,CAAC;QAEjC,mBAAmB,EAAG,KAAK,CAAC;QAE5B,WAAW,qBAAiC;QAE5C,gBAAgB,CAAC,EAAE,KAAK,CAAC;QAEzB,aAAa,CAAC,EAAE,gBAAgB,CAAC;QAEjC,sBAAsB,gBAAuB;QAE7C,YAAY,kCAAyC;KACxD;IAED,MAAa,MAAO,SAAQ,YAAY;QACpC,gHAAgH;QAChH,eAAe,2EAAwE;QAEvF,oDAAoD;QACpD,UAAU,wCAAqC;KAClD;CACJ"}
@@ -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["Querying"] = 1] = "Querying";
41
- OtaUpdateStatus2[OtaUpdateStatus2["Downloading"] = 2] = "Downloading";
42
- OtaUpdateStatus2[OtaUpdateStatus2["WaitForApply"] = 3] = "WaitForApply";
43
- OtaUpdateStatus2[OtaUpdateStatus2["Applying"] = 4] = "Applying";
44
- OtaUpdateStatus2[OtaUpdateStatus2["Done"] = 5] = "Done";
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 === 5 /* Done */) {
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
  }
@@ -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
  */
@@ -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;CAC3B;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;IA+IxD;;;OAGG;IACY,kBAAkB,CAAC,EAC9B,WAAW,EACX,UAAU,GACb,EAAE,yBAAyB,CAAC,kBAAkB,GAAG,OAAO,CAAC,yBAAyB,CAAC,mBAAmB,CAAC;IAgCxG;;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;;;;OAIG;IACH,SAAS,CAAC,oBAAoB,CAC1B,OAAO,EAAE,yBAAyB,CAAC,iBAAiB,EACpD,WAAW,EAAE,WAAW,GACzB,YAAY,CAAC,yBAAyB,GAAG,SAAS,CAAC;CA8DzD;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"}
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 are 5 minutes, so lets use this
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(),
@@ -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;AAU/B,IAAK,gCAAL,kBAAKC,mCAAL;AACH,EAAAA,8DAAA;AACA,EAAAA,8DAAA;AACA,EAAAA,8DAAA;AACA,EAAAA,8DAAA;AAJQ,SAAAA;AAAA,GAAA;AAyBL,MAAM,wCAAwC,2EAAkC;AAAA,EAGnF,MAAe,aAAa;AACxB,KAAC,MAAM,KAAK,MAAM,KAAK,kCAAgB,GAAG,eAAe,aAAa;AAEtE,SAAK,MAAM,QAAQ,kDAAqB;AACxC,UAAM,KAAK,MAAM,KAAK,kDAAqB;AAG3C,UAAM,OAAO,iBAAK,YAAY,KAAK,QAAQ;AAC3C,SAAK,QAAQ,KAAK,UAAU,QAAQ,KAAK,WAAW;AACpD,QAAI,KAAK,UAAU,UAAU;AACzB,YAAM,KAAK,YAAY;AAAA,IAC3B;AAAA,EACJ;AAAA,EAEA,IAAI,gBAAgB;AAChB,QAAI,KAAK,SAAS,kBAAkB,QAAW;AAC3C,WAAK,SAAS,gBAAgB,KAAK,MAAM,IAAI,kDAAqB,EAAE;AAAA,IACxE;AACA,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA,EAEA,MAAM,cAAc;AAChB,UAAM,kBAAkB,KAAK,IAAI,IAAI,+BAAe;AACpD,UAAM,YAAY,gBAAgB,QAAQ,CAAC;AAC3C,QAAI,CAAC,WAAW;AAEZ,aAAO,MAAM,wCAAwC;AACrD,sBAAgB,YAAY,KAAK,MAAM,KAAK,YAAY,CAAC;AACzD;AAAA,IACJ;AAEA,UAAM,OAAO,iBAAK,YAAY,KAAK,QAAQ;AAC3C,UAAM,KAAK,IAAI,WAAS,MAAM,KAAK,yCAAmB,CAAC;AACvD,QAAI,KAAK,UAAU,IAAI,yCAAmB,GAAG;AACzC,UACI,CAAC,KACI,QAAQ,yCAAmB,EAC3B,IAAI;AAAA,QACD,CAAC,EAAE,aAAa,WAAW,UAAU,UAAU,QAAQ,MACnD,gBAAgB,UAAU,eAC1B,cAAc,qCAAc,4BAA4B,WACxD,aAAa,qCAAc,2BAA2B,QACtD,UAAU,WAAW,KACrB,SAAS,WAAW,KACpB,QAAQ,CAAC,EAAE,aAAa,KAAK,SAAS,UACtC,QAAQ,CAAC,EAAE,YAAY,8DAA0B,QAAQ;AAAA,MACjE,GACN;AAEE,cAAM,MAAM;AAAA,UACR,GAAG,KAAK,QAAQ,yCAAmB,EAAE;AAAA,UACrC;AAAA,YACI,aAAa,UAAU;AAAA,YACvB,WAAW,qCAAc,4BAA4B;AAAA,YACrD,UAAU,qCAAc,2BAA2B;AAAA,YACnD,UAAU,CAAC;AAAA,YACX,SAAS,CAAC,EAAE,UAAU,KAAK,SAAS,QAAQ,SAAS,8DAA0B,QAAQ,GAAG,CAAC;AAAA,UAC/F;AAAA,QACJ;AACA,cAAM,KAAK,WAAW,2CAAqB,EAAE,IAAI,CAAC;AAClD,eAAO,KAAK,0FAA0F;AAAA,MAC1G;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAe,WACX,SACqD;AACrD,UAAM,EAAE,mBAAmB,IAAI;AAE/B,2CAAkB,KAAK,OAAO;AAC9B,UAAM,UAAU,KAAK,QAAQ;AAC7B,gCAAY,OAAO,OAAO;AAC1B,UAAM,cAAc,QAAQ;AAK5B,UAAM,gBAAgB,MAAM,KAAK,qBAAqB,SAAS,WAAW;AAC1E,QAAI,kBAAkB,QAAW;AAC7B,aAAO;AAAA,QACH,QAAQ,8DAA0B,OAAO;AAAA,MAC7C;AAAA,IACJ;AACA,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,IAAI;AAGJ,UAAM,mBAAmB,KAAK,0BAA0B,WAAW;AACnE,QAAI,qBAAqB,QAAW;AAChC,aAAO;AAAA,QACH;AAAA,QACA;AAAA,QACA,wBAAwB,gEAA2B,YAAY,iBAAiB,SAAS,CAAC;AAAA,MAC9F;AACA,aAAO;AAAA,QACH,QAAQ,8DAA0B,OAAO;AAAA,QACzC,mBAAmB,uBAAQ,OAAG,wBAAQ,CAAC,CAAC;AAAA;AAAA,MAC5C;AAAA,IACJ;AAEA,UAAM,SAAS,KAAK,IAAI,IAAI,qBAAM;AAClC,UAAM,cAAc,OAAO,YAAY,6BAA6B;AAEpE,SAAK,yBAAyB,aAAa,aAAa,6CAAgB,UAAU,kBAAkB;AAIpG,QAAI,mBAAmB,CAAC,QAAQ,qBAAqB;AACjD,YAAM,EAAE,cAAc,gBAAY,wBAAQ,GAAG,EAAE,IAAI,MAAM,KAAK;AAAA,QAC1D;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AACA,aAAO;AAAA,QACH;AAAA,QACA;AAAA,QACA,IAAI,qBAAM,MAAM,WAAW,CAAC,gBAAgB,8BAA8B,YAAY,CAAC;AAAA,MAC3F;AACA,cAAQ,cAAc;AAAA,QAClB,KAAK;AAED;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AACD,iBAAO;AAAA,YACH,QAAQ,8DAA0B,OAAO;AAAA,UAC7C;AAAA,QACJ,KAAK;AACD,iBAAO;AAAA,YACH,QAAQ,8DAA0B,OAAO;AAAA,YACzC,mBAAmB,uBAAQ,GAAG,SAAS;AAAA,UAC3C;AAAA,MACR;AAAA,IACJ;AAEA,QAAI;AAGJ,QAAI,mBAAmB,SAAS,8DAA0B,iBAAiB,cAAc,GAAG;AAExF,YAAM,cAAc,KAAK,IAAI,IAAI,2BAAW;AAC5C,UACI,CAAC,YAAY,mBAAmB,aAAa,KAAK,eAAe;AAAA,QAC7D,sBAAsB,CAAC,qBAAK,WAAW,aAAa;AAAA;AAAA,QAEpD,oBAAgB,wBAAQ,CAAC;AAAA;AAAA,MAE7B,CAAC,GACH;AAEE,eAAO,KAAK,sBAAsB;AAClC,eAAO;AAAA,UACH,QAAQ,8DAA0B,OAAO;AAAA,UACzC,mBAAmB,uBAAQ,OAAG,wBAAQ,CAAC,CAAC;AAAA,QAC5C;AAAA,MACJ;AAEA,kBAAY,eAAe,GAAG,CAAC,YAAY,UAAU;AACjD,YAAI,UAAU,KAAK,cAAc,SAAS,CAAC,4BAAY,GAAG,WAAW,aAAa,WAAW,GAAG;AAE5F;AAAA,QACJ;AACA,aAAK;AAAA,UACD;AAAA,UACA;AAAA,UACA,6CAAgB;AAAA,UAChB;AAAA,QACJ;AACA,mBAAW,iBAAiB;AAAA,UAAG,MAC3B,KAAK;AAAA,YACD;AAAA,YACA;AAAA,YACA,6CAAgB;AAAA,YAChB;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ,CAAC;AAID,iBAAW,eAAe,SAAS,KAAK,QAAQ,QAAQ,iBAAiB,UAAU;AAAA,IACvF,WACI,aAAa,UACb,mBAAmB,SAAS,8DAA0B,iBAAiB,KAAK,GAC9E;AACE,iBAAW;AAAA,IACf,OAAO;AACH,aAAO;AAAA,QACH,QAAQ,8DAA0B,OAAO;AAAA,MAC7C;AAAA,IACJ;AAEA,WAAO;AAAA,MACH,QAAQ,8DAA0B,OAAO;AAAA,MACzC;AAAA,MACA,iBAAiB;AAAA,MACjB,uBAAuB;AAAA,MACvB;AAAA,MACA,mBAAmB,oBAAoB,OAAO,OAAO;AAAA,MACrD;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAe,mBAAmB;AAAA,IAC9B;AAAA,IACA;AAAA,EACJ,GAAyG;AACrG,2CAAkB,KAAK,OAAO;AAC9B,UAAM,UAAU,KAAK,QAAQ;AAC7B,gCAAY,OAAO,OAAO;AAE1B,UAAM,eAAe,KAAK,0BAA0B,QAAQ,aAAa,WAAW;AAEpF,UAAM,cAAc,KAAK,IAAI,IAAI,2BAAW;AAC5C,QAAI;AACA,YAAM,YAAY;AAAA,QACd,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,cAAc,cAAc,6CAAgB;AAAA;AAAA,MAChD;AAAA,IACJ,SAAS,OAAO;AACZ,iCAAY,OAAO,KAAK;AACxB,aAAO,KAAK,oFAAoF,KAAK;AAAA,IAEzG;AAMA,SAAK,yBAAyB,QAAQ,aAAa,aAAa,6CAAgB,UAAU,UAAU;AAEpG,WAAO;AAAA,MACH,QAAQ,8DAA0B,kBAAkB;AAAA,MACpD,mBAAmB;AAAA;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKS,oBAAoB;AAAA,IACzB;AAAA,IACA;AAAA,EACJ,GAA+D;AAC3D,2CAAkB,KAAK,OAAO;AAC9B,UAAM,UAAU,KAAK,QAAQ;AAC7B,gCAAY,OAAO,OAAO;AAK1B,SAAK,yBAAyB,QAAQ,aAAa,aAAa,6CAAgB,MAAM,eAAe;AAAA,EACzG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMU,4BACN,UACA,gBACA,cACmF;AACnF,WAAO,EAAE,cAAc,gBAAsC;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,qBACN,SACA,aACmD;AACnD,WAAO,KAAK,SAAS,IAAI,WAAS,MAAM,IAAI,kDAAqB,EAAE,gBAAgB,aAAa,OAAO,CAAC;AAAA,EAC5G;AAAA;AAAA;AAAA;AAAA,EAKA,0BAA0B,aAA0B,aAAqB;AACrE,UAAM,EAAE,aAAa,QAAQ,gBAAgB,IAAI;AACjD,QAAI,gBAAgB,QAAW;AAC3B,YAAM,MAAM,GAAG,eAAe,IAAI,WAAW,IAAI,qBAAM,MAAM,WAAW,CAAC;AACzE,aAAO,KAAK,SAAS,kBAAkB,IAAI,GAAG;AAAA,IAClD;AACA,eAAW,WAAW,KAAK,SAAS,kBAAkB,OAAO,GAAG;AAC5D,UAAI,QAAQ,oBAAoB,mBAAmB,QAAQ,gBAAgB,aAAa;AACpF,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,yBACI,aACA,aACA,WACA,gBACF;AACE,UAAM,EAAE,aAAa,QAAQ,gBAAgB,IAAI;AACjD,UAAM,MAAM,GAAG,eAAe,IAAI,WAAW,IAAI,qBAAM,MAAM,WAAW,CAAC;AACzE,UAAM,cAAc,KAAK,SAAS,kBAAkB,IAAI,GAAG;AAC3D,UAAM,UAAsC,eAAe;AAAA,MACvD;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,oBAAK;AAAA,IACpB;AACA,QAAI,mBAAmB,QAAW;AAC9B,UAAI,QAAQ,mBAAmB,UAAa,QAAQ,mBAAmB,gBAAgB;AACnF,eAAO;AAAA,UACH;AAAA,UACA,YAAY,SAAS;AAAA,UACrB,IAAI,qBAAM,MAAM,WAAW,CAAC,iCAAiC,QAAQ,cAAc,OAAO,cAAc;AAAA,QAC5G;AAAA,MACJ;AACA,cAAQ,iBAAiB;AAAA,IAC7B;AAEA,WAAO;AAAA,MACH,cAAc,QAAQ,mBAAmB,SAAY,cAAc,QAAQ,cAAc,MAAM,EAAE;AAAA,MACjG,YAAY,SAAS;AAAA,MACrB,IAAI,qBAAM,MAAM,WAAW,CAAC,YAAY,SAAS,GAAG,gBAAgB,SAAY,KAAK,cAAc,YAAY,SAAS,GAAG;AAAA,IAC/H;AAEA,SAAK,SAAS,kBAAkB,IAAI,KAAK,OAAO;AAEhD,SAAK,SAAS;AAAA,MAAI,WACd,MAAM,IAAI,kDAAqB,EAAE,kBAAkB,aAAa,WAAW,QAAQ,cAAc;AAAA,IACrG;AAAA,EACJ;AACJ;AAAA,CAEO,CAAUC,qCAAV;AAAA,EACI,MAAM,SAAS;AAAA;AAAA,IAElB,oBAAoB,oBAAI,IAAwC;AAAA,IAEhE;AAAA,EACJ;AALO,EAAAA,iCAAM;AAAA,GADA;",
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
- Querying = 1,
36
- Downloading = 2,
37
- WaitForApply = 3,
38
- Applying = 4,
39
- Done = 5
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":"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"}
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 { DclOtaUpdateService, FabricAuthority, FileDesignator, OtaUpdateError } from "#protocol";
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["Querying"] = 1] = "Querying";
31
- OtaUpdateStatus2[OtaUpdateStatus2["Downloading"] = 2] = "Downloading";
32
- OtaUpdateStatus2[OtaUpdateStatus2["WaitForApply"] = 3] = "WaitForApply";
33
- OtaUpdateStatus2[OtaUpdateStatus2["Applying"] = 4] = "Applying";
34
- OtaUpdateStatus2[OtaUpdateStatus2["Done"] = 5] = "Done";
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 === 5 /* Done */) {
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": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,gBAAgB;AACzB,SAAS,wBAAwB;AACjC,SAAS,8BAA8B;AAEvC,SAAS,kCAAkC;AAE3C;AAAA,EAEI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OAGG;AAEP,SAAS,YAAY;AAErB;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAGP,MAAM,SAAS,OAAO,IAAI,uBAAuB;AAoC1C,IAAK,kBAAL,kBAAKA,qBAAL;AACH,EAAAA,kCAAA;AACA,EAAAA,kCAAA;AACA,EAAAA,kCAAA;AACA,EAAAA,kCAAA;AACA,EAAAA,kCAAA;AACA,EAAAA,kCAAA;AACA,EAAAA,kCAAA;AAPQ,SAAAA;AAAA,GAAA;AA4CL,MAAM,8BAA8B,SAAS;AAAA,EAChD,OAAyB,KAAK;AAAA,EAM9B,MAAe,aAAa;AACxB,SAAK,SAAS,WAAW,KAAK,IAAI,YAAY;AAC9C,SAAK,SAAS,aAAa,KAAK,SAAS,SAAS,IAAI,mBAAmB;AAEzE,UAAM,OAAO,KAAK,YAAY,KAAK,QAAQ;AAC3C,SAAK,QAAQ,KAAK,UAAU,QAAQ,KAAK,WAAW;AACpD,QAAI,KAAK,UAAU,UAAU;AACzB,YAAM,KAAK,YAAY;AAAA,IAC3B;AAAA,EACJ;AAAA,EAEA,MAAM,cAAc;AAChB,QAAI,KAAK,SAAS,kBAAkB,QAAW;AAC3C,YAAM,KAAK,SAAS,cAAc,MAAM;AACxC,WAAK,SAAS,gBAAgB;AAAA,IAClC;AAKA,UAAM,kBAAkB,KAAK,IAAI,IAAI,eAAe;AACpD,UAAM,YAAY,gBAAgB,QAAQ,CAAC;AAC3C,QAAI,CAAC,WAAW;AAEZ,aAAO,KAAK,uFAAuF;AACnG,sBAAgB,YAAY,KAAK,KAAK,SAAS,KAAK,WAAW,CAAC;AAChE;AAAA,IACJ;AACA,QAAI,KAAK,MAAM,2BAA2B;AACtC,WAAK,SAAS,gBAAgB,IAAI;AAAA,QAC9B,KAAK;AAAA,QACL;AAAA,QACA,KAAK,MAAM;AAAA,MACf;AAAA,IACJ;AAGA,UAAM,QAAQ,OAAO,QAAQ,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC;AAC1E,WAAO,KAAK,wCAAwC,SAAS,OAAO,KAAK,CAAC,EAAE;AAC5E,SAAK,SAAS,qBAAqB,KAAK;AACxC,SAAK,SAAS,sBAAsB,KAAK;AAAA,MACrC;AAAA,MACA;AAAA,MACA,KAAK,SAAS,KAAK,sBAAsB;AAAA,IAC7C,EAAE,MAAM;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,yBAAyB;AAC3B,QAAI;AACA,YAAM,KAAK,uBAAuB;AAAA,IACtC,SAAS,OAAO;AACZ,aAAO,MAAM,0CAA0C,KAAK;AAAA,IAChE;AAEA,SAAK,SAAS,oBAAoB,KAAK;AACvC,SAAK,SAAS,sBAAsB,KAAK;AAAA,MACrC;AAAA,MACA,KAAK,MAAM;AAAA,MACX,KAAK,SAAS,KAAK,sBAAsB;AAAA,IAC7C,EAAE,MAAM;AAAA,EACZ;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK,SAAS,WAAW;AAAA,EACpC;AAAA;AAAA,EAGA,MAAM,qBACF,aACA,SACF;AACE,UAAM,EAAE,iBAAiB,UAAU,UAAU,IAAI;AAEjD,UAAM,QAAS,KAAK,YAAY,KAAK,QAAQ,EAAiB;AAC9D,UAAM,OAAO,MAAM,IAAI,WAAW;AAClC,UAAM,YAAY,MAAM,aAAa,sBAAsB;AAC3D,QACI,WAAW,oBAAoB,mBAC/B,WAAW,aAAa,YACxB,WAAW,cAAc,WAC3B;AACE,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,gBACF,aACA,EAAE,iBAAiB,UAAU,WAAW,oBAAoB,GACd;AAC9C,QAAI,CAAE,MAAM,KAAK,qBAAqB,aAAa,EAAE,iBAAiB,UAAU,UAAU,CAAC,GAAI;AAC3F,aAAO;AAAA,QACH,yBAAyB,YAAY,SAAS,CAAC;AAAA,MACnD;AACA,aAAO;AAAA,IACX;AAGA,UAAM,mBAAmB,MAAM,KAAK,SAAS,WAAW,KAAK,EAAE,UAAU,UAAU,CAAC;AAEpF,UAAM,aAAa,iBACd;AAAA,MACG,CAAC;AAAA,QACG,iBAAiB;AAAA,QACjB,+BAA+B;AAAA,QAC/B,+BAA+B;AAAA,QAC/B;AAAA,MACJ,MACI,kBAAkB,4BAClB,mBAAmB,gCACnB,mBAAmB,iCAClB,KAAK,MAAM,sBAAsB,SAAS;AAAA,IACnD,EACC,KAAK,CAAC,GAAG,MAAM,EAAE,kBAAkB,EAAE,eAAe;AAEzD,QAAI,WAAW,WAAW,GAAG;AACzB,aAAO;AAAA,IACX;AAEA,UAAM,wBAA8C,WAAW,IAAI,CAAAC,eAAa;AAC5E,YAAM,UAAU,KAAK,SAAS,SACzB,OAAO,CAAAC,aAAWA,SAAQ,aAAaD,WAAU,YAAYC,SAAQ,cAAcD,WAAU,SAAS,EACtG,OAAO,CAAAC,aAAWA,SAAQ,yBAAyBD,WAAU,eAAe;AAEjF,aAAO;AAAA,QACH,GAAGA;AAAA,QACH,cAAc,QAAQ,IAAI,OAAK,EAAE,WAAW;AAAA,MAChD;AAAA,IACJ,CAAC;AAGD,QAAI;AACJ,QAAI,kBAAkB;AACtB,QAAI,qBAAqB;AAGrB,kBAAY,sBAAsB,CAAC;AACnC,wBAAkB,CAAC,UAAU,aAAa;AAAA,QACtC,CAAC,EAAE,aAAa,OAAO,MAAM,gBAAgB,YAAY,eAAe,WAAW,YAAY;AAAA,MACnG;AAAA,IACJ,OAAO;AAEH,kBAAY,sBAAsB;AAAA,QAAK,CAAC,EAAE,aAAa,MACnD,aAAa;AAAA,UACT,CAAC,EAAE,aAAa,OAAO,MACnB,gBAAgB,YAAY,eAAe,WAAW,YAAY;AAAA,QAC1E;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,WAAW;AACX,YAAM,EAAE,iBAAAE,kBAAiB,uBAAuB,SAAS,IAAI;AAE7D,aAAO;AAAA,QACH,oBAAoBA;AAAA,QACpB,0BAA0B;AAAA,QAC1B,gBAAgB,IAAI,eAAe,OAAO,QAAQ,EAAE;AAAA;AAAA,QAEpD;AAAA,MACJ;AAAA,IACJ,OAAO;AACH,aAAO;AAAA,QACH,sCAAsC,YAAY,MAAM,cAAc,YAAY,WAAW;AAAA,MACjG;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA,EAGA,MAAM,yBAAyB;AAC3B,UAAM,KAAK,aAAa;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,aAAa,UAAwE,CAAC,GAAG;AAC3F,UAAM,EAAE,aAAa,uBAAuB,MAAM,IAAI;AACtD,UAAM,WAAW,KAAK,YAAY,KAAK,QAAQ;AAG/C,UAAM,gBAAgB,oBAAI,IAAsC;AAChE,eAAW,QAAQ,SAAS,OAAO;AAC/B,UAAI,gBAAgB,UAAa,gBAAgB,MAAM;AACnD;AAAA,MACJ;AAEA,YAAM,UAAU,KAAK,sBAAsB,IAAI;AAC/C,UAAI,YAAY,QAAW;AACvB;AAAA,MACJ;AACA,YAAM,EAAE,aAAa,aAAa,UAAU,WAAW,iBAAiB,sBAAsB,IAAI;AAElG,YAAM,MAAM,GAAG,QAAQ,IAAI,SAAS,IAAI,eAAe;AACvD,YAAM,cAAc,cAAc,IAAI,GAAG,KAAK;AAAA,QAC1C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAc,oBAAI,IAAsD;AAAA,MAC5E;AACA,kBAAY,aAAa,IAAI,EAAE,UAAU,aAAa,YAAY,CAAC;AACnE,oBAAc,IAAI,KAAK,WAAW;AAAA,IACtC;AACA,QAAI,cAAc,SAAS,GAAG;AAC1B,aAAO,KAAK,0BAA0B;AACtC,aAAO,CAAC;AAAA,IACZ;AAEA,UAAM,mBAAmB,IAAI,MAA8D;AAC3F,eAAW,SAAS,cAAc,OAAO,GAAG;AACxC,YAAM,QAAQ,MAAM,KAAK,wBAAwB,OAAO,oBAAoB;AAC5E,iBAAW,QAAQ,OAAO;AACtB,cAAM,OAAO,KAAK,SAAS,aAAa,IAAI,KAAK,SAAS,CAAC;AAC3D,YAAI,SAAS,QAAW;AACpB;AAAA,QACJ;AACA,yBAAiB,KAAK,EAAE,aAAa,MAAM,KAAK,CAAC;AAAA,MACrD;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,wBAAwB,OAAiC,sBAA+B;AAC1F,UAAM,EAAE,UAAU,WAAW,iBAAiB,aAAa,IAAI;AAG/D,QACI,wBACA,CAAC,GAAG,aAAa,OAAO,CAAC,EAAE;AAAA,MAAM,CAAC,EAAE,YAAY,MAC5C,KAAK,SAAS,aAAa,IAAI,YAAY,SAAS,CAAC;AAAA,IACzD,GACF;AACE,aAAO,CAAC,GAAG,aAAa,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,YAAY,MAAM,WAAW;AAAA,IAC1E;AAEA,UAAM,gBAAgB,MAAM,KAAK,SAAS,WAAW,eAAe;AAAA,MAChE;AAAA,MACA;AAAA,MACA,wBAAwB;AAAA,MACxB;AAAA,IACJ,CAAC;AACD,QAAI,CAAC,eAAe;AAChB,aAAO,CAAC;AAAA,IACZ;AACA,UAAM,KAAK,MAAM,KAAK,SAAS,WAAW,eAAe,aAAa;AAEtE,WAAO;AAAA,MACH;AAAA,MACA,WAAW,KAAK;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM,OAAO,GAAG,IAAI;AAAA,QACpB,OAAO,CAAC,GAAG,aAAa,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,MAAM,KAAK,YAAY,QAAQ,EAAE,EAAE;AAAA,MACzF,CAAC;AAAA,IACL;AAGA,eAAW,EAAE,UAAU,YAAY,KAAK,cAAc;AAClD,YAAM,EAAE,KAAK,KAAK,iBAAAA,kBAAiB,uBAAuB,iBAAiB,qBAAqB,IAC5F;AACJ,YAAM,UAAU;AAAA,QACZ,UAAU;AAAA,QACV,WAAW;AAAA,QACX,iBAAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AACA,WAAK,SAAS,aAAa,IAAI,YAAY,SAAS,GAAG,OAAO;AAE9D,YAAM,aAAa,KAAK,SAAS,SAAS;AAAA,QACtC,aACI,QAAQ,aAAa,YACrB,QAAQ,cAAc,aACtB,QAAQ,0BAA0B,cAAc,mBAChD,QAAQ,YAAY,gBAAgB,YAAY,eAChD,QAAQ,YAAY,WAAW,YAAY;AAAA,MACnD;AACA,UAAI,YAAY;AAEZ,aAAK,aAAa;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA,uBAAuB,cAAc;AAAA,UACrC;AAAA,QACJ,CAAC;AAAA,MACL,OAAO;AAEH,aAAK,wBAAwB,aAAa,OAAO;AAAA,MACrD;AAAA,IACJ;AAEA,WAAO,CAAC,GAAG,aAAa,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,YAAY,MAAM,WAAW;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,sBAAsB,MAAkB;AACpC,UAAM,UAAU,KAAK,SAAS,eAAe,wBAAwB,IAAI;AACzE,QAAI,YAAY,QAAW;AAEvB;AAAA,IACJ;AACA,UAAM,EAAE,aAAa,YAAY,IAAI;AAErC,UAAM,EAAE,UAAU,WAAW,iBAAiB,sBAAsB,IAAI,KAAK,QAAQ,sBAAsB;AAK3G,UAAM,QAAQ,KAAK,SAAS,sBAAsB,EAAE;AACpD,QAAI,CAAC,KAAK,SAAS,uBAAuB,SAAS,KAAK,GAAG;AAEvD,UAASC,wBAAT,SAA8B,YAAoB;AAC9C,aAAK,0BAA0B,aAAa,UAAU;AAAA,MAC1D;AAFS,iCAAAA;AADT,YAAM,OAAO;AAKb,WAAK,SAAS,uBAAuB,GAAG,OAAO,KAAK,SAASA,qBAAoB,CAAC;AAAA,IACtF;AAEA,WAAO,EAAE,aAAa,aAAa,UAAU,WAAW,iBAAiB,sBAAsB;AAAA,EACnG;AAAA;AAAA,EAGA,0BAA0B,aAA0B,YAAoB;AACpE,UAAM,aAAa,KAAK,SAAS,YAAY;AAAA,MACzC,OAAK,EAAE,YAAY,gBAAgB,YAAY,eAAe,EAAE,YAAY,WAAW,YAAY;AAAA,IACvG;AACA,QAAI,eAAe,IAAI;AACnB;AAAA,IACJ;AACA,UAAM,QAAQ,KAAK,SAAS,YAAY,UAAU;AAClD,QAAI,MAAM,2BAA2B,QAAW;AAC5C,aAAO;AAAA,QACH,wCAAwC,YAAY,SAAS,CAAC,mDAAmD,2BAA2B,YAAY,MAAM,kBAAmB,CAAC;AAAA,MACtL;AACA,YAAM,yBAAyB,2BAA2B,YAAY;AACtE,YAAM,qBAAqB;AAAA,IAC/B;AACA,UAAM,kBAAkB,MAAM;AAC9B,QAAI,aAAa,iBAAiB;AAC9B,aAAO;AAAA,QACH,6BAA6B,YAAY,SAAS,CAAC,eAAe,UAAU,oCAAoC,eAAe;AAAA,MACnI;AACA;AAAA,IACJ;AACA,WAAO;AAAA,MACH,+BAA+B,UAAU,cAAc,eAAe,cAAc,YAAY,SAAS,CAAC;AAAA,IAC9G;AACA,QAAI,cAAc,MAAM,uBAAuB;AAC3C,WAAK,SAAS,aAAa,OAAO,YAAY,SAAS,CAAC;AACxD,WAAK,OAAO,WAAW,KAAK,WAAW;AAAA,IAC3C;AACA,SAAK,SAAS,YAAY,OAAO,YAAY,CAAC;AAG9C,SAAK,SAAS,WAAW,KAAK,SAAS,SAAS;AAAA,MAC5C,CAAC,EAAE,aAAa,gBAAgB,sBAAsB,MAClD,CAAC,YAAY,GAAG,aAAa,cAAc,KAAK,wBAAwB;AAAA,IAChF;AAEA,SAAK,qBAAqB;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKU,wBAAwB,aAA0B,eAAmC;AAC3F,SAAK,OAAO,gBAAgB,KAAK,aAAa,aAAa;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,OAAyB;AAClC,WAAO,KAAK,mCAAmC,MAAM,YAAY,SAAS,CAAC,EAAE;AAC7E,SAAK,SAAS,YAAY,KAAK,KAAK;AAEpC,SAAK,qBAAqB;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,uBAAuB;AACnB,UAAM,MAAM,KAAK;AACjB,UAAM,oBAAoB,KAAK,SAAS,YAAY;AAAA,MAChD,CAAC,EAAE,uBAAuB,MAAM,2BAA2B;AAAA,IAC/D;AACA,QAAI,kBAAkB,kBAAkB;AACxC,QAAI,oBAAoB,KAAK,KAAK,SAAS,kBAAkB,WAAW;AAEpE,WAAK,SAAS,iBAAiB,KAAK;AAAA,IACxC,WAAW,kBAAkB,GAAG;AAE5B,iBAAW,SAAS,mBAAmB;AACnC,YAAI,MAAM,yBAA0B,QAAQ,EAAE,IAAI,KAAK;AACnD,iBAAO;AAAA,YACH,+CAA+C,MAAM,YAAY,SAAS,CAAC;AAAA,UAC/E;AACA,gBAAM,yBAAyB;AAC/B,gBAAM,qBAAqB;AAC3B;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,kBAAkB,GAAG;AAErB;AAAA,IACJ;AAGA,SAAK,SAAS,cAAc,KAAK,SAAS,YAAY,KAAK,CAAC,GAAG,MAAM;AACjE,YAAM,UAAU,EAAE,uBAAuB,kBAA0B,IAAI;AACvE,YAAM,UAAU,EAAE,uBAAuB,kBAA0B,IAAI;AACvE,aAAO,UAAU;AAAA,IACrB,CAAC;AACD,UAAM,YAAY,KAAK,SAAS,YAAY,CAAC;AAC7C,QAAI,WAAW;AACX,WAAK,qBAAqB,SAAS,EAAE,MAAM,WAAS;AAChD,eAAO,MAAM,6CAA6C,UAAU,YAAY,SAAS,CAAC,KAAK,KAAK;AAAA,MAExG,CAAC;AACD,UAAI,CAAC,KAAK,SAAS,kBAAkB,WAAW;AAE5C,aAAK,SAAS,mBAAmB,KAAK;AAAA,UAClC;AAAA,UACA,QAAQ,CAAC;AAAA,UACT,KAAK,SAAS,KAAK,oBAAoB;AAAA,QAC3C,EAAE,MAAM;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,qBAAqB,OAAyB;AAChD,QAAI,KAAK,SAAS,iBAAiB,QAAW;AAC1C,aAAO,KAAK,kEAAkE,MAAM,WAAW;AAC/F;AAAA,IACJ;AAEA,UAAM,EAAE,UAAU,YAAY,IAAI;AAClC,UAAM,yBAAyB,KAAK;AAEpC,QAAI;AACA,aAAO,KAAK,mCAAmC,YAAY,SAAS,CAAC,EAAE;AACvE,YAAM,KAAK,SAAS,cAAc;AAAA,QAC9B;AAAA,QACA;AAAA,QACA,2BAA2B,mBAAmB;AAAA,MAClD;AACA,YAAM,kBAAkB,KAAK,SAAS,YAAY,QAAQ,KAAK;AAC/D,UAAI,mBAAmB,GAAG;AACtB,aAAK,SAAS,YAAY,eAAe,EAAE,yBAAyB,KAAK;AAAA,MAC7E,OAAO;AACH,aAAK,SAAS,YAAY,KAAK;AAAA,UAC3B,GAAG;AAAA,UACH,wBAAwB,KAAK;AAAA,QACjC,CAAC;AAAA,MACL;AAAA,IACJ,SAAS,OAAO;AACZ,aAAO,MAAM,2CAA2C,YAAY,SAAS,CAAC,KAAK,KAAK;AAAA,IAC5F;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,YAAY,aAA0B,UAAoB,WAAmB,uBAA+B;AAC9G,QAAI,KAAK,SAAS,YAAY,KAAK,CAAC,EAAE,uBAAuB,MAAM,2BAA2B,MAAS,GAAG;AACtG,aAAO,KAAK,2DAA2D;AAAA,IAC3E;AAEA,UAAM,QAAQ,MAAM,KAAK,iBAAiB,aAAa,UAAU,WAAW,qBAAqB;AACjG,QAAI,CAAC,OAAO;AACR,YAAM,IAAI,eAAe,WAAW,YAAY,SAAS,CAAC,8CAA8C;AAAA,IAC5G;AAEA,UAAM,QAAQ,KAAK,SAAS,YAAY;AAAA,MACpC,OACI,EAAE,YAAY,gBAAgB,YAAY,eAC1C,EAAE,YAAY,WAAW,YAAY,UACrC,EAAE,aAAa,YACf,EAAE,cAAc,aAChB,EAAE,0BAA0B;AAAA,IACpC;AACA,QAAI,CAAC,OAAO;AACR,YAAM,IAAI,cAAc,mDAAmD;AAAA,IAC/E;AACA,QAAI,KAAK,SAAS,YAAY,WAAW,GAAG;AACxC;AAAA,IACJ;AAEA,UAAM,KAAK,qBAAqB,KAAK;AAAA,EACzC;AAAA;AAAA,EAGA,MAAM,cAAc,aAA0B;AAC1C,UAAM,cAAc,KAAK,IAAI,IAAI,WAAW;AAG5C,UAAM,YAAY,oBAAoB,aAAa,KAAK,SAAS,IAAI;AAErE,UAAM,aAAa,KAAK,SAAS,YAAY;AAAA,MACzC,OAAK,EAAE,YAAY,gBAAgB,YAAY,eAAe,EAAE,YAAY,WAAW,YAAY;AAAA,IACvG;AACA,QAAI,aAAa,GAAG;AAChB,aAAO,KAAK,iCAAiC,YAAY,SAAS,CAAC,EAAE;AACrE;AAAA,IACJ;AAEA,UAAM,QAAQ,KAAK,SAAS,YAAY,UAAU;AAClD,QACI,MAAM,uBAAuB,oBAC7B,MAAM,uBAAuB,cAC/B;AAEE,aAAO,KAAK,iCAAiC,YAAY,SAAS,CAAC,4BAA4B;AAC/F;AAAA,IACJ;AACA,SAAK,SAAS,YAAY,OAAO,YAAY,CAAC;AAC9C,WAAO,KAAK,iCAAiC,YAAY,SAAS,CAAC,EAAE;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,iBACF,aACA,UACA,WACA,uBACF;AAEE,UAAM,WAAW,KAAK,SAAS,SAAS;AAAA,MACpC,aACI,QAAQ,YAAY,gBAAgB,YAAY,eAChD,QAAQ,YAAY,WAAW,YAAY;AAAA,IACnD;AAEA,UAAM,OAAO,MAAO,KAAK,YAAY,KAAK,QAAQ,EAAiB,MAAM,WAAW,WAAW;AAC/F,UAAM;AAAA,MACF;AAAA,MACA,UAAU;AAAA,MACV,WAAW;AAAA,IACf,IAAI,KAAK,sBAAsB,IAAI,KAAK,CAAC;AACzC,QAAI,gBAAgB,WAAc,iBAAiB,YAAY,kBAAkB,YAAY;AACzF,YAAM,IAAI,oBAAoB,WAAW,YAAY,SAAS,CAAC,0CAA0C;AAAA,IAC7G;AAEA,aAAS,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC;AACD,SAAK,SAAS,WAAW;AAEzB,QAAI,gBAAgB,QAAW;AAC3B,aAAO;AAAA,QACH,QAAQ,YAAY,SAAS,CAAC;AAAA,MAClC;AACA,aAAO;AAAA,IACX;AAEA,SAAK,aAAa,EAAE,UAAU,WAAW,uBAAuB,aAAa,UAAU,YAAY,CAAC;AACpG,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,aAA0B,uBAAgC;AACjE,WAAO,KAAK,SAAS,SAAS;AAAA,MAC1B,aACI,QAAQ,YAAY,gBAAgB,YAAY,eAChD,QAAQ,YAAY,WAAW,YAAY,WAC1C,0BAA0B,UAAa,QAAQ,0BAA0B;AAAA,IAClF;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAc,aAA0B,uBAAgC;AACpE,UAAM,eAAe,KAAK,SAAS,SAAS;AAAA,MACxC,aACI,QAAQ,YAAY,gBAAgB,YAAY,eAChD,QAAQ,YAAY,WAAW,YAAY,WAC1C,0BAA0B,UAAa,QAAQ,0BAA0B;AAAA,IAClF;AACA,QAAI,gBAAgB,GAAG;AACnB,WAAK,SAAS,SAAS,OAAO,cAAc,CAAC;AAAA,IACjD,OAAO;AACH,aAAO;AAAA,QACH,uCAAuC,YAAY,SAAS,CAAC,GAAG,0BAA0B,SAAY,gBAAgB,qBAAqB,KAAK,EAAE;AAAA,MACtJ;AAAA,IACJ;AACA,WAAO,KAAK,cAAc,WAAW;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,kBAAkB,aAA0B,QAAyB,WAAoB;AACrF,UAAM,aAAa,KAAK,SAAS,YAAY;AAAA,MACzC,OAAK,EAAE,YAAY,gBAAgB,YAAY,eAAe,EAAE,YAAY,WAAW,YAAY;AAAA,IACvG;AACA,QAAI,aAAa,GAAG;AAChB,aAAO;AAAA,QACH,gDAAgD,YAAY,SAAS,CAAC,YAAY,gBAAgB,MAAM,CAAC;AAAA,MAC7G;AACA;AAAA,IACJ;AAEA,UAAM,QAAQ,KAAK,SAAS,YAAY,UAAU;AAClD,QAAI,WAAW,cAAsB;AACjC,aAAO,KAAK,iCAAiC,YAAY,SAAS,CAAC;AACnE,WAAK,SAAS,YAAY,OAAO,YAAY,CAAC;AAC9C,WAAK,SAAS,aAAa,OAAO,YAAY,SAAS,CAAC;AACxD,WAAK,OAAO,WAAW,KAAK,WAAW;AAAA,IAC3C,OAAO;AACH,aAAO;AAAA,QACH,8BAA8B,YAAY,SAAS,CAAC,eAAe,gBAAgB,MAAM,CAAC,GACtF,cAAc,SAAY,gBAAgB,SAAS,KAAK,EAC5D;AAAA,MACJ;AACA,YAAM,yBAAyB,KAAK;AACpC,YAAM,qBAAqB;AAAA,IAC/B;AAAA,EACJ;AAAA,EAEA,OAAgB,OAAO,YAAY,IAAI;AACnC,SAAK,SAAS,qBAAqB,KAAK;AACxC,SAAK,SAAS,kBAAkB,KAAK;AACrC,UAAM,KAAK,SAAS,eAAe,MAAM;AACzC,UAAM,KAAK,SAAS,UAAU,MAAM;AACpC,SAAK,SAAS,uBAAuB,MAAM;AAC3C,UAAM,MAAM,OAAO,YAAY,IAAI;AAAA,EACvC;AACJ;AAAA,CAEO,CAAUC,2BAAV;AAAA,EACI,MAAM,MAAM;AAAA;AAAA,IAEf,qBAAqB;AAAA;AAAA,IAGrB,sBAAsB,MAAM,EAAE;AAAA;AAAA,IAG9B,4BAA4B;AAAA;AAAA,IAG5B,uBAAuB,MAAM,EAAE;AAAA,EACnC;AAZO,EAAAA,uBAAM;AAAA,EAcN,MAAM,SAAS;AAAA;AAAA,IAElB,WAAW,IAAI,MAAqB;AAAA,IAEpC;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA,cAAc,IAAI,MAAwB;AAAA,IAE1C;AAAA,IAEA;AAAA,IAEA,yBAAyB,IAAI,cAAc;AAAA,IAE3C,eAAe,oBAAI,IAAgC;AAAA,EACvD;AAnBO,EAAAA,uBAAM;AAAA,EAqBN,MAAM,eAAe,aAAa;AAAA;AAAA,IAErC,kBAAkB,WAAmE;AAAA;AAAA,IAGrF,aAAa,WAAgC;AAAA,EACjD;AANO,EAAAA,uBAAM;AAAA,GApCA;",
5
5
  "names": ["OtaUpdateStatus", "candidate", "consent", "softwareVersion", "triggerVersionChange", "SoftwareUpdateManager"]
6
6
  }
@@ -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
  */
@@ -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;CAC3B;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;IA+IxD;;;OAGG;IACY,kBAAkB,CAAC,EAC9B,WAAW,EACX,UAAU,GACb,EAAE,yBAAyB,CAAC,kBAAkB,GAAG,OAAO,CAAC,yBAAyB,CAAC,mBAAmB,CAAC;IAgCxG;;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;;;;OAIG;IACH,SAAS,CAAC,oBAAoB,CAC1B,OAAO,EAAE,yBAAyB,CAAC,iBAAiB,EACpD,WAAW,EAAE,WAAW,GACzB,YAAY,CAAC,yBAAyB,GAAG,SAAS,CAAC;CA8DzD;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"}
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 are 5 minutes, so lets use this
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(),
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/behaviors/ota-software-update-provider/OtaSoftwareUpdateProviderServer.ts"],
4
- "mappings": "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",
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-20251231-3f257a678",
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-20251231-3f257a678",
46
- "@matter/model": "0.16.0-alpha.0-20251231-3f257a678",
47
- "@matter/types": "0.16.0-alpha.0-20251231-3f257a678",
48
- "@matter/protocol": "0.16.0-alpha.0-20251231-3f257a678"
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-20251231-3f257a678",
52
- "@matter/testing": "0.16.0-alpha.0-20251231-3f257a678"
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 { DclOtaUpdateService, FabricAuthority, FileDesignator, OtaUpdateError, PeerAddress } from "#protocol";
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 are 5 minutes, so lets use this
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
- // TODO check the ota metadata again for the relevant file if "Softwareversion valid" was maybe changed in
323
- // the meantime if yes send Discontinue, but not for unknown update token
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 can not do a consent, should normally never happen
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();