Apple Bluetooth Accessory Design Guideline , Bluetooth Low Energy部分の日本語訳

これは、Apple社のBluetooth Accessory Design Guidelines for Apple Products (R6) https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdfのうち、Bluetooth Low Eneryに関連する部分を日本語訳したものです。17ページ目から20ページ目までを訳しています。

Bluetooth Low Energy

Bluetooth4.0仕様は、バッテリーリソースが限られたアクセサリをターゲットにした新しい無線通信技術、Bluetooth Low Energyを含みます。 もしBluetooth LEがサポートされていれば、アクセサリーはこの章のガイドラインに従うべきです。

Role

Bluetoothアクセサリーは、Bluetooth4.0仕様 Volume3, Part C, Section 2.2.2.3 に定義されているPeripheral role 、 もしくはSection 2.2.2.1に定義されているBroadcaster roleの、いずれかを実装すべきです。

Advertising Channels

Bluetoothアクセサリーは、アドバタイズのイベントの都度、すべての3つのアドバタイジング・チャネル(37, 38, および39)でアドバタイズすべきです。 Bluetooth 4.0 仕様, Volume 6, Part B, Section 4.4.2.1 を参照。

Advertising PDU

Bluetoothアクセサリーは、次のうちいずれか1つのアドバタイジングPDUを使うべきです:

  • ADV_IND
  • ADV_NOCONN_IND
  • ADV_SCAN_IND

ADV_DIRECT_IND は使うべきではありません。 Bluetooth 4.0 仕様, Volume 6, Part B, Section 2.3.1 を参照。

Advertising Data

Bluetoothアクセサリに送信されたアドバタイジング・データは、 Bluetooth 4.0 仕様, Volume 3, Part C, Section 11 に記述されているように、 次の情報の少なくとも1つを含むべきです:

CBUUIDクラスリファレンス 日本語訳

定数

CB_EXTERN NSString * const CBUUIDCharacteristicExtendedPropertiesString;

extended properties descriptorのUUIDの文字列表現です。 このデスクリプタに対応する値は、NSNumber オブジェクトです。

CB_EXTERN NSString * const CBUUIDCharacteristicUserDescriptionString;

user description descriptorのUUIDの文字列表現です。 このデスクリプタに対応する値は、NSString オブジェクトです。

CB_EXTERN NSString * const CBUUIDClientCharacteristicConfigurationString;

client configuration descriptor のUUIDの文字列表現です。 このデスクリプタに対応する値は、NSNumber オブジェクトです。

CB_EXTERN NSString * const CBUUIDServerCharacteristicConfigurationString;

server configuration descriptor のUUIDの文字列表現です。 このデスクリプタに対応する値は、NSNumber オブジェクトです。

CB_EXTERN NSString * const CBUUIDCharacteristicFormatString;

presentation format descriptor のUUIDの文字列表現です。 このデスクリプタに対応する値は、NSData オブジェクトです。

CB_EXTERN NSString * const CBUUIDCharacteristicAggregateFormatString;

server configuration descriptor のUUIDの文字列表現です。

CB_EXTERN NSString * const CBUUIDGenericAccessProfileString;

GAP のUUIDの文字列表現です。

CBServiceクラスリファレンス 日本語訳

これはCBServiceクラスのドキュメントを、CoreBluetoothを理解するために必要最小限の部分について、日本語訳したものです。

CBServiceクラスは、ペリフェラルのサービスまたはサービスのincluded serviceを表します。

プロパティ

@property(readonly, nonatomic) CBPeripheral *peripheral;

このサービスが属するペリフェラルへのポインタ。

@property(readonly, nonatomic) CBUUID *UUID;

サービスのBluetooth UUID

@property(readonly, nonatomic) BOOL isPrimary;

サービスのタイプ(primary または secondary)

@property(retain, readonly) NSArray *includedServices;

このサービスでこれまでに発見されたincluded serviceのリスト。

@property(retain, readonly) NSArray *characteristics;

このサービスでこれまでに発見されたcharacteristicのリスト。

CBMutableServiceクラス

CBPeripheralManagerを通してローカルデータベースに追加できる、ローカルサービスもしくはincluded serviceを作るのに使います。 一旦サービスが公開されたならば、キャッシュされて、それ以降は変更できません。 このクラスはCBServiceのすべてのプロパティに書き込み属性を追加します。

iOS6以降で有効です。

@property(retain, readwrite, nonatomic) CBUUID *UUID;

@property(readwrite, nonatomic) BOOL isPrimary;

@property(retain, readwrite) NSArray *includedServices;

