Server#
Modules#
Functions#
Add a new service to the local GATT Server. This is a blocking API.
Add a new attribute to a specific service. This is a blocking API.
Change the local attribute value. This is a blocking API. When the gatt_database is present, the value can be altered using the "rsi_ble_set_local_att_value" API. This means the gatt_database value can be modified at any point following its creation.
Configure the buf mode for Notify and WO response commands for the remote device. This is a blocking API.
Notify the local value to the remote device. This is a blocking API. If the API returns RSI_ERROR_BLE_DEV_BUF_FULL (-31) error then wait until the rsi_ble_on_le_more_data_req_t event gets received from the module.
Indicate the local value to the remote device. This is a blocking API and can unblock the application on the reception of the callback functions either rsi_ble_on_event_indicate_confirmation_t.
Get the local attribute value. This is a blocking API.
Send the response for the read request received from the remote device This is a blocking API.
Remove the GATT service record. This is a blocking API.
Remove the GATT attribute record. This is a blocking API.
Send attribute error response for any of the att request. This is a blocking API.
Function Documentation#
rsi_ble_add_service#
int32_t rsi_ble_add_service (uuid_t service_uuid, rsi_ble_resp_add_serv_t * p_resp_serv)
Add a new service to the local GATT Server. This is a blocking API.
| Type | Direction | Argument Name | Description | 
|---|---|---|---|
| uuid_t | [in] | service_uuid | - new service UUID value, refer to uuid_s structure for more details. | 
| rsi_ble_resp_add_serv_t * | [out] | p_resp_serv | - new service handler filled in this structure, refer to rsi_ble_resp_add_serv_s structure for more details. | 
- Pre-conditions: - Call sl_wifi_init() before calling this API. 
 
Returns
- The following values are returned: - 0 - Success 
- Non-Zero Value - Failure 
- 0x4046 - Invalid Arguments 
- 0x4D08 - Profile record full 
 
Note
- Refer to the Status Codes section for the above error codes at wiseconnect-status-codes . 
rsi_ble_add_attribute#
int32_t rsi_ble_add_attribute (rsi_ble_req_add_att_t * p_attribute)
Add a new attribute to a specific service. This is a blocking API.
| Type | Direction | Argument Name | Description | 
|---|---|---|---|
| rsi_ble_req_add_att_t * | [in] | p_attribute | - add a new attribute to the service, refer to rsi_ble_req_add_att_s structure for more details. | 
- Pre-conditions: Call sl_wifi_init() before calling this API. 
Returns
- The following values are returned: - 0 - Success 
- Non-Zero Value - Failure 
- 0x4046 - Invalid Arguments 
- 0x4D09 - Attribute record full 
 
Note
- Refer to the Status Codes section for the above error codes at wiseconnect-status-codes . 
rsi_ble_set_local_att_value#
int32_t rsi_ble_set_local_att_value (uint16_t handle, uint16_t data_len, const uint8_t * p_data)
Change the local attribute value. This is a blocking API. When the gatt_database is present, the value can be altered using the "rsi_ble_set_local_att_value" API. This means the gatt_database value can be modified at any point following its creation.
| Type | Direction | Argument Name | Description | 
|---|---|---|---|
| uint16_t | [in] | handle | - attribute value handle | 
| uint16_t | [in] | data_len | - attribute value length | 
| const uint8_t * | [in] | p_data | - attribute value | 
- Pre-conditions: rsi_ble_connect() API needs to be called before this API. 
Returns
- The following values are returned: - 0 - Success 
- Non-Zero Value - Failure 
- 0x4046 - Invalid Arguments 
- 0x4D06 - Attribute record not found 
- 0x4E60 - Invalid Handle Range 
 
