Beispiel #1
0
        private static void RegisterAcceptStateChangedEvent()
        {
            _connectionStateChangedCallback = (int result, BluetoothSocketState connectionState, ref SocketConnectionStruct socketConnection, IntPtr userData) =>
            {
                Log.Info(Globals.LogTag, "AcceptStateChanged cb is called");
                BluetoothSocket socket = new BluetoothSocket();
                socket.connectedSocket = socketConnection.SocketFd;
                socket.remoteAddress   = socketConnection.Address;
                socket.serviceUuid     = socketConnection.ServiceUuid;
                _acceptStateChanged?.Invoke(null, new AcceptStateChangedEventArgs((BluetoothError)result, connectionState, BluetoothUtils.ConvertStructToSocketConnection(socketConnection), socket));
            };

            int ret = Interop.Bluetooth.SetConnectionStateChangedCallback(_connectionStateChangedCallback, IntPtr.Zero);

            if (ret != (int)BluetoothError.None)
            {
                Log.Error(Globals.LogTag, "Failed to set accept state changed callback, Error - " + (BluetoothError)ret);
                BluetoothErrorFactory.ThrowBluetoothException(ret);
            }
        }
Beispiel #2
0
        private void RegisterConnectionStateChangedEvent()
        {
            _connectionStateChangedCallback = (int result, BluetoothSocketState connectionState, ref SocketConnectionStruct socketConnection, IntPtr userData) =>
            {
                Log.Info(Globals.LogTag, "ConnectionStateChangedCallback is called");
                if (_connectionStateChanged != null)
                {
                    connectedSocket = socketConnection.SocketFd;
                    GCHandle handle2 = (GCHandle)userData;
                    _connectionStateChanged(handle2.Target as IBluetoothServerSocket, new SocketConnectionStateChangedEventArgs((BluetoothError)result, connectionState, BluetoothUtils.ConvertStructToSocketConnection(socketConnection)));
                }
            };
            GCHandle handle1 = GCHandle.Alloc(this);
            IntPtr   data    = (IntPtr)handle1;
            int      ret     = Interop.Bluetooth.SetConnectionStateChangedCallback(_connectionStateChangedCallback, data);

            if (ret != (int)BluetoothError.None)
            {
                Log.Error(Globals.LogTag, "Failed to set connection state changed callback, Error - " + (BluetoothError)ret);
                BluetoothErrorFactory.ThrowBluetoothException(ret);
            }
        }