1ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh/*
22c0df0560ad5ae3fd6022b17b17a6a70143e216aHemant Gupta * Copyright (C) 2012-2014 The Android Open Source Project
3ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu *
4ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * Licensed under the Apache License, Version 2.0 (the "License");
5ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * you may not use this file except in compliance with the License.
6ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * You may obtain a copy of the License at
7ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu *
8ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu *      http://www.apache.org/licenses/LICENSE-2.0
9ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu *
10ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * Unless required by applicable law or agreed to in writing, software
11ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * distributed under the License is distributed on an "AS IS" BASIS,
12ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * See the License for the specific language governing permissions and
14ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * limitations under the License.
15ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh */
16ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
17ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganeshpackage com.android.bluetooth.btservice;
18ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
19ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganeshfinal class JniCallbacks {
20ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
21ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    private RemoteDevices mRemoteDevices;
22ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    private AdapterProperties mAdapterProperties;
23ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    private AdapterState mAdapterStateMachine;
24ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    private BondStateMachine mBondStateMachine;
25ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
2674ae04c73312403e89db0f8e9bd9601d403b4783fredc    JniCallbacks(AdapterState adapterStateMachine,AdapterProperties adapterProperties) {
27ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mAdapterStateMachine = adapterStateMachine;
2874ae04c73312403e89db0f8e9bd9601d403b4783fredc        mAdapterProperties = adapterProperties;
29ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
3031ba132491053bc86d419a7d51fc04af3299c076fredc
3174ae04c73312403e89db0f8e9bd9601d403b4783fredc    void init(BondStateMachine bondStateMachine, RemoteDevices remoteDevices) {
3231ba132491053bc86d419a7d51fc04af3299c076fredc        mRemoteDevices = remoteDevices;
3331ba132491053bc86d419a7d51fc04af3299c076fredc        mBondStateMachine = bondStateMachine;
3431ba132491053bc86d419a7d51fc04af3299c076fredc    }
3531ba132491053bc86d419a7d51fc04af3299c076fredc
3674ae04c73312403e89db0f8e9bd9601d403b4783fredc    void cleanup() {
3774ae04c73312403e89db0f8e9bd9601d403b4783fredc        mRemoteDevices = null;
3874ae04c73312403e89db0f8e9bd9601d403b4783fredc        mAdapterProperties = null;
3974ae04c73312403e89db0f8e9bd9601d403b4783fredc        mAdapterStateMachine = null;
4074ae04c73312403e89db0f8e9bd9601d403b4783fredc        mBondStateMachine = null;
4174ae04c73312403e89db0f8e9bd9601d403b4783fredc    }
4274ae04c73312403e89db0f8e9bd9601d403b4783fredc
433a91ac3eefe23a22aa0abc1a89ac253a2b0dbae9Nick Kralevich    @Override
443a91ac3eefe23a22aa0abc1a89ac253a2b0dbae9Nick Kralevich    public Object clone() throws CloneNotSupportedException {
45ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        throw new CloneNotSupportedException();
46ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
47ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
48ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void sspRequestCallback(byte[] address, byte[] name, int cod, int pairingVariant,
49ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh            int passkey) {
5011b41d8123241ba8e693e21c4db308bacff23f57Mudumba Ananth        mBondStateMachine.sspRequestCallback(address, name, cod, pairingVariant,
51ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh            passkey);
52ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
53ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void devicePropertyChangedCallback(byte[] address, int[] types, byte[][] val) {
54ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mRemoteDevices.devicePropertyChangedCallback(address, types, val);
55ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
56ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
57ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void deviceFoundCallback(byte[] address) {
58ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mRemoteDevices.deviceFoundCallback(address);
59ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
60ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
61ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void pinRequestCallback(byte[] address, byte[] name, int cod) {
6211b41d8123241ba8e693e21c4db308bacff23f57Mudumba Ananth        mBondStateMachine.pinRequestCallback(address, name, cod);
63ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
64ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
65ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void bondStateChangeCallback(int status, byte[] address, int newState) {
66ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mBondStateMachine.bondStateChangeCallback(status, address, newState);
67ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
68ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
6901a8cf98f070a6996b2e8974edc229ac402f3f0cKausik Sinnaswamy    void aclStateChangeCallback(int status, byte[] address, int newState) {
7001a8cf98f070a6996b2e8974edc229ac402f3f0cKausik Sinnaswamy		mRemoteDevices.aclStateChangeCallback(status, address, newState);
7101a8cf98f070a6996b2e8974edc229ac402f3f0cKausik Sinnaswamy    }
7201a8cf98f070a6996b2e8974edc229ac402f3f0cKausik Sinnaswamy
73ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void stateChangeCallback(int status) {
74ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mAdapterStateMachine.stateChangeCallback(status);
75ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
76ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
77ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void discoveryStateChangeCallback(int state) {
78ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mAdapterProperties.discoveryStateChangeCallback(state);
79ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
80ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh
81ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    void adapterPropertyChangedCallback(int[] types, byte[][] val) {
82ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh        mAdapterProperties.adapterPropertyChangedCallback(types, val);
83ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh    }
84b5cc776c9353a203cdde97e62b25f05d9633d14cfredc
852c0df0560ad5ae3fd6022b17b17a6a70143e216aHemant Gupta    void deviceMasInstancesFoundCallback(int status, byte[] address, String[] name, int[] scn,
862c0df0560ad5ae3fd6022b17b17a6a70143e216aHemant Gupta            int[] id, int[] msgtype) {
872c0df0560ad5ae3fd6022b17b17a6a70143e216aHemant Gupta        mRemoteDevices.deviceMasInstancesFoundCallback(status, address, name, scn, id, msgtype);
882c0df0560ad5ae3fd6022b17b17a6a70143e216aHemant Gupta    }
89ff4f17bf64978d0738c66e1b6dd70be8664efc24Jaikumar Ganesh}
90