Merge "Separate advertiser from GATT client (3/4)" am: 7a3148bc41
am: 7703e64ee5
Change-Id: I233604f68f5722d9b9a1991728f4ba83a776906b
This commit is contained in:
commit
89456857e8
3 changed files with 95 additions and 39 deletions
88
include/hardware/ble_advertiser.h
Normal file
88
include/hardware/ble_advertiser.h
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2016 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef ANDROID_INCLUDE_BLE_ADVERTISER_H
|
||||||
|
#define ANDROID_INCLUDE_BLE_ADVERTISER_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <vector>
|
||||||
|
#include "bt_gatt_types.h"
|
||||||
|
#include "bt_common_types.h"
|
||||||
|
|
||||||
|
using std::vector;
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
/** Callback invoked in response to register_advertiser */
|
||||||
|
typedef void (*register_advertiser_callback)(int status, int advertiser_id,
|
||||||
|
bt_uuid_t *uuid);
|
||||||
|
|
||||||
|
/** Callback invoked when multi-adv enable operation has completed */
|
||||||
|
typedef void (*multi_adv_enable_callback)(int advertiser_id, int status);
|
||||||
|
|
||||||
|
/** Callback invoked when multi-adv param update operation has completed */
|
||||||
|
typedef void (*multi_adv_update_callback)(int advertiser_id, int status);
|
||||||
|
|
||||||
|
/** Callback invoked when multi-adv instance data set operation has completed */
|
||||||
|
typedef void (*multi_adv_data_callback)(int advertiser_id, int status);
|
||||||
|
|
||||||
|
/** Callback invoked when multi-adv disable operation has completed */
|
||||||
|
typedef void (*multi_adv_disable_callback)(int advertiser_id, int status);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
register_advertiser_callback register_advertiser_cb;
|
||||||
|
multi_adv_enable_callback multi_adv_enable_cb;
|
||||||
|
multi_adv_update_callback multi_adv_update_cb;
|
||||||
|
multi_adv_data_callback multi_adv_data_cb;
|
||||||
|
multi_adv_disable_callback multi_adv_disable_cb;
|
||||||
|
} ble_advertiser_callbacks_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
/** Registers an advertiser with the stack */
|
||||||
|
bt_status_t (*register_advertiser)(bt_uuid_t *uuid);
|
||||||
|
|
||||||
|
/** Unregister a advertiser from the stack */
|
||||||
|
bt_status_t (*unregister_advertiser)(int advertiser_id);
|
||||||
|
|
||||||
|
/** Set the advertising data or scan response data */
|
||||||
|
bt_status_t (*set_adv_data)(int advertiser_id, bool set_scan_rsp, bool include_name,
|
||||||
|
bool include_txpower, int min_interval, int max_interval, int appearance,
|
||||||
|
vector<uint8_t> manufacturer_data,
|
||||||
|
vector<uint8_t> service_data,
|
||||||
|
vector<uint8_t> service_uuid);
|
||||||
|
|
||||||
|
/* Set up the parameters as per spec, user manual specified values and enable multi ADV */
|
||||||
|
bt_status_t (*multi_adv_enable)(int advertiser_id, int min_interval,int max_interval,int adv_type,
|
||||||
|
int chnl_map, int tx_power, int timeout_s);
|
||||||
|
|
||||||
|
/* Update the parameters as per spec, user manual specified values and restart multi ADV */
|
||||||
|
bt_status_t (*multi_adv_update)(int advertiser_id, int min_interval,int max_interval,int adv_type,
|
||||||
|
int chnl_map, int tx_power, int timeout_s);
|
||||||
|
|
||||||
|
/* Setup the data for the specified instance */
|
||||||
|
bt_status_t (*multi_adv_set_inst_data)(int advertiser_id, bool set_scan_rsp, bool include_name,
|
||||||
|
bool incl_txpower, int appearance, vector<uint8_t> manufacturer_data,
|
||||||
|
vector<uint8_t> service_data, vector<uint8_t> service_uuid);
|
||||||
|
|
||||||
|
/* Disable the multi adv instance */
|
||||||
|
bt_status_t (*multi_adv_disable)(int advertiser_id);
|
||||||
|
|
||||||
|
} ble_advertiser_interface_t;
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
#endif /* ANDROID_INCLUDE_BLE_ADVERTISER_H */
|
|
@ -19,6 +19,7 @@
|
||||||
#define ANDROID_INCLUDE_BT_GATT_H
|
#define ANDROID_INCLUDE_BT_GATT_H
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include "ble_advertiser.h"
|
||||||
#include "bt_gatt_client.h"
|
#include "bt_gatt_client.h"
|
||||||
#include "bt_gatt_server.h"
|
#include "bt_gatt_server.h"
|
||||||
|
|
||||||
|
@ -34,6 +35,9 @@ typedef struct {
|
||||||
|
|
||||||
/** GATT Server callbacks */
|
/** GATT Server callbacks */
|
||||||
const btgatt_server_callbacks_t* server;
|
const btgatt_server_callbacks_t* server;
|
||||||
|
|
||||||
|
/** Advertiser callbacks */
|
||||||
|
const ble_advertiser_callbacks_t* advertiser;
|
||||||
} btgatt_callbacks_t;
|
} btgatt_callbacks_t;
|
||||||
|
|
||||||
/** Represents the standard Bluetooth GATT interface. */
|
/** Represents the standard Bluetooth GATT interface. */
|
||||||
|
@ -54,6 +58,9 @@ typedef struct {
|
||||||
|
|
||||||
/** Pointer to the GATT server interface methods.*/
|
/** Pointer to the GATT server interface methods.*/
|
||||||
const btgatt_server_interface_t* server;
|
const btgatt_server_interface_t* server;
|
||||||
|
|
||||||
|
/** Pointer to the advertiser interface methods.*/
|
||||||
|
const ble_advertiser_interface_t* advertiser;
|
||||||
} btgatt_interface_t;
|
} btgatt_interface_t;
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
|
@ -187,18 +187,6 @@ typedef void (*scan_filter_param_callback)(int action, int client_if, int status
|
||||||
/** Callback invoked when a scan filter configuration command has completed */
|
/** Callback invoked when a scan filter configuration command has completed */
|
||||||
typedef void (*scan_filter_status_callback)(int enable, int client_if, int status);
|
typedef void (*scan_filter_status_callback)(int enable, int client_if, int status);
|
||||||
|
|
||||||
/** Callback invoked when multi-adv enable operation has completed */
|
|
||||||
typedef void (*multi_adv_enable_callback)(int client_if, int status);
|
|
||||||
|
|
||||||
/** Callback invoked when multi-adv param update operation has completed */
|
|
||||||
typedef void (*multi_adv_update_callback)(int client_if, int status);
|
|
||||||
|
|
||||||
/** Callback invoked when multi-adv instance data set operation has completed */
|
|
||||||
typedef void (*multi_adv_data_callback)(int client_if, int status);
|
|
||||||
|
|
||||||
/** Callback invoked when multi-adv disable operation has completed */
|
|
||||||
typedef void (*multi_adv_disable_callback)(int client_if, int status);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback notifying an application that a remote device connection is currently congested
|
* Callback notifying an application that a remote device connection is currently congested
|
||||||
* and cannot receive any more data. An application should avoid sending more data until
|
* and cannot receive any more data. An application should avoid sending more data until
|
||||||
|
@ -253,10 +241,6 @@ typedef struct {
|
||||||
scan_filter_cfg_callback scan_filter_cfg_cb;
|
scan_filter_cfg_callback scan_filter_cfg_cb;
|
||||||
scan_filter_param_callback scan_filter_param_cb;
|
scan_filter_param_callback scan_filter_param_cb;
|
||||||
scan_filter_status_callback scan_filter_status_cb;
|
scan_filter_status_callback scan_filter_status_cb;
|
||||||
multi_adv_enable_callback multi_adv_enable_cb;
|
|
||||||
multi_adv_update_callback multi_adv_update_cb;
|
|
||||||
multi_adv_data_callback multi_adv_data_cb;
|
|
||||||
multi_adv_disable_callback multi_adv_disable_cb;
|
|
||||||
congestion_callback congestion_cb;
|
congestion_callback congestion_cb;
|
||||||
batchscan_cfg_storage_callback batchscan_cfg_storage_cb;
|
batchscan_cfg_storage_callback batchscan_cfg_storage_cb;
|
||||||
batchscan_enable_disable_callback batchscan_enb_disable_cb;
|
batchscan_enable_disable_callback batchscan_enb_disable_cb;
|
||||||
|
@ -355,13 +339,6 @@ typedef struct {
|
||||||
/** Determine the type of the remote device (LE, BR/EDR, Dual-mode) */
|
/** Determine the type of the remote device (LE, BR/EDR, Dual-mode) */
|
||||||
int (*get_device_type)( const bt_bdaddr_t *bd_addr );
|
int (*get_device_type)( const bt_bdaddr_t *bd_addr );
|
||||||
|
|
||||||
/** Set the advertising data or scan response data */
|
|
||||||
bt_status_t (*set_adv_data)(int client_if, bool set_scan_rsp, bool include_name,
|
|
||||||
bool include_txpower, int min_interval, int max_interval, int appearance,
|
|
||||||
vector<uint8_t> manufacturer_data,
|
|
||||||
vector<uint8_t> service_data,
|
|
||||||
vector<uint8_t> service_uuid);
|
|
||||||
|
|
||||||
/** Configure the MTU for a given connection */
|
/** Configure the MTU for a given connection */
|
||||||
bt_status_t (*configure_mtu)(int conn_id, int mtu);
|
bt_status_t (*configure_mtu)(int conn_id, int mtu);
|
||||||
|
|
||||||
|
@ -372,22 +349,6 @@ typedef struct {
|
||||||
/** Sets the LE scan interval and window in units of N*0.625 msec */
|
/** Sets the LE scan interval and window in units of N*0.625 msec */
|
||||||
bt_status_t (*set_scan_parameters)(int client_if, int scan_interval, int scan_window);
|
bt_status_t (*set_scan_parameters)(int client_if, int scan_interval, int scan_window);
|
||||||
|
|
||||||
/* Setup the parameters as per spec, user manual specified values and enable multi ADV */
|
|
||||||
bt_status_t (*multi_adv_enable)(int client_if, int min_interval,int max_interval,int adv_type,
|
|
||||||
int chnl_map, int tx_power, int timeout_s);
|
|
||||||
|
|
||||||
/* Update the parameters as per spec, user manual specified values and restart multi ADV */
|
|
||||||
bt_status_t (*multi_adv_update)(int client_if, int min_interval,int max_interval,int adv_type,
|
|
||||||
int chnl_map, int tx_power, int timeout_s);
|
|
||||||
|
|
||||||
/* Setup the data for the specified instance */
|
|
||||||
bt_status_t (*multi_adv_set_inst_data)(int client_if, bool set_scan_rsp, bool include_name,
|
|
||||||
bool incl_txpower, int appearance, vector<uint8_t> manufacturer_data,
|
|
||||||
vector<uint8_t> service_data, vector<uint8_t> service_uuid);
|
|
||||||
|
|
||||||
/* Disable the multi adv instance */
|
|
||||||
bt_status_t (*multi_adv_disable)(int client_if);
|
|
||||||
|
|
||||||
/* Configure the batchscan storage */
|
/* Configure the batchscan storage */
|
||||||
bt_status_t (*batchscan_cfg_storage)(int client_if, int batch_scan_full_max,
|
bt_status_t (*batchscan_cfg_storage)(int client_if, int batch_scan_full_max,
|
||||||
int batch_scan_trunc_max, int batch_scan_notify_threshold);
|
int batch_scan_trunc_max, int batch_scan_notify_threshold);
|
||||||
|
|
Loading…
Reference in a new issue