mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-30 16:20:24 +00:00
gap: ENABLE_EXPLICIT_LINK_KEY_REPLY allows for asynchronous link key lookup by application
This commit is contained in:
parent
63c0b2fd6d
commit
308eeaffaa
@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
||||
- HCI Dump: Support BTSnoop format in hci_dump_posix_fs.c for format = HCI_DUMP_BTSNOOP
|
||||
- HCI Dump RTT STDOUT: drop messages if RTT buffer is full and RTT is configured for non-blocking
|
||||
- hci_cmd: support variable length fields and arrayed parameters
|
||||
- GAP: ENABLE_EXPLICIT_LINK_KEY_REPLY allows for asynchronous link key lookup by application
|
||||
- POSIX: btstack_signal allows to register for callback on signal, e.g. ctrl-c
|
||||
- Windows: btstack_stdin_window_register_ctrl_c_callback allows to register for ctrl-c
|
||||
- A2DP: allow to register media codec validator for sink and source with:
|
||||
|
@ -110,6 +110,7 @@ ENABLE_CONTROLLER_WARM_BOOT | Enable stack startup without power cycle (if
|
||||
ENABLE_SEGGER_RTT | Use SEGGER RTT for console output and packet log, see [additional options](#sec:rttConfiguration)
|
||||
ENABLE_EXPLICIT_CONNECTABLE_MODE_CONTROL | Disable calls to control Connectable Mode by L2CAP
|
||||
ENABLE_EXPLICIT_IO_CAPABILITIES_REPLY | Let application trigger sending IO Capabilities (Negative) Reply
|
||||
ENABLE_EXPLICIT_LINK_KEY_REPLY | Let application trigger sending Link Key (Negative) Response, allows for asynchronous link key lookup
|
||||
ENABLE_CLASSIC_OOB_PAIRING | Enable support for classic Out-of-Band (OOB) pairing
|
||||
ENABLE_A2DP_SOURCE_EXPLICIT_CONFIG | Let application configure stream endpoint (skip auto-config of SBC endpoint)
|
||||
ENABLE_AVDTP_ACCEPTOR_EXPLICIT_START_STREAM_CONFIRMATION | allow accept or reject of stream start on A2DP_SUBEVENT_START_STREAM_REQUESTED
|
||||
|
10
src/gap.h
10
src/gap.h
@ -844,6 +844,16 @@ uint8_t gap_ssp_io_capabilities_response(const bd_addr_t addr);
|
||||
*/
|
||||
uint8_t gap_ssp_io_capabilities_negative(const bd_addr_t addr);
|
||||
|
||||
/**
|
||||
* Send Link Key Reponse
|
||||
* @note Link Key (Negative) Reply is sent automaticallyu unless ENABLE_EXPLICIT_LINK_KEY_RESPONSE
|
||||
* @param addr
|
||||
* @param link_key
|
||||
* @param type or INVALID_LINK_KEY if link key not available
|
||||
* @return 0 if ok
|
||||
*/
|
||||
uint8_t gap_send_link_key_response(const bd_addr_t addr, link_key_t link_key, link_key_type_t type);
|
||||
|
||||
/**
|
||||
* @brief Enter Sniff mode
|
||||
* @param con_handle
|
||||
|
20
src/hci.c
20
src/hci.c
@ -2827,6 +2827,7 @@ static void event_handler(uint8_t *packet, uint16_t size){
|
||||
break;
|
||||
|
||||
case HCI_EVENT_LINK_KEY_REQUEST:
|
||||
#ifndef ENABLE_EXPLICIT_LINK_KEY_REPLY
|
||||
hci_event_link_key_request_get_bd_addr(packet, addr);
|
||||
conn = hci_connection_for_bd_addr_and_type(addr, BD_ADDR_TYPE_ACL);
|
||||
if (!conn) break;
|
||||
@ -6533,8 +6534,7 @@ int gap_ssp_confirmation_negative(const bd_addr_t addr){
|
||||
return gap_pairing_set_state_and_run(addr, GAP_PAIRING_STATE_SEND_CONFIRMATION_NEGATIVE);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_EXPLICIT_IO_CAPABILITIES_REPLY
|
||||
|
||||
#if defined(ENABLE_EXPLICIT_IO_CAPABILITIES_REPLY) || defined(ENABLE_EXPLICIT_LINK_KEY_REPLY)
|
||||
static uint8_t gap_set_auth_flag_and_run(const bd_addr_t addr, hci_authentication_flags_t flag){
|
||||
hci_connection_t * conn = hci_connection_for_bd_addr_and_type(addr, BD_ADDR_TYPE_ACL);
|
||||
if (!conn) return ERROR_CODE_UNKNOWN_CONNECTION_IDENTIFIER;
|
||||
@ -6542,7 +6542,9 @@ static uint8_t gap_set_auth_flag_and_run(const bd_addr_t addr, hci_authenticatio
|
||||
hci_run();
|
||||
return ERROR_CODE_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_EXPLICIT_IO_CAPABILITIES_REPLY
|
||||
uint8_t gap_ssp_io_capabilities_response(const bd_addr_t addr){
|
||||
return gap_set_auth_flag_and_run(addr, AUTH_FLAG_SEND_IO_CAPABILITIES_REPLY);
|
||||
}
|
||||
@ -6588,6 +6590,20 @@ void gap_ssp_generate_oob_data(void){
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_EXPLICIT_LINK_KEY_REPLY
|
||||
uint8_t gap_send_link_key_response(const bd_addr_t addr, link_key_t link_key, link_key_type_t type){
|
||||
hci_connection_t * connection = hci_connection_for_bd_addr_and_type(addr, BD_ADDR_TYPE_ACL);
|
||||
if (connection == NULL) {
|
||||
return ERROR_CODE_UNKNOWN_CONNECTION_IDENTIFIER;
|
||||
}
|
||||
|
||||
memcpy(connection->link_key, link_key, sizeof(link_key_t));
|
||||
connection->link_key_type = type;
|
||||
|
||||
return gap_set_auth_flag_and_run(addr, AUTH_FLAG_HANDLE_LINK_KEY_REQUEST);
|
||||
}
|
||||
|
||||
#endif // ENABLE_EXPLICIT_LINK_KEY_REPLY
|
||||
/**
|
||||
* @brief Set inquiry mode: standard, with RSSI, with RSSI + Extended Inquiry Results. Has to be called before power on.
|
||||
* @param inquiry_mode see bluetooth_defines.h
|
||||
|
Loading…
x
Reference in New Issue
Block a user