public override void OnStatus(string status)
            {
                base.OnStatus(status);
                ServerStateChangedEventArgs e = new ServerStateChangedEventArgs();

                switch (status)
                {
                case COULD_NOT_LISTEN:
                    throw new BluetoothException("Server could not start listening");

                case LISTENING:
                    e.State = ServerState.LISTENING;
                    server.OnServerStateChanged(e);
                    break;

                case NOT_LISTENING:
                    e.State = ServerState.NOT_LISTENING;
                    server.OnServerStateChanged(e);
                    break;

                case STOPPED:
                    e.State = ServerState.STOPPED;
                    server.OnServerStateChanged(e);
                    break;
                }
                string[]            tokens = status.Split('.');
                DeviceInfoEventArgs e2     = new DeviceInfoEventArgs();

                if (tokens[0] == "server" && tokens.Length >= 3)
                {
                    e2.Device = Bluetooth.GetDevice(tokens[2]);
                    if (tokens[1] == "connected")
                    {
                        server.OnClientConntected(e2);
                    }
                    else if (tokens[1] == "disconnected")
                    {
                        server.OnClientDisconnected(e2);
                    }
                }
            }
 protected virtual void OnClientDisconnected(DeviceInfoEventArgs e)
 {
     ClientDisconnected?.Invoke(this, e);
 }