//---- internal void SdkInit() { bool init = _api.Btsdk_IsSDKInitialized(); bool conn = _api.Btsdk_IsServerConnected(); // Ok to call if '!init'? if (init && conn) { return; } BtSdkError ret = _api.Btsdk_Init(); //Debug.WriteLine("BlueSoleil Btsdk_Init: " + BluesoleilUtils.BtSdkErrorToString(ret)); BluesoleilUtils.CheckAndThrow(ret, "Btsdk_Init"); #if DEBUG // When Radio is Off, Init succeeds when called but IsSDKInitialized // still returns false! That persists until the radio's turned on. bool initAfter = _api.Btsdk_IsSDKInitialized(); bool connAfter = _api.Btsdk_IsServerConnected(); // Ok to call if '!init'? if (!initAfter || !connAfter) { bool ready = _api.Btsdk_IsBluetoothReady(); Debug.Assert(!ready, "Not init&&conn, but NOT ready..."); Debug.Assert(!init, "Not init&&conn, but NOT !init..."); Debug.Assert(conn, "Not init&&conn, but NOT conn..."); } #endif _needsDispose = true; }
internal BluesoleilFactory(IBluesoleilApi api) { if (api == null) { throw new ArgumentNullException("api"); } _api = api; _records = new Records(api); Debug.Assert(!api.Btsdk_IsSDKInitialized(), "IsSDKInitialized unexectedly true!"); SdkInit(); if (!Api.Btsdk_IsBluetoothHardwareExisted()) { throw new PlatformNotSupportedException("BlueSoleil Bluetooth stack not supported (HardwareExisted)."); } _inquiryHandler = new BluesoleilInquiry(this); _sec = new BluesoleilSecurity(this); GetAllRadios(); }