hap-nodejs 0.10.0-beta.6 → 0.10.0

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 (191) hide show
  1. package/@types/bonjour-hap.d.ts +4 -3
  2. package/@types/simple-plist.d.ts +2 -1
  3. package/dist/BridgedCore.js +5 -4
  4. package/dist/BridgedCore.js.map +1 -1
  5. package/dist/Core.js +12 -10
  6. package/dist/Core.js.map +1 -1
  7. package/dist/accessories/AirConditioner_accessory.js +9 -9
  8. package/dist/accessories/AirConditioner_accessory.js.map +1 -1
  9. package/dist/accessories/AppleTVRemote_accessory.js +9 -8
  10. package/dist/accessories/AppleTVRemote_accessory.js.map +1 -1
  11. package/dist/accessories/Camera_accessory.js +414 -35
  12. package/dist/accessories/Camera_accessory.js.map +1 -1
  13. package/dist/accessories/Fan_accessory.js +6 -11
  14. package/dist/accessories/Fan_accessory.js.map +1 -1
  15. package/dist/accessories/GarageDoorOpener_accessory.js +7 -8
  16. package/dist/accessories/GarageDoorOpener_accessory.js.map +1 -1
  17. package/dist/accessories/Light-AdaptiveLighting_accessory.js +3 -4
  18. package/dist/accessories/Light-AdaptiveLighting_accessory.js.map +1 -1
  19. package/dist/accessories/Light_accessory.js +23 -14
  20. package/dist/accessories/Light_accessory.js.map +1 -1
  21. package/dist/accessories/Lock_accessory.js +7 -8
  22. package/dist/accessories/Lock_accessory.js.map +1 -1
  23. package/dist/accessories/MotionSensor_accessory.js +5 -6
  24. package/dist/accessories/MotionSensor_accessory.js.map +1 -1
  25. package/dist/accessories/Outlet_accessory.js +5 -6
  26. package/dist/accessories/Outlet_accessory.js.map +1 -1
  27. package/dist/accessories/SmartSpeaker_accessory.js +6 -6
  28. package/dist/accessories/SmartSpeaker_accessory.js.map +1 -1
  29. package/dist/accessories/Sprinkler_accessory.js +12 -13
  30. package/dist/accessories/Sprinkler_accessory.js.map +1 -1
  31. package/dist/accessories/TV_accessory.js +4 -5
  32. package/dist/accessories/TV_accessory.js.map +1 -1
  33. package/dist/accessories/TemperatureSensor_accessory.js +5 -6
  34. package/dist/accessories/TemperatureSensor_accessory.js.map +1 -1
  35. package/dist/accessories/Wi-FiRouter_accessory.d.ts +1 -1
  36. package/dist/accessories/Wi-FiRouter_accessory.d.ts.map +1 -1
  37. package/dist/accessories/Wi-FiRouter_accessory.js +7 -8
  38. package/dist/accessories/Wi-FiRouter_accessory.js.map +1 -1
  39. package/dist/accessories/Wi-FiSatellite_accessory.d.ts +1 -1
  40. package/dist/accessories/Wi-FiSatellite_accessory.d.ts.map +1 -1
  41. package/dist/accessories/Wi-FiSatellite_accessory.js +6 -7
  42. package/dist/accessories/Wi-FiSatellite_accessory.js.map +1 -1
  43. package/dist/accessories/gstreamer-audioProducer.d.ts.map +1 -1
  44. package/dist/accessories/gstreamer-audioProducer.js +14 -15
  45. package/dist/accessories/gstreamer-audioProducer.js.map +1 -1
  46. package/dist/index.d.ts +22 -22
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +2 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/internal-types.d.ts +2 -0
  51. package/dist/internal-types.d.ts.map +1 -1
  52. package/dist/internal-types.js.map +1 -1
  53. package/dist/lib/Accessory.d.ts +13 -13
  54. package/dist/lib/Accessory.d.ts.map +1 -1
  55. package/dist/lib/Accessory.js +242 -206
  56. package/dist/lib/Accessory.js.map +1 -1
  57. package/dist/lib/AccessoryLoader.d.ts +10 -10
  58. package/dist/lib/AccessoryLoader.d.ts.map +1 -1
  59. package/dist/lib/AccessoryLoader.js +105 -95
  60. package/dist/lib/AccessoryLoader.js.map +1 -1
  61. package/dist/lib/Advertiser.d.ts +11 -8
  62. package/dist/lib/Advertiser.d.ts.map +1 -1
  63. package/dist/lib/Advertiser.js +151 -33
  64. package/dist/lib/Advertiser.js.map +1 -1
  65. package/dist/lib/Bridge.d.ts +1 -1
  66. package/dist/lib/Bridge.d.ts.map +1 -1
  67. package/dist/lib/Bridge.js.map +1 -1
  68. package/dist/lib/Characteristic.d.ts +23 -22
  69. package/dist/lib/Characteristic.d.ts.map +1 -1
  70. package/dist/lib/Characteristic.js +101 -98
  71. package/dist/lib/Characteristic.js.map +1 -1
  72. package/dist/lib/HAPServer.d.ts +2 -2
  73. package/dist/lib/HAPServer.d.ts.map +1 -1
  74. package/dist/lib/HAPServer.js +18 -14
  75. package/dist/lib/HAPServer.js.map +1 -1
  76. package/dist/lib/Service.d.ts +3 -3
  77. package/dist/lib/Service.d.ts.map +1 -1
  78. package/dist/lib/Service.js +26 -26
  79. package/dist/lib/Service.js.map +1 -1
  80. package/dist/lib/camera/Camera.d.ts +2 -2
  81. package/dist/lib/camera/Camera.d.ts.map +1 -1
  82. package/dist/lib/camera/Camera.js +3 -3
  83. package/dist/lib/camera/Camera.js.map +1 -1
  84. package/dist/lib/camera/RTPProxy.d.ts +19 -19
  85. package/dist/lib/camera/RTPProxy.d.ts.map +1 -1
  86. package/dist/lib/camera/RTPProxy.js +229 -207
  87. package/dist/lib/camera/RTPProxy.js.map +1 -1
  88. package/dist/lib/camera/RTPStreamManagement.d.ts +44 -8
  89. package/dist/lib/camera/RTPStreamManagement.d.ts.map +1 -1
  90. package/dist/lib/camera/RTPStreamManagement.js +111 -37
  91. package/dist/lib/camera/RTPStreamManagement.js.map +1 -1
  92. package/dist/lib/camera/RecordingManagement.d.ts +267 -0
  93. package/dist/lib/camera/RecordingManagement.d.ts.map +1 -0
  94. package/dist/lib/camera/RecordingManagement.js +781 -0
  95. package/dist/lib/camera/RecordingManagement.js.map +1 -0
  96. package/dist/lib/camera/index.d.ts +4 -3
  97. package/dist/lib/camera/index.d.ts.map +1 -1
  98. package/dist/lib/camera/index.js +1 -0
  99. package/dist/lib/camera/index.js.map +1 -1
  100. package/dist/lib/controller/AdaptiveLightingController.d.ts +9 -9
  101. package/dist/lib/controller/AdaptiveLightingController.d.ts.map +1 -1
  102. package/dist/lib/controller/AdaptiveLightingController.js +25 -19
  103. package/dist/lib/controller/AdaptiveLightingController.js.map +1 -1
  104. package/dist/lib/controller/CameraController.d.ts +254 -7
  105. package/dist/lib/controller/CameraController.d.ts.map +1 -1
  106. package/dist/lib/controller/CameraController.js +378 -31
  107. package/dist/lib/controller/CameraController.js.map +1 -1
  108. package/dist/lib/controller/Controller.d.ts +3 -3
  109. package/dist/lib/controller/Controller.d.ts.map +1 -1
  110. package/dist/lib/controller/Controller.js.map +1 -1
  111. package/dist/lib/controller/DoorbellController.d.ts +43 -1
  112. package/dist/lib/controller/DoorbellController.d.ts.map +1 -1
  113. package/dist/lib/controller/DoorbellController.js +63 -11
  114. package/dist/lib/controller/DoorbellController.js.map +1 -1
  115. package/dist/lib/controller/RemoteController.d.ts +4 -4
  116. package/dist/lib/controller/RemoteController.d.ts.map +1 -1
  117. package/dist/lib/controller/RemoteController.js +62 -52
  118. package/dist/lib/controller/RemoteController.js.map +1 -1
  119. package/dist/lib/controller/index.d.ts +4 -4
  120. package/dist/lib/datastream/DataStreamManagement.d.ts.map +1 -1
  121. package/dist/lib/datastream/DataStreamManagement.js +10 -9
  122. package/dist/lib/datastream/DataStreamManagement.js.map +1 -1
  123. package/dist/lib/datastream/DataStreamParser.d.ts +24 -24
  124. package/dist/lib/datastream/DataStreamParser.d.ts.map +1 -1
  125. package/dist/lib/datastream/DataStreamParser.js +16 -7
  126. package/dist/lib/datastream/DataStreamParser.js.map +1 -1
  127. package/dist/lib/datastream/DataStreamServer.d.ts +34 -5
  128. package/dist/lib/datastream/DataStreamServer.d.ts.map +1 -1
  129. package/dist/lib/datastream/DataStreamServer.js +123 -63
  130. package/dist/lib/datastream/DataStreamServer.js.map +1 -1
  131. package/dist/lib/datastream/index.d.ts +3 -3
  132. package/dist/lib/definitions/generate-definitions.d.ts.map +1 -1
  133. package/dist/lib/definitions/generate-definitions.js +18 -14
  134. package/dist/lib/definitions/generate-definitions.js.map +1 -1
  135. package/dist/lib/definitions/generator-configuration.d.ts.map +1 -1
  136. package/dist/lib/definitions/generator-configuration.js +32 -14
  137. package/dist/lib/definitions/generator-configuration.js.map +1 -1
  138. package/dist/lib/model/AccessoryInfo.d.ts +6 -6
  139. package/dist/lib/model/AccessoryInfo.d.ts.map +1 -1
  140. package/dist/lib/model/AccessoryInfo.js +79 -69
  141. package/dist/lib/model/AccessoryInfo.js.map +1 -1
  142. package/dist/lib/model/ControllerStorage.d.ts.map +1 -1
  143. package/dist/lib/model/ControllerStorage.js +3 -3
  144. package/dist/lib/model/ControllerStorage.js.map +1 -1
  145. package/dist/lib/model/HAPStorage.d.ts.map +1 -1
  146. package/dist/lib/model/HAPStorage.js +1 -0
  147. package/dist/lib/model/HAPStorage.js.map +1 -1
  148. package/dist/lib/model/IdentifierCache.d.ts +11 -11
  149. package/dist/lib/model/IdentifierCache.d.ts.map +1 -1
  150. package/dist/lib/model/IdentifierCache.js +67 -65
  151. package/dist/lib/model/IdentifierCache.js.map +1 -1
  152. package/dist/lib/tv/AccessControlManagement.d.ts +1 -1
  153. package/dist/lib/tv/AccessControlManagement.d.ts.map +1 -1
  154. package/dist/lib/tv/AccessControlManagement.js.map +1 -1
  155. package/dist/lib/util/clone.js +1 -0
  156. package/dist/lib/util/clone.js.map +1 -1
  157. package/dist/lib/util/color-utils.d.ts.map +1 -1
  158. package/dist/lib/util/color-utils.js +1 -1
  159. package/dist/lib/util/color-utils.js.map +1 -1
  160. package/dist/lib/util/eventedhttp.d.ts +8 -8
  161. package/dist/lib/util/eventedhttp.d.ts.map +1 -1
  162. package/dist/lib/util/eventedhttp.js +72 -56
  163. package/dist/lib/util/eventedhttp.js.map +1 -1
  164. package/dist/lib/util/hapCrypto.d.ts +5 -5
  165. package/dist/lib/util/hapCrypto.d.ts.map +1 -1
  166. package/dist/lib/util/hapCrypto.js +57 -86
  167. package/dist/lib/util/hapCrypto.js.map +1 -1
  168. package/dist/lib/util/hapStatusError.js +1 -1
  169. package/dist/lib/util/net-utils.d.ts.map +1 -1
  170. package/dist/lib/util/net-utils.js +0 -2
  171. package/dist/lib/util/net-utils.js.map +1 -1
  172. package/dist/lib/util/once.d.ts +1 -1
  173. package/dist/lib/util/once.d.ts.map +1 -1
  174. package/dist/lib/util/once.js +1 -0
  175. package/dist/lib/util/once.js.map +1 -1
  176. package/dist/lib/util/request-util.d.ts.map +1 -1
  177. package/dist/lib/util/request-util.js +1 -0
  178. package/dist/lib/util/request-util.js.map +1 -1
  179. package/dist/lib/util/time.d.ts +1 -1
  180. package/dist/lib/util/time.d.ts.map +1 -1
  181. package/dist/lib/util/time.js +5 -5
  182. package/dist/lib/util/time.js.map +1 -1
  183. package/dist/lib/util/tlv.d.ts.map +1 -1
  184. package/dist/lib/util/tlv.js +9 -6
  185. package/dist/lib/util/tlv.js.map +1 -1
  186. package/dist/lib/util/uuid.d.ts.map +1 -1
  187. package/dist/lib/util/uuid.js +25 -19
  188. package/dist/lib/util/uuid.js.map +1 -1
  189. package/dist/types.d.ts +0 -1
  190. package/dist/types.d.ts.map +1 -1
  191. package/package.json +15 -12
