att_db: add att_prepare_handle_value_multiple_notification

This commit is contained in:
Matthias Ringwald 2023-06-05 16:16:43 +02:00
parent c15a35be0b
commit 2cbb1bf185
2 changed files with 42 additions and 0 deletions

View File

@ -1314,6 +1314,33 @@ uint16_t att_prepare_handle_value_notification(att_connection_t * att_connection
return prepare_handle_value(att_connection, attribute_handle, value, value_len, response_buffer);
}
// MARK: ATT_MULTIPLE_HANDLE_VALUE_NTF 0x23u
uint16_t att_prepare_handle_value_multiple_notification(att_connection_t * att_connection,
uint8_t num_attributes,
const uint16_t * attribute_handles,
const uint8_t ** values_data,
const uint16_t * values_len,
uint8_t * response_buffer){
response_buffer[0] = ATT_MULTIPLE_HANDLE_VALUE_NTF;
uint8_t i;
uint16_t offset = 1;
uint16_t response_buffer_size = att_connection->mtu - 3u;
for (i = 0; i < num_attributes; i++) {
uint16_t value_len = values_len[i];
if ((offset + 4 + value_len) > response_buffer_size){
break;
}
little_endian_store_16(response_buffer, offset, attribute_handles[i]);
offset += 2;
little_endian_store_16(response_buffer, offset, value_len);
offset += 2;
(void) memcpy(&response_buffer[offset], values_data[i], value_len);
offset += value_len;
}
return offset;
}
// MARK: ATT_HANDLE_VALUE_INDICATION 0x1d
uint16_t att_prepare_handle_value_indication(att_connection_t * att_connection,
uint16_t attribute_handle,

View File

@ -225,6 +225,21 @@ uint16_t att_prepare_handle_value_notification(att_connection_t * att_connection
uint16_t value_len,
uint8_t * response_buffer);
/**
* @brief setup value notification in response buffer for multiple handles and values
* @param att_connection
* @param attribute_handle
* @param value
* @param value_len
* @param response_buffer for notification
*/
uint16_t att_prepare_handle_value_multiple_notification(att_connection_t * att_connection,
uint8_t num_attributes,
const uint16_t * attribute_handles,
const uint8_t ** values_data,
const uint16_t * values_len,
uint8_t * response_buffer);
/**
* @brief setup value indication in response buffer for a given handle and value
* @param att_connection