@apocaliss92/nodelink-js 0.4.34 → 0.4.35

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.
@@ -16308,7 +16308,19 @@ function computeDeviceCapabilities(params) {
16308
16308
  // lightType >= 2 indicates controllable white LED / floodlight (1 = IR only).
16309
16309
  // ledCtrl > 1 is a secondary signal that rescues firmwares like the Duo 3
16310
16310
  // WiFi which under-report lightType (=1) despite having a real spotlight.
16311
- hasFloodlight: Number.isFinite(lightType) ? lightType >= 2 || hasFloodlightFromLedCtrl : hasFloodlightFromAbilities || hasFloodlightFromLedCtrl,
16311
+ //
16312
+ // Doorbell exception: the Reolink desktop app's native SDK exposes
16313
+ // three SEPARATE ability flags — `supportFloodLight`, `supportDoorbellLight`
16314
+ // (with KeepOff/KeepOn sub-flags) and `supportIndicatorLight`. Doorbell-class
16315
+ // devices route the ring / button-area LED through `supportDoorbellLight`,
16316
+ // which is NOT a controllable white-light floodlight. We don't have a
16317
+ // documented bit-level mapping for ledCtrl, so we use the narrowest
16318
+ // rule that matches Reolink's own taxonomy: when the firmware is
16319
+ // categorical with lightType=0 AND the device identifies itself as a
16320
+ // doorbell (doorbellVersion > 0), trust lightType=0 and ignore the
16321
+ // ledCtrl bitmask. Verified against UID 9527000ICL1T1MDS (lightType=0,
16322
+ // ledCtrl=3073, doorbellVersion=31, no spotlight hardware).
16323
+ hasFloodlight: Number.isFinite(lightType) ? lightType >= 2 || hasFloodlightFromLedCtrl && !(isDoorbellFromSupport && lightType === 0) : hasFloodlightFromAbilities || hasFloodlightFromLedCtrl,
16312
16324
  hasPir: hasPirFromAbilities || hasPirFromSupport,
16313
16325
  isDoorbell,
16314
16326
  hasAutotracking: ptzDisabledBySupport ? false : hasAutotrackingFromSupport || hasAutotrackingFromAbilities,