设备SDK升级指引

一、V6200升级到V6220

更新内容

1. 新增模组识别码 identify

应用场景:

  1. 用于区别同一产品不同模组的使用,如同一产品下,使用了不同系列或不同厂家的模组A和模组B;
  2. 用于区别同一模组不同类型的固件,如模组A有N个不同的分区,user1.bin/user2.bin/…/userN.bin;
    定义:xlink_sdk_instance_t 中的 identify
typedef struct xlink_sdk_instance {
//device product id
xlink_uint8 *dev_pid;
//device product key
xlink_uint8 *dev_pkey;
...
//device identify
xlink_uint32 identify;
} xlink_sdk_instance_t;

2. 新增OTA升级接口

应用场景:

  1. 远程升级WiFi固件;

  2. 远程升级MCU固件;

  3. 本地升级WiFi固件;

  4. 本地升级MCU固件;
    相关宏定义:

  5. 新增事件 event 定义 EVENT_TYPE_SERVER_ASK_DEVICE_OTA | EVENT_TYPE_CHECK_OTA_TASK | EVENT_TYPE_CHECK_OTA_TASK_CB |EVENT_TYPE_REPORT_OTA_UPGRADE_RESULT

    //xlink sdk event enum
    typedef xlink_enum {
        EVENT_TYPE_STATUS = 0,
        ...
        EVENT_TYPE_SERVER_ASK_DEVICE_OTA,
        EVENT_TYPE_CHECK_OTA_TASK,
        EVENT_TYPE_CHECK_OTA_TASK_CB,
        EVENT_TYPE_REPORT_OTA_UPGRADE_RESULT
    } xlink_enum_event_type_t;
  6. 新增OTA升级固件类型说明

    typedef xlink_enum {
        FIRMWARE_TYEP_WIFI =1,
        FIRMWARE_TYEP_MCU,
        FIRMWARE_TYEP_SUBDEV
    }xlink_ota_firmware_type_t;
  7. 新增OTA升级来源,是云端或是本地APP

    typedef xlink_enum {
        FROM_TYEP_LOCAL = 0,
        FROM_TYEP_CLOUD = 1
    }xlink_ota_from_type_t;
  8. 新增云端/本地APP请求设备进行OTA升级,设备下一步需要进行查询OTA任务

    typedef struct xlink_ask_device_ota_package{
        xlink_uint8     from;
        xlink_uint8     firmware_type;
    }xlink_ask_device_ota_package_t;
  9. 新增设备OTA向云端/本地APP请求查询OTA任务

    typedef struct xlink_ota_task_check_package{
        xlink_uint8     from;
        xlink_uint8     firmware_type;
        xlink_uint16    version;
        xlink_uint32    identify;
    }xlink_ota_task_check_package_t;
  10. 新增OTA查询返回结果说明

    typedef struct xlink_ota_task_check_ack_package{
        xlink_uint8     from;
        xlink_uint8     code;
        xlink_uint8     firmware_type;
        xlink_uint16    current_version;
        xlink_uint32    identify;
        xlink_uint16    task_id_length;
        xlink_uint8*    task_id;
        xlink_uint16    target_version;
        xlink_uint16    target_md5_length;
        xlink_uint8*    target_md5;
        xlink_uint16    target_url_length;
        xlink_uint8*    target_url;
        xlink_uint32    target_size;
    }xlink_ota_task_check_ack_package_t;
  11. 新增OTA查询返回结果中 code 说明

    typedef xlink_enum {
        OTA_CHECK_SUCCESS = 1,
        OTA_UNKNOWN_FIRMWARE_TYPE,
        OTA_UNKNOWN_DEVICE,
        OTA_NO_TASK
    } xlink_enum_ota_check_ack_code_t;
  12. 新增设备OTA上报升级结果说明

    typedef struct xlink_ota_report_upgrade_result_package{
        xlink_uint8     from;
        xlink_uint8     result;
        xlink_uint8     firmware_type;
        xlink_uint8     mod;
        xlink_uint16    current_version;
        xlink_uint16    original_version;
        xlink_uint32    identify;
        xlink_uint16    task_id_length;
        xlink_uint8     *task_id_str;
    }xlink_ota_report_upgrade_result_package_t;
  13. 新增事件回调或请求的OTA相关的定义

    //xlink sdk event struct
    typedef struct xlink_sdk_event {
        xlink_enum_event_type_t enum_event_type_t;
        xlink_union {
            xlink_status_t status;
            ...
            xlink_ask_device_ota_package_t ask_device_ota_package_t;
            xlink_ota_task_check_package_t ota_task_check_package_t;
            xlink_ota_task_check_ack_package_t ota_task_check_ack_package_t;
            xlink_ota_report_upgrade_result_package_t ota_report_upgrade_result_package_t;
            ...
        } event_struct_t;
    } xlink_sdk_event_t;

