# Example code

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

## Java

**Required Imports**

import com.qualcomm.qti.qesdkIntf.IQesdk;
    import com.qualcomm.qti.qesdk.QesdkStatusException; 
    import com.qualcomm.qti.qesdk.Location.PP_RTKUDT; 
    import com.qualcomm.qti.qesdk.Location.IPP_RTKCBs; 
    import com.qualcomm.qti.qesdk.Location.PP_RTKEnums;
    import com.qualcomm.qti.qesdk.Location.PP_RTKManager;
    import com.qualcomm.qti.qesdk.Location.PP_eDGNSSUDT; 
    import com.qualcomm.qti.qesdk.Location.IPP_eDGNSSCBs; 
    import com.qualcomm.qti.qesdk.Location.PP_eDGNSSEnums;
    import com.qualcomm.qti.qesdk.Location.PP_eDGNSSManager;Copy to clipboard

**Declare required objects**

private IQesdk mQesdkManager;
    private PP_eDGNSSManager mPpeEdgnssManager;
    private PP_RTKManager mPpeRtkManager;Copy to clipboard

**Create the QESDK Manager Instance and intialize**

mQesdkManager = IQesdk.createInstance(this);Copy to clipboard

**Create eDGNSS and RTK Manager Instance**``

mPpeEdgnssManager = new PP_eDGNSSManager(mQesdkManager);
    int status = PP_eDGNSSManager.init([String license], (opcodes, subsystem) -> {
        // Handle QESDK event
    });
    mPpeRtkManager = new PP_RTKManager(mQesdkManager);
    int status = PP_RTKManager.init([String license], (opcodes, subsystem) -> {
        // Handle QESDK event
    });Copy to clipboard

**Setup callbacks**

IQesdkEventCallBack eventCallbackHandler = new IQesdkEventCallBack() { @Override
    public void onEvent(int opcode, int[] subsys) {
    // Handle QESDK event
    }
    };
    private IPP_RTKCBs.ILocationReportCallback rtkLocationReportCallback = new IPP_RTKCBs.ILocationReportCallback() {
    @Override
    public void onValues(PP_RTKUDT.Location location) {
    // Handle RTK location report callback
    }
    };Copy to clipboard

**Configure the native NTRIP client if required (OEM apps only)**

    // enable Native NTRIP client
    mPpeEdgnssManager.enablePPENtripStream(
                hostNameOrIp, mountPoint,
                username, password, port,
                requiresNmeaLocation, useSSL,
                enableRTKEngine);
                            
    // Disable Native NTRIP client
    mPpeEdgnssManager.disablePPENtripStream();Copy to clipboard

**Register as correction data provider**

    mPpeEdgnssManager.registerAsCorrectionDataSource(
                correctionDataType, streamingControlCallback);Copy to clipboard

**Deregister as correction data provider**

    mPpeEdgnssManager.deRegisterAsCorrectionDataSource();Copy to clipboard

**Send                    request for precise location updates**

mPpeRtkManager.requestPreciseLocationUpdates( minIntervalMillis, rtkLocationReportCallback);Copy to clipboard

**Remove request for precise location updates**

mPpeRtkManager.removePreciseLocationUpdates(rtkLocationReportCallback)Copy to clipboard

## Native

**Required includes**

#include "qesdk_ndk.h"
    #include "qesdk_Location_PP_RTK.h"
    #include "qesdk_Location_PP_eDGNSS.h"Copy to clipboard

**Initialize**

PP_RTKManager *rtkManager = new PP_RTKManager();
    PP_eDGNSSManager *edgnssManager = new PP_eDGNSSManager();
    int ret = edgnssManager->init(licenseStr, 
                               license_length,
                               [](uint32_t opcodes, uint32_t *subsystems) { 
    // Callback to handle init events
    });
    int ret = rtkManager->init(licenseStr, 
                               license_length,
                               [](uint32_t opcodes, uint32_t *subsystems) { 
    // Callback to handle init events
    });Copy to clipboard

**Setup callbacks**

void event_callback_handler(uint32_t opcode, uint32_t subsys[]) {
    // Callback to handle QESDK events
    }
    void rtk_LocationReportCallback(pp_rtk_Location location){
    // Handle RTK location report callback
    }Copy to clipboard

**Register as correction data provider**
pp_edgnss_LocationStatus ret = pp_edgnss_LocationStatus::QESDK_GENERIC_FAILURE;
    qesdk_transaction_status qesdk_ndk_response = edgnssManager-
    >registerAsCorrectionDataSource((pp_edgnss_CorrectionDataType)correction_data_ type, edgnss_CorrectionStreamingControlCallback, ret); 
    if(qesdk_ndk_response.is_ok()){
      // Use the ret value
    } else {
      // Can get error code by get_error_code() 
    }Copy to clipboard

**Deregister as correction data                    provider**

    qesdk_ndk_response = edgnssManager->deRegisterAsCorrectionDataSource, ret); 
    if(qesdk_ndk_response.is_ok()){
      // Use the ret value
    } else {
      // Can get error code by get_error_code() 
    }Copy to clipboard

**Send request for precise location updates**

pp_rtk_LocationStatus ret = pp_rtk_LocationStatus::QESDK_GENERIC_FAILURE;
    qesdk_ndk_response = rtkManager->requestPreciseLocationUpdates(min_interval_ms, rtk_LocationReportCallback, ret); 
    if(qesdk_ndk_response.is_ok()){
      // Use the ret value
    } else {
      // Can get error code by get_error_code() 
    }Copy to clipboard

**Remove request for precise location updates**

qesdk_ndk_response = rtkManager->removePreciseLocationUpdates(rtk_LocationReportCallback, ret); 
    if(qesdk_ndk_response.is_ok()){
      // Use the ret value
    } else {
      // Can get error code by get_error_code() 
    }Copy to clipboard

**Parent Topic:** [RTK](https://docs.qualcomm.com/doc/80-PK177-134/topic/rtk.html)

Last Published: Nov 14, 2024

[Previous Topic
Location report](https://docs.qualcomm.com/bundle/publicresource/80-PK177-134/topics/location_report_rtk.md) [Next Topic
GTP](https://docs.qualcomm.com/bundle/publicresource/80-PK177-134/topics/gtp.md)