1f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski/*
2f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski * Copyright (C) 2015 The Android Open Source Project
3f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski *
4f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski * Licensed under the Apache License, Version 2.0 (the "License");
5f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski * you may not use this file except in compliance with the License.
6f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski * You may obtain a copy of the License at
7f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski *
8f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski *   http://www.apache.org/licenses/LICENSE-2.0
9f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski *
10f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski * Unless required by applicable law or agreed to in writing, software
11f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski * distributed under the License is distributed on an "AS IS" BASIS,
12f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski * See the License for the specific language governing permissions and
14f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski * limitations under the License.
15f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski */
16f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski
17f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski/******************************************************************************
18f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski *
193a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski * This file contains constants and definitions that can be used commonly
203a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski * between JNI and stack layer
21f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski *
22f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski ******************************************************************************/
23f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski#ifndef ANDROID_INCLUDE_BT_COMMON_TYPES_H
24f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski#define ANDROID_INCLUDE_BT_COMMON_TYPES_H
25f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski
26f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski#include "bluetooth.h"
27f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski
28f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski#include <bluetooth/uuid.h>
290ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski#include <vector>
30f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski
313a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowskitypedef struct {
323a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t client_if;
333a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t filt_index;
343a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t advertiser_state;
353a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t advertiser_info_present;
363a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t addr_type;
373a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t tx_power;
383a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  int8_t rssi_value;
393a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint16_t time_stamp;
403a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  RawAddress bd_addr;
413a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t adv_pkt_len;
423a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t* p_adv_pkt_data;
433a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t scan_rsp_len;
443a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t* p_scan_rsp_data;
45f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski} btgatt_track_adv_info_t;
46f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski
473a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowskitypedef enum {
483a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  BTGATT_DB_PRIMARY_SERVICE,
493a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  BTGATT_DB_SECONDARY_SERVICE,
503a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  BTGATT_DB_INCLUDED_SERVICE,
513a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  BTGATT_DB_CHARACTERISTIC,
523a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  BTGATT_DB_DESCRIPTOR,
53f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski} bt_gatt_db_attribute_type_t;
54f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski
553a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowskitypedef struct {
563a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint16_t id;
573a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  bluetooth::Uuid uuid;
583a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  bt_gatt_db_attribute_type_t type;
593a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint16_t attribute_handle;
60f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski
613a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  /*
623a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski   * If |type| is |BTGATT_DB_PRIMARY_SERVICE|, or
633a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski   * |BTGATT_DB_SECONDARY_SERVICE|, this contains the start and end attribute
643a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski   * handles.
653a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski   */
663a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint16_t start_handle;
673a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint16_t end_handle;
68f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski
693a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  /*
703a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski   * If |type| is |BTGATT_DB_CHARACTERISTIC|, this contains the properties of
713a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski   * the characteristic.
723a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski   */
733a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t properties;
743a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint16_t permissions;
75f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski} btgatt_db_element_t;
76f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski
773a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowskitypedef struct {
783a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint16_t feat_seln;
793a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint16_t list_logic_type;
803a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t filt_logic_type;
813a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t rssi_high_thres;
823a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t rssi_low_thres;
833a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t dely_mode;
843a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint16_t found_timeout;
853a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint16_t lost_timeout;
863a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint8_t found_timeout_cnt;
873a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski  uint16_t num_of_tracking_entries;
88f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski} btgatt_filt_param_setup_t;
89f2f207a91cc2548f32428d2006e1fec4179371e1Jakub Pawlowski
900ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski// Advertising Packet Content Filter
910ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowskistruct ApcfCommand {
920ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski  uint8_t type;
930ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski  RawAddress address;
940ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski  uint8_t addr_type;
950ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski  bluetooth::Uuid uuid;
960ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski  bluetooth::Uuid uuid_mask;
970ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski  std::vector<uint8_t> name;
980ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski  uint16_t company;
990ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski  uint16_t company_mask;
1000ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski  std::vector<uint8_t> data;
1010ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski  std::vector<uint8_t> data_mask;
1020ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski};
1030ddfae721af17fee6897382f0aa9dabd774ca074Jakub Pawlowski
1043a3b82c37a2b140443c2af42ab264520a067ea2eJakub Pawlowski#endif /* ANDROID_INCLUDE_BT_COMMON_TYPES_H */
105