解决第二次断开设备失败问题

This commit is contained in:
lishuo 2022-07-20 13:27:47 +08:00
parent 2274a13619
commit 9b656e9852

View File

@ -31,14 +31,13 @@ namespace Assets.Scripts.Ble
private Action<BleAdvertisementInfo> _discoveredCallback;
private Dictionary<BlePeripheralInfo, Action<IBleWinHwInterface, BlePeripheralInfo, BleResponse>> callbacks = new Dictionary<BlePeripheralInfo, Action<IBleWinHwInterface, BlePeripheralInfo, BleResponse>>();
private Dictionary<string, Action> diconnectedCallbacks = new Dictionary<string, Action>();
private Dictionary<BlePeripheralInfo, Action<IBleWinHwInterface, BlePeripheralInfo, BleResponse<List<BleServiceInfo>>>> servicesCallbacks = new Dictionary<BlePeripheralInfo, Action<IBleWinHwInterface, BlePeripheralInfo, BleResponse<List<BleServiceInfo>>>>();
//private Dictionary<BlePeripheralInfo, Action<BleWinHwInterface, BleServiceInfo, BleResponse<List<BleCharacteristicInfo>>>> characteristicsCallbacks = new Dictionary<BlePeripheralInfo, Action<BleWinHwInterface, BleServiceInfo, BleResponse<List<BleCharacteristicInfo>>>>();
private Dictionary<BlePeripheralInfo, Action<IBleWinHwInterface, BleCharacteristicInfo, BleResponse>> characteristicNotificationCallbacks = new Dictionary<BlePeripheralInfo, Action<IBleWinHwInterface, BleCharacteristicInfo, BleResponse>>();
private Dictionary<BleCharacteristicInfo, CharacteristicReadCallback> characteristicReadCallbacks = new Dictionary<BleCharacteristicInfo, CharacteristicReadCallback>();
private Dictionary<BleServiceInfo, CharacteristicsDiscoveredCallback> characteristicsDiscoveredCallbacks = new Dictionary<BleServiceInfo, CharacteristicsDiscoveredCallback>();
private Dictionary<BlePeripheralInfo, Action> disconnectedCallback = new Dictionary<BlePeripheralInfo, Action>();
private Dictionary<string, Action> disconnectedCallback = new Dictionary<string, Action>();
private CharacteristicReadCallback characteristicReadEvent;
public event CharacteristicReadCallback CharacteristicReadEvent
@ -323,7 +322,7 @@ namespace Assets.Scripts.Ble
this.callbacks.Remove(currentCallback.First().Key);
}
var currentDisconnectCallback = this.disconnectedCallback.Where(c => c.Key.MatchAddress(address));
var currentDisconnectCallback = this.disconnectedCallback.Where(c => c.Key == address);
if (currentDisconnectCallback.Any())
{
this.disconnectedCallback.Remove(currentDisconnectCallback.First().Key);
@ -352,7 +351,7 @@ namespace Assets.Scripts.Ble
//设备断开连接
public void DisconnectPeripheral(BlePeripheralInfo peripheral, Action callback)
{
diconnectedCallbacks.Add(peripheral.Address,callback);
disconnectedCallback.Add(peripheral.Address,callback);
BluetoothLEHardwareInterface.DisconnectPeripheral(peripheral.Address, (address) =>
{
Debug.Log("断开回调" + address);
@ -360,7 +359,7 @@ namespace Assets.Scripts.Ble
PeripheralDisconnected(address, ble);
peripheralDisconnectedEvent(this, ble, null, true);
var currentCallback = diconnectedCallbacks.Where(c => c.Key.Equals(address)).Select(c=>c.Value).FirstOrDefault();
var currentCallback = disconnectedCallback.Where(c => c.Key.Equals(address)).Select(c=>c.Value).FirstOrDefault();
currentCallback?.Invoke();
});
}