@ray-js/lock-sdk 1.2.1-beta.8 → 1.2.1-beta.9

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.
@@ -8,70 +8,8 @@ import { getDpValueForRuntime } from "../dp/get-dp-value";
8
8
  import { getDeviceStatusForRuntime } from "../state/device-status";
9
9
  import { isSupportBleControlForRuntime } from "./ble-control";
10
10
  import { sdkLog } from "../../utils/sdk-log";
11
+ import { hasDpForRuntime } from "../dp/has-dp";
11
12
  const { wirelessAwake } = dpCodes;
12
- const awakeDevice = async (devId, timeout) => {
13
- const startedAt = Date.now();
14
- sdkLog("info", "connectDevice", "awakeStart", {
15
- devId,
16
- data: { timeout: timeout || 15000 },
17
- });
18
- return new Promise((resolve, reject) => {
19
- const handleChangeDp = (dpCodesArg) => {
20
- if (dpCodesArg[wirelessAwake] === true) {
21
- sdkLog("info", "connectDevice", "awakeReportSuccess", {
22
- devId,
23
- duration: Date.now() - startedAt,
24
- });
25
- resolve(true);
26
- emitter.off(DPCHANGE, handleChangeDp);
27
- clearTimeout(timer);
28
- }
29
- };
30
- emitter.on(DPCHANGE, handleChangeDp);
31
- const timer = setTimeout(() => {
32
- emitter.off(DPCHANGE, handleChangeDp);
33
- const error = getError(1002);
34
- sdkLog("warn", "connectDevice", "awakeTimeout", {
35
- devId,
36
- duration: Date.now() - startedAt,
37
- error,
38
- });
39
- reject(error);
40
- }, timeout || 15000);
41
- const run = async () => {
42
- try {
43
- ipc.wakeUpDoorBell(devId);
44
- ipc.wakeUpDoorBell(devId);
45
- ipc.wakeUpDoorBell(devId);
46
- const connected = await ipc.isConnected(devId);
47
- if (connected.isConnected) {
48
- sdkLog("info", "connectDevice", "awakeAlreadyConnected", {
49
- devId,
50
- duration: Date.now() - startedAt,
51
- });
52
- return resolve(true);
53
- }
54
- const connecting = await ipc.isConnecting(devId);
55
- if (!connecting.isConnecting) {
56
- sdkLog("info", "connectDevice", "awakeIpcConnectStart", { devId });
57
- await ipc.connect(devId);
58
- }
59
- else {
60
- sdkLog("debug", "connectDevice", "awakeIpcConnecting", { devId });
61
- }
62
- }
63
- catch (error) {
64
- sdkLog("error", "connectDevice", "awakeFail", {
65
- devId,
66
- duration: Date.now() - startedAt,
67
- error,
68
- });
69
- reject(error);
70
- }
71
- };
72
- run();
73
- });
74
- };
75
13
  const connectBle = async (devId, timeout) => {
76
14
  const startedAt = Date.now();
77
15
  sdkLog("info", "connectDevice", "bleConnectStart", { devId });
@@ -160,7 +98,7 @@ export async function connectDeviceForRuntime(rt, timeout) {
160
98
  });
161
99
  if (deviceStatus.connectEnable && hasWirelessAwakeDp) {
162
100
  if (cfg.devInfo.isCloudOnline && !getDpValueForRuntime(rt, wirelessAwake)) {
163
- const result = await awakeDevice(devId, timeout);
101
+ const result = await awakeDeviceForRuntime(rt, { timeout });
164
102
  sdkLog("info", "connectDevice", "success", {
165
103
  devId,
166
104
  duration: Date.now() - startedAt,
@@ -208,5 +146,71 @@ export async function connectDeviceForRuntime(rt, timeout) {
208
146
  export const awakeDeviceForRuntime = (runtime, options) => {
209
147
  const cfg = runtime.config;
210
148
  const devId = cfg.devInfo.devId;
211
- return awakeDevice(devId, options?.timeout);
149
+ const timeout = options?.timeout || 15000;
150
+ const startedAt = Date.now();
151
+ const hasWirelessAwake = hasDpForRuntime(runtime, wirelessAwake);
152
+ sdkLog("info", "connectDevice", "awakeStart", {
153
+ devId,
154
+ data: { timeout, hasWirelessAwake },
155
+ });
156
+ return new Promise((resolve, reject) => {
157
+ const handleChangeDp = (dpCodesArg) => {
158
+ if (dpCodesArg[wirelessAwake] === true) {
159
+ sdkLog("info", "connectDevice", "awakeReportSuccess", {
160
+ devId,
161
+ duration: Date.now() - startedAt,
162
+ });
163
+ resolve(true);
164
+ emitter.off(DPCHANGE, handleChangeDp);
165
+ clearTimeout(timer);
166
+ }
167
+ };
168
+ hasWirelessAwake && emitter.on(DPCHANGE, handleChangeDp);
169
+ const timer = setTimeout(() => {
170
+ emitter.off(DPCHANGE, handleChangeDp);
171
+ const error = getError(1002);
172
+ sdkLog("warn", "connectDevice", "awakeTimeout", {
173
+ devId,
174
+ duration: Date.now() - startedAt,
175
+ error,
176
+ });
177
+ reject(error);
178
+ }, timeout);
179
+ const run = async () => {
180
+ try {
181
+ ipc.wakeUpDoorBell(devId);
182
+ ipc.wakeUpDoorBell(devId);
183
+ ipc.wakeUpDoorBell(devId);
184
+ const connected = await ipc.isConnected(devId);
185
+ if (connected.isConnected) {
186
+ sdkLog("info", "connectDevice", "awakeAlreadyConnected", {
187
+ devId,
188
+ duration: Date.now() - startedAt,
189
+ });
190
+ return resolve(true);
191
+ }
192
+ const connecting = await ipc.isConnecting(devId);
193
+ if (!connecting.isConnecting) {
194
+ sdkLog("info", "connectDevice", "awakeIpcConnectStart", { devId });
195
+ await ipc.connect(devId);
196
+ if (!hasWirelessAwake) {
197
+ clearTimeout(timer);
198
+ return resolve(true);
199
+ }
200
+ }
201
+ else {
202
+ sdkLog("debug", "connectDevice", "awakeIpcConnecting", { devId });
203
+ }
204
+ }
205
+ catch (error) {
206
+ sdkLog("error", "connectDevice", "awakeFail", {
207
+ devId,
208
+ duration: Date.now() - startedAt,
209
+ error,
210
+ });
211
+ reject(error);
212
+ }
213
+ };
214
+ run();
215
+ });
212
216
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ray-js/lock-sdk",
3
- "version": "1.2.1-beta.8",
3
+ "version": "1.2.1-beta.9",
4
4
  "files": [
5
5
  "lib",
6
6
  "LICENSE.md"