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