2021-06-08 10:30:26 +08:00

191 lines
6.4 KiB
C#

using Assets.Scripts.Ble.CPPBridge;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
namespace Assets.Scripts.Ble
{
internal class WclBleManager
{
// Token: 0x06002170 RID: 8560
[DllImport("WclBlePluginCPP.dll", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.SysInt)]
private static extern IntPtr WCLManagerCreate([MarshalAs(UnmanagedType.FunctionPtr)][In] WclBleManager.WCL_MANAGER_STATUS_CHANGED Initialize, [MarshalAs(UnmanagedType.FunctionPtr)][In] WclBleManager.WCL_MANAGER_STATUS_CHANGED StatusCHanges, [MarshalAs(UnmanagedType.FunctionPtr)][In] WCL_NOTIFY_EVENT beforeClose);
// Token: 0x06002171 RID: 8561
[DllImport("WclBlePluginCPP.dll", CallingConvention = CallingConvention.StdCall)]
private static extern void WCLManagerDestroy([MarshalAs(UnmanagedType.SysInt)][In] IntPtr manager);
// Token: 0x06002172 RID: 8562
[DllImport("WclBlePluginCPP.dll", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.I4)]
private static extern int WCLManagerOpen([MarshalAs(UnmanagedType.SysInt)][In] IntPtr manager);
// Token: 0x06002173 RID: 8563
[DllImport("WclBlePluginCPP.dll", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.I4)]
private static extern int WCLManagerClose([MarshalAs(UnmanagedType.SysInt)][In] IntPtr manager);
// Token: 0x06002174 RID: 8564
[DllImport("WclBlePluginCPP.dll", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool WCLManagerGetActive([MarshalAs(UnmanagedType.SysInt)][In] IntPtr manager);
// Token: 0x06002175 RID: 8565
[DllImport("WclBlePluginCPP.dll", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.SysInt)]
private static extern IntPtr WCLManagerGetRadio([MarshalAs(UnmanagedType.SysInt)][In] IntPtr manager);
// Token: 0x06002176 RID: 8566 RVA: 0x0008B181 File Offset: 0x00089381
private void OnInitialized(IntPtr sender, WclBleManagerStatus status)
{
//if (WclBleManager.Info)
//{
// WclBleManager.log.Info(string.Format("WCLBleManger initialized with state {0}", status), Array.Empty<object>());
//}
this.BleStatus = status;
}
// Token: 0x06002177 RID: 8567 RVA: 0x0008B1B0 File Offset: 0x000893B0
private void OnBeforeClose(IntPtr sender)
{
//if (WclBleManager.Info)
//{
// WclBleManager.log.Info("Closing WCLBleManager -> BeforeClose called", Array.Empty<object>());
//}
}
// Token: 0x06002178 RID: 8568 RVA: 0x0008B1CD File Offset: 0x000893CD
private void OnStatusChanges(IntPtr sender, WclBleManagerStatus status)
{
//System.IO.File.WriteAllText("d:/demo.log", status.ToString());
this.BleStatus = status;
}
// Token: 0x170005F4 RID: 1524
// (get) Token: 0x06002179 RID: 8569 RVA: 0x0008B1FC File Offset: 0x000893FC
public bool Active
{
get
{
return WclBleManager.WCLManagerGetActive(this.mPtr);
}
}
// Token: 0x170005F5 RID: 1525
// (get) Token: 0x0600217A RID: 8570 RVA: 0x0008B20F File Offset: 0x0008940F
public IntPtr Radio
{
get
{
return WclBleManager.WCLManagerGetRadio(this.mPtr);
}
}
// Token: 0x170005F6 RID: 1526
// (get) Token: 0x0600217B RID: 8571 RVA: 0x0008B222 File Offset: 0x00089422
// (set) Token: 0x0600217C RID: 8572 RVA: 0x0008B22A File Offset: 0x0008942A
public WclBleManagerStatus BleStatus
{
get
{
return this.nativeStatus;
}
private set
{
if (this.nativeStatus != value)
{
this.nativeStatus = value;
WclBleManager.SafeInvoke(this.ManagerStatusChanged, this, this.nativeStatus);
}
}
}
// Token: 0x170005F7 RID: 1527
// (get) Token: 0x0600217D RID: 8573 RVA: 0x0008B24E File Offset: 0x0008944E
//public WclBleWatcher BleWatcher { get; }
// Token: 0x0600217E RID: 8574 RVA: 0x0008B258 File Offset: 0x00089458
public WclBleManager()
{
this.CInitialized = new WclBleManager.WCL_MANAGER_STATUS_CHANGED(this.OnInitialized);
this.CStatusChanged = new WclBleManager.WCL_MANAGER_STATUS_CHANGED(this.OnStatusChanges);
this.CBeforeClose = new WCL_NOTIFY_EVENT(this.OnBeforeClose);
this.mPtr = WclBleManager.WCLManagerCreate(this.CInitialized, this.CStatusChanged, this.CBeforeClose);
}
// Token: 0x0600217F RID: 8575 RVA: 0x0008B2BE File Offset: 0x000894BE
public int Open()
{
return WclBleManager.WCLManagerOpen(this.mPtr);
}
// Token: 0x06002180 RID: 8576 RVA: 0x0008B2D1 File Offset: 0x000894D1
public int Close()
{
return WclBleManager.WCLManagerClose(this.mPtr);
}
// Token: 0x06002181 RID: 8577 RVA: 0x0008B2E4 File Offset: 0x000894E4
public void Dispose()
{
//if (WclBleManager.Debug)
//{
// WclBleManager.log.Debug("WclBleManger disposed", Array.Empty<object>());
//}
WclBleManager.WCLManagerDestroy(this.mPtr);
this.mPtr = IntPtr.Zero;
this.CInitialized = null;
this.CBeforeClose = null;
this.CStatusChanged = null;
}
public string Test()
{
return "";
}
// Token: 0x06002182 RID: 8578 RVA: 0x0008B337 File Offset: 0x00089537
private static void SafeInvoke(WclBleManager.ManagerStatusChangedCallback callback, WclBleManager manager, WclBleManagerStatus status)
{
//ExceptionUtils.SafeInvoke(callback, new object[]
//{
// manager,
// status
//}, WclBleManager.log);
callback(manager, status);
}
// Token: 0x04001390 RID: 5008
public WclBleManager.ManagerStatusChangedCallback ManagerStatusChanged;
// Token: 0x04001391 RID: 5009
private IntPtr mPtr;
// Token: 0x04001392 RID: 5010
private WclBleManager.WCL_MANAGER_STATUS_CHANGED CInitialized;
// Token: 0x04001393 RID: 5011
private WclBleManager.WCL_MANAGER_STATUS_CHANGED CStatusChanged;
// Token: 0x04001394 RID: 5012
private WCL_NOTIFY_EVENT CBeforeClose;
// Token: 0x04001395 RID: 5013
private WclBleManagerStatus nativeStatus;
// Token: 0x0200093C RID: 2364
// (Invoke) Token: 0x06004079 RID: 16505
internal delegate void ManagerStatusChangedCallback(WclBleManager manager, WclBleManagerStatus status);
// Token: 0x0200093D RID: 2365
// (Invoke) Token: 0x0600407D RID: 16509
[UnmanagedFunctionPointer(CallingConvention.StdCall, SetLastError = false)]
internal delegate void WCL_MANAGER_STATUS_CHANGED([MarshalAs(UnmanagedType.SysInt)][In] IntPtr sender, WclBleManagerStatus status);
}
}