mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-05 00:40:19 +00:00
l2cap: introduce l2cap_info_type_t
This commit is contained in:
parent
943013524c
commit
3e64cb4412
28
src/l2cap.c
28
src/l2cap.c
@ -1176,12 +1176,12 @@ static void l2cap_run(void){
|
|||||||
|
|
||||||
uint8_t sig_id = signaling_responses[0].sig_id;
|
uint8_t sig_id = signaling_responses[0].sig_id;
|
||||||
uint8_t response_code = signaling_responses[0].code;
|
uint8_t response_code = signaling_responses[0].code;
|
||||||
uint16_t infoType = signaling_responses[0].data; // INFORMATION_REQUEST
|
uint16_t info_type = 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
|
||||||
#ifdef ENABLE_CLASSIC
|
#ifdef ENABLE_CLASSIC
|
||||||
uint16_t source_cid = signaling_responses[0].cid; // CONNECTION_REQUEST
|
uint16_t source_cid = signaling_responses[0].cid; // CONNECTION_REQUEST
|
||||||
#endif
|
#endif
|
||||||
UNUSED(infoType);
|
UNUSED(info_type);
|
||||||
|
|
||||||
// remove first item before sending (to avoid sending response mutliple times)
|
// remove first item before sending (to avoid sending response mutliple times)
|
||||||
signaling_responses_pending--;
|
signaling_responses_pending--;
|
||||||
@ -1203,27 +1203,27 @@ static void l2cap_run(void){
|
|||||||
l2cap_send_signaling_packet(handle, ECHO_RESPONSE, sig_id, 0, NULL);
|
l2cap_send_signaling_packet(handle, ECHO_RESPONSE, sig_id, 0, NULL);
|
||||||
break;
|
break;
|
||||||
case INFORMATION_REQUEST:
|
case INFORMATION_REQUEST:
|
||||||
switch (infoType){
|
switch (info_type){
|
||||||
case 1: { // Connectionless MTU
|
case L2CAP_INFO_TYPE_CONNECTIONLESS_MTU: {
|
||||||
uint16_t connectionless_mtu = hci_max_acl_data_packet_length();
|
uint16_t connectionless_mtu = hci_max_acl_data_packet_length();
|
||||||
l2cap_send_signaling_packet(handle, INFORMATION_RESPONSE, sig_id, infoType, 0, sizeof(connectionless_mtu), &connectionless_mtu);
|
l2cap_send_signaling_packet(handle, INFORMATION_RESPONSE, sig_id, info_type, 0, sizeof(connectionless_mtu), &connectionless_mtu);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2: { // Extended Features Supported
|
case L2CAP_INFO_TYPE_EXTENDED_FEATURES_SUPPORTED: {
|
||||||
uint32_t features = l2cap_extended_features_mask();
|
uint32_t features = l2cap_extended_features_mask();
|
||||||
l2cap_send_signaling_packet(handle, INFORMATION_RESPONSE, sig_id, infoType, 0, sizeof(features), &features);
|
l2cap_send_signaling_packet(handle, INFORMATION_RESPONSE, sig_id, info_type, 0, sizeof(features), &features);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3: { // Fixed Channels Supported
|
case L2CAP_INFO_TYPE_FIXED_CHANNELS_SUPPORTED: {
|
||||||
uint8_t map[8];
|
uint8_t map[8];
|
||||||
memset(map, 0, 8);
|
memset(map, 0, 8);
|
||||||
map[0] = 0x06; // L2CAP Signaling Channel (0x02) + Connectionless reception (0x04)
|
map[0] = 0x06; // L2CAP Signaling Channel (0x02) + Connectionless reception (0x04)
|
||||||
l2cap_send_signaling_packet(handle, INFORMATION_RESPONSE, sig_id, infoType, 0, sizeof(map), &map);
|
l2cap_send_signaling_packet(handle, INFORMATION_RESPONSE, sig_id, info_type, 0, sizeof(map), &map);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// all other types are not supported
|
// all other types are not supported
|
||||||
l2cap_send_signaling_packet(handle, INFORMATION_RESPONSE, sig_id, infoType, 1, 0, NULL);
|
l2cap_send_signaling_packet(handle, INFORMATION_RESPONSE, sig_id, info_type, 1, 0, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1257,7 +1257,7 @@ static void l2cap_run(void){
|
|||||||
connection->l2cap_state.information_state = L2CAP_INFORMATION_STATE_W4_EXTENDED_FEATURE_RESPONSE;
|
connection->l2cap_state.information_state = L2CAP_INFORMATION_STATE_W4_EXTENDED_FEATURE_RESPONSE;
|
||||||
// send information request for extended features
|
// send information request for extended features
|
||||||
uint8_t sig_id = l2cap_next_sig_id();
|
uint8_t sig_id = l2cap_next_sig_id();
|
||||||
uint8_t info_type = 2;
|
uint8_t info_type = L2CAP_INFO_TYPE_EXTENDED_FEATURES_SUPPORTED;
|
||||||
l2cap_send_signaling_packet(connection->con_handle, INFORMATION_REQUEST, sig_id, info_type);
|
l2cap_send_signaling_packet(connection->con_handle, INFORMATION_REQUEST, sig_id, info_type);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -2381,8 +2381,8 @@ static void l2cap_signaling_handler_dispatch( hci_con_handle_t handle, uint8_t *
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
case INFORMATION_REQUEST: {
|
case INFORMATION_REQUEST: {
|
||||||
uint16_t infoType = little_endian_read_16(command, L2CAP_SIGNALING_COMMAND_DATA_OFFSET);
|
uint16_t info_type = little_endian_read_16(command, L2CAP_SIGNALING_COMMAND_DATA_OFFSET);
|
||||||
l2cap_register_signaling_response(handle, code, sig_id, 0, infoType);
|
l2cap_register_signaling_response(handle, code, sig_id, 0, info_type);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2393,7 +2393,7 @@ static void l2cap_signaling_handler_dispatch( hci_con_handle_t handle, uint8_t *
|
|||||||
uint16_t info_type = little_endian_read_16(command, L2CAP_SIGNALING_COMMAND_DATA_OFFSET);
|
uint16_t info_type = little_endian_read_16(command, L2CAP_SIGNALING_COMMAND_DATA_OFFSET);
|
||||||
uint16_t result = little_endian_read_16(command, L2CAP_SIGNALING_COMMAND_DATA_OFFSET+2);
|
uint16_t result = little_endian_read_16(command, L2CAP_SIGNALING_COMMAND_DATA_OFFSET+2);
|
||||||
if (result != 0) return;
|
if (result != 0) return;
|
||||||
if (info_type != 0x02) return;
|
if (info_type != L2CAP_INFO_TYPE_EXTENDED_FEATURES_SUPPORTED) return;
|
||||||
connection->l2cap_state.information_state = L2CAP_INFORMATION_STATE_DONE;
|
connection->l2cap_state.information_state = L2CAP_INFORMATION_STATE_DONE;
|
||||||
connection->l2cap_state.extended_feature_mask = little_endian_read_16(command, L2CAP_SIGNALING_COMMAND_DATA_OFFSET+4);
|
connection->l2cap_state.extended_feature_mask = little_endian_read_16(command, L2CAP_SIGNALING_COMMAND_DATA_OFFSET+4);
|
||||||
log_info("extended features mask 0x%02x", connection->l2cap_state.extended_feature_mask);
|
log_info("extended features mask 0x%02x", connection->l2cap_state.extended_feature_mask);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user