l2cap.c (755dca2dde65a7a802c25f106b869961c272eb2c) | l2cap.c (bb1f325522e89d56162c04aa699e03379b4c8308) |
---|---|
1/* 2 * Copyright (C) 2014 BlueKitchen GmbH 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright --- 1625 unchanged lines hidden (view full) --- 1634} 1635 1636static uint32_t l2cap_extended_features_mask(void){ 1637 // extended features request supported, features: fixed channels, unicast connectionless data reception 1638 uint32_t features = 0x280; 1639#ifdef ENABLE_L2CAP_ENHANCED_RETRANSMISSION_MODE 1640 features |= 0x0028; 1641#endif | 1/* 2 * Copyright (C) 2014 BlueKitchen GmbH 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright --- 1625 unchanged lines hidden (view full) --- 1634} 1635 1636static uint32_t l2cap_extended_features_mask(void){ 1637 // extended features request supported, features: fixed channels, unicast connectionless data reception 1638 uint32_t features = 0x280; 1639#ifdef ENABLE_L2CAP_ENHANCED_RETRANSMISSION_MODE 1640 features |= 0x0028; 1641#endif |
1642#ifdef ENABLE_L2CAP_ENHANCED_CREDIT_BASED_FLOW_CONTROL_MODE 1643 features |= 0x0400; 1644#endif |
|
1642 return features; 1643} 1644#endif 1645 1646// 1647#ifdef ENABLE_CLASSIC 1648 1649// returns true if channel was finalized --- 267 unchanged lines hidden (view full) --- 1917 l2cap_send_classic_signaling_packet(handle, DISCONNECTION_RESPONSE, sig_id, dest_cid, source_cid); 1918 break; 1919 case ECHO_REQUEST: 1920 l2cap_send_classic_signaling_packet(handle, ECHO_RESPONSE, sig_id, 0, NULL); 1921 break; 1922 case INFORMATION_REQUEST: 1923 switch (info_type){ 1924 case L2CAP_INFO_TYPE_CONNECTIONLESS_MTU: { | 1645 return features; 1646} 1647#endif 1648 1649// 1650#ifdef ENABLE_CLASSIC 1651 1652// returns true if channel was finalized --- 267 unchanged lines hidden (view full) --- 1920 l2cap_send_classic_signaling_packet(handle, DISCONNECTION_RESPONSE, sig_id, dest_cid, source_cid); 1921 break; 1922 case ECHO_REQUEST: 1923 l2cap_send_classic_signaling_packet(handle, ECHO_RESPONSE, sig_id, 0, NULL); 1924 break; 1925 case INFORMATION_REQUEST: 1926 switch (info_type){ 1927 case L2CAP_INFO_TYPE_CONNECTIONLESS_MTU: { |
1925 uint16_t connectionless_mtu = hci_max_acl_data_packet_length(); | 1928 uint16_t connectionless_mtu = hci_max_acl_data_packet_length(); |
1926 l2cap_send_classic_signaling_packet(handle, INFORMATION_RESPONSE, sig_id, info_type, 0, 1927 sizeof(connectionless_mtu), &connectionless_mtu); 1928 } 1929 break; 1930 case L2CAP_INFO_TYPE_EXTENDED_FEATURES_SUPPORTED: { | 1929 l2cap_send_classic_signaling_packet(handle, INFORMATION_RESPONSE, sig_id, info_type, 0, 1930 sizeof(connectionless_mtu), &connectionless_mtu); 1931 } 1932 break; 1933 case L2CAP_INFO_TYPE_EXTENDED_FEATURES_SUPPORTED: { |
1931 uint32_t features = l2cap_extended_features_mask(); | 1934 uint32_t features = l2cap_extended_features_mask(); |
1932 l2cap_send_classic_signaling_packet(handle, INFORMATION_RESPONSE, sig_id, info_type, 0, 1933 sizeof(features), &features); 1934 } 1935 break; 1936 case L2CAP_INFO_TYPE_FIXED_CHANNELS_SUPPORTED: { 1937 uint8_t map[8]; 1938 memset(map, 0, 8); 1939 // L2CAP Signaling Channel + Connectionless reception --- 3945 unchanged lines hidden --- | 1935 l2cap_send_classic_signaling_packet(handle, INFORMATION_RESPONSE, sig_id, info_type, 0, 1936 sizeof(features), &features); 1937 } 1938 break; 1939 case L2CAP_INFO_TYPE_FIXED_CHANNELS_SUPPORTED: { 1940 uint8_t map[8]; 1941 memset(map, 0, 8); 1942 // L2CAP Signaling Channel + Connectionless reception --- 3945 unchanged lines hidden --- |