wei
2021-01-20 e985d1b79937c41ebdaa4caa2974ec03929db915
HDL-ON_iOS/BlueWifi.cs
@@ -1,83 +1,205 @@
using System;
using HdlBluWi;
using CoreBluetooth;
using Foundation;
using HdlBlufi;
namespace HDL_ON
{
    public class BlueWifi
    public class MyBlufiClient
    {
        public BlueWifi()
        HdlBluWi share;
        BlufiClient blufiClient;
        public new BlueWifiDelegate BlufiDelegate;
        public MyBlufiClient()
        {
            //BlufiDelegate
            SetBlufiDeviceDelegate(null);
            share = HdlBluWi.Share();
            blufiClient = new BlufiClient();
            blufiClient.CentralManagerDelete = new BlueCBCentralManagerDelegate();
            blufiClient.BlufiDelegate = new BlueWifiDelegate(blufiClient);
        }
        //public string GetPer()
        //{
            //share.
        //}
        /// <summary>
        /// 搜索到蓝牙设备之后到代理事件
        /// </summary>
        FBYBleDeviceBackBlock getBlufiDeviceDelegate;
        /// <summary>
        /// 设备搜索到蓝牙设备之后到代理事件
        /// </summary>
        public void SetBlufiDeviceDelegate(Action<string,string> 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}");
                }
            });
        }
        /// <summary>
        /// 搜索蓝牙设备
        /// </summary>
        public void ScanBlufi()
        {
            share.StartScan(getBlufiDeviceDelegate);
        }
        /// <summary>
        /// 停止搜索蓝牙设备
        /// </summary>
        public void StopScanBlufi()
        {
            share.StopScan();
        }
        /// <summary>
        /// 关闭 BlufiClient Close BlufiClient
        /// 释放资源
        /// </summary>
        public void CloseBlufiClient()
        {
            blufiClient.Close();
        }
        /// <summary>
        /// 链接蓝牙
        /// </summary>
        public void ConnectionBlufi(string blufiId)
        {
            blufiClient.Connect(blufiId);
        }
        /// <summary>
        /// 断开蓝牙链接
        /// </summary>
        public void CloseConnectionBlufi()
        {
            blufiClient.RequestCloseConnection();
        }
        /// <summary>
        /// 发送数据
        /// </summary>
        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
        }
    }
    public class BlueWifiDelegate : BlufiDelegate
    {
        public BlueWifiDelegate(BlufiClient client)
        {
            _client = client;
        }
      [Weak] BlufiClient _client;
      public override void Blufi(BlufiClient client, BlufiStatusCode status)
        {
        }
      public override void Blufi_DidPostConfigureParams(BlufiClient client, BlufiStatusCode status)
        {
        }
      public override void Blufi_DidPostCustomData(BlufiClient client, NSData data, BlufiStatusCode status)
        {
        }
        public override void Blufi_DidReceiveCustomData(BlufiClient client, NSData data, BlufiStatusCode status)
        {
        }
        //public override void Blufi_DidReceiveDeviceScanResponse(BlufiClient client, NSObject[]? scanResults, BlufiStatusCode status)
        //{
        //}
        public override void Blufi_DidReceiveDeviceStatusResponse(BlufiClient client, NSObject response, BlufiStatusCode status)
        {
        }
        public override void Blufi_DidReceiveDeviceVersionResponse(BlufiClient client, NSObject response, BlufiStatusCode status)
        {
        }
        public override void Blufi_DidReceiveError(BlufiClient client, nint errCode)
        {
        }
        //public override bool Blufi_GattNotification(BlufiClient client, NSData data, NSObject pkgType, NSObject subType)
        //{
        //}
        //public override void Blufi_GattPrepared(BlufiClient client, BlufiStatusCode status, CBService? service, CBCharacteristic? writeChar, CBCharacteristic? notifyChar)
        //{
        //}
    }
}
}