@@ -1,14 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CameraController = exports.CameraControllerEvents = void 0;
3
+ exports.CameraController = exports.CameraControllerEvents = exports.ResourceRequestReason = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var crypto_1 = (0, tslib_1.__importDefault)(require("crypto"));
6
6
  var debug_1 = (0, tslib_1.__importDefault)(require("debug"));
7
7
  var events_1 = require("events");
8
8
  var camera_1 = require("../camera");
9
9
  var Characteristic_1 = require("../Characteristic");
10
+ var datastream_1 = require("../datastream");
10
11
  var Service_1 = require("../Service");
12
+ var hapStatusError_1 = require("../util/hapStatusError");
11
13
  var debug = (0, debug_1.default)("HAP-NodeJS:Camera:Controller");
14
+ var ResourceRequestReason;
15
+ (function (ResourceRequestReason) {
16
+ /**
17
+ * The reason describes periodic resource requests.
18
+ * In the example of camera image snapshots those are the typical preview images every 10 seconds.
19
+ */
20
+ ResourceRequestReason[ResourceRequestReason["PERIODIC"] = 0] = "PERIODIC";
21
+ /**
22
+ * The resource request is the result of some event.
23
+ * In the example of camera image snapshots, requests are made due to e.g. a motion event or similar.
24
+ */
25
+ ResourceRequestReason[ResourceRequestReason["EVENT"] = 1] = "EVENT";
26
+ })(ResourceRequestReason = exports.ResourceRequestReason || (exports.ResourceRequestReason = {}));
12
27
  var CameraControllerEvents;
