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 ---