# Interfaces

Source: [https://docs.qualcomm.com/doc/80-70014-7/topic/qsh_api_reference.html](https://docs.qualcomm.com/doc/80-70014-7/topic/qsh_api_reference.html)

The important QSH functions, classes, methods, and data structures are a few QSH
            interfaces described here. These QSH interfaces are available for working with any kind
            of hardware-based, software-based, pre-existing, or any other QSH-compliant sensors.

The QSH framework runs on the low-power processors and exposed APIs at application
            processor. The QSH client APIs
            are for the applications and the QSH sensor API is for the development of new sensors on
            a low-power processor.

## QSH client APIs at application processor

Source: [https://docs.qualcomm.com/doc/80-70014-7/topic/qsh_api_reference.html](https://docs.qualcomm.com/doc/80-70014-7/topic/qsh_api_reference.html)

The QSH APIs provide a simple and easy interface to the client code that enables the QSH
            functionality and develops an end-to-end sensor use case. The QSH supports the following
            APIs:

**getSession()**

This API creates a session instance and returns a pointer to it. On success, the function
            returns a pointer to an `ISession` object that represents the created
            session. On failure, it returns `nullptr`.

**Syntax**

    ISession* getSession();Copy to clipboard

**Parameters**

None.

**Response**

| **Return** | **Description** |
| --- | --- |
| `ISession*` | `ISession*`: Object upon success<br><br><br>                                <br>`-nullptr`: Upon failure |

**Open()**

This API opens the session instance, establishes and initializes the communication
            between the client and the QSH framework. The client must call this function only once
            for a given session. The function returns `0` if the session opens
            successfully, or `-1` if there is an error.

**Syntax**

    int open();Copy to clipboard

**Parameters**

None.

**Response**

| **Return** | **Description** |
| --- | --- |
| `int ` | `0`:  Upon success<br><br><br>                                <br>`-1`: Upon failure |

**Close()**

This API closes the sensor session, terminates the communication between the client and
            the QSH framework. The client must call this function at the end of the session to
            release the resources and avoid memory leaks. The function does not take any
            parameter.

**Syntax**

    void close();Copy to clipboard

**Parameters**

None.

**Response**

| **Return** | **Description** |
| --- | --- |
| `void` | None |

**setCallBacks()**

This API sets the callbacks for a given SUID. A client must call this function only once
            for a SUID. If the callback pointers are already registered with the given SUID, then
            they are updated with the new callbacks. If all callback pointers are null and the given
            SUID is already registered, then it is unregistered.

**Syntax**

    virtual int setCallBacks(suid suid, respCallBack respCB, errorCallBack errorCB, eventCallBack eventCB) = 0;Copy to clipboard

**Parameters**

| **Parameter** | **Name** | **Description** |
| --- | --- | --- |
 | `input ` | `suid` | SUID for which the callbacks are to be set. |
| `input ` | `respCB` | The response callback pointer is a mandatory parameter. The<br>                                client can pass `nullptr` if they do not need any<br>                                response callback. |
| `input` | `errorCB ` | The error callback pointer is a mandatory parameter. The client<br>                                can pass `nullptr` if they do not need any error<br>                                callback. |
| `input` | `eventCB` | The event callback pointer is a mandatory parameter. The client<br>                                can pass `nullptr` if they do not need any event<br>                                callback. |

**Response**

| **Return** | **Description** |
| --- | --- |
| `int ` | `0`: Upon success<br><br><br>                                <br>`-1`: Upon failure |

**sendRequest()**

This API sends a protocol buffer (proto) encoded message to the QSH framework. This API
            communicates with the sensors and allows the application to send specific requests and
            receives data from the QSH framework. The message contains instructions or configuration
            settings for the sensor identified by the SUID. A client must encode a proto message for
            a given SUID.

**Syntax**

    virtual int sendRequest(suid suid, std::string message) = 0;Copy to clipboard

**Parameters**

| **Parameter** | **Name** | **Description** |
| --- | --- | --- |
| `input ` | `suid` | Sensor unique identifier for which the data is being<br>                                requested |
| `input ` | `message ` | Proto-encoded request message to be sent |

**Response**

| **Return** | **Description** |
| --- | --- |
| `int ` | `0`: Upon success<br><br><br>                                <br>`-1`: Upon failure |

For more information and example codes, see [Samples](https://docs.qualcomm.com/bundle/publicresource/topics/80-70014-7/samples.html).

## Low-power processor APIs

Source: [https://docs.qualcomm.com/doc/80-70014-7/topic/qsh_api_reference.html](https://docs.qualcomm.com/doc/80-70014-7/topic/qsh_api_reference.html)

The low-power processor APIs provide access to:

- QSH framework resources, such as services and utilities
- Core functionalities, such as the diag interface and timer

You can use the low-power processor APIs to create algorithms and sensor drivers
            that comply with the QSH standards. This information is currently available for users
            who have full access to the proprietary software shipped with Qualcomm Linux. For more
            information, see *Interfaces* in [Qualcomm Linux Sensors Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70014-7A/overview.html).
            
Note: [Qualcomm Linux
                    Sensors Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70014-7A/overview.html) is accessible only
                to the Authorized users.

Last Published: Jul 12, 2024

[Previous Topic
Architecture](https://docs.qualcomm.com/bundle/publicresource/80-70014-7/topics/architecture.md) [Next Topic
Software](https://docs.qualcomm.com/bundle/publicresource/80-70014-7/topics/software.md)