From 75e83be13a8c4ccf081c4dc07a262e4096783c7e Mon Sep 17 00:00:00 2001
From: 陈奇 <1650699704@qq.com>
Date: Fri, 02 Nov 2018 17:34:21 +0800
Subject: [PATCH] [*]修改电磁版本 配合电子修改bug

---
 FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java |   50 +++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 39 insertions(+), 11 deletions(-)

diff --git a/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java
index 047d288..e02a858 100644
--- a/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java
+++ b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java
@@ -10,6 +10,7 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.text.TextUtils;
+import android.util.Log;
 
 import com.clj.fastble.conn.BleConnector;
 import com.clj.fastble.conn.BleGattCallback;
@@ -44,6 +45,7 @@
     private Context context;
     private BluetoothAdapter bluetoothAdapter;
     private BluetoothGatt bluetoothGatt;
+    private int mtu = 20;
     private Handler handler = new Handler(Looper.getMainLooper());
     private HashMap<String, BluetoothGattCallback> callbackHashMap = new HashMap<>();
     private PeriodScanCallback periodScanCallback;
@@ -56,11 +58,14 @@
         bluetoothAdapter = bluetoothManager.getAdapter();
     }
 
+    public void setMtu(int mtu) {
+        this.mtu = mtu;
+    }
+
 
     public BleConnector newBleConnector() {
         return new BleConnector(this);
     }
-
 
     public boolean isInScanning() {
         return connectionState == STATE_SCANNING;
@@ -139,7 +144,8 @@
                 + "\nmac: " + scanResult.getDevice().getAddress()
                 + "\nautoConnect: " + autoConnect);
         addConnectGattCallback(callback);
-        return scanResult.getDevice().connectGatt(context, autoConnect, coreGattCallback);
+        bluetoothGatt = scanResult.getDevice().connectGatt(context, autoConnect, coreGattCallback);
+        return bluetoothGatt;
     }
 
     public void scanNameAndConnect(String name, long time_out, final boolean autoConnect, final BleGattCallback callback) {
@@ -338,6 +344,21 @@
         return connectionState;
     }
 
+
+    public static String dumpHex(byte[] src) {
+        String num = "0123456789ABCDEF";
+        StringBuilder sb = new StringBuilder();
+        sb.append("[ ");
+        for (byte aSrc : src) {
+            int high = aSrc >> 4 & 0x0f;
+            int low = aSrc & 0x0f;
+            sb.append(num.charAt(high)).append(num.charAt(low)).append(" ");
+        }
+        sb.append(" ]");
+
+        return sb.toString();
+    }
+
     private BleGattCallback coreGattCallback = new BleGattCallback() {
 
         @Override
@@ -347,9 +368,9 @@
 
         @Override
         public void onConnecting(BluetoothGatt gatt, int status) {
-            BleLog.i("BleGattCallback���onConnectSuccess ");
-
+            BleLog.i("BleGattCallback���onConnecting ");
             bluetoothGatt = gatt;
+
             Iterator iterator = callbackHashMap.entrySet().iterator();
             while (iterator.hasNext()) {
                 Map.Entry entry = (Map.Entry) iterator.next();
@@ -363,7 +384,6 @@
         @Override
         public void onConnectSuccess(BluetoothGatt gatt, int status) {
             BleLog.i("BleGattCallback���onConnectSuccess ");
-
             bluetoothGatt = gatt;
             Iterator iterator = callbackHashMap.entrySet().iterator();
             while (iterator.hasNext()) {
@@ -379,7 +399,6 @@
         @Override
         public void onDisConnected(BluetoothGatt gatt, int status, BleException exception) {
             BleLog.i("BleGattCallback���onConnectFailure ");
-
             closeBluetoothGatt();
             bluetoothGatt = null;
             Iterator iterator = callbackHashMap.entrySet().iterator();
@@ -429,8 +448,8 @@
 
         @Override
         public void onServicesDiscovered(BluetoothGatt gatt, int status) {
-            BleLog.i("BleGattCallback���onServicesDiscovered ");
-
+            BleLog.i("BleGattCallback���onServicesDiscovered " + mtu);
+            bluetoothGatt.requestMtu(mtu);
             connectionState = STATE_SERVICES_DISCOVERED;
             Iterator iterator = callbackHashMap.entrySet().iterator();
             while (iterator.hasNext()) {
@@ -459,7 +478,6 @@
         @Override
         public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
             BleLog.i("BleGattCallback���onCharacteristicWrite ");
-
             Iterator iterator = callbackHashMap.entrySet().iterator();
             while (iterator.hasNext()) {
                 Map.Entry entry = (Map.Entry) iterator.next();
@@ -472,8 +490,7 @@
 
         @Override
         public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
-            BleLog.i("BleGattCallback���onCharacteristicChanged ");
-
+            BleLog.i("BleGattCallback���onCharacteristicChanged " + characteristic.getValue().length);
             Iterator iterator = callbackHashMap.entrySet().iterator();
             while (iterator.hasNext()) {
                 Map.Entry entry = (Map.Entry) iterator.next();
@@ -539,5 +556,16 @@
                 }
             }
         }
+
+        @Override
+        public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) {
+            super.onMtuChanged(gatt, mtu, status);
+            Log.d("BLE", "onMtuChanged mtu=" + mtu + ",status=" + status);
+
+            System.out.println("onMtuChanged-------------------->size:" + mtu);
+            if (status == 0) {
+                System.out.println("onMtuChanged-------------------->������������");
+            }
+        }
     };
 }

--
Gitblit v1.8.0