Note
- Refer to the Status Codes section for the above error codes at wiseconnect-status-codes . 
- This API can only be used if the service is maintained inside the firmware. 
- The services which are maintained by firmware must follow the below rules. 
- Rule 1: The attribute_data_size is less than 20 bytes during the service_creation 
- Rule 2: while creating the service, don't use the RSI_BLE_ATT_MAINTAIN_IN_HOST bit in the RSI_BLE_ATT_CONFIG_BITMAP macro. 
- Rule 3: The data_len must be less than or equal to the dat_length mentioned while creating the service/attribute 
- Rule 4: The rsi_ble_notify_value() API should be used instead of rsi_ble_set_local_att_value() to update the SiWx91x local database when the services are maintained in the host itself. 
rsi_ble_set_wo_resp_notify_buf_info#
int32_t rsi_ble_set_wo_resp_notify_buf_info (const uint8_t * dev_addr, uint8_t buf_mode, uint8_t buf_cnt)
Configure the buf mode for Notify and WO response commands for the remote device. This is a blocking API.
| Type | Direction | Argument Name | Description | 
|---|---|---|---|
| const uint8_t * | [in] | dev_addr | - remote device address | 
| uint8_t | [in] | buf_mode | - buffer mode configuration 
 | 
| uint8_t | [in] | buf_cnt | - no of buffers to be configured only value 1 and 2 are supported in BLE_SMALL_BUFF_MODE  | 
Returns
- The following values are returned: - 0 - Success 
- Non-Zero Value - Failure 
- 0x4046 - Invalid Arguments 
- 0x4D05 - BLE socket not available 
- 0x4D06 - Attribute record not found 
- 0x4E60 - Invalid Handle Range 
- 0x4E63 - BLE Buffer Count Exceeded 
- 0x4E64 - BLE Buffer already in use 
 
Note
- Refer to the Status Codes section for the above error codes at wiseconnect-status-codes . 
rsi_ble_notify_value#
int32_t rsi_ble_notify_value (const uint8_t * dev_addr, uint16_t handle, uint16_t data_len, const uint8_t * p_data)
Notify the local value to the remote device. This is a blocking API. If the API returns RSI_ERROR_BLE_DEV_BUF_FULL (-31) error then wait until the rsi_ble_on_le_more_data_req_t event gets received from the module.
| Type | Direction | Argument Name | Description | 
|---|---|---|---|
| const uint8_t * | [in] | dev_addr | - remote device address | 
| uint16_t | [in] | handle | - local attribute handle | 
| uint16_t | [in] | data_len | - attribute value length | 
| const uint8_t * | [in] | p_data | - attribute value | 
- Pre-conditions: - rsi_ble_connect() API needs to be called before this API. 
 
Returns
- The following values are returned: - 0 - Success 
- Non-Zero Value - Failure 
- 0x4046 - Invalid Arguments 
- 0x4A0D - Invalid attribute value length 
- 0x4D05 - BLE socket not available 
- 0x4D06 - Attribute record not found 
- 0x4E60 - Invalid Handle Range 
- 0x4E65 - Invalid Attribute Length When Small Buffer Mode is Configured 
 
Note
- Refer to the Status Codes section for the above error codes at wiseconnect-status-codes 
- The rsi_ble_notify_value() API should be used instead of rsi_ble_set_local_att_value() to update the SiWx91x local database when the services are maintained in the host itself. 
rsi_ble_indicate_value#
int32_t rsi_ble_indicate_value (const uint8_t * dev_addr, uint16_t handle, uint16_t data_len, const uint8_t * p_data)
Indicate the local value to the remote device. This is a blocking API and can unblock the application on the reception of the callback functions either rsi_ble_on_event_indicate_confirmation_t.
| Type | Direction | Argument Name | Description | 
|---|---|---|---|
| const uint8_t * | [in] | dev_addr | - remote device address | 
| uint16_t | [in] | handle | - local attribute handle | 
| uint16_t | [in] | data_len | - attribute value length | 
| const uint8_t * | [in] | p_data | - attribute value | 
- Pre-conditions: - rsi_ble_connect() API needs to be called before this API. 
 
Returns
- The following values are returned: - 0 - Success 
- Non-Zero Value - Failure 
- 0x4D05 - BLE socket not available 
- 0x4E60 - Invalid Handle Range 
 
Note
- Refer to the Status Codes section for the above error codes at wiseconnect-status-codes 
rsi_ble_get_local_att_value#
int32_t rsi_ble_get_local_att_value (uint16_t handle, rsi_ble_resp_local_att_value_t * p_resp_local_att_val)
Get the local attribute value. This is a blocking API.
| Type | Direction | Argument Name | Description | 
|---|---|---|---|
| uint16_t | [in] | handle | - local attribute handle | 
| rsi_ble_resp_local_att_value_t * | [out] | p_resp_local_att_val | - local attribute value filled in this structure, refer to rsi_ble_resp_local_att_value_s structure for more details. | 
- Pre-conditions: rsi_ble_connect() API needs to be called before this API. 
Returns
- The following values are returned: - 0 - Success 
- Non-Zero Value - Failure 
- 0x4046 - Invalid Arguments 
- 0x4D06 - Attribute record not found 
 
