prepare for sending command_reject on le signaling channel

This commit is contained in:
matthias.ringwald@gmail.com 2014-02-18 21:26:46 +00:00
parent c61af878b4
commit 70efece186
2 changed files with 27 additions and 3 deletions

View File

@ -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();
va_list argptr;
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);
// log_info("l2cap_send_signaling_packet con %u!\n", handle);
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){
return hci_get_outgoing_acl_packet_buffer() + COMPLETE_L2CAP_HEADER; // 8 bytes
}
@ -481,7 +500,11 @@ void l2cap_run(void){
break;
case COMMAND_REJECT:
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;
#endif
default:
// should not happen
break;

View File

@ -65,7 +65,8 @@ typedef enum {
INFORMATION_REQUEST,
INFORMATION_RESPONSE,
CONNECTION_PARAMETER_UPDATE_REQUEST = 0x12,
CONNECTION_PARAMETER_UPDATE_RESPONSE
CONNECTION_PARAMETER_UPDATE_RESPONSE,
COMMAND_REJECT_LE = 0x14, // internal to BTstack
} 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);