• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 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 package android.bluetooth;
18 
19 import android.util.Log;
20 
21 /** @hide */
22 public abstract class BluetoothHidDeviceCallback {
23 
24     private static final String TAG = BluetoothHidDeviceCallback.class.getSimpleName();
25 
26     /**
27      * Callback called when application registration state changes. Usually it's
28      * called due to either
29      * {@link BluetoothHidDevice#registerApp(String, String, String, byte, byte[],
30      * BluetoothHidDeviceCallback)}
31      * or
32      * {@link BluetoothHidDevice#unregisterApp(BluetoothHidDeviceAppConfiguration)}
33      * , but can be also unsolicited in case e.g. Bluetooth was turned off in
34      * which case application is unregistered automatically.
35      *
36      * @param pluggedDevice {@link BluetoothDevice} object which represents host
37      *            that currently has Virtual Cable established with device. Only
38      *            valid when application is registered, can be <code>null</code>
39      *            .
40      * @param config {@link BluetoothHidDeviceAppConfiguration} object which
41      *            represents token required to unregister application using
42      *            {@link BluetoothHidDevice#unregisterApp(BluetoothHidDeviceAppConfiguration)}
43      *            .
44      * @param registered <code>true</code> if application is registered,
45      *            <code>false</code> otherwise.
46      */
onAppStatusChanged(BluetoothDevice pluggedDevice, BluetoothHidDeviceAppConfiguration config, boolean registered)47     public void onAppStatusChanged(BluetoothDevice pluggedDevice,
48             BluetoothHidDeviceAppConfiguration config, boolean registered) {
49         Log.d(TAG, "onAppStatusChanged: pluggedDevice=" + pluggedDevice + " registered="
50                 + registered);
51     }
52 
53     /**
54      * Callback called when connection state with remote host was changed.
55      * Application can assume than Virtual Cable is established when called with
56      * {@link BluetoothProfile#STATE_CONNECTED} <code>state</code>.
57      *
58      * @param device {@link BluetoothDevice} object representing host device
59      *            which connection state was changed.
60      * @param state Connection state as defined in {@link BluetoothProfile}.
61      */
onConnectionStateChanged(BluetoothDevice device, int state)62     public void onConnectionStateChanged(BluetoothDevice device, int state) {
63         Log.d(TAG, "onConnectionStateChanged: device=" + device + " state=" + state);
64     }
65 
66     /**
67      * Callback called when GET_REPORT is received from remote host. Should be
68      * replied by application using
69      * {@link BluetoothHidDevice#replyReport(BluetoothDevice, byte, byte, byte[])}.
70      *
71      * @param type Requested Report Type.
72      * @param id Requested Report Id, can be 0 if no Report Id are defined in
73      *            descriptor.
74      * @param bufferSize Requested buffer size, application shall respond with
75      *            at least given number of bytes.
76      */
onGetReport(BluetoothDevice device, byte type, byte id, int bufferSize)77     public void onGetReport(BluetoothDevice device, byte type, byte id, int bufferSize) {
78         Log.d(TAG, "onGetReport: device=" + device + " type=" + type + " id=" + id + " bufferSize="
79                 + bufferSize);
80     }
81 
82     /**
83      * Callback called when SET_REPORT is received from remote host. In case
84      * received data are invalid, application shall respond with
85      * {@link BluetoothHidDevice#reportError(BluetoothDevice)}.
86      *
87      * @param type Report Type.
88      * @param id Report Id.
89      * @param data Report data.
90      */
onSetReport(BluetoothDevice device, byte type, byte id, byte[] data)91     public void onSetReport(BluetoothDevice device, byte type, byte id, byte[] data) {
92         Log.d(TAG, "onSetReport: device=" + device + " type=" + type + " id=" + id);
93     }
94 
95     /**
96      * Callback called when SET_PROTOCOL is received from remote host.
97      * Application shall use this information to send only reports valid for
98      * given protocol mode. By default,
99      * {@link BluetoothHidDevice#PROTOCOL_REPORT_MODE} shall be assumed.
100      *
101      * @param protocol Protocol Mode.
102      */
onSetProtocol(BluetoothDevice device, byte protocol)103     public void onSetProtocol(BluetoothDevice device, byte protocol) {
104         Log.d(TAG, "onSetProtocol: device=" + device + " protocol=" + protocol);
105     }
106 
107     /**
108      * Callback called when report data is received over interrupt channel.
109      * Report Type is assumed to be
110      * {@link BluetoothHidDevice#REPORT_TYPE_OUTPUT}.
111      *
112      * @param reportId Report Id.
113      * @param data Report data.
114      */
onIntrData(BluetoothDevice device, byte reportId, byte[] data)115     public void onIntrData(BluetoothDevice device, byte reportId, byte[] data) {
116         Log.d(TAG, "onIntrData: device=" + device + " reportId=" + reportId);
117     }
118 
119     /**
120      * Callback called when Virtual Cable is removed. This can be either due to
121      * {@link BluetoothHidDevice#unplug(BluetoothDevice)} or request from remote
122      * side. After this callback is received connection will be disconnected
123      * automatically.
124      */
onVirtualCableUnplug(BluetoothDevice device)125     public void onVirtualCableUnplug(BluetoothDevice device) {
126         Log.d(TAG, "onVirtualCableUnplug: device=" + device);
127     }
128 }
129