JniCallbacks.java revision b5cc776c9353a203cdde97e62b25f05d9633d14c
1ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh/*
2ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh * Copyright (C) 2012 Google Inc.
3ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh */
4ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
5ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganeshpackage com.android.bluetooth.btservice;
6ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
7ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganeshfinal class JniCallbacks {
8ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
9ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    private static JniCallbacks sInstance;
10ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    private RemoteDevices mRemoteDevices;
11ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    private AdapterProperties mAdapterProperties;
12ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    private AdapterState mAdapterStateMachine;
13ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    private BondStateMachine mBondStateMachine;
14ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
156654f5c903de510a70f9e72cd5ad7837b615d93ffredc    private JniCallbacks(RemoteDevices remoteDevices, AdapterProperties adapterProperties,
16ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh            AdapterState adapterStateMachine, BondStateMachine bondStateMachine) {
17ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mRemoteDevices = remoteDevices;
18ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mAdapterProperties = adapterProperties;
19ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mAdapterStateMachine = adapterStateMachine;
20ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mBondStateMachine = bondStateMachine;
21ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
22ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
23ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    static synchronized JniCallbacks getInstance(RemoteDevices remoteDevices,
24ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh            AdapterProperties adapterProperties, AdapterState adapterStateMachine,
25ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh            BondStateMachine bondStateMachine) {
266654f5c903de510a70f9e72cd5ad7837b615d93ffredc        if (sInstance == null)  {
276654f5c903de510a70f9e72cd5ad7837b615d93ffredc            sInstance =
28ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh                new JniCallbacks(remoteDevices, adapterProperties, adapterStateMachine,
29ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh                        bondStateMachine);
306654f5c903de510a70f9e72cd5ad7837b615d93ffredc        } else {
316654f5c903de510a70f9e72cd5ad7837b615d93ffredc            sInstance.mRemoteDevices = remoteDevices;
326654f5c903de510a70f9e72cd5ad7837b615d93ffredc            sInstance.mAdapterProperties = adapterProperties;
336654f5c903de510a70f9e72cd5ad7837b615d93ffredc            sInstance.mAdapterStateMachine = adapterStateMachine;
346654f5c903de510a70f9e72cd5ad7837b615d93ffredc            sInstance.mBondStateMachine = bondStateMachine;
356654f5c903de510a70f9e72cd5ad7837b615d93ffredc        }
36ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        return sInstance;
37ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
38ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    public Object Clone() throws CloneNotSupportedException {
39ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        throw new CloneNotSupportedException();
40ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
41ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
42ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void sspRequestCallback(byte[] address, byte[] name, int cod, int pairingVariant,
43ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh            int passkey) {
44ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mRemoteDevices.sspRequestCallback(address, name, cod, pairingVariant,
45ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh            passkey);
46ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
47ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void devicePropertyChangedCallback(byte[] address, int[] types, byte[][] val) {
48ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mRemoteDevices.devicePropertyChangedCallback(address, types, val);
49ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
50ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
51ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void deviceFoundCallback(byte[] address) {
52ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mRemoteDevices.deviceFoundCallback(address);
53ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
54ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
55ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void pinRequestCallback(byte[] address, byte[] name, int cod) {
56ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mRemoteDevices.pinRequestCallback(address, name, cod);
57ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
58ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
59ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void bondStateChangeCallback(int status, byte[] address, int newState) {
60ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mBondStateMachine.bondStateChangeCallback(status, address, newState);
61ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
62ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
63ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void stateChangeCallback(int status) {
64ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mAdapterStateMachine.stateChangeCallback(status);
65ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
66ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
67ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void discoveryStateChangeCallback(int state) {
68ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mAdapterProperties.discoveryStateChangeCallback(state);
69ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
70ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
71ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void adapterPropertyChangedCallback(int[] types, byte[][] val) {
72ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mAdapterProperties.adapterPropertyChangedCallback(types, val);
73ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
74b5cc776c9353a203cdde97e62b25f05d9633d14cfredc
75ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh}
76