# 示例代码

Source: [https://docs.qualcomm.com/doc/80-PK177-134Y/topic/example_code.html](https://docs.qualcomm.com/doc/80-PK177-134Y/topic/example_code.html)

关于 LLM API 用法的示例代码。

## Java

**需要导入**

    import com.qualcomm.qti.qesdkIntf.IQesdk;
            import com.qualcomm.qti.qesdk.Modem.ILinkLatencyCBs;
            import com.qualcomm.qti.qesdk.Modem.LinkLatencyEnums.level;
            import com.qualcomm.qti.qesdk.Modem.LinkLatencyEnums.slotId;
            import com.qualcomm.qti.qesdk.Modem.LinkLatencyManager;
            import com.qualcomm.qti.qesdk.QesdkStatusException;Copy to clipboard

**声明需要对象**

    private IQesdk mQesdkManager; 
            private LinkLatencyManager llmManager;Copy to clipboard

**创建 QESDK 管理器实例**

    mQesdkManager = IQesdk.createInstance(this);
            int statusId = mQesdkManager.init(eventCallbackHandler);Copy to clipboard

**根据需要创建 LLM 实例**

    llmManager = new LinkLatencyManager(qesdkManager);Copy to clipboard

**设置回调**

    void event_callback_handler(uint32_t opcode, uint32_t subsys[]) {
                    // Callback to handle QESDK events
                    }
                    
                    void effectiveLevelsCallback (llm_level uplink, llm_level downlink){
                    // Handle effective LLM levels callback
                    }
                    
                    void filterStatusCallback(uint32_t id, llm_filterStatusEnum status, std::string statusString) {
                    // Handle LLM filter Status callback
                    }
                    
                    void filterInfoCallback(uint32_t id, llm_filterStatusEnum status, std::string statusString,
                    llm_level uplink, llm_level downlink, uint32_t pdcpTimer, llm_oodEnum ood) {
                    // Handle LLM filter Info callback
                    }
                    
                Copy to clipboard

**使默认数据卡优先**

    int ret = llmManager.prioritizeDefaultDataSubscription(true);Copy to clipboard

**设置延迟级别**

    ret = llmManager.setLevel(simSlot, upLinkEnum, downLinkEnum, connection_ext, effectiveLevelsCallback)Copy to clipboard

**添加滤波器**

    llmManager.addFilter(srcIp,dstIp,srcPort,dstPort,protocolEnum,dscp,upLinkEnum,downLinkEnum,pdcpTimer,oodEnum,new ILinkLatencyCBs.IfilterStatus(){
            @Override
            public void onValues(long l, DataPathPriorityEnums.flowStatusEnum flowStatusEnum, String s) {
            
            }
            });Copy to clipboard

**获取滤波器**

    llmManager->getFilters(filterInfoCallback);
            To update Latency Level for the Filter  
            llmManager->updateLatencyLevel(id, (llm_level) uplink, (llm_level) downlink);
            To update Ood for the Filter  
            llmManager->updateOod(id, (llm_oodEnum) ood);
            To update Pdcp Timer for the Filter 
            llmManager->updatePdcpTimer(id, pdcp_timer); Copy to clipboard

**更新 DDS 的 OOD**

    llmManager->updateOodForDds((llm_oodEnum) ood);Copy to clipboard

**删除单个流程**

    llmManager->deleteFilter(FilterID);Copy to clipboard

**删除所有流程**

    llmManager->deleteAllFilter();Copy to clipboard

**更新 PDCP 定时器**

    llmManager->updatePdcpTimerForDds(pdcp_timer);Copy to clipboard

**启用高性能游戏**

    llmManager->enableHighPerformanceGaming(enable);Copy to clipboard

## 原生

**需要包括的内容**

    #include "qesdk_ndk.h"
            #include "qesdk_Modem_LinkLatency.h"Copy to clipboard

**初始化**

    qesdk_handle_t qesdk_handle = qesdk_init(nativeLicense, len, event_callback_handler);
            LinkLatencyManager *llmManager = new LinkLatencyManager();
            int ret = llmManager->init(nativeLicense, len, event_callback_handler);Copy to clipboard

**设置回调**

    void event_callback_handler(uint32_t opcode, uint32_t subsys[]) {
            // Callback to handle QESDK events
            }
            
            void effectiveLevelsCallback (llm_level uplink, llm_level downlink){
            // Handle effective LLM levels callback
            }Copy to clipboard

**使默认数据卡优先**

    int ret = llmManager->prioritizeDefaultDataSubscription(enable);Copy to clipboard

**设置延迟级别**

    ret = llmManager->setLevel(sim_slot, up_link_enum, down_link_enum, connection_ext, effectiveLevelsCallback);Copy to clipboard

**添加滤波器**

    llmManager->addFilter(reinterpret_cast<const char *>(src_ip),
            reinterpret_cast<const char *>(dst_ip), src_port, dst_port, (llm_protocolEnum)protocol, dscp, (llm_level)uplink, (llm_level)downlink, (uint32_t)pdcp_timer, (llm_oodEnum)ood, filterStatusCallback);Copy to clipboard

**Parent Topic:** [链路延迟管理器 (Link latency manager)](https://docs.qualcomm.com/doc/80-PK177-134Y/topic/llm.html)

Last Published: Jun 22, 2023

[Previous Topic
QESDK 异常](https://docs.qualcomm.com/bundle/publicresource/80-PK177-134Y/topics/java_exceptions.md) [Next Topic
QESDK 原生 API 概述](https://docs.qualcomm.com/bundle/publicresource/80-PK177-134Y/topics/native_api.md)