Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

固件更新比较慢 #17

Open
Tywei24 opened this issue Jan 28, 2019 · 7 comments
Open

固件更新比较慢 #17

Tywei24 opened this issue Jan 28, 2019 · 7 comments

Comments

@Tywei24
Copy link

Tywei24 commented Jan 28, 2019

你好,
在做固件更新中,我用此方法往设备写入数据。
XmBluetoothManager.getInstance().writeNoRsp(mDeviceMac, UUID.fromString(MMCGattAttributes.SENSOR_SERVICE_UUID_OAD),
UUID.fromString(MMCGattAttributes.SENSOR_SPOTA_SERV_PATCH_DATA),
chunk, new Response.BleWriteResponse() {
@OverRide
public void onResponse(int code, Void data) {

                }
            });

但是在广播包它public static final String ACTION_CHARACTER_CHANGED = "com.xiaomi.smarthome.bluetooth.character_changed";接收数据返回的状态中。时间需要100ms左右,我该如何提升更新的速度呢?

@Tywei24
Copy link
Author

Tywei24 commented Jan 28, 2019

这是每次回调过来的时间差值。开始时间在写数据之前,结束时间在回调开始。
01-28 16:37:39.608 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: cur otAcount:75
01-28 16:37:39.609 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: sendBlock75
01-28 16:37:39.704 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: 看下block_num的值2发一个数据的时间95ms
01-28 16:37:39.704 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: cur otAcount:76
01-28 16:37:39.704 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: sendBlock76
01-28 16:37:39.819 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: 看下block_num的值2发一个数据的时间115ms
01-28 16:37:39.819 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: cur otAcount:77
01-28 16:37:39.819 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: sendBlock77
01-28 16:37:39.940 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: 看下block_num的值2发一个数据的时间121ms
01-28 16:37:39.940 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: cur otAcount:78
01-28 16:37:39.940 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: sendBlock78
01-28 16:37:40.054 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: 看下block_num的值2发一个数据的时间114ms
01-28 16:37:40.054 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: cur otAcount:79
01-28 16:37:40.055 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: sendBlock79
01-28 16:37:40.199 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: 看下block_num的值2发一个数据的时间144ms
01-28 16:37:40.199 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: cur otAcount:80
01-28 16:37:40.199 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: sendBlock80
01-28 16:37:40.320 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: 看下block_num的值2发一个数据的时间121ms
01-28 16:37:40.321 5028-5028/com.xiaomi.smarthome:plugin0 E/tywei: cur otAcount:81

@M201370367
Copy link
Contributor

M201370367 commented Jan 28, 2019

Tywei24 ,确认下,你说的“时间需要100ms左右”,该时间是从收到广播ACTION_CHARACTER_CHANGED后到onResponse的时间,还是从writeNoRsp开始到onResponse的时间?

@Tywei24
Copy link
Author

Tywei24 commented Jan 29, 2019

从写开始,到收到广播ACTION_CHARACTER_CHANGED的时间

@M201370367
Copy link
Contributor

可以尝试下减少每次写入的数据size;其他方面来讲,mijiaSDK使用的是原生Android蓝牙的发送接口,目前暂时没有很好的办法在mijiaSDK来优化该时间。

@Tywei24
Copy link
Author

Tywei24 commented Jan 29, 2019

因为不能设置mtu的原因,(大包传入不了)现在每次写入一个数据包,大小为20byte。回调接收正确的状态时,再写入下一个。导致固件更新很慢。(总的数据包有60045byte)

@Tywei24
Copy link
Author

Tywei24 commented Jan 29, 2019

我现在做的是插件,不是mijiaSDK。

@wangchongwhut
Copy link
Contributor

可以做分包处理,每个数据包添加一个标记,使用writeNoRsp方法,写完后不用等返回继续写,最后重试写失败的数据包

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants