Skip to content

Latest commit

 

History

History
228 lines (162 loc) · 12.8 KB

CHANGES.md

File metadata and controls

228 lines (162 loc) · 12.8 KB

YmsCoreBluetooth Changes

Mon Dec 2 2013

  • #92 - Reimplement [YMSCBCentralManager count] to use KVO collection method.
  • #94 - Implement [YMSCBCentralManager removeAllPeripherals] method.

Sat Nov 16 2013

Tue Nov 5 2013

  • #87 - Calculate 128-bit address offset to comply to BLE spec.

API changes related to this issue:

YMSCBUtils:

    + (NSString *)genCBUUID:(yms_u128_t *)base withIntBLEOffset:(int)addrOffset;
    + (CBUUID *)createCBUUID:(yms_u128_t *)base withIntBLEOffset:(int)addrOffset;

YMS128.c:

    yms_u128_t yms_u128_genBLEOffset(int value);

Removed files: DEASensorTagUtils.h, DEASensorTagUtils.m, TISensorTag.c

  • #73 - Fixed assignment of connectCallback property to not use extraneous copy.

Sat Oct 26 2013 - Pull Request Accepted from @coupgar

  • Fix reset of watchdog timer for conditions when a peripheral connection has either succeeded or failed.

Sat Oct 12 2013 - Pull Request Accepted from @coupgar

  • Fix centralManager:didRetrieveConnectedPeripherals won't be called when you call retrieveConnectedPeripheralsWithServices

Wed Sep 25 2013 - Interim Release (ver 1.02)

  • Fixed handling of callback properties so that they are set to nil after execution in a thread-safe manner.
  • Added #define kYMSCBVersionNumber

Sat Sep 18 2013 - iOS7 Release (ver 1.0)

  • Updated codebase to support all iOS7 changes to the CoreBluetooth API.
  • DeannaMac will not compile on OS X < 10.9. For OS X 10.8 users, please use the ios6 branch.

Sat Sep 7 2013 - Interim Release (ver 0.946)

  • #25 - Support for accelerometer period
  • #73 - Fix declaration of block properties to copy

Tue Jul 16 2013 - Interim Release (ver 0.945)

  • Bugfix #61 - Change all delegate implementations so that the callback is performed on the main thread.

Sat Jul 6 2013 - Interim Release (ver 0.944)

  • Bugfix #69 - Reload peripheralsTableView when dismissing SensorTag view controller
  • Bugfix #68 - Handle CoreBluetooth XPC reset
  • Issue #32 - Added interim icon design by Wayne Dahlberg