13
28
  (function (CameraControllerEvents) {
14
29
  /**
@@ -31,7 +46,6 @@ var CameraController = /** @class */ (function (_super) {
31
46
  function CameraController(options, legacyMode) {
32
47
  if (legacyMode === void 0) { legacyMode = false; }
33
48
  var _this = _super.call(this) || this;
34
- // private readonly recordingOptions: CameraRecordingOptions, // soon
35
49
  _this.legacyMode = false;
36
50
  /**
37
51
  * @private
@@ -41,10 +55,14 @@ var CameraController = /** @class */ (function (_super) {
41
55
  _this.microphoneVolume = 100;
42
56
  _this.speakerMuted = false;
43
57
  _this.speakerVolume = 100;
58
+ _this.motionServiceExternallySupplied = false;
59
+ _this.occupancyServiceExternallySupplied = false;
44
60
  _this.streamCount = Math.max(1, options.cameraStreamCount || 1);
45
61
  _this.delegate = options.delegate;
46
62
  _this.streamingOptions = options.streamingOptions;
47
- _this.legacyMode = legacyMode; // legacy mode will prent from Microphone and Speaker services to get created to avoid collisions
63
+ _this.recording = options.recording;
64
+ _this.sensorOptions = options.sensors;
65
+ _this.legacyMode = legacyMode; // legacy mode will prevent from Microphone and Speaker services to get created to avoid collisions
48
66
  return _this;
49
67
  }
50
68
  /**
@@ -56,7 +74,7 @@ var CameraController = /** @class */ (function (_super) {
56
74
  // ----------------------------------- STREAM API ------------------------------------
57
75
  /**
58
76
  * Call this method if you want to forcefully suspend an ongoing streaming session.
59
- * This would be adequate if the the rtp server or media encoding encountered an unexpected error.
77
+ * This would be adequate if the rtp server or media encoding encountered an unexpected error.
60
78
  *
61
79
  * @param sessionId {SessionIdentifier} - id of the current ongoing streaming session
62
80
  */
@@ -114,39 +132,86 @@ var CameraController = /** @class */ (function (_super) {
114
132
  * @private
115
133
  */
116
134
  CameraController.prototype.constructServices = function () {
135
+ var _a, _b, _c, _d;
117
136
  for (var i = 0; i < this.streamCount; i++) {
118
- this.streamManagements.push(new camera_1.RTPStreamManagement(i, this.streamingOptions, this.delegate));
137
+ var rtp = new camera_1.RTPStreamManagement(i, this.streamingOptions, this.delegate, undefined, this.rtpStreamManagementDisabledThroughOperatingMode.bind(this));
138
+ this.streamManagements.push(rtp);
119
139
  }
120
140
  if (!this.legacyMode && this.streamingOptions.audio) {
121
- // In theory the Microphone Service is a necessity. In practice its not. lol. So we just add it if the user wants to support audio
122
- this.microphoneService = new Service_1.Service.Microphone('', '');
141
+ // In theory the Microphone Service is a necessity. In practice, it's not. lol.
142
+ // So we just add it if the user wants to support audio
143
+ this.microphoneService = new Service_1.Service.Microphone("", "");
123
144
  this.microphoneService.setCharacteristic(Characteristic_1.Characteristic.Volume, this.microphoneVolume);
124
145
  if (this.streamingOptions.audio.twoWayAudio) {
125
- this.speakerService = new Service_1.Service.Speaker('', '');
146
+ this.speakerService = new Service_1.Service.Speaker("", "");
126
147
  this.speakerService.setCharacteristic(Characteristic_1.Characteristic.Volume, this.speakerVolume);
127
148
  }
128
149
  }
150
+ if (this.recording) {
151
+ this.recordingManagement = new camera_1.RecordingManagement(this.recording.options, this.recording.delegate, this.retrieveEventTriggerOptions());
152
+ }
153
+ if ((_a = this.sensorOptions) === null || _a === void 0 ? void 0 : _a.motion) {
154
+ if (typeof this.sensorOptions.motion === "boolean") {
155
+ this.motionService = new Service_1.Service.MotionSensor("", "");
156
+ }
157
+ else {
158
+ this.motionService = this.sensorOptions.motion;
159
+ this.motionServiceExternallySupplied = true;
160
+ }
161
+ this.motionService.setCharacteristic(Characteristic_1.Characteristic.StatusActive, true);
162
+ (_b = this.recordingManagement) === null || _b === void 0 ? void 0 : _b.recordingManagementService.addLinkedService(this.motionService);
163
+ }
164
+ if ((_c = this.sensorOptions) === null || _c === void 0 ? void 0 : _c.occupancy) {
165
+ if (typeof this.sensorOptions.occupancy === "boolean") {
166
+ this.occupancyService = new Service_1.Service.OccupancySensor("", "");
167
+ }
168
+ else {
169
+ this.occupancyService = this.sensorOptions.occupancy;
170
+ this.occupancyServiceExternallySupplied = true;
171
+ }
172
+ this.occupancyService.setCharacteristic(Characteristic_1.Characteristic.StatusActive, true);
173
+ (_d = this.recordingManagement) === null || _d === void 0 ? void 0 : _d.recordingManagementService.addLinkedService(this.occupancyService);
174
+ }
129
175
  var serviceMap = {
130
176
  microphone: this.microphoneService,
131
177
  speaker: this.speakerService,
178
+ motionService: !this.motionServiceExternallySupplied ? this.motionService : undefined,
179
+ occupancyService: !this.occupancyServiceExternallySupplied ? this.occupancyService : undefined,
132
180
  };
133
- this.streamManagements.forEach(function (management, index) { return serviceMap[CameraController.STREAM_MANAGEMENT + index] = management.getService(); });
181
+ if (this.recordingManagement) {
182
+ serviceMap.cameraEventRecordingManagement = this.recordingManagement.recordingManagementService;
183
+ serviceMap.cameraOperatingMode = this.recordingManagement.operatingModeService;
184
+ serviceMap.dataStreamTransportManagement = this.recordingManagement.dataStreamManagement.getService();
185
+ }
186
+ this.streamManagements.forEach(function (management, index) {
187
+ serviceMap[CameraController.STREAM_MANAGEMENT + index] = management.getService();
188
+ });
189
+ this.recording = undefined;
190
+ this.sensorOptions = undefined;
134
191
  return serviceMap;
135
192
  };
136
193
  /**
137
194
  * @private
138
195
  */
139
196
  CameraController.prototype.initWithServices = function (serviceMap) {
140
- var _a;
197
+ var result = this._initWithServices(serviceMap);
198
+ if (result.updated) { // serviceMap must only be returned if anything actually changed
199
+ return result.serviceMap;
200
+ }
201
+ };
202
+ CameraController.prototype._initWithServices = function (serviceMap) {
203
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
141
204
  var modifiedServiceMap = false;
205
+ // eslint-disable-next-line no-constant-condition
142
206
  for (var i = 0; true; i++) {
143
207
  var streamManagementService = serviceMap[CameraController.STREAM_MANAGEMENT + i];
144
208
  if (i < this.streamCount) {
209
+ var operatingModeClosure = this.rtpStreamManagementDisabledThroughOperatingMode.bind(this);
145
210
  if (streamManagementService) { // normal init
146
- this.streamManagements.push(new camera_1.RTPStreamManagement(i, this.streamingOptions, this.delegate, streamManagementService));
211
+ this.streamManagements.push(new camera_1.RTPStreamManagement(i, this.streamingOptions, this.delegate, streamManagementService, operatingModeClosure));
147
212
  }
148
213
  else { // stream count got bigger, we need to create a new service
149
- var management = new camera_1.RTPStreamManagement(i, this.streamingOptions, this.delegate);
214
+ var management = new camera_1.RTPStreamManagement(i, this.streamingOptions, this.delegate, undefined, operatingModeClosure);
150
215
  this.streamManagements.push(management);
151
216
  serviceMap[CameraController.STREAM_MANAGEMENT + i] = management.getService();
152
217
  modifiedServiceMap = true;
@@ -158,7 +223,7 @@ var CameraController = /** @class */ (function (_super) {
158
223
  modifiedServiceMap = true;
159
224
  }
160
225
  else {
161
- break; // we finished counting and we got no saved service; we are finished
226
+ break; // we finished counting, and we got no saved service; we are finished
162
227
  }
163
228
  }
164
229
  }
@@ -169,7 +234,7 @@ var CameraController = /** @class */ (function (_super) {
169
234
  }
170
235
  else {
171
236
  // microphone wasn't created yet => create a new one
172
- this.microphoneService = new Service_1.Service.Microphone('', '');
237
+ this.microphoneService = new Service_1.Service.Microphone("", "");
173
238
  this.microphoneService.setCharacteristic(Characteristic_1.Characteristic.Volume, this.microphoneVolume);
174
239
  serviceMap.microphone = this.microphoneService;
175
240
  modifiedServiceMap = true;
@@ -187,7 +252,7 @@ var CameraController = /** @class */ (function (_super) {
187
252
  }
188
253
  else {
189
254
  // speaker wasn't created yet => create a new one
190
- this.speakerService = new Service_1.Service.Speaker('', '');
255
+ this.speakerService = new Service_1.Service.Speaker("", "");
191
256
  this.speakerService.setCharacteristic(Characteristic_1.Characteristic.Volume, this.speakerVolume);
192
257
  serviceMap.speaker = this.speakerService;
193
258
  modifiedServiceMap = true;
@@ -198,14 +263,112 @@ var CameraController = /** @class */ (function (_super) {
198
263
  delete serviceMap.speaker;
199
264
  modifiedServiceMap = true;
200
265
  }
266
+ // RECORDING
267
+ if (this.recording) {
268
+ var eventTriggers = this.retrieveEventTriggerOptions();
269
+ // RECORDING MANAGEMENT
270
+ if (serviceMap.cameraEventRecordingManagement && serviceMap.cameraOperatingMode && serviceMap.dataStreamTransportManagement) {
271
+ this.recordingManagement = new camera_1.RecordingManagement(this.recording.options, this.recording.delegate, eventTriggers, {
272
+ recordingManagement: serviceMap.cameraEventRecordingManagement,
273
+ operatingMode: serviceMap.cameraOperatingMode,
274
+ dataStreamManagement: new datastream_1.DataStreamManagement(serviceMap.dataStreamTransportManagement),
275
+ });
276
+ }
277
+ else {
278
+ this.recordingManagement = new camera_1.RecordingManagement(this.recording.options, this.recording.delegate, eventTriggers);
279
+ serviceMap.cameraEventRecordingManagement = this.recordingManagement.recordingManagementService;
280
+ serviceMap.cameraOperatingMode = this.recordingManagement.operatingModeService;
281
+ serviceMap.dataStreamTransportManagement = this.recordingManagement.dataStreamManagement.getService();
282
+ modifiedServiceMap = true;
283
+ }
284
+ }
285
+ else {
286
+ if (serviceMap.cameraEventRecordingManagement) {
287
+ delete serviceMap.cameraEventRecordingManagement;
288
+ modifiedServiceMap = true;
289
+ }
290
+ if (serviceMap.cameraOperatingMode) {
291
+ delete serviceMap.cameraOperatingMode;
292
+ modifiedServiceMap = true;
293
+ }
294
+ if (serviceMap.dataStreamTransportManagement) {
295
+ delete serviceMap.dataStreamTransportManagement;
296
+ modifiedServiceMap = true;
297
+ }
298
+ }
299
+ // MOTION SENSOR
300
+ if ((_b = this.sensorOptions) === null || _b === void 0 ? void 0 : _b.motion) {
301
+ if (typeof this.sensorOptions.motion === "boolean") {
302
+ if (serviceMap.motionService) {
303
+ this.motionService = serviceMap.motionService;
304
+ }
305
+ else {
306
+ // it could be the case that we previously had a manually supplied motion service
307
+ // at this point we can't remove the iid from the list of linked services from the recording management!
308
+ this.motionService = new Service_1.Service.MotionSensor("", "");
309
+ }
310
+ }
311
+ else {
312
+ this.motionService = this.sensorOptions.motion;
313
+ this.motionServiceExternallySupplied = true;
314
+ if (serviceMap.motionService) { // motion service previously supplied as bool option
315
+ (_c = this.recordingManagement) === null || _c === void 0 ? void 0 : _c.recordingManagementService.removeLinkedService(serviceMap.motionService);
316
+ delete serviceMap.motionService;
317
+ modifiedServiceMap = true;
318
+ }
319
+ }
320
+ this.motionService.setCharacteristic(Characteristic_1.Characteristic.StatusActive, true);
321
+ (_d = this.recordingManagement) === null || _d === void 0 ? void 0 : _d.recordingManagementService.addLinkedService(this.motionService);
322
+ }
323
+ else {
324
+ if (serviceMap.motionService) {
325
+ (_e = this.recordingManagement) === null || _e === void 0 ? void 0 : _e.recordingManagementService.removeLinkedService(serviceMap.motionService);
326
+ delete serviceMap.motionService;
327
+ modifiedServiceMap = true;
328
+ }
329
+ }
330
+ // OCCUPANCY SENSOR
331
+ if ((_f = this.sensorOptions) === null || _f === void 0 ? void 0 : _f.occupancy) {
332
+ if (typeof this.sensorOptions.occupancy === "boolean") {
333
+ if (serviceMap.occupancyService) {
334
+ this.occupancyService = serviceMap.occupancyService;
335
+ }
336
+ else {
337
+ // it could be the case that we previously had a manually supplied occupancy service
338
+ // at this point we can't remove the iid from the list of linked services from the recording management!
339
+ this.occupancyService = new Service_1.Service.OccupancySensor("", "");
340
+ }
341
+ }
342
+ else {
343
+ this.occupancyService = this.sensorOptions.occupancy;
344
+ this.occupancyServiceExternallySupplied = true;
345
+ if (serviceMap.occupancyService) { // occupancy service previously supplied as bool option
346
+ (_g = this.recordingManagement) === null || _g === void 0 ? void 0 : _g.recordingManagementService.removeLinkedService(serviceMap.occupancyService);
347
+ delete serviceMap.occupancyService;
348
+ modifiedServiceMap = true;
349
+ }
350
+ }
351
+ this.occupancyService.setCharacteristic(Characteristic_1.Characteristic.StatusActive, true);
352
+ (_h = this.recordingManagement) === null || _h === void 0 ? void 0 : _h.recordingManagementService.addLinkedService(this.occupancyService);
353
+ }
354
+ else {
355
+ if (serviceMap.occupancyService) {
356
+ (_j = this.recordingManagement) === null || _j === void 0 ? void 0 : _j.recordingManagementService.removeLinkedService(serviceMap.occupancyService);
357
+ delete serviceMap.occupancyService;
358
+ modifiedServiceMap = true;
359
+ }
360
+ }
201
361
  if (this.migrateFromDoorbell(serviceMap)) {
202
362
  modifiedServiceMap = true;
203
363
  }
204
- if (modifiedServiceMap) { // serviceMap must only be returned if anything actually changed
205
- return serviceMap;
206
- }
364
+ this.recording = undefined;
365
+ this.sensorOptions = undefined;
366
+ return {
367
+ serviceMap: serviceMap,
368
+ updated: modifiedServiceMap,
369
+ };
207
370
  };
208
- // overwritten in DoorbellController (to avoid cyclic dependencies, i hate typescript for that)
371
+ // overwritten in DoorbellController (to avoid cyclic dependencies, I hate typescript for that)
209
372
  CameraController.prototype.migrateFromDoorbell = function (serviceMap) {
210
373
  if (serviceMap.doorbell) { // See NOTICE in DoorbellController
211
374
  delete serviceMap.doorbell;
@@ -213,11 +376,40 @@ var CameraController = /** @class */ (function (_super) {
213
376
  }
214
377
  return false;
215
378
  };
379
+ CameraController.prototype.retrieveEventTriggerOptions = function () {
380
+ var e_1, _a;
381
+ var _b;
382
+ if (!this.recording) {
383
+ return new Set();
384
+ }
385
+ var triggerOptions = new Set();
386
+ if (this.recording.options.overrideEventTriggerOptions) {
387
+ try {
388
+ for (var _c = (0, tslib_1.__values)(this.recording.options.overrideEventTriggerOptions), _d = _c.next(); !_d.done; _d = _c.next()) {
389
+ var option = _d.value;
390
+ triggerOptions.add(option);
391
+ }
392
+ }
393
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
394
+ finally {
395
+ try {
396
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
397
+ }
398
+ finally { if (e_1) throw e_1.error; }
399
+ }
400
+ }
401
+ if ((_b = this.sensorOptions) === null || _b === void 0 ? void 0 : _b.motion) {
402
+ triggerOptions.add(1 /* MOTION */);
403
+ }
404
+ // this method is overwritten by the `DoorbellController` to automatically configure EventTriggerOption.DOORBELL
405
+ return triggerOptions;
406
+ };
216
407
  /**
217
408
  * @private
218
409
  */
219
410
  CameraController.prototype.configureServices = function () {
220
411
  var _this = this;
412
+ var _a, _b;
221
413
  if (this.microphoneService) {
222
414
  this.microphoneService.getCharacteristic(Characteristic_1.Characteristic.Mute)
223
415
  .on("get" /* GET */, function (callback) {
@@ -258,36 +450,53 @@ var CameraController = /** @class */ (function (_super) {
258
450
  _this.emitSpeakerChange();
259
451
  });
260
452
  }
453
+ // make the sensor services available to the RecordingManagement.
454
+ if (this.motionService) {
455
+ (_a = this.recordingManagement) === null || _a === void 0 ? void 0 : _a.sensorServices.push(this.motionService);
456
+ }
457
+ if (this.occupancyService) {
458
+ (_b = this.recordingManagement) === null || _b === void 0 ? void 0 : _b.sensorServices.push(this.occupancyService);
459
+ }
460
+ };
461
+ CameraController.prototype.rtpStreamManagementDisabledThroughOperatingMode = function () {
462
+ return this.recordingManagement
463
+ ? !this.recordingManagement.operatingModeService.getCharacteristic(Characteristic_1.Characteristic.HomeKitCameraActive).value
464
+ : false;
261
465
  };
262
466
  /**
263
467
  * @private
264
468
  */
265
469
  CameraController.prototype.handleControllerRemoved = function () {
266
- var e_1, _a;
470
+ var e_2, _a;
471
+ var _b;
267
472
  this.handleFactoryReset();
268
473
  try {
269
- for (var _b = (0, tslib_1.__values)(this.streamManagements), _c = _b.next(); !_c.done; _c = _b.next()) {
270
- var management = _c.value;
474
+ for (var _c = (0, tslib_1.__values)(this.streamManagements), _d = _c.next(); !_d.done; _d = _c.next()) {
475
+ var management = _d.value;
271
476
  management.destroy();
272
477
  }
273
478
  }
274
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
479
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
275
480
  finally {
276
481
  try {
277
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
482
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
278
483
  }
279
- finally { if (e_1) throw e_1.error; }
484
+ finally { if (e_2) throw e_2.error; }
280
485
  }
281
486
  this.streamManagements.splice(0, this.streamManagements.length);
282
487
  this.microphoneService = undefined;
283
488
  this.speakerService = undefined;
489
+ (_b = this.recordingManagement) === null || _b === void 0 ? void 0 : _b.destroy();
490
+ this.recordingManagement = undefined;
284
491
  this.removeAllListeners();
285
492
  };
286
493
  /**
287
494
  * @private
288
495
  */
289
496
  CameraController.prototype.handleFactoryReset = function () {
497
+ var _a;
290
498
  this.streamManagements.forEach(function (management) { return management.handleFactoryReset(); });
499
+ (_a = this.recordingManagement) === null || _a === void 0 ? void 0 : _a.handleFactoryReset();
291
500
  this.microphoneMuted = false;
292
501
  this.microphoneVolume = 100;
293
502
  this.speakerMuted = false;
@@ -296,14 +505,151 @@ var CameraController = /** @class */ (function (_super) {
296
505
  /**
297
506
  * @private
298
507
  */
299
- CameraController.prototype.handleSnapshotRequest = function (height, width, accessoryName) {
508
+ CameraController.prototype.serialize = function () {
509
+ var e_3, _a;
510
+ var _b;
511
+ var streamManagementStates = [];
512
+ try {
513
+ for (var _c = (0, tslib_1.__values)(this.streamManagements), _d = _c.next(); !_d.done; _d = _c.next()) {
514
+ var management = _d.value;
515
+ var serializedState = management.serialize();
516
+ if (serializedState) {
517
+ streamManagementStates.push(serializedState);
518
+ }
519
+ }
520
+ }
521
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
522
+ finally {
523
+ try {
524
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
525
+ }
526
+ finally { if (e_3) throw e_3.error; }
527
+ }
528
+ return {
529
+ streamManagements: streamManagementStates,
530
+ recordingManagement: (_b = this.recordingManagement) === null || _b === void 0 ? void 0 : _b.serialize(),
531
+ };
532
+ };
533
+ /**
534
+ * @private
535
+ */
536
+ CameraController.prototype.deserialize = function (serialized) {
537
+ var e_4, _a, e_5, _b;
538
+ var _c;
539
+ try {
540
+ for (var _d = (0, tslib_1.__values)(serialized.streamManagements), _e = _d.next(); !_e.done; _e = _d.next()) {
541
+ var streamManagementState = _e.value;
542
+ var streamManagement = this.streamManagements[streamManagementState.id];
543
+ if (streamManagement) {
544
+ streamManagement.deserialize(streamManagementState);
545
+ }
546
+ }
547
+ }
548
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
549
+ finally {
550
+ try {
551
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
552
+ }
553
+ finally { if (e_4) throw e_4.error; }
554
+ }
555
+ if (serialized.recordingManagement) {
556
+ if (this.recordingManagement) {
557
+ this.recordingManagement.deserialize(serialized.recordingManagement);
558
+ }
559
+ else {
560
+ try {
561
+ // Active characteristic cannot be controlled if removing HSV, ensure they are all active!
562
+ for (var _f = (0, tslib_1.__values)(this.streamManagements), _g = _f.next(); !_g.done; _g = _f.next()) {
563
+ var streamManagement = _g.value;
564
+ streamManagement.service.updateCharacteristic(Characteristic_1.Characteristic.Active, true);
565
+ }
566
+ }
567
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
568
+ finally {
569
+ try {
570
+ if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
571
+ }
572
+ finally { if (e_5) throw e_5.error; }
573
+ }
574
+ (_c = this.stateChangeDelegate) === null || _c === void 0 ? void 0 : _c.call(this);
575
+ }
576
+ }
577
+ };
578
+ /**
579
+ * @private
580
+ */
581
+ CameraController.prototype.setupStateChangeDelegate = function (delegate) {
582
+ var e_6, _a;
583
+ var _b;
584
+ this.stateChangeDelegate = delegate;
585
+ try {
586
+ for (var _c = (0, tslib_1.__values)(this.streamManagements), _d = _c.next(); !_d.done; _d = _c.next()) {
587
+ var streamManagement = _d.value;
588
+ streamManagement.setupStateChangeDelegate(delegate);
589
+ }
590
+ }
591
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
592
+ finally {
593
+ try {
594
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
595
+ }
596
+ finally { if (e_6) throw e_6.error; }
597
+ }
598
+ (_b = this.recordingManagement) === null || _b === void 0 ? void 0 : _b.setupStateChangeDelegate(delegate);
599
+ };
600
+ /**
601
+ * @private
602
+ */
603
+ CameraController.prototype.handleSnapshotRequest = function (height, width, accessoryName, reason) {
300
604
  var _this = this;
605
+ // first step is to verify that the reason is applicable to our current policy
606
+ var streamingDisabled = this.streamManagements
607
+ .map(function (management) { return !management.getService().getCharacteristic(Characteristic_1.Characteristic.Active).value; })
608
+ .reduce(function (previousValue, currentValue) { return previousValue && currentValue; });
609
+ if (streamingDisabled) {
610
+ debug("[%s] Rejecting snapshot as streaming is disabled.", accessoryName);
611
+ return Promise.reject(-70412 /* NOT_ALLOWED_IN_CURRENT_STATE */);
612
+ }
613
+ if (this.recordingManagement) {
614
+ var operatingModeService = this.recordingManagement.operatingModeService;
615
+ if (!operatingModeService.getCharacteristic(Characteristic_1.Characteristic.HomeKitCameraActive).value) {
616
+ debug("[%s] Rejecting snapshot as HomeKit camera is disabled.", accessoryName);
617
+ return Promise.reject(-70412 /* NOT_ALLOWED_IN_CURRENT_STATE */);
618
+ }
619
+ var eventSnapshotsActive = operatingModeService
620
+ .getCharacteristic(Characteristic_1.Characteristic.EventSnapshotsActive)
621
+ .value;
622
+ if (!eventSnapshotsActive) {
623
+ if (reason == null) {
624
+ debug("[%s] Rejecting snapshot as reason is required due to disabled event snapshots.", accessoryName);
625
+ return Promise.reject(-70401 /* INSUFFICIENT_PRIVILEGES */);
626
+ }
627
+ else if (reason === 1 /* EVENT */) {
628
+ debug("[%s] Rejecting snapshot as even snapshots are disabled.", accessoryName);
629
+ return Promise.reject(-70412 /* NOT_ALLOWED_IN_CURRENT_STATE */);
630
+ }
631
+ }
632
+ var periodicSnapshotsActive = operatingModeService
633
+ .getCharacteristic(Characteristic_1.Characteristic.PeriodicSnapshotsActive)
634
+ .value;
635
+ if (!periodicSnapshotsActive) {
636
+ if (reason == null) {
637
+ debug("[%s] Rejecting snapshot as reason is required due to disabled periodic snapshots.", accessoryName);
638
+ return Promise.reject(-70401 /* INSUFFICIENT_PRIVILEGES */);
639
+ }
640
+ else if (reason === 0 /* PERIODIC */) {
641
+ debug("[%s] Rejecting snapshot as periodic snapshots are disabled.", accessoryName);
642
+ return Promise.reject(-70412 /* NOT_ALLOWED_IN_CURRENT_STATE */);
643
+ }
644
+ }
645
+ }
646
+ // now do the actual snapshot request.
301
647
  return new Promise(function (resolve, reject) {
302
648
  var timeout = setTimeout(function () {
303
- console.warn("[" + accessoryName + "] The image snapshot handler for the given accessory is slow to respond! See https://git.io/JtMGR for more info.");
649
+ console.warn("[".concat(accessoryName, "] The image snapshot handler for the given accessory is slow to respond! See https://git.io/JtMGR for more info."));
304
650
  timeout = setTimeout(function () {
305
651
  timeout = undefined;
306
- console.warn("[" + accessoryName + "] The image snapshot handler for the given accessory didn't respond at all! See https://git.io/JtMGR for more info.");
652
+ console.warn("[".concat(accessoryName, "] The image snapshot handler for the given accessory didn't respond at all! See https://git.io/JtMGR for more info."));
307
653
  reject(-70408 /* OPERATION_TIMED_OUT */);
308
654
  }, 17000);
309
655
  timeout.unref();
@@ -313,6 +659,7 @@ var CameraController = /** @class */ (function (_super) {
313
659
  _this.delegate.handleSnapshotRequest({
314
660
  height: height,
315
661
  width: width,
662
+ reason: reason,
316
663
  }, function (error, buffer) {
317
664
  if (!timeout) {
318
665
  return;
@@ -332,7 +679,7 @@ var CameraController = /** @class */ (function (_super) {
332
679
  return;
333
680
  }
334
681
  if (!buffer || buffer.length === 0) {
335
- console.warn("[" + accessoryName + "] Snapshot request handler provided empty image buffer!");
682
+ console.warn("[".concat(accessoryName, "] Snapshot request handler provided empty image buffer!"));
336
683
  reject(-70402 /* SERVICE_COMMUNICATION_FAILURE */);
337
684
  }
338
685
  else {
@@ -348,8 +695,8 @@ var CameraController = /** @class */ (function (_super) {
348
695
  clearTimeout(timeout);
349
696
  timeout = undefined;
350
697
  }
351
- console.warn("[" + accessoryName + "] Unhandled error thrown inside snapshot request handler: " + error.stack);
352
- reject(-70402 /* SERVICE_COMMUNICATION_FAILURE */);
698
+ console.warn("[".concat(accessoryName, "] Unhandled error thrown inside snapshot request handler: ").concat(error.stack));
699
+ reject(error instanceof hapStatusError_1.HapStatusError ? error.hapStatus : -70402 /* SERVICE_COMMUNICATION_FAILURE */);
353
700
  }
354
701
  });
355
702
  };
@@ -1 +1 @@
1
- {"version":3,"file":"CameraController.js","sourceRoot":"","sources":["../../../src/lib/controller/CameraController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CameraController.js","sourceRoot":"","sources":["../../../src/lib/controller/CameraController.ts"],"names":[],"mappings":"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"}