using System;
using CoreBluetooth;
using Foundation;
using HdlBlufi;
namespace HDL_ON
{
public class MyBlufiClient
{
HdlBluWi share;
BlufiClient blufiClient;
public new BlueWifiDelegate BlufiDelegate;
public MyBlufiClient()
{
SetBlufiDeviceDelegate(null);
share = HdlBluWi.Share();
blufiClient = new BlufiClient();
blufiClient.CentralManagerDelete = new BlueCBCentralManagerDelegate();
blufiClient.BlufiDelegate = new BlueWifiDelegate(blufiClient);
}
//public string GetPer()
//{
//share.
//}
///
/// 搜索到蓝牙设备之后到代理事件
///
FBYBleDeviceBackBlock getBlufiDeviceDelegate;
///
/// 设备搜索到蓝牙设备之后到代理事件
///
public void SetBlufiDeviceDelegate(Action action)
{
getBlufiDeviceDelegate = new FBYBleDeviceBackBlock((arg0) =>
{
action?.Invoke(arg0.Name, arg0.Uuid.ToString());
if (!string.IsNullOrEmpty(arg0.Name) && arg0.Name.Contains("BLU"))
{
Console.WriteLine($"{arg0.Name} : {arg0.Uuid}");
}
});
}
///
/// 搜索蓝牙设备
///
public void ScanBlufi()
{
share.StartScan(getBlufiDeviceDelegate);
}
///
/// 停止搜索蓝牙设备
///
public void StopScanBlufi()
{
share.StopScan();
}
///
/// 关闭 BlufiClient Close BlufiClient
/// 释放资源
///
public void CloseBlufiClient()
{
blufiClient.Close();
}
///
/// 链接蓝牙
///
public void ConnectionBlufi(string blufiId)
{
blufiClient.Connect(blufiId);
}
///
/// 断开蓝牙链接
///
public void CloseConnectionBlufi()
{
blufiClient.RequestCloseConnection();
}
///
/// 发送数据
///
public void SendMsg(string msg)
{
NSData vs = new NSData();
vs = msg;
blufiClient.PostCustomData(vs);
}
public class BlueWifiDelegate : BlufiDelegate
{
[Weak] BlufiClient _client;
public BlueWifiDelegate(BlufiClient client)
{
_client = client;
}
public BlueWifiDelegate()
{
}
protected BlueWifiDelegate(NSObjectFlag t) : base(t)
{
}
protected internal BlueWifiDelegate(IntPtr handle) : base(handle)
{
}
public override void Blufi_didNegotiateSecurity(HdlBlufi.BlufiClient client, BlufiStatusCode status)
{
Console.WriteLine("Blufi_didNegotiateSecurity");
//base.Blufi_didNegotiateSecurity(client, status);
}
public override void Blufi_didPostCustomData(HdlBlufi.BlufiClient client, NSData data, BlufiStatusCode status)
{
if (status == BlufiStatusCode.Success)
{
MainPage.Log($"发送蓝牙数据成功:{data.ToString()}");
}
else
{
MainPage.Log("发送蓝牙数据失败");
}
}
public override void Blufi_didReceiveDeviceScanResponse(HdlBlufi.BlufiClient client, BlufiScanResponse[] scanResults, BlufiStatusCode status)
{
Console.WriteLine("Blufi_didReceiveDeviceScanResponse");
//base.Blufi_didReceiveDeviceScanResponse(client, scanResults, status);
}
public override void Blufi_didReceiveDeviceVersionResponse(HdlBlufi.BlufiClient client, BlufiVersionResponse response, BlufiStatusCode status)
{
Console.WriteLine("Blufi_didReceiveDeviceVersionResponse");
//base.Blufi_didReceiveDeviceVersionResponse(client, response, status);
}
public override void Blufi_didPostConfigureParams(HdlBlufi.BlufiClient client, BlufiStatusCode status)
{
Console.WriteLine("Blufi_didPostConfigureParams");
//base.Blufi_didPostConfigureParams(client, status);
}
public override void Blufi_didReceiveCustomData(HdlBlufi.BlufiClient client, NSData data, BlufiStatusCode status)
{
Console.WriteLine("Blufi_didReceiveCustomData");
//base.Blufi_didReceiveCustomData(client, data, status);
}
public override void Blufi_didReceiveDeviceStatusResponse(HdlBlufi.BlufiClient client, BlufiStatusResponse response, BlufiStatusCode status)
{
Console.WriteLine("Blufi_didReceiveDeviceStatusResponse");
//base.Blufi_didReceiveDeviceStatusResponse(client, response, status);
}
public override void Blufi_didReceiveError(HdlBlufi.BlufiClient client, nint errCode)
{
Console.WriteLine("Blufi_didReceiveError");
//base.Blufi_didReceiveError(client, errCode);
}
public override void Blufi_gattPrepared(HdlBlufi.BlufiClient client, BlufiStatusCode status, CBService service, CBCharacteristic writeChar, CBCharacteristic notifyChar)
{
if (status == BlufiStatusCode.Success)
{
MainPage.Log("蓝牙连接成功");
}
else
{
MainPage.Log("蓝牙连接失败");
}
//base.Blufi_gattPrepared(client, status, service, writeChar, notifyChar);
}
}
public class BlueCBCentralManagerDelegate : CBCentralManagerDelegate
{
public override void UpdatedState(CBCentralManager central)
{
//throw new NotImplementedException();
}
//public override void
}
}
}