1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 /******************************************************************************
18  *
19  * This file contains constants and definitions that can be used commonly
20  * between JNI and stack layer
21  *
22  ******************************************************************************/
23 #ifndef ANDROID_INCLUDE_BT_COMMON_TYPES_H
24 #define ANDROID_INCLUDE_BT_COMMON_TYPES_H
25 
26 #include "bluetooth.h"
27 
28 #include <bluetooth/uuid.h>
29 #include <vector>
30 
31 typedef struct {
32   uint8_t client_if;
33   uint8_t filt_index;
34   uint8_t advertiser_state;
35   uint8_t advertiser_info_present;
36   uint8_t addr_type;
37   uint8_t tx_power;
38   int8_t rssi_value;
39   uint16_t time_stamp;
40   RawAddress bd_addr;
41   uint8_t adv_pkt_len;
42   uint8_t* p_adv_pkt_data;
43   uint8_t scan_rsp_len;
44   uint8_t* p_scan_rsp_data;
45 } btgatt_track_adv_info_t;
46 
47 typedef enum {
48   BTGATT_DB_PRIMARY_SERVICE,
49   BTGATT_DB_SECONDARY_SERVICE,
50   BTGATT_DB_INCLUDED_SERVICE,
51   BTGATT_DB_CHARACTERISTIC,
52   BTGATT_DB_DESCRIPTOR,
53 } bt_gatt_db_attribute_type_t;
54 
55 typedef struct {
56   uint16_t id;
57   bluetooth::Uuid uuid;
58   bt_gatt_db_attribute_type_t type;
59   uint16_t attribute_handle;
60 
61   /*
62    * If |type| is |BTGATT_DB_PRIMARY_SERVICE|, or
63    * |BTGATT_DB_SECONDARY_SERVICE|, this contains the start and end attribute
64    * handles.
65    */
66   uint16_t start_handle;
67   uint16_t end_handle;
68 
69   /*
70    * If |type| is |BTGATT_DB_CHARACTERISTIC|, this contains the properties of
71    * the characteristic.
72    */
73   uint8_t properties;
74   uint16_t permissions;
75 } btgatt_db_element_t;
76 
77 typedef struct {
78   uint16_t feat_seln;
79   uint16_t list_logic_type;
80   uint8_t filt_logic_type;
81   uint8_t rssi_high_thres;
82   uint8_t rssi_low_thres;
83   uint8_t dely_mode;
84   uint16_t found_timeout;
85   uint16_t lost_timeout;
86   uint8_t found_timeout_cnt;
87   uint16_t num_of_tracking_entries;
88 } btgatt_filt_param_setup_t;
89 
90 // Advertising Packet Content Filter
91 struct ApcfCommand {
92   uint8_t type;
93   RawAddress address;
94   uint8_t addr_type;
95   bluetooth::Uuid uuid;
96   bluetooth::Uuid uuid_mask;
97   std::vector<uint8_t> name;
98   uint16_t company;
99   uint16_t company_mask;
100   std::vector<uint8_t> data;
101   std::vector<uint8_t> data_mask;
102 };
103 
104 #endif /* ANDROID_INCLUDE_BT_COMMON_TYPES_H */
105