[Bluetooth][Non-ACR] Fix GattConnection event not occured issue (#1739)
authorwootak <wootak.jung@samsung.com>
Tue, 23 Jun 2020 06:15:50 +0000 (15:15 +0900)
committerGitHub <noreply@github.com>
Tue, 23 Jun 2020 06:15:50 +0000 (15:15 +0900)
Signed-off-by: Wootak Jung <wootak.jung@samsung.com>
src/Tizen.Network.Bluetooth/Tizen.Network.Bluetooth/BluetoothGatt.cs
src/Tizen.Network.Bluetooth/Tizen.Network.Bluetooth/BluetoothLeAdapter.cs
src/Tizen.Network.Bluetooth/Tizen.Network.Bluetooth/BluetoothLeAdapterImpl.cs

index 1385dd1..11d42e0 100644 (file)
@@ -326,7 +326,7 @@ namespace Tizen.Network.Bluetooth
             }
         }
 
-        private static event EventHandler<GattConnectionStateChangedEventArgs> StaticConnectionStateChanged
+        internal static event EventHandler<GattConnectionStateChangedEventArgs> StaticConnectionStateChanged
         {
             add
             {
index c603bf8..5f29846 100644 (file)
@@ -131,17 +131,7 @@ namespace Tizen.Network.Bluetooth {
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
         [Obsolete("Deprecated since API level 6. Please use ConnectionStateChanged event on BluetoothGattClient.")]
-        public event EventHandler<GattConnectionStateChangedEventArgs> GattConnectionStateChanged
-        {
-            add
-            {
-                BluetoothLeImplAdapter.Instance.LeGattConnectionStateChanged += value;
-            }
-            remove
-            {
-                BluetoothLeImplAdapter.Instance.LeGattConnectionStateChanged -= value;
-            }
-        }
+        public event EventHandler<GattConnectionStateChangedEventArgs> GattConnectionStateChanged;
 
         internal BluetoothLeDevice(BluetoothLeScanData scanData)
         {
@@ -170,6 +160,11 @@ namespace Tizen.Network.Bluetooth {
                 _scanDataValue = new byte[_scanData.ScanDataLength];
                 scanData.ScanData.CopyTo(_scanDataValue, 0);
             }
+
+            BluetoothGattClient.StaticConnectionStateChanged += (s, e) =>
+            {
+                GattConnectionStateChanged?.Invoke(this, e);
+            };
         }
 
         /// <summary>
index 6d772d9..f9e048f 100644 (file)
@@ -34,9 +34,6 @@ namespace Tizen.Network.Bluetooth
         private event EventHandler<AdvertisingStateChangedEventArgs> _advertisingStateChanged = null;
         private Interop.Bluetooth.AdvertisingStateChangedCallBack _advertisingStateChangedCallback;
 
-        private event EventHandler<GattConnectionStateChangedEventArgs> _gattConnectionStateChanged = null;
-        private Interop.Bluetooth.GattConnectionStateChangedCallBack _gattConnectionStateChangedCallback;
-
         private int _serviceListCount = 0;
         private bool _scanStarted;
 
@@ -72,11 +69,6 @@ namespace Tizen.Network.Bluetooth
             {
                 // Free managed objects.
             }
-            //Free unmanaged objects
-            if (_gattConnectionStateChanged != null)
-            {
-                UnRegisterGattConnectionStateChangedEvent();
-            }
 
             //stop scan operation in progress
             StopScan ();
@@ -107,58 +99,6 @@ namespace Tizen.Network.Bluetooth
             }
         }
 
-        internal event EventHandler<GattConnectionStateChangedEventArgs> LeGattConnectionStateChanged
-        {
-            add
-            {
-                if (_gattConnectionStateChanged == null)
-                {
-                    RegisterGattConnectionStateChangedEvent();
-                }
-                _gattConnectionStateChanged += value;
-            }
-            remove
-            {
-                _gattConnectionStateChanged -= value;
-                if (_gattConnectionStateChanged == null)
-                {
-                    UnRegisterGattConnectionStateChangedEvent();
-                }
-            }
-        }
-
-        internal void RegisterGattConnectionStateChangedEvent()
-        {
-            _gattConnectionStateChangedCallback = (int result, bool connected,
-                                    string remoteDeviceAddress, IntPtr userData) =>
-            {
-                if (_gattConnectionStateChanged != null)
-                {
-                    Log.Info(Globals.LogTag, "Setting gatt connection state changed callback" );
-                    GattConnectionStateChangedEventArgs e = new GattConnectionStateChangedEventArgs (result,
-                        connected, remoteDeviceAddress);
-
-                    _gattConnectionStateChanged(null, e);
-                }
-            };
-
-            int ret = Interop.Bluetooth.SetGattConnectionStateChangedCallback(
-                                    _gattConnectionStateChangedCallback, IntPtr.Zero);
-            if (ret != (int)BluetoothError.None)
-            {
-                Log.Error(Globals.LogTag, "Failed to set gatt connection state changed callback, Error - " + (BluetoothError)ret);
-            }
-        }
-
-        internal void UnRegisterGattConnectionStateChangedEvent()
-        {
-            int ret = Interop.Bluetooth.UnsetGattConnectionStateChangedCallback();
-            if (ret != (int)BluetoothError.None)
-            {
-                Log.Error(Globals.LogTag, "Failed to unset gatt connection state changed callback, Error - " + (BluetoothError)ret);
-            }
-        }
-
         internal int StartScan()
         {
             _adapterLeScanResultChangedCallback = (int result, ref BluetoothLeScanDataStruct scanData, IntPtr userData) =>