わふうの人が書いてます。

iOSアプリケーション開発、BLEのファームウェアとハードウェア試作のフリーランスエンジニア。

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

プロパティ

@property(assign, nonatomic) id delegate;

ペリフェラルのイベントを受信するデリゲートです。

@property(readonly, nonatomic) CFUUIDRef UUID;

ペリフェラルが、少なくとも一度システムから接続されたことがあれば、ペリフェラルにはUUIDが割り当てられます。(訳者注:逆にこれまで一度も接続したことがないペリフェラルでは、nilになります。接続は、他のアプリでの接続、iPhoneの電源オン/オフ、再起動に関係なく、一度でも接続したことがあるペリフェラルであれば、UUIDが割り当てらています。)

ペリフェラルを取得するために、後に
BCentralManager
に与えるために、このUUIDを保存しておけます。

@property(retain, readonly) NSString *name;

ペリフェラルの名前です。(訳者注:アドバタイズメント・データのローカル名を示します。通常は型番が与えらています。)

@property(retain, readonly) NSNumber *RSSI;

接続している間、接続のRSSIをデシベルで表します。

(訳者注:RSSIは、Received Signal Strength Indicatorの略称で、受信信号強度を表します。このRSSIは、RF送受信の半導体が出力する信号値をそのまま使っていると推測されます。物理的に絶対値が正しい値とは限りませんが、目安としては利用できるでしょう。信号レベルは対数で、デシベル(10log 信号電力)で表します。通常、-40 ~ -90dB程度の範囲です。マイナスになるほど、信号が弱いことを示します。)

@property(readonly) BOOL isConnected;

ペリフェラルが現在接続しているかを、示します。

@property(retain, readonly) NSArray *services;

ペリフェラルで発見されたサービスの、CBServiceオブジェクトのリストです。

メソッド

- (void)readRSSI;

接続の現在のRSSIを取得します。

see peripheralDidUpdateRSSI:error:

- (void)discoverServices:(NSArray *)serviceUUIDs;

ペリフェラルで有効なサービスを発見します。

  • serviceUUIDs
    • 発見すべきサービスのUUIDを表す、CBUUIDオブジェクトのリストです。もしもnilを与えると、ペリフェラルのすべてのサービスが発見されるでしょうが、とても遅くなり、従って推奨しません。

see peripheral:didDiscoverServices:

- (void)discoverIncludedServices:(NSArray )includedServiceUUIDs forService:(CBService )service;

指定したサービスのincluded serviceを発見します。
(訳者注: Bluetooth low energyのサービスは、オブジェクト指向でいうクラスの概念に相当します。いまあるサービスはそのまま提供しつつ、そのサービスの機能を拡張する仕組みが、included serviceで、ちょうどクラス継承の概念に相当します。)

  • includedServiceUUIDs
    • 発見すべきincluded serviceのUUIDを表すCBUUIDオブジェクトのリストです。もしもnilならば、サービスのすべてのincluded serviceが発見されますが、とても遅くなり、従って推奨しません。
  • service
    • プライマリGATTサービス

see peripheral:didDiscoverIncludedServicesForService:error:

- (void)discoverCharacteristics:(NSArray )characteristicUUIDs forService:(CBService )service;

サービスの指定したcharacteristicを発見します。

  • charactertisticsUUIDs
    • 発見すべきcharacteristicのUUIDを表すCBUUIDオブジェクトのリストです。もしnilならば、サービスのすべてのcharacteristicsが発見されますが、とても遅くなり、従って推奨しません。
  • service
    • GATTサービス

see peripheral:didDiscoverCharacteristicsForService:error:

- (void)readValueForCharacteristic:(CBCharacteristic *)characteristic;

characteriticの値を読みます。

  • characteristic
    • GATT characteristic

see peripheral:didUpdateValueForCharacteristic:error:

- (void)writeValue:(NSData )data forCharacteristic:(CBCharacteristic )characteristic type:(CBCharacteristicWriteType)type;

characteristicの値として、valueを書き込みます。

  • data
    • 書き込む値
  • characteristic
    • 書き込み対象のcharacteristic
  • type
    • 書き込みタイプ。characteristicへの書き込み完了を報告する/しないが設定できる。

see peripheral:didWriteValueForCharacteristic:error:

see CBCharacteristicWriteType

- (void)setNotifyValue:(BOOL)enabled forCharacteristic:(CBCharacteristic *)characteristic;

characteristicの値の、notification/indicationの有効/無効を背呈します。

characterisitcが、notification/indicationの両方を許可しているならば、notificationが使われます。
notification/indicationが有効になったとき、characteristicの値更新は、デリゲート
peripheral:didUpdateValueForCharacteristic:error:
に通知されます

更新を送るのは、選択したペリフェラルが行うものなので、
notification/indicationが有効である間、アプリケーションはその変更を処理できるように備えるべきです。

(訳者注:Bluetooth low energyは、接続先の装置の値更新をiPhone側にプッシュする仕組みがあります。それがnotificationとindicationです。この2つの違いは、通知の信頼性です。

  • notification
    • 接続先の装置からiPhoneに、値の更新を通知します。
    • notificationは通知だけの、信頼性のない通知です。iPhoneが接続先の装置に、値更新通知を受信したことを返しません。
  • indication
    • notificationと同じく、接続先の装置からiPhoneに、値の更新を通知します。
    • indicationは、iPhoneが接続先装置に値更新を受信したことを返信する、信頼性が確保された通知方法です。

例えば、室温やバッテリー残量のように、センサーなどの値変化を通知するが、一定周期で送信するため、通知データを取りこぼしても問題がない場合は、notificationを用いるなどします。

notification/indicationのいずれを実装しているかは、装置のファームウェア設計によります。readできるcharacteristicが、notification/indicationを実装しているとは限りません。iPhone側は、configutaionをみて、そのcharacteristicがnotification/indicationに対応しているかをみることしかできません。)

  • enabled
    • notification/indication を有効にすべきか、否かを設定します
  • characteristic
    • クライアントcharacteristic configuration descriptorを保持しているcharacteristic

see peripheral:didUpdateNotificationStateForCharacteristic:error:

seealso CBConnectPeripheralOptionNotifyOnNotificationKey

- (void)discoverDescriptorsForCharacteristic:(CBCharacteristic *)characteristic;

characteristicのdescriptor(s)を発見します。

  • characteristic
    • GATT characteristic

see peripheral:didDiscoverDescriptorsForCharacteristic:error:

- (void)readValueForDescriptor:(CBDescriptor *)descriptor;

descriptorの値を読みます。

  • descriptor
    • GATT characteristic descriptor

see peripheral:didUpdateValueForDescriptor:error:

- (void)writeValue:(NSData )data forDescriptor:(CBDescriptor )descriptor;

descriptorの値としてvalueを書き込みます。Client characteristic configuration descriptorはこのメソッドで書き込みはできません。
それには、 setNotifyValue:forCharacteristic: を使うべきです。

see peripheral:didWriteValueForCharacteristic:error:

###

列挙型

CBCharacteristicWriteType

  • CBCharacteristicWriteWithResponse = 0,
  • CBCharacteristicWriteWithoutResponse,