From 1784a0ee9bfc3937aef6f8cb1f9404c4817ee946 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Tue, 2 Dec 2014 20:04:28 +0100 Subject: o Fixing small bugs, enabling notification reception. --- .../topi/fiken/display/DefaultDisplayService.java | 56 +++++++++++++++++++--- 1 file changed, 49 insertions(+), 7 deletions(-) (limited to 'app/src/main/java/no/topi/fiken/display/DefaultDisplayService.java') diff --git a/app/src/main/java/no/topi/fiken/display/DefaultDisplayService.java b/app/src/main/java/no/topi/fiken/display/DefaultDisplayService.java index b1aa2e7..3bd2dd0 100644 --- a/app/src/main/java/no/topi/fiken/display/DefaultDisplayService.java +++ b/app/src/main/java/no/topi/fiken/display/DefaultDisplayService.java @@ -16,6 +16,9 @@ import android.os.IBinder; import android.util.Log; import android.widget.Toast; +import java.lang.reflect.Array; +import java.util.Arrays; + public class DefaultDisplayService extends Service implements DisplayService { private final Context context = DefaultDisplayService.this; private final static String TAG = DefaultDisplayService.class.getSimpleName(); @@ -24,16 +27,18 @@ public class DefaultDisplayService extends Service implements DisplayService { private BluetoothManager mBluetoothManager; private BluetoothAdapter mBluetoothAdapter; - private BluetoothGattService displayService; private BluetoothGatt gatt; + private BluetoothGattService displayService; + private BluetoothGattCharacteristic gaugeCtrl; + private BluetoothGattCharacteristic gaugeData; private Handler handler; - private int UPDATE_RSSI_DELAY = 1000; + private int UPDATE_RSSI_DELAY = 100 * 1000; private Runnable updateRssi = new Runnable() { @Override public void run() { - if(gatt != null) { + if (gatt != null) { gatt.readRemoteRssi(); } @@ -132,28 +137,65 @@ public class DefaultDisplayService extends Service implements DisplayService { } displayService = gatt.getService(Constants.TRYGVIS_IO_FIKEN_STATUS_PANEL_UUID); + gaugeCtrl = displayService.getCharacteristic(Constants.TRYGVIS_IO_GAUGE_CTRL_UUID); + gaugeData = displayService.getCharacteristic(Constants.TRYGVIS_IO_GAUGE_DATA_UUID); - Log.i(TAG, "service=" + displayService); + Log.i(TAG, "service=" + displayService + ", gaugeCtrl=" + gaugeCtrl + ", gaugeData=" + gaugeData); Intent intent = IntentAction.DEVICE_UPDATE.intent(); intent.putExtra(IntentExtra.DEVICE_ADDRESS.name(), address); intent.putExtra(IntentExtra.DEVICE_IS_DISPLAY.name(), displayService != null); sendBroadcast(intent); + + BluetoothGattDescriptor ccg = gaugeCtrl.getDescriptor(Constants.CLIENT_CHARACTERISTIC_CONFIG); + ccg.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); + gatt.writeDescriptor(ccg); + Log.i(TAG, "ccg=" + ccg); + + // Send a request for gauge count. + +// gaugeCtrl.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE); +// gaugeCtrl.setValue(new byte[]{0x01}); +// gaugeCtrl.getDe +// gatt.setCharacteristicNotification(gaugeCtrl, true); +// gatt.writeCharacteristic(gaugeCtrl); +// gatt.readCharacteristic(gaugeCtrl); } @Override public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { Log.i(TAG, "onCharacteristicRead"); + + String s = ""; + for (byte b : characteristic.getValue()) { + s += Integer.toHexString(b); + } + + Log.i(TAG, "uuid=" + characteristic.getUuid() + ", value=" + s); } @Override public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { Log.i(TAG, "onCharacteristicWrite"); + + String s = ""; + for (byte b : characteristic.getValue()) { + s += Integer.toHexString(b); + } + + Log.i(TAG, "uuid=" + characteristic.getUuid() + ", value=0x" + s + ", status=" + status); } @Override public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { Log.i(TAG, "onCharacteristicChanged"); + + String s = ""; + for (byte b : characteristic.getValue()) { + s += Integer.toHexString(b); + } + + Log.i(TAG, "uuid=" + characteristic.getUuid() + ", value=0x" + s); } @Override @@ -163,17 +205,17 @@ public class DefaultDisplayService extends Service implements DisplayService { @Override public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) { - Log.i(TAG, "onDescriptorWrite"); + Log.i(TAG, "onDescriptorWrite, status=" + status + ", descriptor=" + descriptor.getUuid()); } @Override public void onReliableWriteCompleted(BluetoothGatt gatt, int status) { - Log.i(TAG, "onReliableWriteCompleted"); + Log.i(TAG, "onReliableWriteCompleted, status=" + status); } @Override public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) { - Log.i(TAG, "onReadRemoteRssi, status=" + status + ", rssi=" + rssi); +// Log.i(TAG, "onReadRemoteRssi, status=" + status + ", rssi=" + rssi); if (status == BluetoothGatt.GATT_SUCCESS) { Intent intent = IntentAction.DEVICE_UPDATE.intent(); intent.putExtra(IntentExtra.DEVICE_ADDRESS.name(), gatt.getDevice().getAddress()); -- cgit v1.2.3