> For the complete documentation index, see [llms.txt](https://sandbox-docs.verifone.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sandbox-docs.verifone.com/adk-5.0-programmers-guide/readme/files/dir_fd97ec13bcecf864d0a2538bcb52d927/dir_36b98f307880f17766d73e6cc4503277/sdiprotocol_8h.md).

# sdiprotocol.h

[Macros](#define-members) | [Typedefs](#typedef-members) | [Functions](#func-members)

SDI protocol library interface. [More...](#details)

[Go to the source code of this file.](/adk-5.0-programmers-guide/sdiprotocol_8h_source.md)

|         |                                                                                                                                                                                                                                |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Macros  |                                                                                                                                                                                                                                |
| #define | [SDI\_PROTOCOL\_ERR\_IO](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md#ga4de1bdcb5c337f55bd27bff7d78b6fc5)   -1                                                         |
|         | <p>read, write or protocol error <a href="/pages/NMkcYdMYK91ywEAGYmJp#ga4de1bdcb5c337f55bd27bff7d78b6fc5">More...</a><br></p>                                                                                                  |
| #define | [SDI\_PROTOCOL\_ERR\_CONCURRENT\_USE](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md#ga2c14582f53cf96b5d7da98ad7aaec3fa)   -2                                            |
|         | <p>SDI protocol library currently used by another thread, maybe try later. <a href="/pages/NMkcYdMYK91ywEAGYmJp#ga2c14582f53cf96b5d7da98ad7aaec3fa">More...</a><br></p>                                                        |
| #define | [SDI\_PROTOCOL\_ERR\_CONNECT](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md#ga5dfdaf75378fda9eb5b5154f7106d99a)   -3                                                    |
|         | <p>connection establishment to SDI server failed <a href="/pages/NMkcYdMYK91ywEAGYmJp#ga5dfdaf75378fda9eb5b5154f7106d99a">More...</a><br></p>                                                                                  |
| #define | [SDI\_PROTOCOL\_ERR\_OVERFLOW](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md#ga6f5fdc2d404fff5ab9a873002e3de41d)   -4                                                   |
|         | <p>response buffer too small, response has been dropped <a href="/pages/NMkcYdMYK91ywEAGYmJp#ga6f5fdc2d404fff5ab9a873002e3de41d">More...</a><br></p>                                                                           |
| #define | [SDI\_PROTOCOL\_ERR\_PARAM](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md#gadb13d1abf7263afbffbc365e0882b1dc)   -5                                                      |
|         | <p>wrong formal parameter like NULL pointer <a href="/pages/NMkcYdMYK91ywEAGYmJp#gadb13d1abf7263afbffbc365e0882b1dc">More...</a><br></p>                                                                                       |
| #define | [SDI\_PROTOCOL\_ERR\_OTHER](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md#ga6fd8126004df1ac26026fbdb701ff893)   -6                                                      |
|         | <p>any other problem like thread creation, memory allocation, etc. <a href="/pages/NMkcYdMYK91ywEAGYmJp#ga6fd8126004df1ac26026fbdb701ff893">More...</a><br></p>                                                                |
| #define | [SDI\_PROTOCOL\_ERR\_NO\_RECEIVE](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md#ga32009f58520dc4d040c7e577bd452c93)   -7                                                |
|         | <p>command is suppressed, therefore, no <a href="#aee8a61a1bccdbe552ecaf1db3e1eacf9">SDI\_Receive()</a> must be called afterwards <a href="/pages/NMkcYdMYK91ywEAGYmJp#ga32009f58520dc4d040c7e577bd452c93">More...</a><br></p> |
| #define | [SDI\_PROTOCOL\_INIT\_OPT\_TRACE\_EMV\_CBK](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___i_n_i_t___o_p_t_i_o_n_s.md#ga39f86a1acf5041aeb65747c144a78ae1)   0x01                                  |
|         | <p>trace using the EMV callback <a href="/pages/LUytTc3DYWw4d5XCVHVB#ga39f86a1acf5041aeb65747c144a78ae1">More...</a><br></p>                                                                                                   |
| #define | [SDI\_PROTOCOL\_INIT\_OPT\_TRACE\_SYSLOG](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___i_n_i_t___o_p_t_i_o_n_s.md#gae8bb92331299549acb6d1feed717490c)   0x02                                    |
|         | <p>use syslog instead of EMV callback for trace <a href="/pages/LUytTc3DYWw4d5XCVHVB#gae8bb92331299549acb6d1feed717490c">More...</a><br></p>                                                                                   |
| #define | [SDI\_PROTOCOL\_INIT\_OPT\_TRACE\_ADK\_LOG](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___i_n_i_t___o_p_t_i_o_n_s.md#ga388c8eea73c5da8e6453f347ff9bbcac)   0x04                                  |

|                 |                                                                                                                                                                                             |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Typedefs        |                                                                                                                                                                                             |
| typedef void(\* | [SDI\_DATA\_AVAILABLE\_CALLBACK\_TYPE](#a6abcbebf57233884aede515b9e8d9aa1)) (void \*context)                                                                                                |
|                 | <p>callback function type declaration for <a href="#ab08218e1215675470afea05b45bdccb9">SDI\_SetDataAvailableCallback()</a> <a href="#a6abcbebf57233884aede515b9e8d9aa1">More...</a><br></p> |
| typedef void(\* | [SDI\_CALLBACK\_TYPE](#a279358c02723f5f0fedb5fbc31e10da1)) (unsigned char \*dataIn, unsigned short sizeIn, unsigned char \*dataOut, unsigned short \*sizeOut, void \*context)               |
|                 | <p>callback function type declaration for <a href="#a77a7796fbf67ab1207dd80355dfcc251">SDI\_SetSdiCallback()</a> <a href="#a279358c02723f5f0fedb5fbc31e10da1">More...</a><br></p>           |
| typedef void(\* | [CARD\_DETECTED\_CALLBACK\_TYPE](#a7289a1e4c8b54784f131b283f24f2c6f)) (unsigned char \*dataIn, unsigned short sizeIn, void \*context)                                                       |
|                 | <p>callback function type declaration for <a href="#a22d21817e82e46fad2837a0e5ecd5737">SDI\_SetCardDetectedCallback()</a> <a href="#a7289a1e4c8b54784f131b283f24f2c6f">More...</a><br></p>  |
| typedef void(\* | [EOF\_DETECTED\_CALLBACK\_TYPE](#a32fdd6f1d5d248f6b50c8521ca5d3297)) (void \*context)                                                                                                       |
|                 | <p>callback function type declaration for <a href="#a367fbca79358a37885bd274761289793">SDI\_SetEOFDetectedCallback()</a> <a href="#a32fdd6f1d5d248f6b50c8521ca5d3297">More...</a><br></p>   |

|                  |                                                                                                                                                                     |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Functions        |                                                                                                                                                                     |
| int              | [SDI\_ProtocolInit](#abca943173d2f57b9d5aea916fa37d010) (unsigned options, const char \*settings)                                                                   |
|                  | <p>Configure the library, connection setup. <a href="#abca943173d2f57b9d5aea916fa37d010">More...</a><br></p>                                                        |
| int              | [SDI\_Send](#ab3428d0ca92d1516b4efaa2ed7849795) (const unsigned char \*data, int dataLength)                                                                        |
|                  | <p>Send message to SDI server. <a href="#ab3428d0ca92d1516b4efaa2ed7849795">More...</a><br></p>                                                                     |
| int              | [SDI\_Receive](#aee8a61a1bccdbe552ecaf1db3e1eacf9) (unsigned char \*responseBuffer, int responseBufferSize)                                                         |
|                  | <p>Receive response from SDI server. <a href="#aee8a61a1bccdbe552ecaf1db3e1eacf9">More...</a><br></p>                                                               |
| int              | [SDI\_SendReceive](#a4aa2844124e589c89fd41fca774e21fe) (const unsigned char \*data, int dataLength, unsigned char \*responseBuffer, int responseBufferSize)         |
|                  | <p>Send message to SDI server and receive the response. <a href="#a4aa2844124e589c89fd41fca774e21fe">More...</a><br></p>                                            |
| unsigned char \* | [SDI\_GetStoredResponse](#a68f693b3c05e127b2529c290d64c63f1) (unsigned \*dataLen)                                                                                   |
| int              | [SDI\_Disconnect](#a665e7f44cf329b0222d9ee8b624fc32c) (void)                                                                                                        |
|                  | <p>Shut down the connection to SDI server. <a href="#a665e7f44cf329b0222d9ee8b624fc32c">More...</a><br></p>                                                         |
| int              | [SDI\_SetDataAvailableCallback](#ab08218e1215675470afea05b45bdccb9) ([SDI\_DATA\_AVAILABLE\_CALLBACK\_TYPE](#a6abcbebf57233884aede515b9e8d9aa1) cb, void \*context) |
|                  | <p>Set a callback to be called if a SDI server response is pending. <a href="#ab08218e1215675470afea05b45bdccb9">More...</a><br></p>                                |
| int              | [SDI\_SetSdiCallback](#a77a7796fbf67ab1207dd80355dfcc251) ([SDI\_CALLBACK\_TYPE](#a279358c02723f5f0fedb5fbc31e10da1) cb, void \*context)                            |
|                  | <p>Set a callback function to be called when SDI server sends a callback message. <a href="#a77a7796fbf67ab1207dd80355dfcc251">More...</a><br></p>                  |
| int              | [SDI\_SetCardDetectedCallback](#a22d21817e82e46fad2837a0e5ecd5737) ([CARD\_DETECTED\_CALLBACK\_TYPE](#a7289a1e4c8b54784f131b283f24f2c6f) cb, void \*context)        |
|                  | <p>Set a callback function to be called when SDI server sends the Card Detected callback message. <a href="#a22d21817e82e46fad2837a0e5ecd5737">More...</a><br></p>  |
| void             | [SDI\_SendSysAbort](#a7ce1c5445e39ce0a025fe20b1ccfd988) (void)                                                                                                      |
|                  | <p>Send SYS ABORT command '20 02'. <a href="#a7ce1c5445e39ce0a025fe20b1ccfd988">More...</a><br></p>                                                                 |
| void             | [SDI\_SendExternalButton](#a56ba57441b1c4f2eb535f5ed8ca58df8) (void)                                                                                                |
|                  | <p>Send External Button command '20 20' always with P2 = 1 (suppress response) <a href="#a56ba57441b1c4f2eb535f5ed8ca58df8">More...</a><br></p>                     |
| int              | [SDI\_SetEOFDetectedCallback](#a367fbca79358a37885bd274761289793) ([EOF\_DETECTED\_CALLBACK\_TYPE](#a32fdd6f1d5d248f6b50c8521ca5d3297) cb, void \*context)          |
|                  | <p>Set a callback function to be called when the connection to SDI server is closed by EOF. <a href="#a367fbca79358a37885bd274761289793">More...</a><br></p>        |
| int              | [SDI\_SetLoggingCallback](#a23d38c83147a3e7d47c3748f5732c3f7) (void(\*cb)(const char \*, void \*), void \*context)                                                  |
|                  | <p>Set a callback function receiving SDI logging callbacks. <a href="#a23d38c83147a3e7d47c3748f5732c3f7">More...</a><br></p>                                        |

### DetailedDescription <a href="#detailed-description" id="detailed-description"></a>

SDI protocol library interface.

### TypedefDocumentation <a href="#typedef-documentation" id="typedef-documentation"></a>

### CARD\_DETECTED\_CALLBACK\_TYPE <a href="#a7289a1e4c8b54784f131b283f24f2c6f" id="a7289a1e4c8b54784f131b283f24f2c6f"></a>

typedef void(\\\* CARD\_DETECTED\_CALLBACK\_TYPE) (unsigned char \\\*dataIn, unsigned short sizeIn, void \\\*context)

callback function type declaration for [SDI\_SetCardDetectedCallback()](#a22d21817e82e46fad2837a0e5ecd5737)

**Parameters**

\[in] **dataIn** Input data to send to the application: complete SDI Server callback message \[in] **sizeIn** Length of input data \[out] **context** Application context data pointer

### EOF\_DETECTED\_CALLBACK\_TYPE <a href="#a32fdd6f1d5d248f6b50c8521ca5d3297" id="a32fdd6f1d5d248f6b50c8521ca5d3297"></a>

typedef void(\\\* EOF\_DETECTED\_CALLBACK\_TYPE) (void \\\*context)

callback function type declaration for [SDI\_SetEOFDetectedCallback()](#a367fbca79358a37885bd274761289793)

**Parameters**

\[out] **context** Application context data pointer

### SDI\_CALLBACK\_TYPE <a href="#a279358c02723f5f0fedb5fbc31e10da1" id="a279358c02723f5f0fedb5fbc31e10da1"></a>

typedef void(\\\* SDI\_CALLBACK\_TYPE) (unsigned char \\\*dataIn, unsigned short sizeIn, unsigned char \\\*dataOut, unsigned short \\\*sizeOut, void \\\*context)

callback function type declaration for [SDI\_SetSdiCallback()](#a77a7796fbf67ab1207dd80355dfcc251)

**Parameters**

\[in] **dataIn** Input data to send to the application: complete SDI Server callback message \[in] **sizeIn** Length of input data \[out] **dataOut** TLV stream of output data (callback response) to send back to the SDI Server. Might be NULL pointer for one-way callbacks \[in,out] **sizeOut** Input: size of dataOut buffer; Output: size of output data. Must be set to zero for one-way callbacks \[out] **context** Application context data pointer

### SDI\_DATA\_AVAILABLE\_CALLBACK\_TYPE <a href="#a6abcbebf57233884aede515b9e8d9aa1" id="a6abcbebf57233884aede515b9e8d9aa1"></a>

typedef void(\\\* SDI\_DATA\_AVAILABLE\_CALLBACK\_TYPE) (void \\\*context)

callback function type declaration for [SDI\_SetDataAvailableCallback()](#ab08218e1215675470afea05b45bdccb9)

### FunctionDocumentation <a href="#function-documentation" id="function-documentation"></a>

### SDI\_Disconnect() <a href="#a665e7f44cf329b0222d9ee8b624fc32c" id="a665e7f44cf329b0222d9ee8b624fc32c"></a>

int SDI\_Disconnect

Shut down the connection to SDI server.

Might be called if the connection shall be provided to another process, for shutdown or in case of unrecoverable communication errors.

#### Returns

0 for success else SDI protocol error code, see [SDI Protocol Error Codes](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md)

### SDI\_GetStoredResponse() <a href="#a68f693b3c05e127b2529c290d64c63f1" id="a68f693b3c05e127b2529c290d64c63f1"></a>

unsigned char\\\* SDI\_GetStoredResponse

Access stored response in case of SDI\_PROTOCOL\_ERR\_OVERFLOW

To be called by the same thread that got the error code. Data will be no more available if meanwhile another thread had the same problem.

**Parameters**

\[out] **dataLen** length of stored response data

#### Returns

buffer containing stored response CAUTION: To be released with free by caller

### SDI\_ProtocolInit() <a href="#abca943173d2f57b9d5aea916fa37d010" id="abca943173d2f57b9d5aea916fa37d010"></a>

int SDI\_ProtocolInit

Configure the library, connection setup.

See Programer's Guide for connection handling

**Parameters**

\[in] **options** bit mask for configuration flags SDI Protocol Initialization Options \[in] **settings** configuration parameters JSON string

Settings (all optional/conditional): {"server": {"host":\<string>, "port":\<integer>, "ca":\<string|string\[]>, "timeout\_ms":\<integer>}}

**Parameters**

**settings.server.host** host IP address or host name **settings.server.port** TCP/IP port **settings.server.ca** For TLS connections, path to Certification Authority PEM file (concatenated) or list of PEM file paths **settings.server.timeout\_ms** connection timeout in milliseconds for TCP/TLS connections (optional, default: OS default timeout applies) **settings.server.socket** path to Unix Domain Socket (will make other parameters ignored) **settings.server.serial** path to serial device (will make other parameters ignored)

Default values: {"server": {"host":"127.0.0.1", "port":12000}}

#### Returns

0 for success else SDI protocol error code, see [SDI Protocol Error Codes](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md)

### SDI\_Receive() <a href="#aee8a61a1bccdbe552ecaf1db3e1eacf9" id="aee8a61a1bccdbe552ecaf1db3e1eacf9"></a>

int SDI\_Receive

Receive response from SDI server.

For instance uses infinite timeout

**Parameters**

\[in] **responseBuffer** buffer to take the payload of SDI server response \[in] **responseBufferSize** length of reponseBuffer

#### Returns

length of response in case of success else SDI protocol error code, see [SDI Protocol Error Codes](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md)

### SDI\_Send() <a href="#ab3428d0ca92d1516b4efaa2ed7849795" id="ab3428d0ca92d1516b4efaa2ed7849795"></a>

int SDI\_Send

Send message to SDI server.

Will establish connection if necessary

**Parameters**

\[in] **data** data buffer with payload \[in] **dataLength** length of payload data

#### Returns

0 for success else SDI protocol error code, see [SDI Protocol Error Codes](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md)

### SDI\_SendExternalButton() <a href="#a56ba57441b1c4f2eb535f5ed8ca58df8" id="a56ba57441b1c4f2eb535f5ed8ca58df8"></a>

void SDI\_SendExternalButton

Send External Button command '20 20' always with P2 = 1 (suppress response)

This command informs the SDI-Server in Headless Mode that the external button is pressed

### SDI\_SendReceive() <a href="#a4aa2844124e589c89fd41fca774e21fe" id="a4aa2844124e589c89fd41fca774e21fe"></a>

int SDI\_SendReceive

Send message to SDI server and receive the response.

Combines SDI\_Send and SDI\_Receive

**Parameters**

\[in] **data** data buffer with payload \[in] **dataLength** length of payload data \[in] **responseBuffer** buffer to take the payload of SDI server response \[in] **responseBufferSize** length of reponseBuffer

#### Returns

length of response in case of success else SDI protocol error code, see [SDI Protocol Error Codes](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md)

### SDI\_SendSysAbort() <a href="#a7ce1c5445e39ce0a025fe20b1ccfd988" id="a7ce1c5445e39ce0a025fe20b1ccfd988"></a>

void SDI\_SendSysAbort

Send SYS ABORT command '20 02'.

This command is available even when SendReceive is in progress. This is useful if a dialog during a callback needs to be aborted.

### SDI\_SetCardDetectedCallback() <a href="#a22d21817e82e46fad2837a0e5ecd5737" id="a22d21817e82e46fad2837a0e5ecd5737"></a>

int SDI\_SetCardDetectedCallback

Set a callback function to be called when SDI server sends the Card Detected callback message.

The callback function is called in the receiver thread and should not block.

#### Returns

0 for success else SDI protocol error code, see [SDI Protocol Error Codes](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md)

### SDI\_SetDataAvailableCallback() <a href="#ab08218e1215675470afea05b45bdccb9" id="ab08218e1215675470afea05b45bdccb9"></a>

int SDI\_SetDataAvailableCallback

Set a callback to be called if a SDI server response is pending.

Set a callback that will be invoked the callback when SDIresponse data is pending after [SDI\_Send()](#ab3428d0ca92d1516b4efaa2ed7849795).

#### Returns

0 for success else SDI protocol error code, see [SDI Protocol Error Codes](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md)

### SDI\_SetEOFDetectedCallback() <a href="#a367fbca79358a37885bd274761289793" id="a367fbca79358a37885bd274761289793"></a>

int SDI\_SetEOFDetectedCallback

Set a callback function to be called when the connection to SDI server is closed by EOF.

The callback function is called in the receiver thread before termination and should not block.

{% hint style="info" %}
Do not call any API function from inside callback EOF\_DETECTED\_CALLBACK\_TYPE.
{% endhint %}

#### Returns

0 for success else SDI protocol error code, see [SDI Protocol Error Codes](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md)

### SDI\_SetLoggingCallback() <a href="#a23d38c83147a3e7d47c3748f5732c3f7" id="a23d38c83147a3e7d47c3748f5732c3f7"></a>

int SDI\_SetLoggingCallback

Set a callback function receiving SDI logging callbacks.

{% hint style="info" %}
Supported by VR1 only
{% endhint %}

\*\*Parameters\*\*

\[in] **cb** callback function f(const char message, void context) \[in] **context** pointer given as parameter context to invocation of parameter cb

### SDI\_SetSdiCallback() <a href="#a77a7796fbf67ab1207dd80355dfcc251" id="a77a7796fbf67ab1207dd80355dfcc251"></a>

int SDI\_SetSdiCallback

Set a callback function to be called when SDI server sends a callback message.

The SDI Callback is called in the receiver thread and should not block.

#### Returns

0 for success else SDI protocol error code, see [SDI Protocol Error Codes](/adk-5.0-programmers-guide/readme/modules/group___s_d_i___p_r_o_t_o_c_o_l___e_r_r_o_r___c_o_d_e_s.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://sandbox-docs.verifone.com/adk-5.0-programmers-guide/readme/files/dir_fd97ec13bcecf864d0a2538bcb52d927/dir_36b98f307880f17766d73e6cc4503277/sdiprotocol_8h.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
