# Interfaces
Source: [https://docs.qualcomm.com/doc/80-70015-7/topic/qsh_api_reference.html](https://docs.qualcomm.com/doc/80-70015-7/topic/qsh_api_reference.html)
Certain QSH interfaces described here contain the important QSH functions, classes,
methods, and data structures. 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 exposes APIs at application
processor. The QSH client
APIs are for the applications and the QSH sensor APIs are for the development of new
sensors on a low-power processor.
## QSH client APIs at application processor
Source: [https://docs.qualcomm.com/doc/80-70015-7/topic/qsh_api_reference.html](https://docs.qualcomm.com/doc/80-70015-7/topic/qsh_api_reference.html)
The QSH client 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 an instance of `ISession` and returns a pointer to
it.
**Syntax**
ISession* getSession();Copy to clipboard
**Parameters**
None.
**Response**
| **Return** | **Description** |
| --- | --- |
| `ISession*` | `ISession`: Upon success
`nullptr`: Upon failure |
**Open()**
This API initiates the client session created using `getSession()`. It
sets up and establishes communication between the client and the QSH framework. The
client must call this function only once per session.
**Syntax**
int open();Copy to clipboard
**Parameters**
None.
**Response**
| **Return** | **Description** |
| --- | --- |
| `int ` | `0`: Successfully opened session
`-1`: Upon failure |
**setCallBacks()**
For a given SUID, this API allows the user to set callbacks for responses, errors, and
events received over the session opened using `open()`. This API
registers the SUID with the callback functions passed as parameters to this API.
To unset the callbacks for already registered SUID, the user might pass
`nullptr` for all the three callback functions -
`respCallBack`, `errorCallBack`, and
`eventCallBack`. For any unregistered SUID, passing
`nullptr` for all callback functions is considered as an error.
**Syntax**
virtual int setCallBacks(suid suid, respCallBack respCB, errorCallBack errorCB, eventCallBack eventCB) = 0;Copy to clipboard
**Parameters**
| **Parameter** | **Name** | **Description** |
| --- | --- | --- |
| `input ` | `suid` | Unique SUID of the sensor for which the callbacks are to be
set. |
| `input ` | `respCB` | Response callback function. |
| `input` | `errorCB ` | Error callback function. |
| `input` | `eventCB` | Event callback function. |
Note: If any callback function is not
defined or required, then the client can pass `nullptr`.
**Response**
| **Return** | **Description** |
| --- | --- |
| `int ` | `0`: Upon success
`-1`: Upon failure — if all the callback functions
are `nullptr`, for an unregistered SUID. |
**sendRequest()**
This API asynchronously sends a protocol buffer (proto) encoded message to the QSH
framework. The proto-encoded message contains instructions or configuration settings for
the sensor identified by the SUID.
If the user sets callback pointers using `setCallBacks()` for the given
SUID, then the response and/or events are received from the QSH framework.
**Syntax**
virtual int sendRequest(suid suid, string message) = 0;Copy to clipboard
**Parameters**
| **Parameter** | **Name** | **Description** |
| --- | --- | --- |
| `input ` | `suid` | A unique SUID of the sensor
for request is to be sent. |
| `input ` | `message ` | Proto-encoded request message to be sent. |
**Response**
| **Return** | **Description** |
| --- | --- |
| `int ` | `0`: Upon success
`-1`: Upon failure, due to: