• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  *  Copyright 2014 Google, Inc.
4  *
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at:
8  *
9  *  http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  ******************************************************************************/
18 
19 #pragma once
20 
21 #include <stdbool.h>
22 #include <stdint.h>
23 
24 #include "device_features.h"
25 #include "hci_layer.h"
26 #include "hci_packet_factory.h"
27 #include "hci_packet_parser.h"
28 
29 static const char CONTROLLER_MODULE[] = "controller_module";
30 
31 typedef struct controller_t {
32   bool (*get_is_ready)(void);
33 
34   const RawAddress* (*get_address)(void);
35   const bt_version_t* (*get_bt_version)(void);
36 
37   const bt_device_features_t* (*get_features_classic)(int index);
38   uint8_t (*get_last_features_classic_index)(void);
39 
40   const bt_device_features_t* (*get_features_ble)(void);
41   const uint8_t* (*get_ble_supported_states)(void);
42 
43   bool (*supports_simple_pairing)(void);
44   bool (*supports_secure_connections)(void);
45   bool (*supports_simultaneous_le_bredr)(void);
46   bool (*supports_reading_remote_extended_features)(void);
47   bool (*supports_interlaced_inquiry_scan)(void);
48   bool (*supports_rssi_with_inquiry_results)(void);
49   bool (*supports_extended_inquiry_response)(void);
50   bool (*supports_master_slave_role_switch)(void);
51   bool (*supports_enhanced_setup_synchronous_connection)(void);
52   bool (*supports_enhanced_accept_synchronous_connection)(void);
53 
54   bool (*supports_ble)(void);
55   bool (*supports_ble_packet_extension)(void);
56   bool (*supports_ble_connection_parameters_request)(void);
57   bool (*supports_ble_privacy)(void);
58   bool (*supports_ble_set_privacy_mode)(void);
59   bool (*supports_ble_2m_phy)(void);
60   bool (*supports_ble_coded_phy)(void);
61   bool (*supports_ble_extended_advertising)(void);
62   bool (*supports_ble_periodic_advertising)(void);
63 
64   // Get the cached acl data sizes for the controller.
65   uint16_t (*get_acl_data_size_classic)(void);
66   uint16_t (*get_acl_data_size_ble)(void);
67 
68   // Get the cached acl packet sizes for the controller.
69   // This is a convenience function for the respective
70   // acl data size + size of the acl header.
71   uint16_t (*get_acl_packet_size_classic)(void);
72   uint16_t (*get_acl_packet_size_ble)(void);
73 
74   uint16_t (*get_ble_default_data_packet_length)(void);
75   uint16_t (*get_ble_maximum_tx_data_length)(void);
76   uint16_t (*get_ble_maxium_advertising_data_length)(void);
77   uint8_t (*get_ble_number_of_supported_advertising_sets)(void);
78 
79   // Get the number of acl packets the controller can buffer.
80   uint16_t (*get_acl_buffer_count_classic)(void);
81   uint8_t (*get_acl_buffer_count_ble)(void);
82 
83   uint8_t (*get_ble_white_list_size)(void);
84 
85   uint8_t (*get_ble_resolving_list_max_size)(void);
86   void (*set_ble_resolving_list_max_size)(int resolving_list_max_size);
87   uint8_t* (*get_local_supported_codecs)(uint8_t* number_of_codecs);
88   uint8_t (*get_le_all_initiating_phys)(void);
89 
90 } controller_t;
91 
92 const controller_t* controller_get_interface();
93 
94 const controller_t* controller_get_test_interface(
95     const hci_t* hci_interface,
96     const hci_packet_factory_t* packet_factory_interface,
97     const hci_packet_parser_t* packet_parser_interface);
98