1 /******************************************************************
3 * Copyright 2014 Samsung Electronics All Rights Reserved.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 ******************************************************************/
21 package org.iotivity.ca;
23 import android.bluetooth.BluetoothDevice;
24 import android.bluetooth.BluetoothGattCharacteristic;
25 import android.bluetooth.BluetoothGattDescriptor;
26 import android.bluetooth.BluetoothGattServerCallback;
27 import android.bluetooth.BluetoothGattService;
28 import android.bluetooth.le.AdvertiseCallback;
29 import android.bluetooth.le.AdvertiseSettings;
31 public class CaLeServerInterface {
33 private CaLeServerInterface() {
35 caLeRegisterGattServerCallback(mGattServerCallback);
36 caLeRegisterBluetoothLeAdvertiseCallback(mAdvertiseCallback);
39 public static void getLeGattServerCallback() {
40 caLeRegisterGattServerCallback(mGattServerCallback);
43 public static void getBluetoothLeAdvertiseCallback() {
44 caLeRegisterBluetoothLeAdvertiseCallback(mAdvertiseCallback);
47 private native static void caLeRegisterGattServerCallback(BluetoothGattServerCallback callback);
49 private native static void caLeRegisterBluetoothLeAdvertiseCallback(AdvertiseCallback callback);
51 // BluetoothGattServerCallback
52 private native static void caLeGattServerConnectionStateChangeCallback(
53 BluetoothDevice device, int status, int newState);
55 private native static void caLeGattServerNWConnectionStateChangeCallback(
56 BluetoothDevice device, int status, int newState);
58 private native static void caLeGattServerServiceAddedCallback(int status,
59 BluetoothGattService service);
61 private native static void caLeGattServerCharacteristicReadRequestCallback(
62 BluetoothDevice device, byte[] data);
64 private native static void caLeGattServerCharacteristicWriteRequestCallback(
65 BluetoothDevice device, byte[] data, int id, int offset, byte[] value);
67 private native static void caLeGattServerNotificationSentCallback(BluetoothDevice device,
70 private native static void caLeGattServerMtuChangedCallback(BluetoothDevice gatt, int mtu);
73 private native static void caLeAdvertiseStartSuccessCallback(
74 AdvertiseSettings settingsInEffect);
76 private native static void caLeAdvertiseStartFailureCallback(int errorCode);
78 private static final BluetoothGattServerCallback mGattServerCallback =
79 new BluetoothGattServerCallback() {
82 public void onConnectionStateChange(BluetoothDevice device, int status,
84 super.onConnectionStateChange(device, status, newState);
86 caLeGattServerConnectionStateChangeCallback(device, status, newState);
87 caLeGattServerNWConnectionStateChangeCallback(device, status, newState);
91 public void onServiceAdded(int status, BluetoothGattService service) {
92 super.onServiceAdded(status, service);
94 caLeGattServerServiceAddedCallback(status, service);
98 public void onCharacteristicReadRequest(
99 BluetoothDevice device, int requestId, int offset,
100 BluetoothGattCharacteristic characteristic) {
101 super.onCharacteristicReadRequest(device, requestId, offset, characteristic);
103 caLeGattServerCharacteristicReadRequestCallback(device, characteristic.getValue());
107 public void onCharacteristicWriteRequest(
108 BluetoothDevice device, int requestId, BluetoothGattCharacteristic characteristic,
109 boolean preparedWrite, boolean responseNeeded, int offset, byte[] value) {
110 super.onCharacteristicWriteRequest(device, requestId, characteristic,
111 preparedWrite, responseNeeded, offset, value);
113 caLeGattServerCharacteristicWriteRequestCallback(device, value, requestId,
118 public void onDescriptorReadRequest(
119 BluetoothDevice device,
120 int requestId, int offset, BluetoothGattDescriptor descriptor) {
121 super.onDescriptorReadRequest(device, requestId, offset, descriptor);
125 public void onDescriptorWriteRequest(
126 BluetoothDevice device, int requestId, BluetoothGattDescriptor descriptor,
127 boolean preparedWrite, boolean responseNeeded, int offset,
129 super.onDescriptorWriteRequest(device, requestId, descriptor, preparedWrite,
130 responseNeeded, offset, value);
134 public void onExecuteWrite(BluetoothDevice device, int requestId, boolean execute) {
135 super.onExecuteWrite(device, requestId, execute);
139 public void onNotificationSent(BluetoothDevice device, int status) {
140 super.onNotificationSent(device, status);
142 caLeGattServerNotificationSentCallback(device, status);
146 public void onMtuChanged(BluetoothDevice device, int mtu) {
147 super.onMtuChanged(device, mtu);
149 caLeGattServerMtuChangedCallback(device, mtu);
153 private static final AdvertiseCallback mAdvertiseCallback = new AdvertiseCallback() {
156 public void onStartSuccess(AdvertiseSettings settingsInEffect) {
157 super.onStartSuccess(settingsInEffect);
159 caLeAdvertiseStartSuccessCallback(settingsInEffect);
163 public void onStartFailure(int errorCode) {
164 super.onStartFailure(errorCode);
166 caLeAdvertiseStartFailureCallback(errorCode);