Note
- Refer to the Status Codes section for the above error codes at wiseconnect-status-codes 
- This API can only be used if the service is maintained inside the firmware. The services which are maintained by firmware must follow the below rules. 
- Rule 1: The attribute_data_size is less than 20 bytes during the service_creation 
- Rule 2: While creating the service, don't use the RSI_BLE_ATT_MAINTAIN_IN_HOST bit in the RSI_BLE_ATT_CONFIG_BITMAP macro. 
rsi_ble_gatt_read_response#
int32_t rsi_ble_gatt_read_response (uint8_t * dev_addr, uint8_t read_type, uint16_t handle, uint16_t offset, uint16_t length, const uint8_t * p_data)
Send the response for the read request received from the remote device This is a blocking API.
| Type | Direction | Argument Name | Description | 
|---|---|---|---|
| uint8_t * | [in] | dev_addr | - remote device Address | 
| uint8_t | [in] | read_type | - read value type 
 | 
| uint16_t | [in] | handle | - attribute value handle | 
| uint16_t | [in] | offset | - attribute value offset | 
| uint16_t | [in] | length | - attribute value length | 
| const uint8_t * | [in] | p_data | - attribute value | 
- Pre-conditions: - rsi_ble_connect() API needs to be called before this API. 
 
Returns
- The following values are returned: - 0 - Success 
- Non-Zero Value - Failure 
- 0x4D04 - BLE not connected 
 
Note
- It's necessary to use the "rsi_ble_gatt_read_response" API when the services are managed by the Application/Host itself. 
- Refer to the Status Codes section for the above error codes at wiseconnect-status-codes 
rsi_ble_remove_gatt_service#
int32_t rsi_ble_remove_gatt_service (uint32_t service_handler)
Remove the GATT service record. This is a blocking API.
| Type | Direction | Argument Name | Description | 
|---|---|---|---|
| uint32_t | [in] | service_handler | - GATT service record handle | 
- Pre-conditions: GATT database needs to be present, GATT Database value can be modified at any point following its creation. 
Returns
- The following values are returned: - 0 - Success 
- Non-Zero Value - Failure 
- 0x4D0A - BLE profile not found (profile handler invalid) 
 
Note
- Refer to the Status Codes section for the above error codes at wiseconnect-status-codes 
rsi_ble_remove_gatt_attibute#
int32_t rsi_ble_remove_gatt_attibute (uint32_t service_handler, uint16_t att_hndl)
Remove the GATT attribute record. This is a blocking API.
| Type | Direction | Argument Name | Description | 
|---|---|---|---|
| uint32_t | [in] | service_handler | - GATT service record handle | 
| uint16_t | [in] | att_hndl | - attribute handle | 
- Pre-conditions: GATT database needs to be present, GATT Database value can be modified at any point following its creation. 
Returns
- The following values are returned: - 0 - Success 
- Non-Zero Value - Failure 
- 0x4D06 - Attribute record not found 
 
Note
- Refer to the Status Codes section for the above error codes at wiseconnect-status-codes 
rsi_ble_att_error_response#
int32_t rsi_ble_att_error_response (uint8_t * dev_addr, uint16_t handle, uint8_t opcode, uint8_t err)
Send attribute error response for any of the att request. This is a blocking API.
| Type | Direction | Argument Name | Description | 
|---|---|---|---|
| uint8_t * | [in] | dev_addr | - remote device address | 
| uint16_t | [in] | handle | - attribute handle | 
| uint8_t | [in] | opcode | - error response opcode | 
| uint8_t | [in] | err | - specific error related Gatt | 
- Pre-conditions: rsi_ble_connect() API needs to be called before this API. 
Returns
- The following values are returned: - 0 - Success 
- Non-Zero Value - Failure 
- 0x4D04 - BLE not Connected 
- 0x4E62 - Invalid Parameters 
 
Note
- Refer to the Status Codes section for the above error codes at wiseconnect-status-codes