hci_event: provide buffer size to event builders

This commit is contained in:
Matthias Ringwald 2023-03-24 17:19:35 +01:00
parent 7d902a1f42
commit c70b3b486d
3 changed files with 9 additions and 7 deletions

View File

@ -381,7 +381,7 @@ static uint32_t ll_start_ticks_for_end_time_and_len(uint32_t packet_end_ticks, u
static void ll_emit_hci_event(const hci_event_t * event, ...){
va_list argptr;
va_start(argptr, event);
uint16_t length = hci_event_create_from_template_and_arglist(ll_outgoing_hci_event, event, argptr);
uint16_t length = hci_event_create_from_template_and_arglist(ll_outgoing_hci_event, sizeof(ll_outgoing_hci_event), event, argptr);
va_end(argptr);
controller_packet_handler(HCI_EVENT_PACKET, ll_outgoing_hci_event, length);
}

View File

@ -64,8 +64,10 @@
* K: 1-byte length of following variable-length data blob 'V', length is not included in packet
* V: variable-length data blob of len provided in 'J' field
*/
uint16_t hci_event_create_from_template_and_arglist(uint8_t *hci_event_buffer, const hci_event_t *event, va_list argptr){
uint16_t hci_event_create_from_template_and_arglist(uint8_t *hci_event_buffer, uint16_t buffer_size, const hci_event_t *event, va_list argptr){
UNUSED(buffer_size);
hci_event_buffer[0] = event->event_code;
uint16_t pos = 2;
@ -150,10 +152,10 @@ uint16_t hci_event_create_from_template_and_arglist(uint8_t *hci_event_buffer, c
return pos;
}
uint16_t hci_event_create_from_template_and_arguments(uint8_t *hci_buffer, const hci_event_t *event, ...){
uint16_t hci_event_create_from_template_and_arguments(uint8_t *hci_buffer, uint16_t buffer_size, const hci_event_t *event, ...){
va_list argptr;
va_start(argptr, event);
uint16_t length = hci_event_create_from_template_and_arglist(hci_buffer, event, argptr);
uint16_t length = hci_event_create_from_template_and_arglist(hci_buffer, buffer_size, event, argptr);
va_end(argptr);
return length;
}

View File

@ -75,10 +75,10 @@ extern "C" {
* K: 1-byte length of following variable-length data blob 'V', length is not included in packet
* V: variable-length data blob of len provided in 'J' field
*/
uint16_t hci_event_create_from_template_and_arglist(uint8_t *hci_buffer, const hci_event_t *event, va_list argptr);
uint16_t hci_event_create_from_template_and_arglist(uint8_t *hci_buffer, uint16_t buffer_size, const hci_event_t *event, va_list argptr);
uint16_t hci_event_create_from_template_and_arguments(uint8_t *hci_buffer, const hci_event_t *event, ...);
uint16_t hci_event_create_from_template_and_arguments(uint8_t *hci_buffer, uint16_t buffer_size, const hci_event_t *event, ...);
/* LE Events */
extern const hci_event_t hci_event_hardware_error;