@property(retain, readwrite) NSArray *characteristics;

- (id)initWithType:(CBUUID *)UUID primary:(BOOL)isPrimary;

サービスタイプとUUIDで初期化されたサービスを返します。

  • UUID
    • サービスのBluetooth UUID
  • isPrimary
    • サービスのタイプ(primary または secondary)

CBPeripheralManager クラス リファレンス 日本語訳

これはCBPeripheralManagerクラスのリファレンスを、CoreBluetoothを理解するために必要最小限の部分を日本語訳したものです。

CBPeripheralManagerクラスは、peripheral roleへの入り口です。 コマンドは、その状態がCBPeripheralManagerStatePoweredOn のときにだけ、発行されるべきです。 2つ以上のCBPeripheralManagerを同時に使うことはサポートされませんし、そうした場合には不定の振る舞いをするでしょう。

CBperipheralManagerクラスは、iOS6以降で利用できます

プロパティ

@property(assign, nonatomic) id delegate;

Peripheralイベントを受信するデリゲート。

@property(readonly) CBPeripheralManagerState state;

Peripheralの現在の状態。初期値はCBPeripheralManagerStateUnknown。 値更新は、required なデリゲートのメソッド peripheralManagerDidUpdateState: に提供されます。

@property(readonly) BOOL isAdvertising;

Peripheralが、今データをアドバタイズしているか、いなかを示します。

インスタンス・メソッド

- (id)initWithDelegate:(id)delegate queue:(dispatch_queue_t)queue;

イニシャライザです。Peripheral roleのイベントは、指定されたキューで処理されます。 もしもキューがnilならば、メインキューが使われるでしょう。

  • delegate
    • Peripheral roleイベントを受け取るデリゲート。
  • queue
    • イベントを処理するdispatch queue。

- (void)startAdvertising:(NSDictionary *)advertisementData;

アドバタイズメントを開始します。サポートされているアドバタイズメント・データ・タイプは、CBAdvertisementDataLocalNameKey と CBAdvertisementDataServiceUUIDsKey です。

アプリケーションがフォアグランドのときは、 初期のアドバタイズメント・データを、28バイトまで、 サポートされているアドバタイズメント・データ・タイプの任意の組み合わせに使えます。 もしこの領域を使い切ると、scan responseの10バイトを追加の領域として、ローカルネームに対してのみ、使えます。

このサイズは、新しいデータタイプそれぞれに必要な2バイトのヘッダ情報を含まないことに、注意してください。

割り当て領域に収まらなかったサービスUUIDsは、特別な"オーバフロー"領域に追加されます。したがって、それらのサービスUUIDは、 iOSデバイスが、それらを明示的にスキャンしたときにだけ、発見されます。

アプリケーションがバックグラウンドにあるときは、ローカルネームは使われず、すべてのサービスUUIDsは“オーバフロー”エリアに置かれます。

see peripheralManagerDidStartAdvertising:error:

seealso CBAdvertisementData.h

- (void)stopAdvertising;

アドバタイズを停止します。

- (void)setDesiredConnectionLatency:(CBPeripheralManagerConnectionLatency)latency forCentral:(CBCentral *)central;

すでにあるセントラルとの接続の、コネクション・レイテンシを希望する値に設定します。 コネクション・レイテンシの変更は保証されず、したがって結果として得られる遅延は、指定したものとは違うかもしれません。 もしも望むレイテンシが設定されないなら、接続が確立した時にセントラルが選んだレイテンシが使われます。 一般に、レイテンシを変更する必要はありません。

see CBPeripheralManagerConnectionLatency

CBDescriptorクラスリファレンス 日本語訳

プロパティ

@property(readonly, nonatomic) CBCharacteristic *characteristic;

属するcharacteristicのポインタです。

/*!

  • @property UUID
  • @discussion
  •  The Bluetooth UUID of the descriptor.
    

*/

@property(readonly, nonatomic) CBUUID *UUID;

DescriptorのBluetooth UUIDです。

@property(retain, readonly) id value;

Descriptorのあちあです。様々なデスクリプタに対応するvalue typeの詳細は、CBUUIDクラスで定義されています。

CBMutableDescriptorクラス

iOS6以降で有効です。

- (id)initWithType:(CBUUID *)UUID value:(id)value;

サービスタイプとvalueで初期化されたdescriptorを返します。一旦親であるserviceが公開されたならば、valueは要求されて、ダイナミックに更新することはできません。

  • UUID
    • DescriptorのBluetooth UUID
  • value
    • Descriptorの値