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.
[in] | service_uuid | - new service UUID value, refer to uuid_s structure for more details. |
[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 .
3563
of file components/device/silabs/si91x/wireless/ble/inc/rsi_ble_apis.h
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.
[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 .
3579
of file components/device/silabs/si91x/wireless/ble/inc/rsi_ble_apis.h
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.
[in] | handle | - attribute value handle |
[in] | data_len | - attribute value length |
[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.
3609
of file components/device/silabs/si91x/wireless/ble/inc/rsi_ble_apis.h
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.
[in] | dev_addr | - remote device address |
[in] | buf_mode | - buffer mode configuration
|
[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 .
3637
of file components/device/silabs/si91x/wireless/ble/inc/rsi_ble_apis.h
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.
[in] | dev_addr | - remote device address |
[in] | handle | - local attribute handle |
[in] | data_len | - attribute value length |
[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.
3663
of file components/device/silabs/si91x/wireless/ble/inc/rsi_ble_apis.h
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.
[in] | dev_addr | - remote device address |
[in] | handle | - local attribute handle |
[in] | data_len | - attribute value length |
[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
3684
of file components/device/silabs/si91x/wireless/ble/inc/rsi_ble_apis.h
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.
[in] | handle | - local attribute handle |
[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.
3756
of file components/device/silabs/si91x/wireless/ble/inc/rsi_ble_apis.h
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.
[in] | dev_addr | - remote device Address |
[in] | read_type | - read value type
|
[in] | handle | - attribute value handle |
[in] | offset | - attribute value offset |
[in] | length | - attribute value length |
[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
3784
of file components/device/silabs/si91x/wireless/ble/inc/rsi_ble_apis.h
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.
[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
3804
of file components/device/silabs/si91x/wireless/ble/inc/rsi_ble_apis.h
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.
[in] | service_handler | - GATT service record handle |
[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
3820
of file components/device/silabs/si91x/wireless/ble/inc/rsi_ble_apis.h
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.
[in] | dev_addr | - remote device address |
[in] | handle | - attribute handle |
[in] | opcode | - error response opcode |
[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
3840
of file components/device/silabs/si91x/wireless/ble/inc/rsi_ble_apis.h