其他说明:
OTA相关的接口跟原来的事件接口 EVENT_TYPE_UPGRADE_CB | EVENT_TYPE_UPGRADE_COMPLETE 并不冲突,新增的OTA接口不仅兼容原来是事件请求,更扩充了标识码升级的相关功能;开发者利用OTA接口可获取到WiFi或MCU的固件升级信息,建议开发者在开发/使用时,对不同模组或固件做好标识码区分;

3. 新增设备上报固件版本接口

应用场景:

用于上报WiFi固件版本或MCU固件版本,支持多个上报

相关宏定义

typedef struct xlink_upgrade_version_package{
    xlink_uint8     firmware_type;
    xlink_uint8     mod;
    xlink_uint32    identify;
    xlink_uint16    version;
}xlink_upgrade_version_package_t;

函数接口

/*
 * count : 设备上报的数量
 * data : 传入组合型的 xlink_upgrade_version_package_t 定义的数据包组合
 */
XLINK_FUNTION xlink_int32 xlink_update_current_verison(struct xlink_sdk_instance** sdk_instance, xlink_uint8 id_count, void * data);

4. 规范了SDK所有的宏定义,部分不兼容以前的版本,需要开发者修正;

5. 优化了SDK内存分配;

6. 修复了因不同模组带来的部分兼容性问题;

二、V6000升级到V6200

更新内容

1. 增加订阅使能接口

调用此接口,能限制APP订阅设备,可以通过此接口配置成使能1-300秒(仅限于XLINK_SDK_V6200以上版本)。

XLINK_FUNTION extern xlink_int32 xlink_enable_local_subscription(struct xlink_sdk_instance_t **sdk_instance, xlink_uint16 time);

2. 新添订阅失能接口

调用此接口,能关闭设备的订阅功能,仅能通过其他已配对的APP分享添加(仅限于XLINK_SDK_V6200以上版本)。

XLINK_FUNTION extern xlink_int32 xlink_disable_local_subscription(struct xlink_sdk_instance_t **sdk_instance);

3. 新添 pinCode 校验码接口

pinCode 的主要用途是用于校验一些特殊的功能和信息,若不设置设备的 pinCode,需要将pinCode_length设置为0,否则程序可能会出错;
注意设备的 pinCode 是厂商决定的,调用此接口,能设置特定的 pingcode ,pingcode 最大长度是尽可能在32以内,也可以设置更大,但对硬件有相应的要求;具体设计可查看相应的demo(该接口仅限于XLINK_SDK_V6200以上版本)。

typedef struct xlink_sdk_instance_t {
//device product id
xlink_uint8 *dev_pid;
//device product key
xlink_uint8 *dev_pkey;
...
//pingcode_length
xlink_uint16 pingcode_length; // new add
//device pingcode
xlink_uint8 *pingcode;  // new add
} xlink_sdk_instance_t;

4. event事件类型增加订阅类型和部分修改

5. 优化了网内发现和通讯机制,使用上对开发者没有影响

6. 新增了flash的读写内容,总大小约400Kb左右,开发者需注意

7. 优化了订阅功能,此次更新的订阅接口,需Device_SDK_V6200需要结合APP_SDK_V6.2以上才能正常使用;

三、迁移指引

  1. 替换设备端SDK_V6的库文件,包括xlinkv6.a和xlink_sdk.h;
  2. 针对event事件进行代码修改,event详情见开发指南,代码参考最新demo工程;
  3. 需要更新对应厂商所提供的最新的SDK;

四、更新说明

日期 更新内容
2018/3/12 新增V5000升级到V6000版本
2018/9/17 新增V6000升级到V6200版本
2018/12/12 新增V6200升级到V6220版本
没找到需要的文档?
你可以提交工单反馈 或 阅读常见问题