mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-07 06:40:01 +00:00
l2cap: inline l2cap_create_signaling_classic and l2cap_create_signaling_le
This commit is contained in:
parent
06a2657984
commit
d5a98629e6
11
src/l2cap.c
11
src/l2cap.c
@ -1287,14 +1287,13 @@ static int l2cap_send_signaling_packet(hci_con_handle_t handle, L2CAP_SIGNALING_
|
||||
return BTSTACK_ACL_BUFFERS_FULL;
|
||||
}
|
||||
|
||||
// log_info("l2cap_send_signaling_packet type %u", cmd);
|
||||
hci_reserve_packet_buffer();
|
||||
uint8_t *acl_buffer = hci_get_outgoing_packet_buffer();
|
||||
va_list argptr;
|
||||
va_start(argptr, identifier);
|
||||
uint16_t len = l2cap_create_signaling_classic(acl_buffer, handle, cmd, identifier, argptr);
|
||||
uint8_t pb_flags = hci_non_flushable_packet_boundary_flag_supported() ? 0x00 : 0x02;
|
||||
uint16_t len = l2cap_create_signaling_packet(acl_buffer, handle, pb_flags, L2CAP_CID_SIGNALING, cmd, identifier, argptr);
|
||||
va_end(argptr);
|
||||
// log_info("l2cap_send_signaling_packet con %u!", handle);
|
||||
return hci_send_acl_packet_buffer(len);
|
||||
}
|
||||
|
||||
@ -1393,20 +1392,18 @@ static inline void channelStateVarClearFlag(l2cap_channel_t *channel, uint16_t f
|
||||
|
||||
#ifdef ENABLE_BLE
|
||||
static int l2cap_send_le_signaling_packet(hci_con_handle_t handle, L2CAP_SIGNALING_COMMANDS cmd, int identifier, ...){
|
||||
|
||||
if (!hci_can_send_acl_packet_now(handle)){
|
||||
log_info("l2cap_send_le_signaling_packet, cannot send");
|
||||
return BTSTACK_ACL_BUFFERS_FULL;
|
||||
}
|
||||
|
||||
// log_info("l2cap_send_le_signaling_packet type %u", cmd);
|
||||
hci_reserve_packet_buffer();
|
||||
uint8_t *acl_buffer = hci_get_outgoing_packet_buffer();
|
||||
va_list argptr;
|
||||
va_start(argptr, identifier);
|
||||
uint16_t len = l2cap_create_signaling_le(acl_buffer, handle, cmd, identifier, argptr);
|
||||
uint8_t pb_flags = 0x00; // First non-automatically-flushable packet of a higher layer message
|
||||
uint16_t len = l2cap_create_signaling_packet(acl_buffer, handle, pb_flags, L2CAP_CID_SIGNALING_LE, cmd, identifier, argptr);
|
||||
va_end(argptr);
|
||||
// log_info("l2cap_send_le_signaling_packet con %u!", handle);
|
||||
return hci_send_acl_packet_buffer(len);
|
||||
}
|
||||
#endif
|
||||
|
@ -39,8 +39,6 @@
|
||||
|
||||
/*
|
||||
* l2cap_signaling.h
|
||||
*
|
||||
* Created by Matthias Ringwald on 7/23/09.
|
||||
*/
|
||||
|
||||
#include "l2cap_signaling.h"
|
||||
@ -50,7 +48,7 @@
|
||||
|
||||
#include <string.h>
|
||||
|
||||
static uint16_t l2cap_create_signaling_internal(uint8_t * acl_buffer, hci_con_handle_t handle, uint8_t pb_flags, uint16_t cid, L2CAP_SIGNALING_COMMANDS cmd, uint8_t identifier, va_list argptr){
|
||||
uint16_t l2cap_create_signaling_packet(uint8_t * acl_buffer, hci_con_handle_t handle, uint8_t pb_flags, uint16_t cid, L2CAP_SIGNALING_COMMANDS cmd, uint8_t identifier, va_list argptr){
|
||||
|
||||
static const char *l2cap_signaling_commands_format[] = {
|
||||
"2D", // 0x01 command reject: reason {cmd not understood (0), sig MTU exceeded (2:max sig MTU), invalid CID (4:req CID)}, data len, data
|
||||
@ -90,7 +88,7 @@ static uint16_t l2cap_create_signaling_internal(uint8_t * acl_buffer, hci_con_ha
|
||||
format = l2cap_signaling_commands_format[cmd-1u];
|
||||
}
|
||||
if (!format){
|
||||
log_error("l2cap_create_signaling_internal: invalid command id 0x%02x", cmd);
|
||||
log_error("l2cap_create_signaling_packet: invalid command id 0x%02x", cmd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -150,17 +148,3 @@ static uint16_t l2cap_create_signaling_internal(uint8_t * acl_buffer, hci_con_ha
|
||||
|
||||
return pos;
|
||||
}
|
||||
|
||||
#ifdef ENABLE_CLASSIC
|
||||
uint16_t l2cap_create_signaling_classic(uint8_t * acl_buffer, hci_con_handle_t handle, L2CAP_SIGNALING_COMMANDS cmd, uint8_t identifier, va_list argptr){
|
||||
uint8_t pb_flags = hci_non_flushable_packet_boundary_flag_supported() ? 0x00 : 0x02;
|
||||
return l2cap_create_signaling_internal(acl_buffer, handle, pb_flags, L2CAP_CID_SIGNALING, cmd, identifier, argptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_BLE
|
||||
uint16_t l2cap_create_signaling_le(uint8_t * acl_buffer, hci_con_handle_t handle, L2CAP_SIGNALING_COMMANDS cmd, uint8_t identifier, va_list argptr){
|
||||
uint8_t pb_flags = 0x00; // First non-automatically-flushable packet of a higher layer message
|
||||
return l2cap_create_signaling_internal(acl_buffer, handle, pb_flags, L2CAP_CID_SIGNALING_LE, cmd, identifier, argptr);
|
||||
}
|
||||
#endif
|
||||
|
@ -90,8 +90,18 @@ typedef enum {
|
||||
L2CAP_CHANNEL_MODE_STREAMING_MODE = 4,
|
||||
} l2cap_channel_mode_t;
|
||||
|
||||
uint16_t l2cap_create_signaling_classic(uint8_t * acl_buffer,hci_con_handle_t handle, L2CAP_SIGNALING_COMMANDS cmd, uint8_t identifier, va_list argptr);
|
||||
uint16_t l2cap_create_signaling_le(uint8_t * acl_buffer, hci_con_handle_t handle, L2CAP_SIGNALING_COMMANDS cmd, uint8_t identifier, va_list argptr);
|
||||
/**
|
||||
* @brief Create L2CAP signaling packet based on template and va_args
|
||||
* @param acl_buffer to create packet
|
||||
* @param handle
|
||||
* @param pb_flags
|
||||
* @param cid
|
||||
* @param cmd
|
||||
* @param identifier
|
||||
* @param argptr
|
||||
* @return
|
||||
*/
|
||||
uint16_t l2cap_create_signaling_packet(uint8_t * acl_buffer, hci_con_handle_t handle, uint8_t pb_flags, uint16_t cid, L2CAP_SIGNALING_COMMANDS cmd, uint8_t identifier, va_list argptr);
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user