文档管理中心

网络质量评估 (C/C++)

场景介绍

应用在订阅网络质量Qos评估后,系统按照一定的周期或Qos变化后回调给应用。回调的Qos信息包括数据传输的链路类型、上下行空口实时带宽、上下行空口实时速率、RTT时延等。

接口说明

具体API说明详见接口文档。

展开
接口名 描述
int32_t HMS_NetworkBoost_RegisterNetQosCallback(HMS_NetworkBoost_NetQosChange callback, uint32_t* callbackId) 注册Qos信息状态变化回调。
int32_t HMS_NetworkBoost_UnregisterNetQosCallback(uint32_t callbackId) 取消注册Qos信息状态变化回调。

开发步骤

  1. 导入Network Boost Kit模块。

    收起
    自动换行
    深色代码主题
    复制
    1. #include "NetworkBoostKit/network_boost_quality.h"
    2. #include <cstdio>
  2. CMakeLists.txt中添加以下lib,具体请见C API开发准备。

    收起
    自动换行
    深色代码主题
    复制
    1. libnetwork_boost.so
  3. 通过注册回调的方式监听网络质量评估信息。

    收起
    自动换行
    深色代码主题
    复制
    1. uint32_t callbackId = 0;
    2. void onNetworkQoSChanged(NetworkBoost_NetworkQosArray *msg)
    3. {
    4. for (int32_t i = 0; i < msg->pathNum; i++) {
    5. // 回调信息处理
    6. printf("数据链路类型: %d\n", msg->networkQos[i].pathType);
    7. printf("该数据链路类型的上行带宽: %ld\n", msg->networkQos[i].linkUpBandwidth);
    8. printf("该数据链路类型的下行带宽: %ld\n", msg->networkQos[i].linkDownBandwidth);
    9. // 单位为bps,若需转化为B/s,数值需要除以8
    10. printf("该数据链路类型的上行速率: %ld\n", msg->networkQos[i].linkUpRate);
    11. // 单位为bps,若需转化为B/s,数值需要除以8
    12. printf("该数据链路类型的下行速率: %ld\n", msg->networkQos[i].linkDownRate);
    13. // 实时速率为上行速率和下行速率之和
    14. printf("该数据链路类型的实时速率(B/s): %ld\n", (msg->networkQos[i].linkUpRate + msg->networkQos[i].linkDownRate) / 8);
    15. printf("该数据链路类型的RTT时延: %d\n", msg->networkQos[i].rttMs);
    16. printf("该数据链路类型的上行发送空口缓冲时延: %d\n", msg->networkQos[i].linkUpBufferDelayMs);
    17. }
    18. }
    19. int32_t RegisterNetQualityCallback()
    20. {
    21. HMS_NetworkBoost_NetQosChange callback;
    22. callback = onNetworkQoSChanged;
    23. // 注册回调,获取回调Id,该Id由系统返回并用于后续取消注册操作
    24. int32_t ret = HMS_NetworkBoost_RegisterNetQosCallback(callback, &callbackId);
    25. printf("注册网络质量结果: %d, Id:%d\n", ret, callbackId);
    26. return ret;
    27. }
  4. 当应用业务流程结束,通过取消注册的方式取消监听网络质量评估信息。

    收起
    自动换行
    深色代码主题
    复制
    1. int32_t UnregisterNetQualityCallback()
    2. {
    3. // 使用注册时获取的回调Id取消注册
    4. int32_t ret = HMS_NetworkBoost_UnregisterNetQosCallback(callbackId);
    5. printf("取消注册网络质量结果: %d\n", ret);
    6. return ret;
    7. }