19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008, The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.bluetooth;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1916fb88a673c41b93c5d57ccb28c2697e7d87701aNick Pellyimport android.bluetooth.IBluetoothCallback;
20ef2cb7c93a99096799d415e721dda46d1bf7a005Jaikumar Ganeshimport android.bluetooth.IBluetoothStateChangeCallback;
218caac741a011ef245066f327e54cc6a0b77e6617Prerepa Viswanadhamimport android.bluetooth.BluetoothActivityEnergyInfo;
22545e6708adda6859932b55fd824794b1401f5318Jaikumar Ganeshimport android.bluetooth.BluetoothDevice;
232fc6e6bfd280b6391ed1533c443bde301765a3beJakub Pawlowskiimport android.bluetooth.OobData;
24aef439e6f825c0cb99a2ac08c8207f48b7a9fe10Nick Pellyimport android.os.ParcelUuid;
252ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganeshimport android.os.ParcelFileDescriptor;
26010bf374d8145528f8733dfa6ef101b15de23a8dAdam Lesinskiimport android.os.ResultReceiver;
27dd0463aef18d251c741bfc9dc7a2787443ef36f1Jaikumar Ganesh
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * System private API for talking with the Bluetooth service.
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide}
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
33bd022f423a33f0794bb53e5b0720da2d67e4631cNick Pellyinterface IBluetooth
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isEnabled();
36e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    int getState();
37105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project    boolean enable();
389631314e3d28b6e96ef0b7cc777f1a7747a0ac39Matthew Xie    boolean enableNoAutoConnect();
39a8c6df0d3a6b929cac3e59abde8309e8a45ea78aFred    boolean disable();
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getAddress();
4258b93c36409c7fb91a644605f004b6d247d9b540Jaikumar Ganesh    ParcelUuid[] getUuids();
43e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    boolean setName(in String name);
44e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    String getName();
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getScanMode();
4712835478ee687a493d1b5882e67b6725bd539c26Nick Pelly    boolean setScanMode(int mode, int duration);
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getDiscoverableTimeout();
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean setDiscoverableTimeout(int timeout);
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
52d5ac1ae36b4e096eb97984334f86d0c68abea2f7Jaikumar Ganesh    boolean startDiscovery();
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean cancelDiscovery();
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isDiscovering();
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
56c53cab20b225ba69057441ecb06db6478ab8ff9bJaikumar Ganesh    int getAdapterConnectionState();
57cb1d354c1e9b458a0426cd08520d938012e32b34Jaikumar Ganesh    int getProfileConnectionState(int profile);
58a46f2fb152355fe591f9dddeb41f01fef5ccad1dJaikumar Ganesh
59e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    BluetoothDevice[] getBondedDevices();
6057210c7a1aebb86d091dee0af49b45649ca47f87Andre Eisenbach    boolean createBond(in BluetoothDevice device, in int transport);
612fc6e6bfd280b6391ed1533c443bde301765a3beJakub Pawlowski    boolean createBondOutOfBand(in BluetoothDevice device, in int transport, in OobData oobData);
62e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    boolean cancelBondProcess(in BluetoothDevice device);
63e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    boolean removeBond(in BluetoothDevice device);
64e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    int getBondState(in BluetoothDevice device);
652b8696e3a91194db0bfd876b8cc68843a7ccd080Andre Eisenbach    int getConnectionState(in BluetoothDevice device);
66e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh
67e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    String getRemoteName(in BluetoothDevice device);
6833ec9840c70ddc7cd008ecf2660c441defc5f302Matthew Xie    int getRemoteType(in BluetoothDevice device);
69e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    String getRemoteAlias(in BluetoothDevice device);
70e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    boolean setRemoteAlias(in BluetoothDevice device, in String name);
71e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    int getRemoteClass(in BluetoothDevice device);
72e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    ParcelUuid[] getRemoteUuids(in BluetoothDevice device);
734c9cacadcc7ab20e06763746bbb41d0acdc106b5fredc    boolean fetchRemoteUuids(in BluetoothDevice device);
74238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde    boolean sdpSearch(in BluetoothDevice device, in ParcelUuid uuid);
75e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh
76e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    boolean setPin(in BluetoothDevice device, boolean accept, int len, in byte[] pinCode);
77e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    boolean setPasskey(in BluetoothDevice device, boolean accept, int len, in byte[]
78e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    passkey);
79e4caddbb7a3b39fd6a1ccf107c7dbf09bc8978e8Jaikumar Ganesh    boolean setPairingConfirmation(in BluetoothDevice device, boolean accept);
802ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh
818dd30aadaf133fe1b8974847efdd5b8cf285136dEdward Jee    int getPhonebookAccessPermission(in BluetoothDevice device);
828dd30aadaf133fe1b8974847efdd5b8cf285136dEdward Jee    boolean setPhonebookAccessPermission(in BluetoothDevice device, int value);
838dd30aadaf133fe1b8974847efdd5b8cf285136dEdward Jee    int getMessageAccessPermission(in BluetoothDevice device);
848dd30aadaf133fe1b8974847efdd5b8cf285136dEdward Jee    boolean setMessageAccessPermission(in BluetoothDevice device, int value);
85d05bd467ba191833522e5b78da54bc5eab7bab2cCasper Bonde    int getSimAccessPermission(in BluetoothDevice device);
86d05bd467ba191833522e5b78da54bc5eab7bab2cCasper Bonde    boolean setSimAccessPermission(in BluetoothDevice device, int value);
878dd30aadaf133fe1b8974847efdd5b8cf285136dEdward Jee
88cb1d354c1e9b458a0426cd08520d938012e32b34Jaikumar Ganesh    void sendConnectionStateChange(in BluetoothDevice device, int profile, int state, int prevState);
893b147b770269173d5d711d6c33f142dc5e723824zzy
90bf072a712f584ae1c01022835b0de21c40513d06fredc    void registerCallback(in IBluetoothCallback callback);
91bf072a712f584ae1c01022835b0de21c40513d06fredc    void unregisterCallback(in IBluetoothCallback callback);
92bf072a712f584ae1c01022835b0de21c40513d06fredc
933b147b770269173d5d711d6c33f142dc5e723824zzy    // For Socket
943b147b770269173d5d711d6c33f142dc5e723824zzy    ParcelFileDescriptor connectSocket(in BluetoothDevice device, int type, in ParcelUuid uuid, int port, int flag);
953b147b770269173d5d711d6c33f142dc5e723824zzy    ParcelFileDescriptor createSocketChannel(int type, in String serviceName, in ParcelUuid uuid, int port, int flag);
96af5971ef27557f02f93b399c92d7e67106d825feZhihai Xu
97af5971ef27557f02f93b399c92d7e67106d825feZhihai Xu    boolean configHciSnoopLog(boolean enable);
98cda6e878cd1b11e10c0b9b4b903b14e11586a963Ajay Panicker    boolean factoryReset();
990c116e1573184f33883bc3722277ecc6560ebca9Prerepa Viswanadham
1000c116e1573184f33883bc3722277ecc6560ebca9Prerepa Viswanadham    boolean isMultiAdvertisementSupported();
10135cd4c853f748e295352bda708b26ee39544d06dWei Wang    boolean isPeripheralModeSupported();
1020c116e1573184f33883bc3722277ecc6560ebca9Prerepa Viswanadham    boolean isOffloadedFilteringSupported();
1030c116e1573184f33883bc3722277ecc6560ebca9Prerepa Viswanadham    boolean isOffloadedScanBatchingSupported();
1048caac741a011ef245066f327e54cc6a0b77e6617Prerepa Viswanadham    boolean isActivityAndEnergyReportingSupported();
1058caac741a011ef245066f327e54cc6a0b77e6617Prerepa Viswanadham    BluetoothActivityEnergyInfo reportActivityInfo();
106726d4de780dea9afded2e44a010b793f7ac29c23Mike Lockwood
107010bf374d8145528f8733dfa6ef101b15de23a8dAdam Lesinski    /**
108010bf374d8145528f8733dfa6ef101b15de23a8dAdam Lesinski     * Requests the controller activity info asynchronously.
109010bf374d8145528f8733dfa6ef101b15de23a8dAdam Lesinski     * The implementor is expected to reply with the
110010bf374d8145528f8733dfa6ef101b15de23a8dAdam Lesinski     * {@link android.bluetooth.BluetoothActivityEnergyInfo} object placed into the Bundle with the
111010bf374d8145528f8733dfa6ef101b15de23a8dAdam Lesinski     * key {@link android.os.BatteryStats#RESULT_RECEIVER_CONTROLLER_KEY}.
112010bf374d8145528f8733dfa6ef101b15de23a8dAdam Lesinski     * The result code is ignored.
113010bf374d8145528f8733dfa6ef101b15de23a8dAdam Lesinski     */
114010bf374d8145528f8733dfa6ef101b15de23a8dAdam Lesinski    oneway void requestActivityInfo(in ResultReceiver result);
115010bf374d8145528f8733dfa6ef101b15de23a8dAdam Lesinski
1166ddbb5e55f72e870899731ff12af9945fa970e6eNitin Arora    void onLeServiceUp();
1176ddbb5e55f72e870899731ff12af9945fa970e6eNitin Arora    void onBrEdrDown();
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
119