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;
21fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganeshimport android.bluetooth.IBluetoothHealthCallback;
22545e6708adda6859932b55fd824794b1401f5318Jaikumar Ganeshimport android.bluetooth.BluetoothDevice;
232ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganeshimport android.bluetooth.BluetoothHealthAppConfiguration;
24aef439e6f825c0cb99a2ac08c8207f48b7a9fe10Nick Pellyimport android.os.ParcelUuid;
252ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganeshimport android.os.ParcelFileDescriptor;
26dd0463aef18d251c741bfc9dc7a2787443ef36f1Jaikumar Ganesh
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * System private API for talking with the Bluetooth service.
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide}
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
32bd022f423a33f0794bb53e5b0720da2d67e4631cNick Pellyinterface IBluetooth
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isEnabled();
35105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project    int getBluetoothState();
36105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project    boolean enable();
37105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project    boolean disable(boolean persistSetting);
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getAddress();
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getName();
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean setName(in String name);
4258b93c36409c7fb91a644605f004b6d247d9b540Jaikumar Ganesh    ParcelUuid[] getUuids();
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getScanMode();
4512835478ee687a493d1b5882e67b6725bd539c26Nick Pelly    boolean setScanMode(int mode, int duration);
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getDiscoverableTimeout();
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean setDiscoverableTimeout(int timeout);
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
50d5ac1ae36b4e096eb97984334f86d0c68abea2f7Jaikumar Ganesh    boolean startDiscovery();
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean cancelDiscovery();
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isDiscovering();
53cc5494c9996f809e36539b24e8b6b67683383d29Jaikumar Ganesh    byte[] readOutOfBandData();
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
55c53cab20b225ba69057441ecb06db6478ab8ff9bJaikumar Ganesh    int getAdapterConnectionState();
56cb1d354c1e9b458a0426cd08520d938012e32b34Jaikumar Ganesh    int getProfileConnectionState(int profile);
57ef2cb7c93a99096799d415e721dda46d1bf7a005Jaikumar Ganesh    boolean changeApplicationBluetoothState(boolean on,
58ef2cb7c93a99096799d415e721dda46d1bf7a005Jaikumar Ganesh                                in IBluetoothStateChangeCallback callback, in
59ef2cb7c93a99096799d415e721dda46d1bf7a005Jaikumar Ganesh                                IBinder b);
60c53cab20b225ba69057441ecb06db6478ab8ff9bJaikumar Ganesh
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean createBond(in String address);
62cc5494c9996f809e36539b24e8b6b67683383d29Jaikumar Ganesh    boolean createBondOutOfBand(in String address, in byte[] hash, in byte[] randomizer);
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean cancelBondProcess(in String address);
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean removeBond(in String address);
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String[] listBonds();
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getBondState(in String address);
67cc5494c9996f809e36539b24e8b6b67683383d29Jaikumar Ganesh    boolean setDeviceOutOfBandData(in String address, in byte[] hash, in byte[] randomizer);
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getRemoteName(in String address);
70269e81a563cfe080d7f241d0d46411d3c946c111Matthew Xie    String getRemoteAlias(in String address);
71269e81a563cfe080d7f241d0d46411d3c946c111Matthew Xie    boolean setRemoteAlias(in String address, in String name);
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getRemoteClass(in String address);
73dd0463aef18d251c741bfc9dc7a2787443ef36f1Jaikumar Ganesh    ParcelUuid[] getRemoteUuids(in String address);
7416fb88a673c41b93c5d57ccb28c2697e7d87701aNick Pelly    boolean fetchRemoteUuids(in String address, in ParcelUuid uuid, in IBluetoothCallback callback);
7516fb88a673c41b93c5d57ccb28c2697e7d87701aNick Pelly    int getRemoteServiceChannel(in String address, in ParcelUuid uuid);
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean setPin(in String address, in byte[] pin);
78b0eca41de0bb6747d8648b134912782e45e4cbefJaikumar Ganesh    boolean setPasskey(in String address, int passkey);
79b0eca41de0bb6747d8648b134912782e45e4cbefJaikumar Ganesh    boolean setPairingConfirmation(in String address, boolean confirm);
80cc5494c9996f809e36539b24e8b6b67683383d29Jaikumar Ganesh    boolean setRemoteOutOfBandData(in String addres);
81b0eca41de0bb6747d8648b134912782e45e4cbefJaikumar Ganesh    boolean cancelPairingUserInput(in String address);
82b0eca41de0bb6747d8648b134912782e45e4cbefJaikumar Ganesh
83efa1dd716da3372cc74a201d11de5e0ef1a9fe9aLixin Yue    boolean setTrust(in String address, in boolean value);
84efa1dd716da3372cc74a201d11de5e0ef1a9fe9aLixin Yue    boolean getTrustState(in String address);
853fbf7b62bb48b10316353087d09cc3720af00642Jaikumar Ganesh    boolean isBluetoothDock(in String address);
8624bb9b8af4ff691538fe9e517e8156016b0da6cdNick Pelly
8724bb9b8af4ff691538fe9e517e8156016b0da6cdNick Pelly    int addRfcommServiceRecord(in String serviceName, in ParcelUuid uuid, int channel, IBinder b);
8824bb9b8af4ff691538fe9e517e8156016b0da6cdNick Pelly    void removeServiceRecord(int handle);
89bbd86750570ff75e428b3810dc2e65db558c14b2Jaikumar Ganesh    boolean allowIncomingProfileConnect(in BluetoothDevice device, boolean value);
909b637e5985f9a86f39d70335c0390ade3716592aJaikumar Ganesh
919b637e5985f9a86f39d70335c0390ade3716592aJaikumar Ganesh    boolean connectHeadset(String address);
929b637e5985f9a86f39d70335c0390ade3716592aJaikumar Ganesh    boolean disconnectHeadset(String address);
9398f06da8ed2851a768358de1979838ad1bb6d187Matthew Xie    boolean notifyIncomingConnection(String address, boolean rejected);
94545e6708adda6859932b55fd824794b1401f5318Jaikumar Ganesh
95545e6708adda6859932b55fd824794b1401f5318Jaikumar Ganesh    // HID profile APIs
96545e6708adda6859932b55fd824794b1401f5318Jaikumar Ganesh    boolean connectInputDevice(in BluetoothDevice device);
97545e6708adda6859932b55fd824794b1401f5318Jaikumar Ganesh    boolean disconnectInputDevice(in BluetoothDevice device);
985a1e4cf83f5be1b5d79e2643fa791aa269b6a4bcJaikumar Ganesh    List<BluetoothDevice> getConnectedInputDevices();
994ab0e7746fe74a9e4d75d374f73b7af87420b2f6Jaikumar Ganesh    List<BluetoothDevice> getInputDevicesMatchingConnectionStates(in int[] states);
1004ab0e7746fe74a9e4d75d374f73b7af87420b2f6Jaikumar Ganesh    int getInputDeviceConnectionState(in BluetoothDevice device);
101545e6708adda6859932b55fd824794b1401f5318Jaikumar Ganesh    boolean setInputDevicePriority(in BluetoothDevice device, int priority);
102545e6708adda6859932b55fd824794b1401f5318Jaikumar Ganesh    int getInputDevicePriority(in BluetoothDevice device);
1036fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang
1046fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang    boolean isTetheringOn();
105b70765cc27a174d1d4a0bab7062733ebd3eae354Jaikumar Ganesh    void setBluetoothTethering(boolean value);
10674ef1199459629c5dd9f272f8cd706d82cdfeeb1Jaikumar Ganesh    int getPanDeviceConnectionState(in BluetoothDevice device);
1075a1e4cf83f5be1b5d79e2643fa791aa269b6a4bcJaikumar Ganesh    List<BluetoothDevice> getConnectedPanDevices();
10874ef1199459629c5dd9f272f8cd706d82cdfeeb1Jaikumar Ganesh    List<BluetoothDevice> getPanDevicesMatchingConnectionStates(in int[] states);
1096fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang    boolean connectPanDevice(in BluetoothDevice device);
1106fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang    boolean disconnectPanDevice(in BluetoothDevice device);
111a46f2fb152355fe591f9dddeb41f01fef5ccad1dJaikumar Ganesh
1122ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh    // HDP profile APIs
113fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh    boolean registerAppConfiguration(in BluetoothHealthAppConfiguration config,
114fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh        in IBluetoothHealthCallback callback);
1152ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh    boolean unregisterAppConfiguration(in BluetoothHealthAppConfiguration config);
1162ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh    boolean connectChannelToSource(in BluetoothDevice device, in BluetoothHealthAppConfiguration config);
1172ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh    boolean connectChannelToSink(in BluetoothDevice device, in BluetoothHealthAppConfiguration config,
1182ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh        int channelType);
119eb9d34630f74d0260690287f2df57c0cd3d7ba1dJaikumar Ganesh    boolean disconnectChannel(in BluetoothDevice device, in BluetoothHealthAppConfiguration config, int id);
1202ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh    ParcelFileDescriptor getMainChannelFd(in BluetoothDevice device, in BluetoothHealthAppConfiguration config);
1212ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh    List<BluetoothDevice> getConnectedHealthDevices();
1222ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh    List<BluetoothDevice> getHealthDevicesMatchingConnectionStates(in int[] states);
1232ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh    int getHealthDeviceConnectionState(in BluetoothDevice device);
1242ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh
125cb1d354c1e9b458a0426cd08520d938012e32b34Jaikumar Ganesh    void sendConnectionStateChange(in BluetoothDevice device, int profile, int state, int prevState);
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
127