跳到主要内容

Android 设备初始化 SDK

SDK Version: 1.0.0
Package: com.xtalk.mesh.sdk.deviceinit

Init SDK 在认证成功后写入设备默认参数。它不负责扫描、连接、Challenge 认证或 DID 读取。

BLE 默认参数

val initialized = withContext(Dispatchers.IO) {
DeviceInitializer.initializeBleWirelessDefaults(
radioTransport = radioTransport,
defaults = DeviceInitializer.BleWirelessDefaults(
freqHz = meshFrequencyHz,
rateMode = 7,
bcnId = 0,
addtl = 1,
workMode = 21,
),
)
}

默认值为:

字段默认值含义
freqHz470250000四路默认频率,单位 Hz
rateMode7无线速率模式
bcnId0Beacon ID
addtl1地址附加设置
workMode21工作模式

客户应使用项目获准的频率配置,不要直接把示例频率作为所有地区的生产配置。返回 true 表示全部默认命令收到 OK,并且 BLE 已进入可发送状态。

UART 默认参数

val initTransport = object : DeviceInitializer.AtCommandTransport {
override val label: String = "uart"
override fun runAtCommand(
command: String,
timeoutMs: Long,
log: Boolean,
): List<String> = myUart.runAtCommand(command, timeoutMs, log)
}

val defaults = DeviceInitializer.initializeUartDefaultsAfterAuth(
transport = initTransport,
deviceLongId = auth.deviceLongId,
defaults = DeviceInitializer.UartDefaults(addtl = 1),
)

deviceLongId 必须来自成功的认证结果。缺少 DID 时 SDK 返回 missing_did,不会下发命令。

UART 厂家配置

val vendor = DeviceInitializer.initializeUartVendorConfigAfterAuth(
transport = initTransport,
deviceLongId = auth.deviceLongId,
hostProfile = DeviceInitializer.AndroidHostProfile.current(),
tecnoUartPaEnabled = false,
timeoutMs = 3_000L,
)

SDK 1.0.0 内置 Ulefone 与 TECNO 主机匹配。无匹配配置时返回 ok = trueapplied = falsereason = "no_vendor_config",表示无需处理,不是错误。

失败处理

  • 初始化失败后不要开始业务发送。
  • 确认连接仍有效,再决定重试一次或断开重连。
  • 不要同时运行 Auth、Init、OTA 和自定义 AT 操作。
  • 设备重启或重新连接后必须重新执行 Auth → Init。

完整模型与接口契约

类型/API默认或参数行为与结果
AndroidHostProfilemanufacturer, brand, modelcurrent() 读当前主机;matches(keyword) 忽略大小写匹配 manufacturer/brand
BleWirelessDefaultsfreqHz=470250000, rateMode=7, bcnId=0, addtl=1, workMode=21BLE 五项默认;频率须替换为获准值
UartDefaultsaddtl=1UART 通用默认
VendorAtConfigvendor, signature, commands厂家选择结果,commands 按顺序执行
Resultok, applied, signature, reason, commands=[]UART 可观察结果;ok=true/applied=false 可表示无需配置
initializeBleWirelessDefaults(radioTransport, defaults)Auth 成功;后台线程依次 ADDTL/FREQ/RATE/BCNID/WORKMODE;全部 OK 才返回 true 并设置 ready
selectUartVendorConfig(hostProfile, tecnoUartPaEnabled=false)纯函数Ulefone/TECNO 配置或 null;不发命令
initializeUartVendorConfigAfterAuth(...)UART Auth、DID 非空;默认 timeoutMs=3000应用厂家命令并返回 Result
initializeUartDefaultsAfterAuth(...)UART Auth、DID 非空;默认 timeoutMs=2000应用 ADDTL 并返回 Result
RadioAtCommandTransport(radioTransport)已有统一 transport委托给 RadioTransport.runAtCommand

UART reason:ok 成功应用;no_vendor_config 无需应用;missing_did 不发送命令;command_no_ok 有响应但无成功终止;command_failed 为异常/超时。只有 ok == true 才继续,applied 记录是否实际下发。

BLE 任一命令失败都会清 ready。确认仍 CONNECTED 后最多完整重试一次,再失败则重连并重做 Auth → Init。missing_did 必须回到 Auth。Init 没有独立 cancel;取消流程时等待当前命令期限结束并跳过后续命令。

查看 API 接口参考