Mon Jun 24 2013 - Interim Release (ver 0.943)

  • Initial work on beautifying Deanna app (Issue #62) based on graphic design work by Wayne Dahlberg.
  • Fixes to updates of RSSI values via scanning or by connection.

Sat Jun 22 2013 - Interim Release (ver 0.942)

  • Reimplemented background thread UI updates to use GCD dispatch_async() instead of performSelectorOnMainThread: (Issue #61).
  • Updated documentation.

Wed Jun 19 2013 - Interim Release (ver 0.941)

  • Support for background thread operation of BLE transactions (Issues #57, #58, #59)

Prior releases ran all BLE transactions off the main UI thread. For a small number of BLE devices (< 5), performance degradation was neglible. However, in an environment with many devices (> 30), support for background operation that does not block the main UI is necessary. Changes so that messages sent to the delegate for YMSCBCentralManager and YMSCBPeripheral are executed in the main thread.

Similarly, any change to a property of a subclass of YMSCBService should be executed in the main thread so that it can be properly key-value observed (KVO) by any UI components.

  • API Change: Removed RSSI auto-update functionality from YmsCoreBluetooth.

This directly attributed with background thread operation of BLE transactions. Prior code, if run using a background thread, would not correctly schedule a read of the RSSI value of a peripheral. It is now the responsibility of an application using YmsCoreBluetooth to invoke readRSSI and handle the response to update the UI properly.

  • Update of Deanna and DeannaMac to support background thread BLE transactions.

API Changes

  • [YMSCBPeripheral initWithPeripheral:central:baseHi:baseLo:updateRSSI:] is obsolete.
    Replacing this call is [YMSCBPeripheral initWithPeripheral:central:baseHi:baseLo:]

  • [YMSCBPeripheral updateRSSI] is obsolete.

  • [YMSCBCentralManager initWithKnownPeripheralNames:queue:] is obsolete.
    Replacing this call is [YMSCBCentralManager initWithKnownPeripheralNames:queue:delegate:]

  • [YMSCBCentralManager initWithKnownPeripheralNames:queue:useStoredPeripherals:] is obsolete.
    Replacing this call is [YMSCBCentralManager initWithKnownPeripheralNames:queue:userStoredPeripherals:delegate:]

Mon Jun 3 2013 - Disco Release (ver 0.94)

  • Issue #9 - OS X Support

YmsCoreBluetooth now supports OS X! Includes app target DeannaMac which replicates functionality found in Deanna for iOS.

Tested Mac Environment:

  • OS X 10.8.3
  • Cirago Bluetooth 4.0 USB Adapter
  • iMac 27 Mid-2010

Sun May 26 2013 - Rare Groove Release (ver 0.93)

  • Issue #47 - rename YMSCBAppService to YMSCBCentralManager. Associated changes include:

    • renaming DEAAppService to DEACentralManager
    • rename variable cbAppService to centralManager
  • API change to fully embrace ObjectiveC block-based callbacks.

  • API change to map BLE operations to data object hierarchy.

API 0.93 is a BIG CHANGE. It is largely a rethink of YmsCoreBluetooth to support the pattern for hierarchical block-based operations. This will very much break code written for prior releases of YmsCoreBluetooth. That said, the changes should be fairly comprehensible and address the following points going forward:

  • Improved understanding of API behavior: prior releases had too much implicit behavior ("magic") which made involuntary decisions for the developer using the API. Using blocks gives the developer a clearer and more structured view of the BLE transactions to be made.
  • With the pattern for hierarchical block-based operations in place, a more structured way to add new API features. Like Winter, characteristic descriptors are coming.

Sun May 12 2013 - Moombahton Release (ver 0.92)

  • Block-based callbacks for central manager scanning, peripheral connection, and peripheral retrieval are now supported.
  • Watchdog timeout for unanswered peripheral connection requests are now supported.
  • Significant API changes to YMSCBCentralManager and YMSCBPeripheral detailed below.

API 0.92 Changes

YMSCBCentralManager (previously named YSMCBAppService)
obsolete- (void)persistPeripheralsReplaced by YMSCBStoredPeripherals
obsolete- (void)loadPeripheralsReplaced by YMSCBStoredPeripherals
new- (id)initWithKnownPeripheralNames:(NSArray *)nameList
   queue:(dispatch_queue_t)queue
   useStoredPeripherals:(BOOL)useStore;
Add support to optionally store peripherals.
obsolete- (void)connectPeripheral:(NSUInteger)index;Use more accurate name
replaced by- (void)connectPeripheralAtIndex:(NSUInteger)index
   options:(NSDictionary *)options;
obsolete- (void)disconnectPeripheral:(NSUInteger)index;Use more accurate name.
replaced by- (void)disconnectPeripheralAtIndex:(NSUInteger)index;
new- (void)connectPeripheral:(YMSCBPeripheral *)peripheral
   options:(NSDictionary *)options;
Mirror CBCentralManager method
new- (void)cancelPeripheralConnection:(YMSCBPeripheral *)peripheral;Mirror CBCentralManager method
new- (void)connectPeripheral:(YMSCBPeripheral *)peripheral
   options:(NSDictionary *)options
   withBlock:(void (^)(YMSCBPeripheral *yp, NSError *error))connectCallback
Support block based connection
new- (void)retrieveConnectedPeripheralsMirror CBCentralManager method
new- (void)retrieveConnectedPeripheralsWithBlock:
(void (^)(CBPeripheral *peripheral))retrieveCallback
Support block based connection
new- (void)retrievePeripherals:(NSArray *)peripheralUUIDsMirror CBCentralManager method
new- (void)retrievePeripherals:(NSArray *)peripheralUUIDs
   withBlock:(void (^)(CBPeripheral *peripheral))retrieveCallback
Support block based connection
new- (void)scanForPeripheralsWithServices:(NSArray *)serviceUUIDs
   options:(NSDictionary *)options
   withBlock:
(void (^)(CBPeripheral *,NSDictionary *, NSNumber *, NSError *))discoverCallback
Support block based connection
YMSCBPeripheral
obsolete - (id)initWithPeripheral:(CBPeripheral *)peripheral
   baseHi:(int64_t)hi
   baseLo:(int64_t)lo
   updateRSSI:(BOOL)update;
Support parent property so that methods on parent can be called directly from an instance of YMSCBPeripheral.
replaced by - (id)initWithPeripheral:(CBPeripheral *)peripheral
   parent:(YMSCBCentralManager *)owner
   baseHi:(int64_t)hi
   baseLo:(int64_t)lo
   updateRSSI:(BOOL)update;
new- (void)discoverServicesConvenience method to call behavior from YMSCBCentralManager
new- (void)connectConvenience method to call behavior from YMSCBCentralManager
new- (void)disconnectConvenience method to call behavior from YMSCBCentralManager

Wed May 8 2013

  • Issue #37 - UI for SensorTag Device Information Service implemented.

Tue May 7 2013

  • Bugfixes: #41, #42

Mon May 6 2013

  • Issue #19 - First draft of Tutorial written
  • Added initial support for launching a local notification when Deanna app in the background. The view controller for the SensorTag must be presented before going into the background for local notifications to work.

Wed May 2 2013

  • Issue #34 - Updated YmsCoreBluetooth Documentation

Wed May 1 2013

  • Improved API for reads and writes using either blocks or notifications.
  • Issue #12 - Callback blocks for service requests implemented.
  • Issue #22 - Support for reading SensorTag device info implemented.
  • Issue #24 - API version implemented.
  • Bugfix #31 - Remove all UI dependencies in YmsCoreBluetooth. Handling CBCentralManager state is an application UX issue.

Fri Apr 26 2013

  • Bugfix #21 - YMSCBService now supports constructor with 128-bit base address.
  • Issue #23 - Moved SensorTag specific methods (requestConfig, responseConfig, turnOn, turnOff) from YMSCBService.

Wed Apr 24 2013

  • Bugfix #5 to support multiple SensorTags is now in. With many thanks to Texas Instruments, a second SensorTag was donated to YmsCoreBluetooth to test for multiple peripherals.
  • Support for deleting discovered peripherals is in.
  • Support for discovering unknown peripherals is in.

Sat Apr 20 2013

  • Bugfix #15 where connect button is blocked when scanning.
  • Bugfixes on handling peripheral disconnects.

Thu Apr 18 2013 - Major Revision

  • Refactored DEACBAppService to support:
    • Separation of peripheral discovery by scanning from peripheral retrieval via stored UUID.
    • Removed NSNotification messages to use CBCentralManagerDelegate methods instead.
  • Reorganized physical file directory structure to match that of Xcode project group structure.
  • Added RSSI display to both peripheral screen and SensorTag screen.
  • Added connect button per peripherals discovered.
  • Initial support for multiple SensorTags. (This has not yet been tested, due to the fact that I have only 1 SensorTag to test.)

Sun Mar 3 2013

  • First stable release.
  • Support for communication with all sensors/services on a SensorTag.
  • Initial documentation for YmsCoreBluetooth API and Deanna source code.