mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-04 06:39:53 +00:00
prepare for sending command_reject on le signaling channel
This commit is contained in:
parent
c61af878b4
commit
70efece186
27
src/l2cap.c
27
src/l2cap.c
@ -310,12 +310,31 @@ int l2cap_send_signaling_packet(hci_con_handle_t handle, L2CAP_SIGNALING_COMMAND
|
|||||||
uint8_t *acl_buffer = hci_get_outgoing_acl_packet_buffer();
|
uint8_t *acl_buffer = hci_get_outgoing_acl_packet_buffer();
|
||||||
va_list argptr;
|
va_list argptr;
|
||||||
va_start(argptr, identifier);
|
va_start(argptr, identifier);
|
||||||
uint16_t len = l2cap_create_signaling_internal(acl_buffer, handle, cmd, identifier, argptr);
|
uint16_t len = l2cap_create_signaling_classic(acl_buffer, handle, cmd, identifier, argptr);
|
||||||
va_end(argptr);
|
va_end(argptr);
|
||||||
// log_info("l2cap_send_signaling_packet con %u!\n", handle);
|
// log_info("l2cap_send_signaling_packet con %u!\n", handle);
|
||||||
return hci_send_acl_packet(acl_buffer, len);
|
return hci_send_acl_packet(acl_buffer, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_BLE
|
||||||
|
int l2cap_send_le_signaling_packet(hci_con_handle_t handle, L2CAP_SIGNALING_COMMANDS cmd, uint8_t identifier, ...){
|
||||||
|
|
||||||
|
if (!hci_can_send_packet_now(HCI_ACL_DATA_PACKET)){
|
||||||
|
log_info("l2cap_send_signaling_packet, cannot send\n");
|
||||||
|
return BTSTACK_ACL_BUFFERS_FULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// log_info("l2cap_send_signaling_packet type %u\n", cmd);
|
||||||
|
uint8_t *acl_buffer = hci_get_outgoing_acl_packet_buffer();
|
||||||
|
va_list argptr;
|
||||||
|
va_start(argptr, identifier);
|
||||||
|
uint16_t len = l2cap_create_signaling_le(acl_buffer, handle, cmd, identifier, argptr);
|
||||||
|
va_end(argptr);
|
||||||
|
// log_info("l2cap_send_signaling_packet con %u!\n", handle);
|
||||||
|
return hci_send_acl_packet(acl_buffer, len);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
uint8_t *l2cap_get_outgoing_buffer(void){
|
uint8_t *l2cap_get_outgoing_buffer(void){
|
||||||
return hci_get_outgoing_acl_packet_buffer() + COMPLETE_L2CAP_HEADER; // 8 bytes
|
return hci_get_outgoing_acl_packet_buffer() + COMPLETE_L2CAP_HEADER; // 8 bytes
|
||||||
}
|
}
|
||||||
@ -440,7 +459,7 @@ void l2cap_run(void){
|
|||||||
if (!hci_can_send_packet_now(HCI_ACL_DATA_PACKET)) break;
|
if (!hci_can_send_packet_now(HCI_ACL_DATA_PACKET)) break;
|
||||||
|
|
||||||
hci_con_handle_t handle = signaling_responses[0].handle;
|
hci_con_handle_t handle = signaling_responses[0].handle;
|
||||||
uint8_t sig_id = signaling_responses[0].sig_id;
|
uint8_t sig_id = signaling_responses[0].sig_id;
|
||||||
uint16_t infoType = signaling_responses[0].data; // INFORMATION_REQUEST
|
uint16_t infoType = signaling_responses[0].data; // INFORMATION_REQUEST
|
||||||
uint16_t result = signaling_responses[0].data; // CONNECTION_REQUEST, COMMAND_REJECT
|
uint16_t result = signaling_responses[0].data; // CONNECTION_REQUEST, COMMAND_REJECT
|
||||||
|
|
||||||
@ -481,7 +500,11 @@ void l2cap_run(void){
|
|||||||
break;
|
break;
|
||||||
case COMMAND_REJECT:
|
case COMMAND_REJECT:
|
||||||
l2cap_send_signaling_packet(handle, COMMAND_REJECT, sig_id, result, 0, NULL);
|
l2cap_send_signaling_packet(handle, COMMAND_REJECT, sig_id, result, 0, NULL);
|
||||||
|
#ifdef HAVE_BLE
|
||||||
|
case COMMAND_REJECT_LE:
|
||||||
|
l2cap_send_le_signaling_packet(handle, COMMAND_REJECT, sig_id, result, 0, NULL);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
// should not happen
|
// should not happen
|
||||||
break;
|
break;
|
||||||
|
@ -65,7 +65,8 @@ typedef enum {
|
|||||||
INFORMATION_REQUEST,
|
INFORMATION_REQUEST,
|
||||||
INFORMATION_RESPONSE,
|
INFORMATION_RESPONSE,
|
||||||
CONNECTION_PARAMETER_UPDATE_REQUEST = 0x12,
|
CONNECTION_PARAMETER_UPDATE_REQUEST = 0x12,
|
||||||
CONNECTION_PARAMETER_UPDATE_RESPONSE
|
CONNECTION_PARAMETER_UPDATE_RESPONSE,
|
||||||
|
COMMAND_REJECT_LE = 0x14, // internal to BTstack
|
||||||
} L2CAP_SIGNALING_COMMANDS;
|
} L2CAP_SIGNALING_COMMANDS;
|
||||||
|
|
||||||
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_classic(uint8_t * acl_buffer,hci_con_handle_t handle, L2CAP_SIGNALING_COMMANDS cmd, uint8_t identifier, va_list argptr);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user