| /* |
| * |
| * Copyright (c) 2015-2017 Nest Labs, Inc. |
| * All rights reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /** |
| * @file |
| * This file defines NLWeaveBleDelegate interface |
| * |
| */ |
| |
| #import <CoreBluetooth/CoreBluetooth.h> |
| #import "NLWeaveErrorCodes.h" |
| |
| @class NLWeaveDeviceManager; |
| typedef void (^PreparationCompleteHandler)(NLWeaveDeviceManager* dm, WEAVE_ERROR err); |
| |
| @interface NLWeaveBleDelegate : NSObject<CBPeripheralDelegate> |
| |
| /* |
| * \defgroup BlePlatformDelegate |
| * @{ |
| */ |
| |
| /* |
| * @brief Command from BleLayer to subscribe to a characteristic |
| */ |
| - (bool)SubscribeCharacteristic:(id)connObj serivce:(const CBUUID *)svcId characteristic:(const CBUUID *)charId; |
| |
| /* |
| * @brief Command from BleLayer to unsubscribe a characteristic |
| */ |
| - (bool)UnsubscribeCharacteristic:(id)connObj serivce:(const CBUUID *)svcId characteristic:(const CBUUID *)charId; |
| |
| /* |
| * @brief Command from BleLayer to close the underlying BLE connection |
| */ |
| - (bool)CloseConnection:(id)connObj; |
| |
| /* |
| * @brief Command from BleLayer to retrieve the current MTU of the BLE connection |
| */ |
| - (uint16_t)GetMTU:(id)connObj; |
| |
| /* |
| * @brief Command from BleLayer to send indication |
| */ |
| - (bool)SendIndication:(id)connObj serivce:(const CBUUID *)svcId characteristic:(const CBUUID *)charId data:(const NSData*)buf; |
| |
| /* |
| * @brief Command from BleLayer to send write request |
| */ |
| - (bool)SendWriteRequest:(id)connObj serivce:(const CBUUID *)svcId characteristic:(const CBUUID *)charId data:(const NSData*)buf; |
| |
| /* |
| * @brief Command from BleLayer to send read request |
| */ |
| - (bool)SendReadRequest:(id)connObj serivce:(const CBUUID *)svcId characteristic:(const CBUUID *)charId data:(const NSData*)buf; |
| |
| /* |
| * @brief Command from BleLayer to send read response |
| */ |
| - (bool)SendReadResponse:(id)connObj requestContext:(id)readContext serivce:(const CBUUID *)svcId characteristic:(const CBUUID *)charId; |
| |
| /* |
| * @} |
| */ |
| |
| /* |
| * \defgroup BleApplicationDelegate |
| * @{ |
| */ |
| |
| /* |
| * @brief Notification from BleLayer when the BLE connection is no longer needed by Weave |
| */ |
| - (void)NotifyWeaveConnectionClosed:(id)connObj; |
| /* |
| * @} |
| */ |
| |
| /* |
| * @brief Create an instance which fails all BLE activity |
| */ |
| - (instancetype)initDummyDelegate; |
| |
| /* |
| * @brief Create an instance which drives all BLE activity in given CoreBluetooth work queue |
| */ |
| - (instancetype)init:(dispatch_queue_t)cbWorkQueue; |
| |
| /* |
| * @brief Returns true if the CBPeripheral passed in is under management |
| */ |
| - (bool) isPeripheralValid:(CBPeripheral*)peripheral; |
| |
| /* |
| * @brief Command from NLWeaveDeviceManager to prepare the CBPeripheral contained in the NLWeaveDeviceManager for WoBLE |
| */ |
| - (void)prepareNewBleConnection:(NLWeaveDeviceManager*)dm; |
| |
| /* |
| * @brief Send async notification to BleLayer when the underlying BLE connection is broken |
| */ |
| - (void)notifyBleDisconnected:(CBPeripheral*)peripheral; |
| |
| /* |
| * @brief Command from NLWeaveDeviceManager to BleLayer so this connection is no longer managed |
| */ |
| - (void)forceBleDisconnect_Sync:(CBPeripheral*)peripheral; |
| |
| @end |