20. 网络模块升级功能

网络模块信息、网络模块升级等操作

20.1. 是否支持网络模块功能

//Step0. WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
WatchManager watchManager = WatchManager.getInstance();
//Step1. 获取缓存的手表配置信息
WatchConfigure configure = watchManager.getWatchConfigure(watchManager.getConnectedDevice());
if (null == configure) {
    //可以尝试向设备请求一次
    watchManager.requestDeviceConfigure(new OnWatchOpCallback<WatchConfigure>() {
        @Override
        public void onSuccess(WatchConfigure result) {
            //获取手表配置信息成功
        }

        @Override
        public void onFailed(BaseError error) {
            //获取手表配置信息失败
            //error -- 错误信息
        }
    });
    return;
}
configure.getFunctionOption().isSupportNetworkModule(); //是否支持网络模块

20.2. 查询网络模块基础信息

//Step0. WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
WatchManager watchManager = WatchManager.getInstance();
//Step1. 初始化网络模块升级操作对象
NetworkOpImpl networkOp = NetworkOpImpl.instance(watchManager);
//Step2. 注册网络事件监听器
final OnNetworkListener listener = new OnNetworkListener() {
    @Override
    public void onNetworkInfo(BluetoothDevice device, NetworkInfo info) {
        //回调网络模块基础信息
//        info.getVid();         //4G模块厂商ID
//        info.isMandatoryOTA(); //是否需要强制升级, 升级失败后触发
//        info.getVersion();     //4G模块版本号
    }

    @Override
    public void onNetworkOTAState(BluetoothDevice device, NetworkOTAState state) {
        //回调网络模块升级状态
    }
};
networkOp.addOnNetworkListener(listener);
//Step3. 执行查询网络信息接口,并等待结果回调
networkOp.queryNetworkInfo(watchManager.getConnectedDevice(), new OnOperationCallback<Boolean>() {
    @Override
    public void onSuccess(Boolean result) {
        //回调操作成功结果
    }

    @Override
    public void onFailed(BaseError error) {
        //回调操作失败
        //error -- 错误描述
    }
});
//StepN. 不需要监听时移除监听器
//    networkOp.removeOnNetworkListener(listener);

20.2.1. 获取缓存的网络模块信息

//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
WatchManager watchManager = WatchManager.getInstance();
final DeviceInfo deviceInfo = watchManager.getDeviceInfo();
if (null == deviceInfo) return; //设备未初始化完成
//获取网络模块信息
final NetworkInfo networkInfo = deviceInfo.getNetworkInfo();
if(null == networkInfo){//设备不支持网络模块功能
    //可能还没更新,也可以按照上面接口查询下
    return;
}

20.3. 开始网络模块OTA

//Step0. WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
WatchManager watchManager = WatchManager.getInstance();
//Step1. 初始化网络模块升级操作对象
NetworkOpImpl networkOp = NetworkOpImpl.instance(watchManager);
if (networkOp.isNetworkOTA()) {
    //正在OTA
    return;
}
//执行开始网络OTA
//filePath --- 4G模块升级文件路径
networkOp.startNetworkOTA(watchManager.getConnectedDevice(), new OTAParam(filePath), new OnNetworkOTACallback() {
    @Override
    public void onStart() {
        //回调OTA开始
    }

    @Override
    public void onProgress(int progress) {
        //回调OTA进度
    }

    @Override
    public void onCancel() {
        //回调OTA被取消
    }

    @Override
    public void onStop() {
        //回调OTA成功
    }

    @Override
    public void onError(int code, String message) {
        //回调OTA异常
        //code --- 错误码
        //message --- 错误描述
    }
});

Important

  1. 必须设备支持4G模块才能进行功能操作

  2. 升级过程中不能执行其他命令操作

20.4. 网络模块OTA异常回调

//Step1. WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
 WatchManager watchManager = WatchManager.getInstance();
 //Step2. 注册手表事件监听器
 final OnWatchCallback watchCallback = new OnWatchCallback() {
     @Override
     public void onNetworkModuleException(BluetoothDevice device, NetworkInfo info) {
         //回调升级模块升级异常,需要强制升级
         //info --- 网络模块基本信息
     }
 };
 watchManager.registerOnWatchCallback(watchCallback);

 //StepN. 不需要监听时注销监听器
 //        watchManager.unregisterOnWatchCallback(watchCallback);

20.5. 网络模块OTA接口流程图

网络模块OTA接口流程图

20.6. 网络模块升级包差分升级策略

网络模块差分升级策略

sdk_map.json

  {
      "cursdk": {
        "version": "gx318l_h6_v0022_p7",
        "vendor": "归芯科技",
        "chip": "BR28"
    },
    "map": [
        {
            "version": "gx318l_h6_v0022_p5",
            "pakage": "gx318l_h6_v0022_p5_to_gx318l_h6_v0022_p7.diff"
        },
  {
            "version": "gx318l_h6_v0022_p6",
            "pakage": "gx318l_h6_v0022_p6_to_gx318l_h6_v0022_p7.diff"
        }
    ]
}

字段说明

参数

含义

cursdk

包含当前包信息,例如:版本号、供应商信息等

map

映射规则,里面已数组形式提供