react-native-gizwits-sdk-v5 2.0.2-beta → 2.1.1-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -0
- package/android/build.gradle +4 -5
- package/android/src/main/java/com/gizwits/reactnativegizwitssdkv5/BleRequestRegistry.kt +53 -0
- package/android/src/main/java/com/gizwits/reactnativegizwitssdkv5/RNGizDeviceManagerModule.kt +71 -0
- package/android/src/test/java/com/gizwits/reactnativegizwitssdkv5/BleRequestRegistryTest.kt +68 -0
- package/harmony/react_native_gizwits_sdk_v5.har +0 -0
- package/ios/BleRequestRegistry.swift +70 -0
- package/ios/RNGizDeviceManagerModule.m +4 -0
- package/ios/RNGizDeviceManagerModule.swift +67 -0
- package/lib/device.d.ts +6 -1
- package/lib/device.js +35 -0
- package/lib/device.js.map +1 -1
- package/lib/harmony/device.d.ts +6 -1
- package/lib/harmony/device.js +25 -1
- package/lib/harmony/device.js.map +1 -1
- package/lib/harmony/sdk.js +4 -0
- package/lib/harmony/sdk.js.map +1 -1
- package/lib/harmony/specs/NativeRNGizDeviceManagerModule.d.ts +4 -0
- package/lib/harmony/specs/NativeRNGizDeviceManagerModule.js.map +1 -1
- package/lib/index.js +6 -0
- package/lib/index.js.map +1 -1
- package/lib/types.d.ts +16 -0
- package/package.json +7 -2
- package/react-native-gizwits-sdk-v5.podspec +1 -1
- package/scripts/bundle-harmony-sdk.py +106 -0
- package/scripts/check-harmony-har.js +78 -1
- package/scripts/test-harmony-ble.cjs +83 -0
- package/scripts/test-ios-ble-requests.py +67 -0
package/README.md
CHANGED
|
@@ -32,6 +32,39 @@ await device.mqttCapability.connect()
|
|
|
32
32
|
device.mqttCapability.getDp()
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
+
## BLE Wi-Fi 列表和时间同步(2.1.0-beta)
|
|
36
|
+
|
|
37
|
+
Android / iOS / HarmonyOS 可以从设备的 BLE 能力获取附近 Wi-Fi,或用手机当前时间独立校准设备时间:
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
const networks = await device.bleCapability.getWiFiList(30)
|
|
41
|
+
// 成功数据为 GizWiFiNetwork[]:{ ssid: string, signalStrength: number }
|
|
42
|
+
// signalStrength 是有符号的 dBm,SSID 可以重复,列表也可以为空。
|
|
43
|
+
|
|
44
|
+
const result = await device.bleCapability.syncTime(30)
|
|
45
|
+
|
|
46
|
+
// 取消对应设备的当前请求
|
|
47
|
+
await device.bleCapability.cancelGetWiFiList()
|
|
48
|
+
await device.bleCapability.cancelSyncTime()
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
四个接口均返回 `Promise<GizResult<...>>`,沿用 SDK 的成功和失败结果格式。
|
|
52
|
+
超时参数单位为秒,默认 30,范围为大于 0 且不超过 3600,可传小数。
|
|
53
|
+
同一设备同类操作同时只允许一个请求;取消会让原请求以
|
|
54
|
+
`E_BLE_REQUEST_CANCELLED` 结束;请求按设备与操作分别管理。
|
|
55
|
+
|
|
56
|
+
需要设备固件支持对应协议:Wi-Fi 列表支持 V2 / V5;独立时间同步支持 V5,
|
|
57
|
+
V2 需要固件支持离线时间同步扩展。V5 时间同步成功表示数据已通过 GATT 写入,
|
|
58
|
+
协议没有额外的设备确认响应。安全通道由原生 SDK 按设备能力自动协商,
|
|
59
|
+
业务层无需显式启用 ECDH/AES-GCM。历史配网日志主动拉取已废弃,不提供接口。
|
|
60
|
+
|
|
61
|
+
HarmonyOS 同一设备的 Wi-Fi 列表和时间同步共用 BLE 会话,需要依次调用;
|
|
62
|
+
请求尚未完成时启动另一操作会返回 `E_BLE_REQUEST_BUSY`。
|
|
63
|
+
设备的 `bleCapability.profile.support5GConfig`(别名 `supports5GConfig`)和
|
|
64
|
+
`supportsSecureChannel` 表示其广播中的能力,实际使用仍需固件支持。
|
|
65
|
+
本版本依赖 Android SDK `1.4.14`、iOS SDK `~> 2.1.9`。
|
|
66
|
+
HarmonyOS HAR 内置本地构建的四个 SDK 模块,无需先将原生 SDK 发布到 OHPM。
|
|
67
|
+
|
|
35
68
|
## 连接的云服务
|
|
36
69
|
|
|
37
70
|
初始化 sdk 的时候,您可以手动选择连接的云
|
|
@@ -97,6 +130,7 @@ import RNGizSDKManagerModule, {
|
|
|
97
130
|
| Wi-Fi 配网及停止配网 | BLE V2/V5 | 支持 | 不支持 |
|
|
98
131
|
| 启动 OTA 升级 | 支持 | 不支持 | 不支持 |
|
|
99
132
|
| 取消 OTA 升级 | 支持 | 不支持 | 不支持 |
|
|
133
|
+
| Wi-Fi 列表、独立时间同步及取消 | BLE V2/V5 | 不支持 | 不支持 |
|
|
100
134
|
|
|
101
135
|
### HarmonyOS 权限
|
|
102
136
|
|
|
@@ -116,6 +150,17 @@ import RNGizSDKManagerModule, {
|
|
|
116
150
|
|
|
117
151
|
## 更新日志
|
|
118
152
|
|
|
153
|
+
### 2.1.1-beta
|
|
154
|
+
|
|
155
|
+
- HarmonyOS 接入 Wi-Fi 列表、独立时间同步和对应取消接口,补齐 5 GHz 与安全通道能力标记。
|
|
156
|
+
- 内置四个本地原生 SDK HAR,不依赖尚未发布的 OHPM 版本;补充超时、取消和桥接销毁测试。
|
|
157
|
+
|
|
158
|
+
### 2.1.0-beta
|
|
159
|
+
|
|
160
|
+
- 增加 BLE Wi-Fi 列表、独立时间同步及对应取消接口;补齐 TypeScript 类型和设备事件对象上的方法。
|
|
161
|
+
- Android SDK 升级至 1.4.14,iOS SDK 升级至 2.1.9;修复 Android 发布包 Kotlin 顶层扩展索引缺失问题。
|
|
162
|
+
- Android/iOS 支持新增接口;HarmonyOS 支持在 2.1.1-beta 补齐。
|
|
163
|
+
|
|
119
164
|
### 2.0.0-beta
|
|
120
165
|
|
|
121
166
|
新增 HarmonyOS/RNOH 支持
|
package/android/build.gradle
CHANGED
|
@@ -67,10 +67,10 @@ dependencies {
|
|
|
67
67
|
// ESPTouch
|
|
68
68
|
implementation 'com.github.EspressifApp:lib-esptouch-android:1.1.1'
|
|
69
69
|
|
|
70
|
-
implementation("io.github.gizwits:sdk:1.4.
|
|
71
|
-
implementation("io.github.gizwits:sdk-bluetooth:1.4.
|
|
72
|
-
implementation("io.github.gizwits:sdk-lan:1.4.
|
|
73
|
-
implementation("io.github.gizwits:sdk-mqtt:1.4.
|
|
70
|
+
implementation("io.github.gizwits:sdk:1.4.14")
|
|
71
|
+
implementation("io.github.gizwits:sdk-bluetooth:1.4.14")
|
|
72
|
+
implementation("io.github.gizwits:sdk-lan:1.4.14")
|
|
73
|
+
implementation("io.github.gizwits:sdk-mqtt:1.4.14")
|
|
74
74
|
// implementation files('libs/sdk-release.aar', 'libs/sdk-bluetooth-release.aar', 'libs/sdk-lan-release.aar', 'libs/sdk-mqtt-release.aar')
|
|
75
75
|
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutine_version")
|
|
76
76
|
// retrofit
|
|
@@ -83,6 +83,5 @@ dependencies {
|
|
|
83
83
|
implementation "io.ktor:ktor-network:$ktor_network_version"
|
|
84
84
|
|
|
85
85
|
testImplementation 'junit:junit:4.13.2'
|
|
86
|
-
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlin_coroutine_version"
|
|
87
86
|
|
|
88
87
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
package com.gizwits.reactnativegizwitssdkv5
|
|
2
|
+
|
|
3
|
+
import kotlinx.coroutines.CoroutineScope
|
|
4
|
+
import kotlinx.coroutines.CoroutineStart
|
|
5
|
+
import kotlinx.coroutines.Job
|
|
6
|
+
import kotlinx.coroutines.launch
|
|
7
|
+
|
|
8
|
+
internal class BleRequestException(val code: String, message: String) : Exception(message)
|
|
9
|
+
|
|
10
|
+
/** Owns only requests started by this RN module. Callbacks settle once, outside the lock. */
|
|
11
|
+
internal class BleRequestRegistry(private val scope: CoroutineScope) {
|
|
12
|
+
private class Request(val complete: (Result<Any?>) -> Unit) { var job: Job? = null }
|
|
13
|
+
private val lock = Any()
|
|
14
|
+
private val requests = mutableMapOf<String, Request>()
|
|
15
|
+
private var closed = false
|
|
16
|
+
|
|
17
|
+
fun start(key: String, complete: (Result<Any?>) -> Unit, operation: suspend () -> Result<Any?>) {
|
|
18
|
+
val request = Request(complete)
|
|
19
|
+
val rejection = synchronized(lock) {
|
|
20
|
+
when {
|
|
21
|
+
closed -> BleRequestException("E_NATIVE_MODULE_UNAVAILABLE", "BLE bridge is closed")
|
|
22
|
+
requests.containsKey(key) -> BleRequestException("E_BLE_REQUEST_BUSY", "A request is already pending for this device and operation")
|
|
23
|
+
else -> { requests[key] = request; null }
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (rejection != null) { complete(Result.failure(rejection)); return }
|
|
27
|
+
val job = scope.launch(start = CoroutineStart.LAZY) {
|
|
28
|
+
val response = try { operation() } catch (error: Exception) { Result.failure(error) }
|
|
29
|
+
val owned = synchronized(lock) {
|
|
30
|
+
if (requests[key] === request) { requests.remove(key); true } else false
|
|
31
|
+
}
|
|
32
|
+
if (owned) complete(response)
|
|
33
|
+
}
|
|
34
|
+
val owned = synchronized(lock) {
|
|
35
|
+
if (requests[key] === request) { request.job = job; true } else false
|
|
36
|
+
}
|
|
37
|
+
if (owned) job.start() else job.cancel()
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
fun cancel(key: String) {
|
|
41
|
+
val request = synchronized(lock) { requests.remove(key) } ?: return
|
|
42
|
+
request.job?.cancel()
|
|
43
|
+
request.complete(Result.failure(BleRequestException("E_BLE_REQUEST_CANCELLED", "BLE request cancelled")))
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
fun close() {
|
|
47
|
+
val pending = synchronized(lock) {
|
|
48
|
+
closed = true
|
|
49
|
+
requests.values.toList().also { requests.clear() }
|
|
50
|
+
}
|
|
51
|
+
pending.forEach { it.job?.cancel() }
|
|
52
|
+
}
|
|
53
|
+
}
|
package/android/src/main/java/com/gizwits/reactnativegizwitssdkv5/RNGizDeviceManagerModule.kt
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
package com.gizwits.reactnativegizwitssdkv5
|
|
2
2
|
|
|
3
|
+
import com.facebook.react.bridge.Arguments
|
|
3
4
|
import com.facebook.react.bridge.Callback
|
|
5
|
+
import com.facebook.react.bridge.ReadableType
|
|
4
6
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
7
|
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
6
8
|
import com.facebook.react.bridge.ReactMethod
|
|
@@ -170,6 +172,7 @@ data class StopUpgradeParams(
|
|
|
170
172
|
class RNGizDeviceManagerModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
|
|
171
173
|
private val moduleScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
|
|
172
174
|
private var provideWiFiCredentialsJob: Job? = null
|
|
175
|
+
private val bleRequests = BleRequestRegistry(moduleScope)
|
|
173
176
|
|
|
174
177
|
enum class EventName(val value: String) {
|
|
175
178
|
GizOTAProgressEvent("GizOTAProgressEvent"),
|
|
@@ -201,9 +204,77 @@ class RNGizDeviceManagerModule(reactContext: ReactApplicationContext) : ReactCon
|
|
|
201
204
|
|
|
202
205
|
override fun onCatalystInstanceDestroy() {
|
|
203
206
|
super.onCatalystInstanceDestroy()
|
|
207
|
+
bleRequests.close()
|
|
204
208
|
moduleScope.cancel() // 取消所有协程
|
|
205
209
|
}
|
|
206
210
|
|
|
211
|
+
private fun bleResult(callback: Callback, response: Result<Any?>) {
|
|
212
|
+
val error = response.exceptionOrNull()
|
|
213
|
+
if (error == null || error is GizException) {
|
|
214
|
+
GizRNCallbackManager.callbackWithResult(callback, response)
|
|
215
|
+
} else {
|
|
216
|
+
val data = Arguments.createMap().apply {
|
|
217
|
+
putBoolean("success", false)
|
|
218
|
+
putString("error", (error as? BleRequestException)?.code ?: "E_BLE_REQUEST_FAILED")
|
|
219
|
+
putString("message", error.message ?: "BLE request failed")
|
|
220
|
+
}
|
|
221
|
+
callback.invoke(data, null)
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
private fun bleOptions(options: ReadableMap, result: Callback, timed: Boolean): Pair<String, Long>? {
|
|
226
|
+
if (!options.hasKey("id") || options.isNull("id") || options.getType("id") != ReadableType.String || options.getString("id").isNullOrBlank()) {
|
|
227
|
+
bleResult(result, Result.failure(BleRequestException("E_BLE_INVALID_PARAMS", "A device id is required")))
|
|
228
|
+
return null
|
|
229
|
+
}
|
|
230
|
+
var seconds = 30.0
|
|
231
|
+
if (timed && options.hasKey("timeoutSeconds")) {
|
|
232
|
+
if (options.isNull("timeoutSeconds") || options.getType("timeoutSeconds") != ReadableType.Number) {
|
|
233
|
+
bleResult(result, Result.failure(BleRequestException("E_BLE_INVALID_TIMEOUT", "timeoutSeconds must be a number")))
|
|
234
|
+
return null
|
|
235
|
+
}
|
|
236
|
+
seconds = options.getDouble("timeoutSeconds")
|
|
237
|
+
}
|
|
238
|
+
if (!seconds.isFinite() || seconds <= 0 || seconds > 3600) {
|
|
239
|
+
bleResult(result, Result.failure(BleRequestException("E_BLE_INVALID_TIMEOUT", "timeoutSeconds must be greater than 0 and at most 3600")))
|
|
240
|
+
return null
|
|
241
|
+
}
|
|
242
|
+
return options.getString("id")!! to kotlin.math.ceil(seconds * 1000).toLong()
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
private fun startBleRequest(options: ReadableMap, result: Callback, operation: String) {
|
|
246
|
+
val (id, timeoutMillis) = bleOptions(options, result, true) ?: return
|
|
247
|
+
val device = GizSDKManager.getRegisteredDevice(id)
|
|
248
|
+
if (device == null) {
|
|
249
|
+
bleResult(result, Result.failure(GizException.GIZ_OPENAPI_DEVICE_NOT_FOUND))
|
|
250
|
+
return
|
|
251
|
+
}
|
|
252
|
+
bleRequests.start("$operation:$id", { bleResult(result, it) }) {
|
|
253
|
+
when (operation) {
|
|
254
|
+
"wifi" -> device.bleCapability.getWiFiList(timeoutMillis)
|
|
255
|
+
else -> device.bleCapability.syncTime(timeoutMillis).map { null }
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
private fun cancelBleRequest(options: ReadableMap, result: Callback, operation: String) {
|
|
261
|
+
val (id, _) = bleOptions(options, result, false) ?: return
|
|
262
|
+
bleRequests.cancel("$operation:$id")
|
|
263
|
+
bleResult(result, Result.success(null))
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
@ReactMethod
|
|
267
|
+
fun getWiFiList(options: ReadableMap, result: Callback) = startBleRequest(options, result, "wifi")
|
|
268
|
+
|
|
269
|
+
@ReactMethod
|
|
270
|
+
fun cancelGetWiFiList(options: ReadableMap, result: Callback) = cancelBleRequest(options, result, "wifi")
|
|
271
|
+
|
|
272
|
+
@ReactMethod
|
|
273
|
+
fun syncTime(options: ReadableMap, result: Callback) = startBleRequest(options, result, "time")
|
|
274
|
+
|
|
275
|
+
@ReactMethod
|
|
276
|
+
fun cancelSyncTime(options: ReadableMap, result: Callback) = cancelBleRequest(options, result, "time")
|
|
277
|
+
|
|
207
278
|
@ReactMethod
|
|
208
279
|
fun sendDp(options: ReadableMap, result: Callback) {
|
|
209
280
|
val (config, device) = RNGizParamsChecker.checkDeviceAndParams(options, result, GizSendDPParams::class.java)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
package com.gizwits.reactnativegizwitssdkv5
|
|
2
|
+
|
|
3
|
+
import kotlinx.coroutines.CompletableDeferred
|
|
4
|
+
import kotlinx.coroutines.CoroutineScope
|
|
5
|
+
import kotlinx.coroutines.Dispatchers
|
|
6
|
+
import kotlinx.coroutines.SupervisorJob
|
|
7
|
+
import kotlinx.coroutines.withContext
|
|
8
|
+
import kotlinx.coroutines.NonCancellable
|
|
9
|
+
import org.junit.Assert.*
|
|
10
|
+
import org.junit.Test
|
|
11
|
+
|
|
12
|
+
class BleRequestRegistryTest {
|
|
13
|
+
private fun registry() = BleRequestRegistry(CoroutineScope(SupervisorJob() + Dispatchers.Unconfined))
|
|
14
|
+
|
|
15
|
+
@Test fun duplicateRequestsAreRejectedAndDevicesAndOperationsAreIndependent() {
|
|
16
|
+
val registry = registry()
|
|
17
|
+
val wait = CompletableDeferred<Unit>()
|
|
18
|
+
val results = mutableListOf<Result<Any?>>()
|
|
19
|
+
registry.start("wifi:a", { results.add(it) }) { wait.await(); Result.success(emptyList<String>()) }
|
|
20
|
+
registry.start("wifi:a", { results.add(it) }) { fail("Duplicate executed"); Result.success(null) }
|
|
21
|
+
registry.start("wifi:b", { results.add(it) }) { Result.success("b") }
|
|
22
|
+
registry.start("time:a", { results.add(it) }) { Result.success("time") }
|
|
23
|
+
assertEquals("E_BLE_REQUEST_BUSY", (results[0].exceptionOrNull() as BleRequestException).code)
|
|
24
|
+
assertEquals(listOf("b", "time"), results.drop(1).map { it.getOrNull() })
|
|
25
|
+
wait.complete(Unit)
|
|
26
|
+
assertEquals(emptyList<String>(), results.last().getOrNull())
|
|
27
|
+
registry.close()
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@Test fun cancelledLateResponseCannotCompleteAReplacementRequest() {
|
|
31
|
+
val registry = registry()
|
|
32
|
+
val old = CompletableDeferred<Unit>(); val next = CompletableDeferred<Unit>()
|
|
33
|
+
val results = mutableListOf<Result<Any?>>()
|
|
34
|
+
registry.start("wifi:a", { results.add(it) }) {
|
|
35
|
+
withContext(NonCancellable) { old.await() }
|
|
36
|
+
Result.success("stale")
|
|
37
|
+
}
|
|
38
|
+
registry.cancel("wifi:a")
|
|
39
|
+
registry.start("wifi:a", { results.add(it) }) { next.await(); Result.success("new") }
|
|
40
|
+
old.complete(Unit)
|
|
41
|
+
assertEquals(1, results.size)
|
|
42
|
+
assertEquals("E_BLE_REQUEST_CANCELLED", (results.single().exceptionOrNull() as BleRequestException).code)
|
|
43
|
+
next.complete(Unit)
|
|
44
|
+
assertEquals(2, results.size)
|
|
45
|
+
assertEquals("new", results.last().getOrNull())
|
|
46
|
+
registry.cancel("wifi:a")
|
|
47
|
+
assertEquals(2, results.size)
|
|
48
|
+
registry.close()
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@Test fun exceptionsSettleAndAllowRetry() {
|
|
52
|
+
val registry = registry(); val results = mutableListOf<Result<Any?>>()
|
|
53
|
+
registry.start("time:a", { results.add(it) }) { throw IllegalStateException("failed") }
|
|
54
|
+
registry.start("time:a", { results.add(it) }) { Result.success(null) }
|
|
55
|
+
assertTrue(results[0].isFailure); assertTrue(results[1].isSuccess)
|
|
56
|
+
registry.close()
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@Test fun closingCancelsPendingRequestsWithoutCallingADeadBridge() {
|
|
60
|
+
val registry = registry(); var replies = 0
|
|
61
|
+
val wait = CompletableDeferred<Unit>()
|
|
62
|
+
registry.start("time:a", { replies++ }) { withContext(NonCancellable) { wait.await() }; Result.success(null) }
|
|
63
|
+
registry.close(); wait.complete(Unit)
|
|
64
|
+
assertEquals(0, replies)
|
|
65
|
+
registry.start("wifi:a", { assertTrue(it.isFailure); replies++ }) { fail("Closed bridge executed"); Result.success(null) }
|
|
66
|
+
assertEquals(1, replies)
|
|
67
|
+
}
|
|
68
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
3
|
+
final class BleRequestRegistry {
|
|
4
|
+
typealias Reply = ([String: Any]) -> Void
|
|
5
|
+
private final class Request {
|
|
6
|
+
let reply: Reply
|
|
7
|
+
var task: Task<Void, Never>?
|
|
8
|
+
init(reply: @escaping Reply) { self.reply = reply }
|
|
9
|
+
}
|
|
10
|
+
private let lock = NSLock()
|
|
11
|
+
private var requests: [String: Request] = [:]
|
|
12
|
+
private var closed = false
|
|
13
|
+
|
|
14
|
+
static func failure(_ code: String, _ message: String) -> [String: Any] {
|
|
15
|
+
["success": false, "error": code, "message": message]
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
func start(key: String, reply: @escaping Reply, operation: @escaping () async -> [String: Any]) {
|
|
19
|
+
let request = Request(reply: reply)
|
|
20
|
+
lock.lock()
|
|
21
|
+
let rejected = closed || requests[key] != nil
|
|
22
|
+
if !rejected { requests[key] = request }
|
|
23
|
+
let isClosed = closed
|
|
24
|
+
lock.unlock()
|
|
25
|
+
guard !rejected else {
|
|
26
|
+
reply(Self.failure(isClosed ? "E_NATIVE_MODULE_UNAVAILABLE" : "E_BLE_REQUEST_BUSY", isClosed ? "BLE bridge is closed" : "A request is already pending for this device and operation"))
|
|
27
|
+
return
|
|
28
|
+
}
|
|
29
|
+
let task = Task { [weak self] in
|
|
30
|
+
guard self?.owns(key: key, request: request) == true, !Task.isCancelled else { return }
|
|
31
|
+
let response = await operation()
|
|
32
|
+
self?.finish(key: key, request: request, response: response)
|
|
33
|
+
}
|
|
34
|
+
lock.lock()
|
|
35
|
+
let owned = requests[key] === request
|
|
36
|
+
if owned { request.task = task }
|
|
37
|
+
lock.unlock()
|
|
38
|
+
if !owned { task.cancel() }
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
private func owns(key: String, request: Request) -> Bool {
|
|
42
|
+
lock.lock(); defer { lock.unlock() }
|
|
43
|
+
return requests[key] === request
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
private func finish(key: String, request: Request, response: [String: Any]) {
|
|
47
|
+
lock.lock()
|
|
48
|
+
let owned = requests[key] === request
|
|
49
|
+
if owned { requests.removeValue(forKey: key) }
|
|
50
|
+
lock.unlock()
|
|
51
|
+
if owned { request.reply(response) }
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
func cancel(key: String) {
|
|
55
|
+
lock.lock()
|
|
56
|
+
let request = requests.removeValue(forKey: key)
|
|
57
|
+
lock.unlock()
|
|
58
|
+
request?.task?.cancel()
|
|
59
|
+
request?.reply(Self.failure("E_BLE_REQUEST_CANCELLED", "BLE request cancelled"))
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
func close() {
|
|
63
|
+
lock.lock()
|
|
64
|
+
closed = true
|
|
65
|
+
let pending = Array(requests.values)
|
|
66
|
+
requests.removeAll()
|
|
67
|
+
lock.unlock()
|
|
68
|
+
pending.forEach { $0.task?.cancel() }
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -13,6 +13,10 @@ RCT_EXTERN_METHOD(connect:(NSDictionary *)options result:(RCTResponseSenderBlock
|
|
|
13
13
|
RCT_EXTERN_METHOD(disConnect:(NSDictionary *)options result:(RCTResponseSenderBlock)result)
|
|
14
14
|
RCT_EXTERN_METHOD(sendDp:(NSDictionary *)options result:(RCTResponseSenderBlock)result)
|
|
15
15
|
RCT_EXTERN_METHOD(getDp:(NSDictionary *)options result:(RCTResponseSenderBlock)result)
|
|
16
|
+
RCT_EXTERN_METHOD(getWiFiList:(NSDictionary *)options result:(RCTResponseSenderBlock)result)
|
|
17
|
+
RCT_EXTERN_METHOD(cancelGetWiFiList:(NSDictionary *)options result:(RCTResponseSenderBlock)result)
|
|
18
|
+
RCT_EXTERN_METHOD(syncTime:(NSDictionary *)options result:(RCTResponseSenderBlock)result)
|
|
19
|
+
RCT_EXTERN_METHOD(cancelSyncTime:(NSDictionary *)options result:(RCTResponseSenderBlock)result)
|
|
16
20
|
RCT_EXTERN_METHOD(getDeviceInfo:(NSDictionary *)options result:(RCTResponseSenderBlock)result)
|
|
17
21
|
RCT_EXTERN_METHOD(checkUpdate:(NSDictionary *)options result:(RCTResponseSenderBlock)result)
|
|
18
22
|
RCT_EXTERN_METHOD(startUpgrade:(NSDictionary *)options result:(RCTResponseSenderBlock)result)
|
|
@@ -96,6 +96,73 @@ struct StopProvideWiFiCredentialsParams: Decodable {
|
|
|
96
96
|
@objc(RNGizDeviceManagerModule)
|
|
97
97
|
class RNGizDeviceManagerModule: RCTEventEmitter {
|
|
98
98
|
|
|
99
|
+
private let bleRequests = BleRequestRegistry()
|
|
100
|
+
|
|
101
|
+
override func invalidate() {
|
|
102
|
+
bleRequests.close()
|
|
103
|
+
super.invalidate()
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
private func bleReply(_ result: @escaping RCTResponseSenderBlock) -> BleRequestRegistry.Reply {
|
|
107
|
+
return { response in
|
|
108
|
+
if response["success"] as? Bool == true { result([NSNull(), response]) }
|
|
109
|
+
else { result([response, NSNull()]) }
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
private func bleOptions(_ options: NSDictionary, reply: BleRequestRegistry.Reply, timed: Bool) -> (String, Double)? {
|
|
114
|
+
guard let id = options["id"] as? String, !id.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else {
|
|
115
|
+
reply(BleRequestRegistry.failure("E_BLE_INVALID_PARAMS", "A device id is required")); return nil
|
|
116
|
+
}
|
|
117
|
+
var seconds = 30.0
|
|
118
|
+
if timed, let value = options["timeoutSeconds"] {
|
|
119
|
+
guard let number = value as? NSNumber, CFGetTypeID(number) != CFBooleanGetTypeID() else {
|
|
120
|
+
reply(BleRequestRegistry.failure("E_BLE_INVALID_TIMEOUT", "timeoutSeconds must be a number")); return nil
|
|
121
|
+
}
|
|
122
|
+
seconds = number.doubleValue
|
|
123
|
+
}
|
|
124
|
+
guard seconds.isFinite, seconds > 0, seconds <= 3600 else {
|
|
125
|
+
reply(BleRequestRegistry.failure("E_BLE_INVALID_TIMEOUT", "timeoutSeconds must be greater than 0 and at most 3600")); return nil
|
|
126
|
+
}
|
|
127
|
+
return (id, seconds)
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
private func startBleRequest(_ options: NSDictionary, result: @escaping RCTResponseSenderBlock, operation: String) {
|
|
131
|
+
let reply = bleReply(result)
|
|
132
|
+
guard let (id, timeout) = bleOptions(options, reply: reply, timed: true) else { return }
|
|
133
|
+
guard let device = findDevice(id: id) else {
|
|
134
|
+
reply(BleRequestRegistry.failure("E_BLE_DEVICE_NOT_FOUND", "Device not found")); return
|
|
135
|
+
}
|
|
136
|
+
bleRequests.start(key: "\(operation):\(id)", reply: reply) {
|
|
137
|
+
if operation == "wifi" {
|
|
138
|
+
let response = await device.bleCapability.getWiFiList(timeout: timeout)
|
|
139
|
+
return GizRNCallbackManager.convertToDictionary(object: response) ?? BleRequestRegistry.failure("E_BLE_INVALID_RESPONSE", "Invalid Wi-Fi list response")
|
|
140
|
+
}
|
|
141
|
+
let response = await device.bleCapability.syncTime(timeout: timeout)
|
|
142
|
+
return GizRNCallbackManager.convertToDictionary(object: response) ?? BleRequestRegistry.failure("E_BLE_INVALID_RESPONSE", "Invalid time sync response")
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
private func cancelBleRequest(_ options: NSDictionary, result: @escaping RCTResponseSenderBlock, operation: String) {
|
|
147
|
+
let reply = bleReply(result)
|
|
148
|
+
guard let (id, _) = bleOptions(options, reply: reply, timed: false) else { return }
|
|
149
|
+
bleRequests.cancel(key: "\(operation):\(id)")
|
|
150
|
+
reply(["success": true, "message": "", "data": NSNull()])
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
@objc public func getWiFiList(_ options: NSDictionary, result: @escaping RCTResponseSenderBlock) {
|
|
154
|
+
startBleRequest(options, result: result, operation: "wifi")
|
|
155
|
+
}
|
|
156
|
+
@objc public func cancelGetWiFiList(_ options: NSDictionary, result: @escaping RCTResponseSenderBlock) {
|
|
157
|
+
cancelBleRequest(options, result: result, operation: "wifi")
|
|
158
|
+
}
|
|
159
|
+
@objc public func syncTime(_ options: NSDictionary, result: @escaping RCTResponseSenderBlock) {
|
|
160
|
+
startBleRequest(options, result: result, operation: "time")
|
|
161
|
+
}
|
|
162
|
+
@objc public func cancelSyncTime(_ options: NSDictionary, result: @escaping RCTResponseSenderBlock) {
|
|
163
|
+
cancelBleRequest(options, result: result, operation: "time")
|
|
164
|
+
}
|
|
165
|
+
|
|
99
166
|
override func supportedEvents() -> [String]! {
|
|
100
167
|
return ["GizOTAProgressEvent", "GizProvideWiFiCredentialsEvent", "GizMusicalRhythmEvnet"]
|
|
101
168
|
}
|
package/lib/device.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Base from './Base';
|
|
2
|
-
import { GizCapability, GizDeviceData, GizDeviceInfoProfile, GizMusicalRhythmCallback, GizOTAFirmwareType, GizOtaProgressCallback, GizOtaProgressEventCallback, GizProvideWiFiCredentialsCallback, GizResult, MusicalRhythmParseMode } from './types';
|
|
2
|
+
import { GizCapability, GizDeviceData, GizDeviceInfoProfile, GizMusicalRhythmCallback, GizOTAFirmwareType, GizOtaProgressCallback, GizOtaProgressEventCallback, GizProvideWiFiCredentialsCallback, GizResult, GizWiFiNetwork, MusicalRhythmParseMode } from './types';
|
|
3
3
|
declare class RNGizDeviceManagerModule extends Base {
|
|
4
4
|
otaEventCallbacks: GizOtaProgressEventCallback[];
|
|
5
5
|
provideWiFiCredentialsCallbacks: GizProvideWiFiCredentialsCallback[];
|
|
@@ -12,6 +12,11 @@ declare class RNGizDeviceManagerModule extends Base {
|
|
|
12
12
|
musicalRhythmCallback: GizMusicalRhythmCallback;
|
|
13
13
|
sendDp(id: string, type: GizCapability, data: Object): Promise<GizResult<GizDeviceData, any>>;
|
|
14
14
|
getDp(id: string, type: GizCapability, attrs?: string[]): Promise<GizResult<GizDeviceData, any>>;
|
|
15
|
+
private invokeBle;
|
|
16
|
+
getWiFiList(id: string, timeoutSeconds?: number): Promise<GizResult<GizWiFiNetwork[], number | string>>;
|
|
17
|
+
cancelGetWiFiList(id: string): Promise<GizResult<null, number | string>>;
|
|
18
|
+
syncTime(id: string, timeoutSeconds?: number): Promise<GizResult<null, number | string>>;
|
|
19
|
+
cancelSyncTime(id: string): Promise<GizResult<null, number | string>>;
|
|
15
20
|
getDeviceInfo(id: string, type: GizCapability): Promise<GizResult<GizDeviceInfoProfile, any>>;
|
|
16
21
|
connect(id: string, type: GizCapability): Promise<GizResult<any, any>>;
|
|
17
22
|
disConnect(id: string, type: GizCapability): Promise<GizResult<any, any>>;
|
package/lib/device.js
CHANGED
|
@@ -46,6 +46,41 @@ class RNGizDeviceManagerModule extends Base {
|
|
|
46
46
|
}, callback);
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
|
+
invokeBle(method, id, timeoutSeconds) {
|
|
50
|
+
if (timeoutSeconds !== undefined &&
|
|
51
|
+
(!Number.isFinite(timeoutSeconds) ||
|
|
52
|
+
timeoutSeconds <= 0 ||
|
|
53
|
+
timeoutSeconds > 3600)) {
|
|
54
|
+
return Promise.resolve({
|
|
55
|
+
success: false,
|
|
56
|
+
error: 'E_BLE_INVALID_TIMEOUT',
|
|
57
|
+
message: 'timeoutSeconds must be greater than 0 and at most 3600',
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const native = NativeModules.RNGizDeviceManagerModule;
|
|
61
|
+
if (typeof (native === null || native === void 0 ? void 0 : native[method]) !== 'function') {
|
|
62
|
+
return Promise.resolve({
|
|
63
|
+
success: false,
|
|
64
|
+
error: 'E_NATIVE_MODULE_UNAVAILABLE',
|
|
65
|
+
message: `${method} requires rebuilding the app with the updated native SDK bridge`,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return this.callbackWapper((callback) => {
|
|
69
|
+
native[method]({ id, ...(timeoutSeconds === undefined ? {} : { timeoutSeconds }) }, callback);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
getWiFiList(id, timeoutSeconds = 30) {
|
|
73
|
+
return this.invokeBle('getWiFiList', id, timeoutSeconds);
|
|
74
|
+
}
|
|
75
|
+
cancelGetWiFiList(id) {
|
|
76
|
+
return this.invokeBle('cancelGetWiFiList', id);
|
|
77
|
+
}
|
|
78
|
+
syncTime(id, timeoutSeconds = 30) {
|
|
79
|
+
return this.invokeBle('syncTime', id, timeoutSeconds);
|
|
80
|
+
}
|
|
81
|
+
cancelSyncTime(id) {
|
|
82
|
+
return this.invokeBle('cancelSyncTime', id);
|
|
83
|
+
}
|
|
49
84
|
getDeviceInfo(id, type) {
|
|
50
85
|
return this.callbackWapper((callback) => {
|
|
51
86
|
NativeModules.RNGizDeviceManagerModule.getDeviceInfo({
|
package/lib/device.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../src/device.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEhE,OAAO,IAAI,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../src/device.tsx"],"names":[],"mappings":"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"}
|
package/lib/harmony/device.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Base from '../Base';
|
|
2
|
-
import type { GizCapability, GizCheckUpdateResultInfo, GizDeviceData, GizDeviceInfoProfile, GizDeviceRegistrationInfo, GizLightDanceDataEvent, GizMusicalRhythmCallback, GizOTAFirmwareType, GizOtaProgressCallback, GizProvideWiFiCredentialsCallback, GizResult, MusicalRhythmParseMode } from '../types';
|
|
2
|
+
import type { GizCapability, GizCheckUpdateResultInfo, GizDeviceData, GizDeviceInfoProfile, GizDeviceRegistrationInfo, GizLightDanceDataEvent, GizMusicalRhythmCallback, GizOTAFirmwareType, GizOtaProgressCallback, GizProvideWiFiCredentialsCallback, GizResult, GizWiFiNetwork, MusicalRhythmParseMode } from '../types';
|
|
3
3
|
export declare class RNGizDeviceManagerModule extends Base {
|
|
4
4
|
private static requestSequence;
|
|
5
5
|
private readonly otaCallbacks;
|
|
@@ -9,6 +9,11 @@ export declare class RNGizDeviceManagerModule extends Base {
|
|
|
9
9
|
private ensureNativeListeners;
|
|
10
10
|
sendDp(id: string, type: GizCapability, data: object): Promise<GizResult<GizDeviceData, string>>;
|
|
11
11
|
getDp(id: string, type: GizCapability, attrs?: string[]): Promise<GizResult<GizDeviceData, string>>;
|
|
12
|
+
private invokeBle;
|
|
13
|
+
getWiFiList(id: string, timeoutSeconds?: number): Promise<GizResult<GizWiFiNetwork[], string>>;
|
|
14
|
+
cancelGetWiFiList(id: string): Promise<GizResult<null, string>>;
|
|
15
|
+
syncTime(id: string, timeoutSeconds?: number): Promise<GizResult<null, string>>;
|
|
16
|
+
cancelSyncTime(id: string): Promise<GizResult<null, string>>;
|
|
12
17
|
getDeviceInfo(id: string, type: GizCapability): Promise<GizResult<GizDeviceInfoProfile, string>>;
|
|
13
18
|
connect(id: string, type: GizCapability): Promise<GizResult<unknown, string>>;
|
|
14
19
|
disConnect(id: string, type: GizCapability): Promise<GizResult<unknown, string>>;
|
package/lib/harmony/device.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NativeEventEmitter } from 'react-native';
|
|
2
2
|
import Base from '../Base';
|
|
3
|
-
import { invokeNative, parseNativeEvent, unsupported } from './bridge';
|
|
3
|
+
import { failure, invokeNative, parseNativeEvent, unsupported } from './bridge';
|
|
4
4
|
import { DeviceNativeModule } from './native';
|
|
5
5
|
export class RNGizDeviceManagerModule extends Base {
|
|
6
6
|
constructor() {
|
|
@@ -57,6 +57,30 @@ export class RNGizDeviceManagerModule extends Base {
|
|
|
57
57
|
getDp(id, type, attrs) {
|
|
58
58
|
return invokeNative(DeviceNativeModule, 'getDp', { id, type, attrs });
|
|
59
59
|
}
|
|
60
|
+
invokeBle(method, id, timeoutSeconds) {
|
|
61
|
+
if (timeoutSeconds !== undefined &&
|
|
62
|
+
(!Number.isFinite(timeoutSeconds) ||
|
|
63
|
+
timeoutSeconds <= 0 ||
|
|
64
|
+
timeoutSeconds > 3600)) {
|
|
65
|
+
return Promise.resolve(failure('E_BLE_INVALID_TIMEOUT', 'timeoutSeconds must be greater than 0 and at most 3600'));
|
|
66
|
+
}
|
|
67
|
+
return invokeNative(DeviceNativeModule, method, {
|
|
68
|
+
id,
|
|
69
|
+
...(timeoutSeconds === undefined ? {} : { timeoutSeconds }),
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
getWiFiList(id, timeoutSeconds = 30) {
|
|
73
|
+
return this.invokeBle('getWiFiList', id, timeoutSeconds);
|
|
74
|
+
}
|
|
75
|
+
cancelGetWiFiList(id) {
|
|
76
|
+
return this.invokeBle('cancelGetWiFiList', id);
|
|
77
|
+
}
|
|
78
|
+
syncTime(id, timeoutSeconds = 30) {
|
|
79
|
+
return this.invokeBle('syncTime', id, timeoutSeconds);
|
|
80
|
+
}
|
|
81
|
+
cancelSyncTime(id) {
|
|
82
|
+
return this.invokeBle('cancelSyncTime', id);
|
|
83
|
+
}
|
|
60
84
|
getDeviceInfo(id, type) {
|
|
61
85
|
return invokeNative(DeviceNativeModule, 'getDeviceInfo', { id, type });
|
|
62
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/harmony/device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD,OAAO,IAAI,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/harmony/device.ts"],"names":[],"mappings":"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"}
|
package/lib/harmony/sdk.js
CHANGED
|
@@ -68,6 +68,10 @@ export class RNGizSDKManagerModuleClass extends Base {
|
|
|
68
68
|
capability.provideWiFiCredentials = (ssid, password, timeout, callback, bindWithUid) => RNGizDeviceManagerModule.provideWiFiCredentials(device.id, type, ssid, password, timeout, callback, bindWithUid);
|
|
69
69
|
capability.stopProvideWiFiCredentials = () => RNGizDeviceManagerModule.stopProvideWiFiCredentials(device.id, type);
|
|
70
70
|
};
|
|
71
|
+
device.bleCapability.getWiFiList = (timeoutSeconds) => RNGizDeviceManagerModule.getWiFiList(device.id, timeoutSeconds);
|
|
72
|
+
device.bleCapability.cancelGetWiFiList = () => RNGizDeviceManagerModule.cancelGetWiFiList(device.id);
|
|
73
|
+
device.bleCapability.syncTime = (timeoutSeconds) => RNGizDeviceManagerModule.syncTime(device.id, timeoutSeconds);
|
|
74
|
+
device.bleCapability.cancelSyncTime = () => RNGizDeviceManagerModule.cancelSyncTime(device.id);
|
|
71
75
|
bindCapability(device.bleCapability, 'BLE');
|
|
72
76
|
bindCapability(device.lanCapability, 'LAN');
|
|
73
77
|
bindCapability(device.mqttCapability, 'MQTT');
|
package/lib/harmony/sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/harmony/sdk.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/harmony/sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,10 @@ export type GizNativeCallback = (error: Object | null, result: Object | null) =>
|
|
|
3
3
|
export interface Spec extends TurboModule {
|
|
4
4
|
sendDp(options: Object, callback: GizNativeCallback): void;
|
|
5
5
|
getDp(options: Object, callback: GizNativeCallback): void;
|
|
6
|
+
getWiFiList(options: Object, callback: GizNativeCallback): void;
|
|
7
|
+
cancelGetWiFiList(options: Object, callback: GizNativeCallback): void;
|
|
8
|
+
syncTime(options: Object, callback: GizNativeCallback): void;
|
|
9
|
+
cancelSyncTime(options: Object, callback: GizNativeCallback): void;
|
|
6
10
|
getDeviceInfo(options: Object, callback: GizNativeCallback): void;
|
|
7
11
|
connect(options: Object, callback: GizNativeCallback): void;
|
|
8
12
|
disConnect(options: Object, callback: GizNativeCallback): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeRNGizDeviceManagerModule.js","sourceRoot":"","sources":["../../../src/harmony/specs/NativeRNGizDeviceManagerModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"NativeRNGizDeviceManagerModule.js","sourceRoot":"","sources":["../../../src/harmony/specs/NativeRNGizDeviceManagerModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAqClD,eAAe,mBAAmB,CAAC,GAAG,CAAO,0BAA0B,CAAC,CAAA"}
|
package/lib/index.js
CHANGED
|
@@ -25,6 +25,10 @@ class RNGizSDKManagerModuleClass extends Base {
|
|
|
25
25
|
device.stopMusicalRhythm = () => {
|
|
26
26
|
return RNGizDeviceManagerModule.stopMusicalRhythm(device.id);
|
|
27
27
|
};
|
|
28
|
+
device.bleCapability.getWiFiList = (timeoutSeconds) => RNGizDeviceManagerModule.getWiFiList(device.id, timeoutSeconds);
|
|
29
|
+
device.bleCapability.cancelGetWiFiList = () => RNGizDeviceManagerModule.cancelGetWiFiList(device.id);
|
|
30
|
+
device.bleCapability.syncTime = (timeoutSeconds) => RNGizDeviceManagerModule.syncTime(device.id, timeoutSeconds);
|
|
31
|
+
device.bleCapability.cancelSyncTime = () => RNGizDeviceManagerModule.cancelSyncTime(device.id);
|
|
28
32
|
device.bleCapability.connect = () => {
|
|
29
33
|
return RNGizDeviceManagerModule.connect(device.id, 'BLE');
|
|
30
34
|
};
|
|
@@ -135,6 +139,7 @@ class RNGizSDKManagerModuleClass extends Base {
|
|
|
135
139
|
};
|
|
136
140
|
};
|
|
137
141
|
this.deviceDataCallback = (data) => {
|
|
142
|
+
this.appendDeviceFunction(data.device);
|
|
138
143
|
this.deviceDataCallbacks.map((item) => {
|
|
139
144
|
item(data);
|
|
140
145
|
});
|
|
@@ -148,6 +153,7 @@ class RNGizSDKManagerModuleClass extends Base {
|
|
|
148
153
|
});
|
|
149
154
|
};
|
|
150
155
|
this.deviceStateCallback = (data) => {
|
|
156
|
+
this.appendDeviceFunction(data.device);
|
|
151
157
|
this.deviceStateCallbacks.map((item) => {
|
|
152
158
|
item(data);
|
|
153
159
|
});
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
CHANGED
|
@@ -107,6 +107,10 @@ export interface GizBleProfile extends GizBaseProfile {
|
|
|
107
107
|
blueToothVersion: BlueToothVersion;
|
|
108
108
|
bluetoothVersion?: BlueToothVersion;
|
|
109
109
|
bleModuleVariant?: GizBleModuleVariant;
|
|
110
|
+
/** Android/HarmonyOS advertisement metadata; the native SDK negotiates security automatically. */
|
|
111
|
+
supportsSecureChannel?: boolean;
|
|
112
|
+
support5GConfig?: boolean;
|
|
113
|
+
supports5GConfig?: boolean;
|
|
110
114
|
}
|
|
111
115
|
export interface GizMQTTProfile extends GizBaseProfile {
|
|
112
116
|
host: string;
|
|
@@ -116,8 +120,20 @@ export interface GizMQTTProfile extends GizBaseProfile {
|
|
|
116
120
|
sno?: string;
|
|
117
121
|
isOnline?: boolean;
|
|
118
122
|
}
|
|
123
|
+
/** A network from the module's cached scan results, not the phone's Wi-Fi scan. */
|
|
124
|
+
export interface GizWiFiNetwork {
|
|
125
|
+
ssid: string;
|
|
126
|
+
/** Signed RSSI in dBm; for example -50. */
|
|
127
|
+
signalStrength: number;
|
|
128
|
+
}
|
|
119
129
|
export interface GizBleCapability extends GizBaseCapability {
|
|
120
130
|
profile: GizBleProfile;
|
|
131
|
+
/** Android/iOS/HarmonyOS. Timeout includes connection and authentication; default 30 seconds. */
|
|
132
|
+
getWiFiList: (timeoutSeconds?: number) => Promise<GizResult<GizWiFiNetwork[], number | string>>;
|
|
133
|
+
cancelGetWiFiList: () => Promise<GizResult<null, number | string>>;
|
|
134
|
+
/** Android/iOS/HarmonyOS. V5 success means GATT accepted the write; V2 requires firmware's time extension. */
|
|
135
|
+
syncTime: (timeoutSeconds?: number) => Promise<GizResult<null, number | string>>;
|
|
136
|
+
cancelSyncTime: () => Promise<GizResult<null, number | string>>;
|
|
121
137
|
}
|
|
122
138
|
export interface GizLanCapability extends GizBaseCapability {
|
|
123
139
|
profile: GizLanProfile;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-gizwits-sdk-v5",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1-beta",
|
|
4
4
|
"description": "Gizwits Smart SDK v5 bridge for React Native on Android, iOS and HarmonyOS",
|
|
5
5
|
"homepage": "https://github.com/demchenkoalex/react-native-gizwits-sdk-v5#readme",
|
|
6
6
|
"main": "lib/index",
|
|
@@ -45,7 +45,9 @@
|
|
|
45
45
|
"build:harmony": "bash ./harmony/react_native_gizwits_sdk_v5/build.sh",
|
|
46
46
|
"sync:harmony-version": "node ./scripts/sync-harmony-version.js",
|
|
47
47
|
"version": "npm run sync:harmony-version",
|
|
48
|
-
"check:publish": "node ./scripts/check-publish.js"
|
|
48
|
+
"check:publish": "node ./scripts/check-publish.js",
|
|
49
|
+
"bundle:harmony-sdk": "python3 ./scripts/bundle-harmony-sdk.py",
|
|
50
|
+
"test:harmony-ble": "node --test ./scripts/test-harmony-ble.cjs"
|
|
49
51
|
},
|
|
50
52
|
"devDependencies": {
|
|
51
53
|
"@babel/core": "^7.16.12",
|
|
@@ -87,6 +89,9 @@
|
|
|
87
89
|
"jsx",
|
|
88
90
|
"json",
|
|
89
91
|
"node"
|
|
92
|
+
],
|
|
93
|
+
"roots": [
|
|
94
|
+
"<rootDir>/src"
|
|
90
95
|
]
|
|
91
96
|
}
|
|
92
97
|
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Build a local Gizwits SDK snapshot and vendor all four HARs without publishing."""
|
|
3
|
+
import argparse
|
|
4
|
+
import hashlib
|
|
5
|
+
import io
|
|
6
|
+
import json
|
|
7
|
+
import os
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
import shutil
|
|
10
|
+
import subprocess
|
|
11
|
+
import tarfile
|
|
12
|
+
import tempfile
|
|
13
|
+
|
|
14
|
+
MODULES = ['sdk', 'sdk_bluetooth', 'sdk_lan', 'sdk_mqtt']
|
|
15
|
+
EXCLUDE = {'.git', '.hvigor', '.cxx', '.idea', 'oh_modules', 'node_modules', 'build', '.DS_Store'}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def main():
|
|
19
|
+
parser = argparse.ArgumentParser(description=__doc__)
|
|
20
|
+
parser.add_argument('--sdk-root', type=Path, required=True)
|
|
21
|
+
args = parser.parse_args()
|
|
22
|
+
source = args.sdk_root.resolve()
|
|
23
|
+
if not (source / 'sdk/src/main/cpp/parser/protocolParser.c').is_file():
|
|
24
|
+
parser.error('Initialize the SDK parser submodule before building')
|
|
25
|
+
repo = Path(__file__).resolve().parents[1]
|
|
26
|
+
module_dir = repo / 'harmony/react_native_gizwits_sdk_v5'
|
|
27
|
+
studio = Path(os.environ.get('DEVECO_STUDIO_HOME', '/Applications/DevEco-Studio.app/Contents'))
|
|
28
|
+
digest = hashlib.sha256()
|
|
29
|
+
for module in MODULES:
|
|
30
|
+
for file in sorted((source / module).rglob('*')):
|
|
31
|
+
relative = file.relative_to(source)
|
|
32
|
+
if not file.is_file() or any(part in EXCLUDE for part in relative.parts):
|
|
33
|
+
continue
|
|
34
|
+
if file.name in {'BuildProfile.ets', 'oh-package-lock.json5'}:
|
|
35
|
+
continue
|
|
36
|
+
digest.update(str(relative).encode())
|
|
37
|
+
digest.update(file.read_bytes())
|
|
38
|
+
snapshot = digest.hexdigest()[:12]
|
|
39
|
+
base = json.loads((source / 'sdk/oh-package.json5').read_text())['version']
|
|
40
|
+
if '-' in base:
|
|
41
|
+
parser.error('Choose a stable base version in the SDK manifest before making a local snapshot')
|
|
42
|
+
work = Path(tempfile.mkdtemp(prefix='gizwits-native-local-'))
|
|
43
|
+
shutil.copytree(source, work, dirs_exist_ok=True, symlinks=True,
|
|
44
|
+
ignore=lambda _dir, names: [n for n in names if n in EXCLUDE])
|
|
45
|
+
profile = json.loads((work / 'build-profile.json5').read_text())
|
|
46
|
+
profile['app'].pop('signingConfigs', None)
|
|
47
|
+
for product in profile['app'].get('products', []):
|
|
48
|
+
product.pop('signingConfig', None)
|
|
49
|
+
(work / 'build-profile.json5').write_text(json.dumps(profile, indent=2) + '\n')
|
|
50
|
+
versions = {}
|
|
51
|
+
for module in MODULES:
|
|
52
|
+
suffix = '' if module == 'sdk' else module.removeprefix('sdk_') + '.'
|
|
53
|
+
version = f'{base}-{suffix}local.{snapshot}'
|
|
54
|
+
versions[module] = version
|
|
55
|
+
manifest_path = work / module / 'oh-package.json5'
|
|
56
|
+
manifest = json.loads(manifest_path.read_text())
|
|
57
|
+
manifest['version'] = version
|
|
58
|
+
if module != 'sdk':
|
|
59
|
+
manifest['dependencies']['@gizwits/smart-sdk'] = versions['sdk']
|
|
60
|
+
manifest_path.write_text(json.dumps(manifest, indent=2) + '\n')
|
|
61
|
+
environment = os.environ.copy()
|
|
62
|
+
environment.update(NODE_HOME=str(studio / 'tools/node'), DEVECO_SDK_HOME=str(studio / 'sdk'),
|
|
63
|
+
JAVA_HOME=str(studio / 'jbr/Contents/Home'))
|
|
64
|
+
subprocess.run([str(studio / 'tools/ohpm/bin/ohpm'), 'install'], cwd=work, env=environment, check=True)
|
|
65
|
+
outputs = {}
|
|
66
|
+
for module in MODULES:
|
|
67
|
+
subprocess.run([str(studio / 'tools/hvigor/bin/hvigorw'), '--mode', 'module', '-p', 'product=default',
|
|
68
|
+
'-p', f'module={module}@default', '-p', 'buildMode=release', 'assembleHar', '--no-daemon'],
|
|
69
|
+
cwd=work, env=environment, check=True)
|
|
70
|
+
outputs[module] = work / module / 'build/default/outputs/default' / f'{module}.har'
|
|
71
|
+
# Each transport carries the exact same core archive, so none of its transitive
|
|
72
|
+
# dependencies can fall back to the older public core. Check clean-consumer
|
|
73
|
+
# resolution and core identity when changing this packaging layout.
|
|
74
|
+
vendored = work / 'vendored'
|
|
75
|
+
vendored.mkdir()
|
|
76
|
+
core = outputs['sdk'].read_bytes()
|
|
77
|
+
(vendored / 'sdk.har').write_bytes(core)
|
|
78
|
+
for module in MODULES[1:]:
|
|
79
|
+
with tarfile.open(outputs[module]) as original, tarfile.open(vendored / f'{module}.har', 'w:gz') as output:
|
|
80
|
+
for member in original.getmembers():
|
|
81
|
+
stream = original.extractfile(member) if member.isfile() else None
|
|
82
|
+
if member.name == 'package/oh-package.json5':
|
|
83
|
+
manifest = json.load(stream)
|
|
84
|
+
manifest['dependencies']['@gizwits/smart-sdk'] = 'file:./vendor/sdk.har'
|
|
85
|
+
data = (json.dumps(manifest, indent=2) + '\n').encode()
|
|
86
|
+
member.size = len(data)
|
|
87
|
+
stream = io.BytesIO(data)
|
|
88
|
+
output.addfile(member, stream)
|
|
89
|
+
member = tarfile.TarInfo('package/vendor/sdk.har')
|
|
90
|
+
member.size = len(core)
|
|
91
|
+
member.mode = 0o644
|
|
92
|
+
output.addfile(member, io.BytesIO(core))
|
|
93
|
+
destination = module_dir / 'libs'
|
|
94
|
+
destination.mkdir(exist_ok=True)
|
|
95
|
+
for module in MODULES:
|
|
96
|
+
shutil.copy2(vendored / f'{module}.har', destination / f'{module}.har')
|
|
97
|
+
metadata = {'baseVersion': base, 'sourceDigest': snapshot, 'modules': {
|
|
98
|
+
module: {'version': versions[module], 'sha256': hashlib.sha256((destination / f'{module}.har').read_bytes()).hexdigest()}
|
|
99
|
+
for module in MODULES
|
|
100
|
+
}}
|
|
101
|
+
(destination / 'sdk-snapshot.json').write_text(json.dumps(metadata, indent=2) + '\n')
|
|
102
|
+
print(f'Local SDK snapshot {snapshot} bundled at {destination}; no registry publication performed.')
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
if __name__ == '__main__':
|
|
106
|
+
main()
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
const fs = require('fs')
|
|
4
4
|
const path = require('path')
|
|
5
|
+
const os = require('os')
|
|
6
|
+
const crypto = require('crypto')
|
|
5
7
|
const { execFileSync } = require('child_process')
|
|
6
8
|
|
|
7
9
|
const repositoryDir = path.resolve(__dirname, '..')
|
|
@@ -48,10 +50,85 @@ if (
|
|
|
48
50
|
) {
|
|
49
51
|
throw new Error('HAR name/version does not match the root npm package')
|
|
50
52
|
}
|
|
53
|
+
const bundledModules = {
|
|
54
|
+
'@gizwits/smart-sdk': 'sdk',
|
|
55
|
+
'@gizwits/smart-sdk-bluetooth': 'sdk_bluetooth',
|
|
56
|
+
'@gizwits/smart-sdk-lan': 'sdk_lan',
|
|
57
|
+
'@gizwits/smart-sdk-mqtt': 'sdk_mqtt',
|
|
58
|
+
}
|
|
51
59
|
for (const [name, version] of Object.entries(manifest.dependencies || {})) {
|
|
52
60
|
if (/^(?:file:|\.{1,2}[/\\]|[/\\]|[A-Za-z]:)/.test(version)) {
|
|
53
|
-
|
|
61
|
+
const module = bundledModules[name]
|
|
62
|
+
if (
|
|
63
|
+
!module ||
|
|
64
|
+
version !== `file:./libs/${module}.har` ||
|
|
65
|
+
!entries.has(`package/libs/${module}.har`)
|
|
66
|
+
) {
|
|
67
|
+
throw new Error(
|
|
68
|
+
`HAR contains an unbundled local dependency: ${name}=${version}`
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const snapshot = JSON.parse(
|
|
74
|
+
execFileSync('tar', ['-xOf', harPath, 'package/libs/sdk-snapshot.json'], {
|
|
75
|
+
encoding: 'utf8',
|
|
76
|
+
})
|
|
77
|
+
)
|
|
78
|
+
const temporary = fs.mkdtempSync(path.join(os.tmpdir(), 'gizwits-har-check-'))
|
|
79
|
+
try {
|
|
80
|
+
let coreBytes
|
|
81
|
+
for (const [name, module] of Object.entries(bundledModules)) {
|
|
82
|
+
if (manifest.dependencies[name] !== `file:./libs/${module}.har`) {
|
|
83
|
+
throw new Error(`HAR must carry the local SDK: ${name}`)
|
|
84
|
+
}
|
|
85
|
+
const bytes = execFileSync(
|
|
86
|
+
'tar',
|
|
87
|
+
['-xOf', harPath, `package/libs/${module}.har`],
|
|
88
|
+
{ maxBuffer: 32 * 1024 * 1024 }
|
|
89
|
+
)
|
|
90
|
+
const hash = crypto.createHash('sha256').update(bytes).digest('hex')
|
|
91
|
+
if (hash !== snapshot.modules[module].sha256)
|
|
92
|
+
throw new Error(`SDK snapshot hash mismatch: ${module}`)
|
|
93
|
+
const nativePath = path.join(temporary, `${module}.har`)
|
|
94
|
+
fs.writeFileSync(nativePath, bytes)
|
|
95
|
+
const native = JSON.parse(
|
|
96
|
+
execFileSync('tar', ['-xOf', nativePath, 'package/oh-package.json5'], {
|
|
97
|
+
encoding: 'utf8',
|
|
98
|
+
})
|
|
99
|
+
)
|
|
100
|
+
if (
|
|
101
|
+
native.name !== name ||
|
|
102
|
+
native.version !== snapshot.modules[module].version
|
|
103
|
+
) {
|
|
104
|
+
throw new Error(`SDK snapshot metadata mismatch: ${module}`)
|
|
105
|
+
}
|
|
106
|
+
if (module === 'sdk') {
|
|
107
|
+
coreBytes = bytes
|
|
108
|
+
const nativeEntries = execFileSync('tar', ['-tf', nativePath], {
|
|
109
|
+
encoding: 'utf8',
|
|
110
|
+
}).split('\n')
|
|
111
|
+
for (const abi of ['arm64-v8a', 'x86_64']) {
|
|
112
|
+
if (!nativeEntries.includes(`package/libs/${abi}/libgiz_parser.so`))
|
|
113
|
+
throw new Error(`Missing parser for ${abi}`)
|
|
114
|
+
}
|
|
115
|
+
} else {
|
|
116
|
+
if (
|
|
117
|
+
native.dependencies['@gizwits/smart-sdk'] !== 'file:./vendor/sdk.har'
|
|
118
|
+
) {
|
|
119
|
+
throw new Error(`${module} still depends on a registry core`)
|
|
120
|
+
}
|
|
121
|
+
const nested = execFileSync(
|
|
122
|
+
'tar',
|
|
123
|
+
['-xOf', nativePath, 'package/vendor/sdk.har'],
|
|
124
|
+
{ maxBuffer: 32 * 1024 * 1024 }
|
|
125
|
+
)
|
|
126
|
+
if (!nested.equals(coreBytes))
|
|
127
|
+
throw new Error(`${module} contains a different core`)
|
|
128
|
+
}
|
|
54
129
|
}
|
|
130
|
+
} finally {
|
|
131
|
+
fs.rmSync(temporary, { recursive: true, force: true })
|
|
55
132
|
}
|
|
56
133
|
if ([...entries].some((entry) => entry.startsWith('package/AppScope/'))) {
|
|
57
134
|
throw new Error('HAR must not contain the local build project AppScope')
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
const test = require('node:test')
|
|
2
|
+
const assert = require('node:assert/strict')
|
|
3
|
+
const fs = require('node:fs')
|
|
4
|
+
const path = require('node:path')
|
|
5
|
+
const vm = require('node:vm')
|
|
6
|
+
const ts = require('typescript')
|
|
7
|
+
const root = path.join(__dirname, '../harmony/react_native_gizwits_sdk_v5/src/main/ets')
|
|
8
|
+
const registered = new Map()
|
|
9
|
+
const core = { GizSDKManager: { getRegisteredDevice: id => registered.get(id) } }
|
|
10
|
+
const cache = new Map()
|
|
11
|
+
function load(name) {
|
|
12
|
+
if (cache.has(name)) return cache.get(name)
|
|
13
|
+
const source = fs.readFileSync(path.join(root, name + '.ets'), 'utf8')
|
|
14
|
+
const compiled = ts.transpileModule(source, { compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2020 } })
|
|
15
|
+
const sandbox = { exports: {}, Error, require: dep => {
|
|
16
|
+
if (dep === '@gizwits/smart-sdk') return core
|
|
17
|
+
if (dep === '@rnoh/react-native-openharmony/ets') return { EtsUITurboModule: class { __onDestroy__() {} } }
|
|
18
|
+
if (dep === './generated/ts') return { TM: { RNGizDeviceManagerModule: { NAME: 'RNGizDeviceManagerModule' } } }
|
|
19
|
+
if (dep === './GizDTOMapper') return {}
|
|
20
|
+
return load(dep.replace('./', ''))
|
|
21
|
+
} }
|
|
22
|
+
vm.runInNewContext(compiled.outputText, sandbox)
|
|
23
|
+
cache.set(name, sandbox.exports)
|
|
24
|
+
return sandbox.exports
|
|
25
|
+
}
|
|
26
|
+
const { GizBleRequestRegistry: Registry } = load('GizBleRequestRegistry')
|
|
27
|
+
const { RNGizDeviceManagerModule: Module } = load('RNGizDeviceManagerModule')
|
|
28
|
+
const invoke = (module, name, payload) => new Promise(resolve => module[name](payload, (error, result) => resolve(error || result)))
|
|
29
|
+
const tick = () => new Promise(resolve => setTimeout(resolve, 0))
|
|
30
|
+
test('native bridge converts seconds to milliseconds and preserves signed RSSI/UTF-8/duplicates', async () => {
|
|
31
|
+
const module = new Module(), calls = []
|
|
32
|
+
const networks = [{ ssid: '家', signalStrength: -50 }, { ssid: '家', signalStrength: -80 }]
|
|
33
|
+
const device = { bleCapability: { getWiFiList: async (owner, timeout) => { calls.push([owner, timeout]); return networks },
|
|
34
|
+
syncTime: async (owner, timeout) => { calls.push([owner, timeout]) } } }
|
|
35
|
+
registered.set('a', device)
|
|
36
|
+
assert.deepEqual(JSON.parse(JSON.stringify(await invoke(module, 'getWiFiList', { id: 'a', timeoutSeconds: 0.25 }))).data, networks)
|
|
37
|
+
assert.equal((await invoke(module, 'syncTime', { id: 'a' })).data, null)
|
|
38
|
+
assert.equal(calls[0][0], device); assert.equal(calls[0][1], 250); assert.equal(calls[1][1], 30000)
|
|
39
|
+
})
|
|
40
|
+
test('native calls also reject invalid timeouts and missing devices', async () => {
|
|
41
|
+
const module = new Module()
|
|
42
|
+
for (const timeoutSeconds of [0, -1, null, '30', Infinity, NaN, 3601]) {
|
|
43
|
+
assert.equal((await invoke(module, 'getWiFiList', { id: 'missing', timeoutSeconds })).error, 'E_BLE_INVALID_TIMEOUT')
|
|
44
|
+
}
|
|
45
|
+
assert.equal((await invoke(module, 'syncTime', { id: 'missing' })).success, false)
|
|
46
|
+
})
|
|
47
|
+
test('native cancellation targets its operation and settles old requests exactly once', async () => {
|
|
48
|
+
const module = new Module(); let release; const cancelled = []
|
|
49
|
+
registered.set('cancel', { bleCapability: {
|
|
50
|
+
getWiFiList: () => new Promise(resolve => { release = resolve }),
|
|
51
|
+
cancelWiFiList: () => cancelled.push('wifi'),
|
|
52
|
+
cancelSyncTime: () => cancelled.push('time'),
|
|
53
|
+
} })
|
|
54
|
+
const pending = invoke(module, 'getWiFiList', { id: 'cancel' })
|
|
55
|
+
assert.equal((await invoke(module, 'cancelSyncTime', { id: 'cancel' })).success, true)
|
|
56
|
+
assert.deepEqual(cancelled, [])
|
|
57
|
+
assert.equal((await invoke(module, 'cancelGetWiFiList', { id: 'cancel' })).data, null)
|
|
58
|
+
assert.equal((await pending).error, 'E_BLE_REQUEST_CANCELLED')
|
|
59
|
+
assert.deepEqual(cancelled, ['wifi']); release([]); await tick()
|
|
60
|
+
})
|
|
61
|
+
test('request registry rejects duplicates, isolates devices, and ignores stale replies', async () => {
|
|
62
|
+
const registry = new Registry(); let oldRelease, newRelease; let cancels = 0
|
|
63
|
+
const old = registry.run('wifi:a', () => { cancels++ }, () => new Promise(resolve => { oldRelease = resolve }))
|
|
64
|
+
assert.equal(JSON.parse(await registry.run('wifi:a', () => {}, async () => assert.fail())).error, 'E_BLE_REQUEST_BUSY')
|
|
65
|
+
assert.equal(await registry.run('wifi:b', () => {}, async () => 'other'), 'other')
|
|
66
|
+
registry.cancel('wifi:a'); assert.equal(JSON.parse(await old).error, 'E_BLE_REQUEST_CANCELLED')
|
|
67
|
+
const next = registry.run('wifi:a', () => {}, () => new Promise(resolve => { newRelease = resolve }))
|
|
68
|
+
oldRelease('stale'); await tick(); newRelease('fresh'); assert.equal(await next, 'fresh'); assert.equal(cancels, 1)
|
|
69
|
+
})
|
|
70
|
+
test('bridge teardown cancels native requests and blocks new work', async () => {
|
|
71
|
+
const module = new Module(); let cancelled = 0
|
|
72
|
+
registered.set('close', { bleCapability: { syncTime: () => new Promise(() => {}), cancelSyncTime: () => { cancelled++ } } })
|
|
73
|
+
const pending = invoke(module, 'syncTime', { id: 'close' }); module.__onDestroy__()
|
|
74
|
+
assert.equal((await pending).error, 'E_BLE_REQUEST_CANCELLED'); assert.equal(cancelled, 1)
|
|
75
|
+
assert.equal((await invoke(module, 'syncTime', { id: 'close' })).error, 'E_BLE_REQUEST_CANCELLED')
|
|
76
|
+
})
|
|
77
|
+
test('native timeout errors stay distinct from successful empty Wi-Fi lists', async () => {
|
|
78
|
+
const module = new Module()
|
|
79
|
+
registered.set('failure', { bleCapability: { getWiFiList: async () => { throw new Error('BLE operation timed out') } } })
|
|
80
|
+
assert.equal((await invoke(module, 'getWiFiList', { id: 'failure' })).error, 'E_BLE_REQUEST_TIMEOUT')
|
|
81
|
+
registered.set('empty', { bleCapability: { getWiFiList: async () => [] } })
|
|
82
|
+
assert.equal((await invoke(module, 'getWiFiList', { id: 'empty' })).data.length, 0)
|
|
83
|
+
})
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Host regression tests for the production iOS bridge request registry."""
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
import subprocess
|
|
5
|
+
import tempfile
|
|
6
|
+
root = Path(__file__).resolve().parents[1]
|
|
7
|
+
tests = r'''
|
|
8
|
+
import Foundation
|
|
9
|
+
final class Results {
|
|
10
|
+
let lock = NSLock(); var values: [[String: Any]] = []
|
|
11
|
+
func append(_ value: [String: Any]) { lock.lock(); values.append(value); lock.unlock() }
|
|
12
|
+
func snapshot() -> [[String: Any]] { lock.lock(); defer { lock.unlock() }; return values }
|
|
13
|
+
}
|
|
14
|
+
actor Gate {
|
|
15
|
+
var continuation: CheckedContinuation<Void, Never>?
|
|
16
|
+
var opened = false
|
|
17
|
+
func wait() async { if opened { return }; await withCheckedContinuation { continuation = $0 } }
|
|
18
|
+
func open() { opened = true; continuation?.resume(); continuation = nil }
|
|
19
|
+
}
|
|
20
|
+
func eventually(_ check: () -> Bool) async {
|
|
21
|
+
for _ in 0..<200 { if check() { return }; try? await Task.sleep(nanoseconds: 1_000_000) }
|
|
22
|
+
precondition(check(), "Timed out")
|
|
23
|
+
}
|
|
24
|
+
@main struct Tests {
|
|
25
|
+
static func main() async {
|
|
26
|
+
let registry = BleRequestRegistry(); let results = Results(); let old = Gate(); let next = Gate()
|
|
27
|
+
let started = Results()
|
|
28
|
+
registry.start(key: "wifi:a", reply: results.append) {
|
|
29
|
+
started.append(["started": true]); await old.wait(); return ["success": true, "data": "stale"]
|
|
30
|
+
}
|
|
31
|
+
await eventually { started.snapshot().count == 1 }
|
|
32
|
+
registry.start(key: "wifi:a", reply: results.append) { fatalError("Duplicate ran") }
|
|
33
|
+
precondition(results.snapshot()[0]["error"] as? String == "E_BLE_REQUEST_BUSY")
|
|
34
|
+
registry.start(key: "time:a", reply: results.append) { ["success": true, "data": "time"] }
|
|
35
|
+
registry.start(key: "wifi:b", reply: results.append) { ["success": true, "data": "other-device"] }
|
|
36
|
+
await eventually { results.snapshot().count == 3 }
|
|
37
|
+
registry.cancel(key: "wifi:a")
|
|
38
|
+
precondition(results.snapshot().last?["error"] as? String == "E_BLE_REQUEST_CANCELLED")
|
|
39
|
+
registry.start(key: "wifi:a", reply: results.append) { await next.wait(); return ["success": true, "data": "new"] }
|
|
40
|
+
await old.open(); try? await Task.sleep(nanoseconds: 10_000_000)
|
|
41
|
+
precondition(results.snapshot().count == 4)
|
|
42
|
+
await next.open(); await eventually { results.snapshot().count == 5 }
|
|
43
|
+
precondition(results.snapshot().last?["data"] as? String == "new")
|
|
44
|
+
registry.cancel(key: "wifi:a"); precondition(results.snapshot().count == 5)
|
|
45
|
+
let closed = Gate()
|
|
46
|
+
registry.start(key: "time:a", reply: results.append) { await closed.wait(); return ["success": true] }
|
|
47
|
+
registry.close(); await closed.open(); try? await Task.sleep(nanoseconds: 10_000_000)
|
|
48
|
+
precondition(results.snapshot().count == 5)
|
|
49
|
+
registry.start(key: "wifi:a", reply: results.append) { fatalError("Closed registry ran") }
|
|
50
|
+
precondition(results.snapshot().last?["error"] as? String == "E_NATIVE_MODULE_UNAVAILABLE")
|
|
51
|
+
for _ in 0..<100 {
|
|
52
|
+
let instance = BleRequestRegistry(); let output = Results()
|
|
53
|
+
instance.start(key: "time:a", reply: output.append) { ["success": true] }
|
|
54
|
+
instance.cancel(key: "time:a")
|
|
55
|
+
await eventually { output.snapshot().count == 1 }
|
|
56
|
+
try? await Task.sleep(nanoseconds: 100_000)
|
|
57
|
+
precondition(output.snapshot().count == 1)
|
|
58
|
+
instance.close()
|
|
59
|
+
}
|
|
60
|
+
print("iOS BLE registry passed: duplicates, device/operation isolation, cancellation, stale replies, teardown and 100 completion/cancel races")
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
'''
|
|
64
|
+
with tempfile.TemporaryDirectory(prefix='rn-ble-swift-') as d:
|
|
65
|
+
p=Path(d);(p/'Tests.swift').write_text(tests)
|
|
66
|
+
subprocess.run(['swiftc','-swift-version','5','-module-cache-path',str(p/'cache'),str(root/'ios/BleRequestRegistry.swift'),str(p/'Tests.swift'),'-o',str(p/'test')],check=True)
|
|
67
|
+
subprocess.run([str(p/'test')],check=True)
|