Cycling Power Service (CPS)
#Bluetooth
Cycling Power Service
https://www.bluetooth.com/ja-jp/specifications/specs/cycling-power-service-1-1/
関連仕様
Cycling Power Profile (CPP)
https://www.bluetooth.com/ja-jp/specifications/specs/cycling-power-profile-1-1/
https://www.bluetooth.com/specifications/specs/gatt-specification-supplement-6/
https://www.bluetooth.com/specifications/assigned-numbers/
目次
1. はじめに
1.1 適合性
1.2 サービスの依存関係
1.3 Bluetooth コア仕様リリースの互換性
1.4 GATT サブ手順の要件
1.5 トランスポートの依存性
1.6 エラーコード
1.7 バイト送信順序
2 サービス宣言
3 サービスの特徴
3.1 サイクリング電源機能
3.1.1 特徴的な動作
3.2 サイクリングパワー測定
3.2.1 特徴的な動作
3.2.1.1 フラグフィールド
3.2.1.2 瞬時パワーフィールド
3.2.1.3 ペダル・パワー・バランス・フィールド
3.2.1.4 累積トルクフィールド
3.2.1.5 ホイール回転データ フィールドペア
3.2.1.6 クランク回転データ フィールドペア
3.2.1.7 エクストリーム フォース マグニチュードフィールドペア
3.2.1.8 エクストリーム トルク マグニチュードフィールドペア
3.2.1.9 エクストリーム アングル フィールドペア
3.2.1.10 上死点角度フィールド
3.2.1.11 下死点角度フィールド
3.2.1.12 蓄積エネルギーフィールド
3.2.1.13 サイクリング パワー測定 ブロードキャスト機能
3.3 センサーの位置
3.3.1 特徴的な動作
3.4 サイクリング パワーコントロールポイント
3.4.1 サイクリング パワーコントロールポイント手順の要件
3.4.2 サイクリング パワーコントロールポイントの動作の説明
3.4.2.1 累積値の設定手順
3.4.2.2 センサー位置の更新手順
3.4.2.3 サポートされているセンサーの場所の要求手順
3.4.2.4 クランク長の設定手順
3.4.2.5 クランク長要求手順
3.4.2.6 チェーン長の設定手順
3.4.2.7 要求チェーン長手順
3.4.2.8 チェーン重量の設定手順
3.4.2.9 チェーン重量の要求手順
3.4.2.10 スパン長の設定手順
3.4.2.11 要求スパン長手順
3.4.2.12 オフセット補正手順の開始
3.4.2.13 マスクサイクルパワー測定特性内容
3.4.2.14 サンプリングレート要求手順
3.4.2.15 工場校正日の要求手順
3.4.3 一般的なエラー処理手順
3.4.4 手続きのタイムアウト
3.5 サイクル パワー ベクトル
3.5.1 特徴的な動作
3.5.1.1 フラグ フィールド
3.5.1.2 クランク レボリューション データ フィールド ペア
3.5.1.3 最初のクランク測定角度フィールド
3.5.1.4 瞬時 パワー マグニチュード配列フィールド
3.5.1.5 瞬時 トルク マグニチュード配列フィールド
3.6 時間依存データの要件
3.7 分散型電源システムに使用されるサーバの要件
4 SDPの相互運用性
5 頭字語と略語
6 参考文献
1. はじめに
サイクリング パワー (CP) サービスは、スポーツおよびフィットネス アプリケーション向けのサイクリング パワー センサー (サーバー) から、パワーとフォースに関連するデータ、およびオプションで速度とケイデンスに関連するデータを公開します。
1.1 適合性
デバイスがこのサービスへの適合を主張する場合、このサービスに必須として示されているすべての機能は、指定された方法 (プロセス必須) でサポートされるものとします。 これは、サポートが示されているすべてのオプションおよび条件付き機能にも適用されます。 すべての必須機能、およびサポートが示されているオプションおよび条件付き機能は、Bluetooth 認定プログラムの一部として検証の対象となります。
1.2 サービスの依存関係
このサービスは、他のサービスに依存していません。
1.3 Bluetooth コア仕様リリースの互換性
この仕様は、次のいずれかと互換性があります。
• CSA2、CSA3、および CSA4 を使用した Bluetooth コア仕様 4.0 1
• 4.0 より後の Bluetooth コア仕様。
1.4 GATT サブ手順の要件
このセクションの要件は、クライアントとサーバーの両方でサポートされている場合、GATT サブプロシージャを使用できます。
表 1.1 は、すべての GATT サーバーの追加の GATT サブ手順をまとめたものです。
table:1.1 GATT Sub-procedure Requirements
GATTサブプロシージャ 要件
Write Characteristic Value C.1
Notifications M
Indications C.1
Read Characteristic Descriptors M
Write Characteristic Descriptors M
C.1: サイクリング パワー コントロール ポイントの特性がこのサービスから除外されている場合は必須。
1.5 トランスポートの依存性
動作の高度なモードで使用されるサイクリング パワー測定ブロードキャスト機能 (セクション 3.2.1.13 を参照) を除いて、このサービス仕様によって課されるトランスポート制限はありません。
その場合、ブロードキャストの LE 方式が使用され、BR/EDR を介したブロードキャストはサポートされません。
このドキュメント全体で BR/EDR という用語が使用されている場合、これには AMP の使用も含まれます。
1.6 エラーコード
このサービスは、次の属性プロトコル アプリケーション エラー コードを定義します。
table:1.2 Application Error Codes
Name Error Code Description
不適切な接続パラメータ 0x80 接続パラメータが不適切なため、Cycling Power Vector 特性の通知を送信できません
1.7 バイト送信順序
このサービスで使用されるすべての特性は、最初に最下位オクテット (つまり、リトル エンディアン) で送信されます。
最下位オクテットは、Bluetooth SIG Assigned Numbers の特性定義で識別されます。
2 サービス宣言
Cycling Power Service は «Primary Service» としてインスタンス化する必要があります。
サービス UUID は、Bluetooth SIG Assigned Numbers で定義されている «Cycling Power Service» に設定する必要があります。
3 サービスの特徴
サイクリングパワーサービスでは、以下の特徴が顕在化しています。 このサービス内では、各特性の 1 つのインスタンスのみが許可されます。 特徴的な形式と UUID は Bluetooth SIG Assigned Numbers で定義されています。
特性を通知または示すことができる場合、コア仕様で要求されているように、Client Characteristic Configuration 記述子をその特性に含める必要があります。
特性をブロードキャストできる場合、コア仕様で要求されているように、サーバー特性構成記述子をその特性に含める必要があります。
table:3.1 Cycling Power Service characteristics
Characteristic Name Requirement Mandatory Properties Optional Properties Security Permissions
Cycling Power Feature M Read None
Cycling Power Measurement M Notify LE: Broadcast | BR/EDR: None None
Sensor Location M Read None
Cycling Power Control O Write, Indicate None
Cycling Power Vector O Notify None
Note:
「None」のセキュリティ許可は、このサービスが要件を課さないことを意味します
必須またはオプションとしてリストされていないプロパティは、このバージョンのこのサービスでは除外されます
3.1 サイクリング電源機能 Cycling Power Feature
Cycling Power Feature 特性は、サーバーがサポートする機能を説明するために使用されます。 Cycling Power Feature 特性値の将来の使用のために予約済み (RFU) ビットは 0 に設定する必要があります。
3.1.1 特徴的な動作
Cycling Power Feature 特性は、読み取られると、クライアントがサーバーのサポートされている機能を決定するために使用する値を返します。
Cycling Power Feature 特性のビットは、デバイスの寿命の間静的である (つまり、永続的に、または Service Changed が示されるまで静的である) か、接続中のみ静的であることが保証されます。 この仕様のこのバージョンで定義されているすべてのビット (つまり、ビット 0 から 21) は、デバイスの存続期間中は静的である必要がありますが、将来の一部のビットは、接続中にのみ静的であると定義される可能性があります。
分散システム サポート ビット以外で、サーバーが機能をサポートする場合、サイクリング パワー機能特性の関連ビットは 1 (機能がサポートされている) に設定され、それ以外の場合、関連ビットは 0 (機能がサポートされていない) に設定されます。 機能ビットは Bluetooth SIG Assigned Numbers で定義されています。
サーバーが分散システムで使用するように設計されていない場合 (つまり、サーバーがユーザーによって生成された総電力量を測定する場合)、分散システム サポート ビットを 01 (分散システムでは使用しない) に設定する必要があります。
サーバーが分散システムの一部として使用できるように設計されている場合 (つまり、サイクリング電力測定特性の瞬時電力値は、ユーザーによって生成された電力の総量の一部のみを表す可能性があります)、設定する必要があります。 分散システム サポート ビットを 10 に設定します (分散システムで使用できます)。
3.2 サイクリングパワー測定 Cycling Power Measurement
サイクリング パワー測定特性は、パワー関連データ、速度関連データ、および/またはケイデンス関連データを送信するために使用されます。 特性値には、Flags フィールド (オプション フィールドの存在と測定ステータスを示すため)、Instantaneous Power フィールドが含まれ、Flags フィールドの内容に応じて、Bluetooth SIG Assigned Numbers で定義されている 1 つまたは複数のオプション フィールドが含まれる場合があります。
3.2.1 特徴的な動作
サイクリング パワー測定特性がクライアント キャラクタリスティック コンフィギュレーション記述子を介して通知用に設定され、パワー関連の測定が利用可能な場合、この特性は通知されるものとします。 サーバーは、この特性を定期的に (通常は接続中に 1 秒に 1 回) 通知する必要があり、クライアントが構成することはできません。
サイクリング パワー測定ブロードキャスト機能が LE サーバーによってサポートされている場合 (セクション 3.2.1.13 を参照)、サイクル パワー測定特性がサーバー特性構成記述子を介してブロードキャスト用に構成され、パワー関連の測定が利用可能な場合、この特性は 接続中にブロードキャストされます (例: 接続不可能な無向広告イベント) (例: サーバーは、接続が切断されるとブロードキャストを停止します)。 サーバーは、この特性を定期的にブロードキャストする必要があります。 これは通常、この特性の通知と同じ間隔でブロードキャストする必要があります。
サイクリング パワー測定ブロードキャスト機能をサポートする LE サーバーの場合、接続中の通知とブロードキャストの送信をサポートする必要があります。
サーバーがサイクリング パワー測定特性のコンテンツ マスキング機能をサポートし、クライアントがサイクリング パワー測定特性の特定のフィールドを必要としない場合、サーバーは、クライアントがサイクリング パワー測定特性の特定のフィールドをオフにできるようにすることができます。 セクション 3.4.2.13。 クライアントがサイクリング パワー測定特性の一部のフィールドをオフにすると、セクション 3.2.1.13 で説明されているように、サイクリング パワー測定特性のブロードキャストに影響する可能性があり、実装に委ねられます。
分散型パワー センサー システムの追加の推奨事項については、セクション 3.7 を参照してください (たとえば、左右のパワーの寄与を測定する各ペダルに 1 台のサーバー)。
LE の場合、デフォルトの MTU サイズを使用している場合、この特性のすべてのフィールドを同時に存在させることはできません。 通知の場合、特性サイズが現在の MTU サイズを超える場合、残りのオプション フィールドは後続の通知で送信されます。 サイクリング パワー測定ブロードキャスト機能の追加要件については、セクション 3.2.1.13 を参照してください。
BR/EDR の場合、MTU サイズが大きいため、この制限はありません。
サイクリング パワー測定特性には、時間に敏感なデータが含まれているため、セクション 3.6 で定義されている時間に敏感なデータとデータ ストレージの要件が適用されます。
3.2.1.1 フラグフィールド
Flags フィールドは、Cycling Power Measurement 特性に含まれるものとします。
フラグ フィールドの将来の使用のために予約済み (RFU) ビットは 0 に設定されます。
Flags フィールドのビット、それらの機能、および Cycling Power Feature 特性のビットとの関係を表 3.2 に示します。
table:3.2 Bit Definitions for the Cycling Power Measurement Characteristic
*Flags Bit Name* 参照 *0の場合* *1の場合* CyclingPowerFeature特性ビット(3.1参照)
Pedal Power Balance Present (bit 0) 3.2.1.3 未対応 対応 bit 0
Pedal Power Balance Reference (bit 1) 3.2.1.3 未知 左基準 bit 0 *1
Accumulated Torque Present (bit 2) 3.2.1.4 未対応 対応 bit 1
Accumulated Torque Source (bit 3) 3.2.1.4 Wheel Based Crank Based bit 1 *1
Wheel Revolution Data Present (bit 4) 3.2.1.5 未対応 対応 bit 2
Crank Revolution Data Present (bit 5) 3.2.1.6 未対応 対応 bit 3
Extreme Force Magnutudes Present (bit 6) 3.2.1.7 未対応 対応 bit 4 かつ bit 16が0
Extreme Torque Magnitudes Present (bit 7) 3.2.1.8 未対応 対応 bit 4 かつ bit16が1
Extreme Angles Present (bit 8) 3.2.1.9 未対応 対応 bit 5
Top Dead Spot Angle Present (bit 9) 3.2.1.10 未対応 対応 bit 6
Bottom Dead Spot Angle Present (bit 10) 3.2.1.11 未対応 対応 bit 6
Accumulated Energy Present (bit 11) 3.2.1.12 未対応 対応 bit 7
Offset Compensation Indictio (bit 12) 3.2.1.12 補正不要 補正が必要 bit 8 *1
Note:
*1 Cycling Power Feature特性の対応する機能ビットが0に設定されている場合、このビットは意味を持たず、0に設定する必要があります
上記の表の各フラグ ビットは、Cycling Power Feature 特性の対応するサポート ビットが機能がサポートされていることを示す 1 に設定されている場合、接続中に変化する可能性があります。 ただし、対応するサポート ビットが 0 に設定されている場合、機能がサポートされていないため、対応するフラグ ビットも 0 に設定されます。
3.2.1.2 瞬時パワーフィールド
瞬時パワー フィールドは、サイクリング パワー測定特性に含まれるものとします。
Instantaneous Power フィールドは、サーバーによって測定された電力の値を表します。 これは、センサーのタイプ (単一センサーまたは分散型電力センサー システムなど) に応じて、ユーザーが生成している総電力または総電力の一部を表します。 分散型パワー センサー システムの追加要件については、セクション 3.7 を参照してください (たとえば、左右のパワーの寄与を測定する各ペダルに 1 台のサーバー)。
3.2.1.3 ペダル・パワー・バランス・フィールド
サーバーがペダル パワー バランス機能をサポートしている場合、ペダル パワー バランス フィールドをサイクリング パワー測定特性に含めることができます (表 3.2 を参照)。
Pedal Power Balance フィールドは、センサーによって測定されたパワーの総量とリファレンス (不明または左) の比率を表します。 たとえば、センサーが左ペダルを基準としたパワー バランスを提供する場合、パワー バランスは $ (LeftPower/(LeftPower + RightPower)) * 100 としてパーセント単位で計算されます。
サポートされている場合、Flags フィールドの Pedal Power Balance Reference ビット (ビット 1) は、値が「左」から参照されているか、参照が「不明」であるかを示します。
3.2.1.4 累積トルクフィールド
Accumulated Torque フィールドは、デバイスが Accumulated Torque 機能をサポートしている場合、Cycling Power Measurement 特性に含めることができます (表 3.2 を参照)。
Accumulated Torque フィールドは、センサーによって測定されたトルクの累積値を表します。 接続が確立されると、この値は 0 ニュートン メートルから始まり、ロールオーバーする場合があります。
サポートされている場合、Flags フィールドの Accumulated Torque Source ビット (ビット 3) は、値が「ホイール ベース」か「クランク ベース」かを示します。
累積トルク値が低下する場合があります。
3.2.1.5 ホイール回転データ フィールドペア
デバイスがホイール回転データ機能をサポートしている場合、ホイール回転データ フィールド ペア (累積ホイール回転数(Cumulative Wheel Revolutions)フィールドと最終ホイール イベント時間(Last Wheel Event Time)フィールド) をサイクリング パワー測定特性に含めることができます (表 3.2 を参照)。 存在する場合、これらのフィールドは常にペアとして存在するものとします。
累積ホイール回転数のロールオーバーは許可されていません
ホイールが回転する回数を表す累積ホイール回転値は、最後のホイール イベント時間およびコレクター デバイスで利用可能なホイール円周値と組み合わせて使用され、1) 自転車の速度、2 ) 移動距離と 3) クランク回転データと組み合わせた場合のパワー。 さらに、リンクが失われている場合は、リンクが失われている間の自転車の平均速度を計算するために、累積車輪回転数の値を使用できます。 この値は、セクション 3.4.2.1 で説明されているように、自転車への最初の取り付け時に 0 (またはセンサーのアップグレードなどの場合は別の望ましい値) に設定されることが期待されます。 累積車輪回転数の値は、実装によっては減少する場合がありますが (例: 自転車を逆回転させた場合)、0 を下回ってはなりません。
「ホイールイベント時間」は、1/2048 秒単位のフリーランニングカウントであり、ホイール回転センサーによってホイールの回転が検出された時間を表します。 送信の間に複数のホイール イベントが発生する可能性があるため、Last Wheel Event Time 値のみが送信されます。
Cumulative Wheel Revolutions フィールドの値の設定に関する要件については、セクション 3.4.2.1 を参照してください。
Last Wheel Event Time の値は 32 秒ごとにロールオーバーします。
3.2.1.6 クランク回転データ フィールドペア
デバイスがクランク回転データ機能をサポートしている場合、Crank Revolution Data フィールド ペア (Cumulative Crank Revolutions フィールドと Last Crank Event Time フィールド) を Cycling Power Measurement 特性に含めることができます (表 3.2 を参照)。 存在する場合、これらのフィールドは常にペアとして存在するものとします。
クランクが回転する回数を表す Cumulative Crank Revolutions 値は、Last Crank Event Time と組み合わせて使用され、クライアントが
1. サイクリストが惰性走行しているかどうかを判断し、
2. 瞬間ケイデンスと平均ケイデンスを計算する
3. ホイールレボリューションデータと組み合わせた場合のパワーを計算する
平均ケイデンスは、0 ケイデンス イベント (コースティングなど) を差し引かない限り正確ではありません。 さらに、リンクが失われた場合、累積クランク回転値を使用して、リンクが失われている間の平均ケイデンスを計算できます。 この値はロールオーバーを目的としており、構成可能ではありません。
「クランクイベント時間」とは、1/1024秒単位のフリーランニングカウントで、クランク回転センサーがクランク回転を検出した時間を表します。 送信の間に複数のクランク イベントが発生する可能性があるため、Last Crank Event Time 値のみが送信されます。
Last Crank Event Time の値は 64 秒ごとにロールオーバーします。
ユーザー エクスペリエンスを向上させるために、サーバーは、ユーザーがペダリングを行っていない場合 (丘を惰性で下る場合など) に検出される可能性のある余分なクランク回転を無視する必要がありますが、センサーはクランク回転検出システム (例: マウントに取り付けられた磁石) に面しています。 クランクセット)、不要なクランク回転検出を引き起こす可能性があります。
3.2.1.7 エクストリーム フォース マグニチュードフィールドペア
Extreme Force Magnitude フィールド ペア (Maximum Force Magnitude フィールドと Minimum Force Magnitude フィールド) は、デバイスが Extreme Magnitudes 機能をサポートし、Cycling Power Feature 特性の Sensor Measurement Context が 0 (Force ベース)。 それ以外の場合、このフィールド ペアはこの特性から除外されます (表 3.2 を参照)。 存在する場合、これらのフィールドは常にペアとして存在するものとします。
最大フォース マグニチュード フィールドは、1 回のクランク回転で測定された最大フォース値を表します。 それぞれ、Minimum Force Magnitude フィールドは、1 回のクランク回転で測定された最小の力の値を表します。
サーバーは 1 つの測定コンテキスト (力ベースまたはトルク ベースなど) のみをサポートするため、これらのフィールドのサポートは、最大トルク マグニチュードおよび最小トルク マグニチュード フィールドのサポートを除外します。
3.2.1.8 エクストリーム トルク マグニチュードフィールドペア
Extreme Torque Magnitudes フィールド ペア (Maximum Torque Magnitude フィールドと Minimum Torque Magnitude フィールド) は、デバイスが Extreme Magnitudes 機能をサポートし、Cycling Power Feature 特性の Sensor Measurement Context が 1 (トルク ベース)。 それ以外の場合、このフィールド ペアはこの特性から除外されます (表 3.2 を参照)。 存在する場合、これらのフィールドは常にペアとして存在するものとします。
Maximum Torque Magnitude フィールドは、1 回のクランク回転で測定された最大トルク値を表します。 それぞれ、「最小トルクの大きさ」 フィールドは、1 回のクランク回転で測定された最小トルク値を表します。
サーバーは 1 つの測定コンテキスト (たとえば、力ベースまたはトルク ベース) のみをサポートするため、これらのフィールドのサポートは、最大フォース マグニチュード フィールドと最小フォース マグニチュード フィールドのサポートを除外します。
3.2.1.9 エクストリーム アングル フィールドペア
デバイスが極端な角度機能をサポートしている場合、極端な角度フィールド ペア (最大角度フィールドと最小角度フィールド) をサイクリング パワー測定特性に含めることができます (表 3.2 を参照)。 存在する場合、これらのフィールドは常にペアとして存在するものとします。
「最大角度」フィールドは、最大値がクランクの 1 回転で測定されたときのクランクの角度を表します。 同様に、「最小角度」フィールドは、最小値が同じクランク回転で測定されたときのクランクの角度を表します。 1 回のクランク回転で測定される最大値と最小値は、最大フォース マグニチュード フィールドと最小フォース マグニチュード フィールド ペア、または最大トルク マグニチュード フィールドと最小トルク マグニチュード フィールド ペアのいずれかを表します。
3.2.1.10 上死点角度フィールド
デバイスが上死点角度機能と下死点角度機能をサポートしている場合、上死点角度フィールドをサイクリング パワー測定特性に含めることができます (表 3.2 を参照)。
Top Dead Spot Angle フィールドは、Instantaneous Power 値の値が正になるときのクランク角度を表します。
3.2.1.11 下死点角度フィールド
デバイスが上死点角度および下死点角度機能をサポートしている場合、下死点角度フィールドをサイクリング パワー測定特性に含めることができます (表 3.2 を参照)。
Bottom Dead Spot Angle フィールドは、Instantaneous Power 値の値が負になるときのクランク角度を表します。
3.2.1.12 蓄積エネルギーフィールド
デバイスが累積エネルギー機能をサポートしている場合、累積エネルギー フィールドをサイクリング パワー測定特性に含めることができます (表 3.2 を参照)。
Accumulated Energy フィールドは、センサーによって測定されたエネルギーの累積値を表します。 接続が確立されると、この値は 0 キロジュールから始まり、ロールオーバーすることはありません。
3.2.1.13 サイクリング パワー測定 ブロードキャスト機能
LE トランスポートを使用する場合、サイクリング パワー測定ブロードキャスト機能はオプションであり、BR/EDR には適用されません。
サイクリング パワー測定ブロードキャストがクライアントによって (たとえば、サーバー特性構成記述子を介して) 有効にされている場合、サーバーは、接続不可能な無向広告イベントでサイクリング パワー測定特性値を送信する必要があります。 アドバタイズ データは 31 オクテットを超えてはならず、表 3.3 で説明されている AD 構造データを含むものとします。
table:3.3 Broadcast AD Structures Requirements
*AD Type* *AD Data*
Advertising Interval advInterval value
Service Data Cycling Power Service UUID に続いて Cycling Power Measurement 特性値
サイクリング パワー測定ブロードキャストがクライアントによって (たとえば、サーバー特性構成記述子を介して) 無効にされると、サーバーはアドバタイズを停止する必要があります。 サーバーは、クライアントから切断されたときに広告も停止します。
サーバーは、通知時と同様に、ブロードキャスト時 (非接続型無向広告) にサイクリング パワー測定特性の異なるフィールドを送信することを選択できます。 通常、ブロードキャストに含まれるフィールドは、必須フィールド (つまり、フラグ フィールドと瞬時電力フィールド) とクランク回転データ フィールド (つまり、累積クランク回転数と最後のクランク イベント時間フィールドのペア) です。
3.3 センサーの位置
デバイスのセンサー位置特性は、正しく取り付けられた場合のサーバーの物理的な位置を表すために使用できます。
サーバーが複数のセンサー位置機能をサポートしている場合、セクション 3.4.2.2 で説明されているように、接続中にセンサー位置特性の値を更新できます。 それ以外の場合、センサー位置特性が存在し、複数のセンサー位置機能がサポートされていない場合、センサー位置の値は、サーバーの存続期間中、またはサービス変更特性が示されるまで静的でなければなりません。
サーバーが複数のセンサー位置機能をサポートしている場合、クライアントは、サーバーのセンサー位置特性の値が以前の接続の終了時と同じ値に設定されていると想定しないでください。 これは主に、以前の接続後に別のクライアントによって値が変更された可能性があるためです (たとえば、ユーザーがセンサーを別の場所に移動し、別のクライアントで新しいセンサーの場所を構成した場合など)。
分散型パワー センサー システムの追加の推奨事項については、セクション 3.7 を参照してください (たとえば、左右のパワーの寄与を測定する各ペダルに 1 台のサーバー)。
3.3.1 特徴的な動作
Sensor Location 特性は、読み取り時にセンサー位置の値を返します。
3.4 サイクリング パワーコントロールポイント
Cycling Power Control Point がサポートされている場合、このサービスを利用するプロファイルは、クライアントが最初の接続で (つまり、Client Characteristic Configuration 記述子を介して) 表示用の Cycling Power Control Point 特性を構成することを保証するために必要です。
サーバーが Wheel Revolution Data または Multiple Sensor Locations 機能をサポートする場合、または設定が構成可能である場合、またはサーバーがクライアントにオフセット補正を許可する場合、またはサーバーがクライアントにいくつかのパラメーターを要求することを許可する場合、この特性のサポートは必須です。 それ以外の場合は、表 3.1 に従って、このバージョンのサービスから除外されます。
分散型パワー センサー システムの追加の推奨事項については、セクション 3.7 を参照してください (たとえば、左右のパワーの寄与を測定する各ペダルに 1 台のサーバー)。
3.4.1 サイクリング パワーコントロールポイント手順の要件
表 3.4 は、このサービスのコンテキストにおける Cycling Power Control Point 特性の要件を示しています。
クライアントは、特性値書き込み手順を使用して、表 3.4 で定義された手順を開始する必要があります。
table:3.4 Cycling Power Control Point Procedure Requirements
*Procedure* *必須* *パラメタ概要* *Applicable Response Value* *応答*
Set Cumulative Value C.1 累積値 成功、失敗、パラメタ不整合、未対応 None
Update Sensor Location C.2 センサー位置 成功、失敗、パラメタ不整合、未対応 None
Request Supported Sensor Locations C.2 None 成功 バイト配列 - 3.4.2.3
失敗、未対応 None
Set Crank Length C.3 クランク長 成功、失敗、パラメタ不整合、未対応 None
Request Crank Length C.4 None 成功 クランク長
失敗、未対応 None
Set Chain Length C.5 チェーン長 成功、失敗、パラメタ不整合、未対応 None
Request Chain Length C.6 None 成功 チェーン長
失敗、未対応 None
Set Chain Weight C.7 チェーン重量 成功、失敗、パラメタ不整合、未対応 None
Request Chain Weight C.8 None 成功 チェーン重量
失敗、未対応 None
Set Span Length C.9 スパン長 成功、失敗、パラメタ不整合、未対応 None
Request Span Length C.10 None 成功 スパン長
失敗、未対応 None
C.11 None 成功 生データ
Start Offset Compensation 成功、失敗、パラメタ不整合、未対応 None
Mask Cycling Power 測定特性項目 C.12 マスクコンテンツ 成功、失敗、パラメタ不整合、未対応 None
Request Sampling Rate C.13 None 成功 サンプリングレート
失敗、未対応 None
Request Factory Calibration Date C.14 None 成功 工場出荷時補正
失敗、未対応 None
拡張オフセットの開始 C.15 None 成功、失敗 3.4.2.16参照
パラメタ不整合、未対応 None
必須情報の説明
C.1: Wheel Revolutions Data 機能がサポートされている場合は必須であり、サポートされていない場合は、このバージョンのこのサービスから除外されます。
C.2: 複数のセンサー位置機能がサポートされている場合は必須であり、それ以外の場合は、このバージョンのこのサービスから除外されます。
C.3: クランク長調整機能がサポートされている場合は必須であり、サポートされていない場合は、このバージョンのこのサービスから除外されます。
C.4: クランク長調整機能がサポートされている場合は必須、それ以外の場合はオプション。
C.5: チェーンの長さ調整機能がサポートされている場合は必須であり、それ以外の場合は、このバージョンのこのサービスから除外されます。
C.6: チェーン長さ調整機能がサポートされている場合は必須、それ以外の場合はオプションです。
C.7: チェーン重量調整機能がサポートされている場合は必須であり、サポートされていない場合は、このバージョンのこのサービスから除外されます。
C.8: チェーン重量調整機能がサポートされている場合は必須、それ以外の場合はオプション。
C.9: スパン長調整機能がサポートされている場合は必須であり、サポートされていない場合は、このバージョンのこのサービスから除外されます。
C.10: スパン長調整機能がサポートされている場合は必須、それ以外の場合はオプション。
C.11: オフセット補正機能がサポートされている場合は必須であり、サポートされていない場合は、このバージョンのこのサービスから除外されます。
C.12: Cycling Power Measurement Characteristic Content Masking 機能がサポートされている場合は必須であり、サポートされていない場合は、このバージョンのこのサービスから除外されます。
C.13: サイクリング パワー ベクトル特性がサポートされている場合は必須、それ以外の場合はオプション。
C.14: Factory Calibration Date 機能がサポートされている場合は必須、それ以外の場合はオプション。
C.15: 拡張オフセット補正機能がサポートされている場合は必須であり、サポートされていない場合は、このバージョンのこのサービスから除外されます。
3.4.2 サイクリング パワーコントロールポイントの動作の説明
Cycling Power Control Point は、サーバーの特定の動作を制御するためにクライアントによって使用されます。 手順は、操作を指定するオペ コードを含むこの特性値への書き込みによってトリガーされます (表 3.4 を参照)。その後に、そのオペ コードのコンテキスト内で有効なパラメーターが続きます。
3.4.2.1 累積値の設定手順
Set Cumulative Value Op Code が Cycling Power Control Point に書き込まれ、Wheel Revolution Data 機能がサーバーによってサポートされている場合、サーバーは、累積車輪回転値を、 サイクリング パワー コントロール ポイント。 このコントロール ポイントのパラメータ値の形式は UINT32 で、1 回転の分解能で回転数の累積値を表します。 累積ホイール回転値が応答コード Op コード、「成功」または他の適切な応答値と共に要求 Op コードを使用して適用されると、応答が示されるものとします。
操作がエラー状態になった場合、またはこの操作コードがサーバーでサポートされていない場合は、
この状態の処理の詳細については、セクション 3.4.3 を参照してください。
以下の値は構成できないため、この手順を使用して次の値を設定しないでください。
Cycling Power Measurement 特性の Cumulative Crank Revolutions 値または
Cycling Power Vector 特性の Cumulative Crank Revolutions 値または
累積トルク値またはサイクリングパワー測定特性の累積エネルギー。
この手順は、自転車が動いていないときに使用して、瞬間速度の誤った値を回避する必要があります。これは、コレクター デバイスによって計算された他の値 (つまり、平均速度、最大速度) にも影響を与える可能性があります。
3.4.2.2 センサー位置の更新手順
Update Sensor Location Op Code が Cycling Power Control Point に書き込まれ、複数の Sensor Locations 機能がサーバーによってサポートされている場合、サーバーは Sensor Location 特性の値を、送信された目的のセンサー位置の値で更新する必要があります。 サイクリング パワー コントロール ポイントのパラメータ値。 このコントロール ポイントのパラメータ値の形式は UINT8 で、センサー位置特性 Bluetooth SIG Assigned Numbers で定義されているセンサー位置を表します。 たとえば、0x0D のパラメータは、センサーの位置を「リア ハブ」に設定します。 サーバーでセンサーの位置が更新されると、応答コード Op コード、要求 Op コードと「成功」、またはその他の適切な応答値を使用して、応答が示されます。
サーバーは、接続が確立されるたびにクライアントがこの特性を再構成するのを避けるために、センサー位置特性の最新の値をキャッシュする必要があります。
操作の結果がエラー状態になった場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
この手順は、予期しない動作を避けるために、自転車が動いていないときに使用する必要があります。
3.4.2.3 サポートされているセンサーの場所の要求手順
Request Supported Sensor Locations Op Code が Cycling Power Control Point に書き込まれ、サーバーが複数のセンサー位置機能をサポートしている場合、サーバーはサポートされているセンサー位置の値のリスト (つまり、次の値を含むバイト配列) を送信する必要があります。 サポートされている各センサーの位置)。 応答は、応答コード Op コード、要求 Op コード、適切な応答値を使用して示され、手順が成功した場合、応答値は「成功」に設定され、その後に応答でサポートされているセンサー位置値のリストが続きます。 パラメータ。 このコントロール ポイントに応答する応答パラメーターの形式は、UINT8 配列であり、サーバーがサポートするセンサーの位置を表します。
LE トランスポートとデフォルトの ATT MTU の場合、サポートされている最大 17 のセンサー ロケーションを送信できます。
操作の結果がエラー状態になった場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
3.4.2.4 クランク長の設定手順
Set Crank Length Op Code が Cycling Power Control Point に書き込まれ、Crank Length Adjustment 機能がサーバーによってサポートされている場合、サーバーは、Cycling Power Control Point のパラメーターとして送信された希望のクランク長を保存します。 このコントロール ポイントのパラメータ値の形式は UINT16 で、1/2 ミリメートルの分解能でクランクの長さをミリメートル単位で表します。 クランク長の値は通常、内部信号処理のパラメータとして使用されます。 サーバーでクランク長が更新されると、応答コード Op コード、要求 Op コードと「成功」、またはその他の適切な応答値を使用して、応答が示されます。
サーバーは、接続が確立されるたびにクライアントがこの値を再構成するのを避けるために、クランク長の最新の値をキャッシュする必要があります。
操作の結果がエラー状態になった場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
この手順は、自転車が動いていないときに使用して、予期しない動作 (瞬時電力値の不一致など) を回避する必要があります。
3.4.2.5 クランク長要求手順
Request Crank Length Op Code が Cycling Power Control Point に書き込まれ、クランク長調整機能がサーバーによってサポートされている場合、サーバーはクランク長の現在の値を送信する必要があります。 応答は、応答コード オペ コード、要求オペ コード、適切な応答値を使用して示され、手順が成功した場合、応答値は「成功」に設定され、その後に応答パラメータのクランク長の値が続きます。 . このコントロール ポイントに対応するレスポンス パラメータの形式は UINT16 で、1/2 ミリメートルの分解能でクランク長をミリメートル単位で表します。
操作の結果がエラー状態になった場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
3.4.2.6 チェーン長の設定手順
Set Chain Length Op Code が Cycling Power Control Point に書き込まれ、チェーン長調整機能がサーバーによってサポートされている場合、サーバーは、Cycling Power Control Point のパラメーターとして送信された希望のチェーン長を保存します。 このコントロール ポイントのパラメータ値の形式は UINT16 で、チェーンの長さをミリメートル単位で表し、分解能は 1 ミリメートルです。 チェーン長の値は通常、内部信号処理のパラメータとして使用されます。 サーバーでチェーン長が更新されると、応答コード オペ コード、要求オペ コードと「成功」、またはその他の適切な応答値を使用して、応答が示されるものとします。
サーバーは、接続が確立されるたびにクライアントがこの値を再構成しないように、チェーンの長さの最新の値をキャッシュする必要があります。
操作の結果がエラー状態になった場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
この手順は、自転車が動いていないときに使用して、予期しない動作 (瞬時電力値の不一致など) を回避する必要があります。
3.4.2.7 要求チェーン長手順
Request Chain Length Op Code が Cycling Power Control Point に書き込まれ、Chain Length Adjustment 機能がサーバーによってサポートされている場合、サーバーは現在のチェーン長の値を送信する必要があります。 応答は、応答コード オペ コード、要求オペ コード、適切な応答値を使用して示され、手順が成功した場合、応答値は「成功」に設定され、その後に応答パラメータのチェーン長の値が続きます。 . このコントロール ポイントに対応する応答パラメータの形式は UINT16 で、チェーンの長さをミリメートル単位で表し、分解能は 1 ミリメートルです。
操作の結果がエラー状態になった場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
3.4.2.8 チェーン重量の設定手順
Set Chain Weight Op Code が Cycling Power Control Point に書き込まれ、Chain Weight Adjustment 機能がサーバーによってサポートされている場合、サーバーは、Cycling Power Control Point のパラメーターとして送信された希望のチェーン重量を保存します。 このコントロール ポイントのパラメータ値の形式は UINT16 で、チェーンの重量を 1 グラムの分解能でグラム単位で表します。 チェーンの重み値は通常、内部信号処理のパラメータとして使用されます。 サーバーでチェーン ウェイトが更新されると、応答コード オペ コード、リクエスト オペ コードと「成功」、またはその他の適切な応答値を使用して、応答が示されます。
サーバーは、接続が確立されるたびにクライアントがこの値を再構成しないように、チェーンの重みの最新の値をキャッシュする必要があります。
操作の結果がエラー状態になった場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
この手順は、自転車が動いていないときに使用して、予期しない動作 (瞬時電力値の不一致など) を回避する必要があります。
3.4.2.9 チェーン重量の要求手順
Request Chain Weight Op Code が Cycling Power Control Point に書き込まれ、Chain Weight Adjustment 機能がサーバーによってサポートされている場合、サーバーはチェーン重量の現在の値を送信する必要があります。 応答は、応答コード オペ コード、要求オペ コード、適切な応答値を使用して示され、手順が成功した場合、応答値は「成功」に設定され、その後に応答パラメータのチェーン ウェイトの値が続きます。 . このコントロール ポイントに応答する応答パラメータの形式は UINT16 で、チェーンの重量を 1 グラムの分解能でグラム単位で表します。
操作の結果がエラー状態になった場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
3.4.2.10 スパン長の設定手順
Set Span Length Op Code が Cycling Power Control Point に書き込まれ、スパン長調整機能がサーバーによってサポートされている場合、サーバーは、Cycling Power Control Point のパラメーターとして送信された希望のスパン長を保存する必要があります。 このコントロール ポイントのパラメータ値の形式は UINT16 で、スパンの長さをミリ単位で表し、分解能は 1 ミリメートルです。 スパン長の値は通常、内部信号処理のパラメータとして使用されます。 サーバーでスパン長が更新されると、応答コード オペ コード、要求オペ コードと「成功」、またはその他の適切な応答値を使用して、応答が示されるものとします。
サーバーは、接続が確立されるたびにクライアントがこの値を再構成しないように、スパン長の最新の値をキャッシュする必要があります。
操作の結果がエラー状態になった場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
この手順は、自転車が動いていないときに使用して、予期しない動作 (瞬時電力値の不一致など) を回避する必要があります。
3.4.2.11 要求スパン長手順
Request Span Length Op Code が Cycling Power Control Point に書き込まれ、スパン長調整機能がサーバーによってサポートされている場合、サーバーはスパン長の現在の値を送信する必要があります。 応答は、応答コード オペ コード、要求オペ コード、適切な応答値を使用して示され、手順が成功した場合、応答値は「成功」に設定され、その後に応答パラメータのスパン長の値が続きます。 . このコントロール ポイントに対応する応答パラメータの形式は UINT16 で、スパンの長さをミリメートル単位で表し、分解能は 1 ミリメートルです。
操作の結果がエラー状態になった場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
3.4.2.12 オフセット補正手順の開始
Start Offset Compensation Op Code が Cycling Power Control Point に書き込まれ、サーバーが Offset Compensation 機能をサポートしている場合、サーバーは Offset Compensation 手順を開始する必要があります。 応答は、応答コード オペ コード、要求オペ コード、適切な応答値を使用して、オフセット補償手順の完了時に示されます。手順が成功した場合、応答値は「成功」に設定され、その後に次の値が続きます。 応答パラメーターでオフセットが補正される前の、ニュートン単位の力または 1/32 ニュートン メートル単位のトルク (たとえば、セクション 3.1 で説明されているサイクリング パワー機能特性のセンサー測定コンテキスト ビットに基づく)。
このコントロール ポイントに応答する応答パラメータ値の形式は、SINT16 です。 このパラメーター値は、サーバーの機能 (たとえば、3.1 で定義されたサイクリング パワー機能特性のセンサー測定コンテキストに基づく) に基づいて、ニュートン単位の生の力または 1/32 ニュートン メートル単位の生トルクのいずれかを表します。 サーバーがこの値の測定をサポートしていない場合、サーバーは「使用不可」を意味する特別な値 0xFFFF を使用する必要があります。
操作の結果がエラー状態になった場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
3.4.2.13 マスクサイクルパワー測定特性内容
Mask Cycling Power Measurement Characteristic Content Op Code が Cycling Power Control Point に書き込まれ、Cycling Power Measurement Characteristic Content Masking 機能がサーバーによってサポートされている場合、サーバーは、Cycling Power Measurement Characteristic Content Masking 機能に基づいて、Cycling Power Measurement Characteristic の不要なオプション フィールドを無効にするものとします。 Cycling Power Control Point の送信パラメータ。 このコントロール ポイントのパラメータ値の形式は UINT16 であり、表 3.5 で説明されているように、オフにするサイクリング パワー測定特性のフィールドを表します。
table:3.5 Mask Cycling Power Measurement Characteristic Content Procedure Parameter Requirements
*Bit Number* *Description*
0 Pedal Power Balance 0: Leave as default / 1: Turn off
1 Accumulated Torque 0: Leave as default / 1: Turn off
2 Wheel Revolution Data 0: Leave as default / 1: Turn off
3 Crank Revolution Data 0: Leave as default / 1: Turn off
4 Extreme Magnitudes 0: Leave as default / 1: Turn off
5 Extreme Angles 0: Leave as default / 1: Turn off
6 Top Dead Spot Angle 0: Leave as default / 1: Turn off
7 Bottom Dead Spot Angle 0: Leave as default / 1: Turn off
8 Accumulated Energy 0: Leave as default / 1: Turn off
9-15 リザーブ
このコントロール ポイントは通常、サーバーの電力を節約するために使用されます。 クライアントがサイクリング パワー測定特性の特定のオプション フィールドを必要としない場合、クライアントは、サイクリング パワー測定特性の特定のフィールドをオフにすることができます。 このコントロール ポイント手順は、サイクリング パワー測定特性の通知の内容に影響を与え、サイクリング パワー測定特性のブロードキャストの内容にも影響を与える可能性がありますが、一部のデータはブロードキャストに関連しない可能性があるため、これはサーバー次第です。 応答コード Op コード、「成功」または他の適切な応答値を伴う要求 Op コードを使用して、サーバーでサイクリング パワー測定特性の内容が更新されると、応答が示されるものとします。
サーバーは、サイクリング パワー測定特性のフィールド構成の最新の値をキャッシュしません。また、接続が確立されるたびに、デフォルトの構成を使用する必要があります (つまり、サイクリング パワー測定特性のフィールドはどれも無効にされません)。
操作の結果がエラー状態になった場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
3.4.2.14 サンプリングレート要求手順
Request Sampling Rate Op Code が Cycling Power Control Point に書き込まれ、Cycling Power Vector 特性がサーバーによってサポートされている場合、サーバーはサンプリング レートの現在の値を送信する必要があります。 応答は、応答コード オペ コード、要求オペ コード、および適切な応答値を使用して示されます。手順が成功した場合、応答値は「成功」に設定され、その後に応答のサンプリング レートの値が続きます。 パラメータ。 このコントロール ポイントに応答する応答パラメータの形式は UINT8 で、解像度 1 ヘルツのサンプリング レートをヘルツで表します。
操作の結果がエラー状態になった場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
3.4.2.15 工場校正日の要求手順
工場校正日の要求操作コードがサイクリング パワー コントロール ポイントに書き込まれ、工場校正日機能がサーバーによってサポートされている場合、サーバーは工場校正の日付を送信するものとします。 応答は、応答コード Op コード、要求 Op コード、適切な応答値を使用して示され、手順が成功した場合、応答値は「成功」に設定され、その後に応答の工場校正日の値が続きます。 パラメータ。 このコントロール ポイントへの応答における応答パラメータ値の形式は、Bluetooth SIG Assigned Numbersで定義されている日時特性と同じ形式を使用するように定義されています。 ただし、年、月、日のフィールドに値 0 を使用してはなりません。
操作がエラー状態になった場合、またはこの操作コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
3.4.2.16 拡張オフセット補正手順の開始
Start Enhanced Offset Compensation Op Code が Cycling Power Control Point に書き込まれ、拡張オフセット補正機能がサーバーによってサポートされている場合、サーバーは拡張オフセット補正手順を開始する必要があります。 応答は、応答コード オペ コード、要求オペ コード、適切な応答値を使用してオフセット補償手順の完了時に示され、手順が成功した場合、応答値は「成功」に設定され、その後に値 ( UINT16) は、オフセットが補正される前に、サーバーの機能に基づいて (たとえば、セクション 3.1 で説明されているサイクリング パワー機能特性のセンサー測定コンテキスト ビットに基づいて) ニュートン単位の力または 1/32 ニュートン メートル単位のトルクを表します。 SIG 割り当て番号で指定されたメーカーの会社 ID を表す UINT16 値、メーカー固有のデータ (アナログからデジタルへの変換データなど) のオクテット数を表す UINT8、および応答パラメーター内の対応するメーカー固有のデータ。 サーバーがこの手順への応答と共に送信する追加データを持たない場合、メーカー固有のデータの長さを 0 にすることも可能です。
操作がエラー状態になった場合 (たとえば、サーバーがキャリブレーションに不適切な位置にあるために操作が失敗した場合)、サーバーは操作失敗応答値を使用し、次の応答パラメーターを含めて、より多くの情報を提供する必要があります。 エラーの原因。 応答パラメータは、表 3.6 で定義されています。
table:3.6 Response Parameter for handling Start Offset Compensation Procedure Errors
*Response Parameter* *Meaning*
0x00 リザーブ
0x01 不適切なキャリブレーション位置
0x02-0xFE リザーブ
0xFF メーカー固有のエラーが続きます
応答パラメーターが 0xFF の場合、応答には、Bluetooth SIG 割り当て番号で定義されているメーカーの会社 ID (UINT16)、長さフィールド (UINT8)、および長さが一致する可変長のメーカー固有の値が含まれます。 サーバーがこの手順への応答と共に送信する追加データを持たない場合、メーカー固有のデータの長さを 0 にすることも可能です。
操作の結果として他のエラー状態が発生した場合、またはこの Op コードがサーバーでサポートされていない場合、この状態の処理の詳細についてセクション 3.4.3 を参照してください。
3.4.3 一般的なエラー処理手順
特定の Op Code に固有のエラー処理手順以外に、以下が適用されます。
サーバーでサポートされていないサイクリング パワー コントロール ポイントの特性に Op コードが書き込まれた場合、サーバーは、書き込み応答を送信した後、応答コード Op コード、要求 Op コード、および応答値を使用してサイクリング パワー コントロール ポイントを示すものとします。 サポートされていないオペ コードに設定します。
パラメータが無効なサイクリング パワー コントロール ポイントの特性に書き込まれた場合 (たとえば、クライアントは、サーバーのコンテキストで無効なセンサー位置、またはサポートされている範囲外のセンサー位置で Update Sensor Location Op コードを書き込みます。 サーバー)、サーバーは、書き込み応答を送信した後、無効なパラメーターに設定された応答コード Op コード、要求 Op コード、および応答値を使用してサイクリング パワー コントロール ポイントを示すものとします。
サーバーが以前にトリガーされたサイクリング パワー コントロール ポイント操作を実行しているときに (つまり、無効なクライアントの動作が原因で) サイクリング パワー コントロール ポイント特性に Op コードが書き込まれた場合、サーバーは属性プロトコル エラー コード セットを含むエラー応答を返す必要があります。 CSS パート B、セクション 1.2 3 で定義されているように、既に進行中の手順へ
Op Code が Cycling Power Control Point 特性に書き込まれ、Cycling Power Control Point の Client Characteristic Configuration 記述子が指示用に構成されていない場合、サーバーは、Attribute Protocol エラー コードが Client Characteristic Configuration Descriptor に設定されたエラー応答を返すものとします。 CSS パート B、セクション 1.2 (Bluetooth コア仕様の補足、バージョン 2 以降) で定義されている不適切な構成。
3.4.4 手続きのタイムアウト
Cycling Power Control Point 特性のコンテキストでは、Cycling Power Control Point 特性への書き込みが正常に完了したとき (つまり、サーバーが書き込み応答を送信したとき) に手順が開始されます。 手順が完了すると、サーバーは Op Code が Response Code に設定された Cycling Power Control Point を示すものとします。
Cycling Power Control Point 特性のコンテキストでは、Cycling Power Control Point への書き込みが CSS パート B のセクションで定義されている属性プロトコル エラー コードでエラー応答になる場合、手順は開始されたと見なされず、サーバーでキューに入れられません。 1.2 (Bluetooth コア仕様の補足、バージョン 2 以降)。
3.5 サイクル パワー ベクトル
サイクリング パワー ベクトル特性は、生データ (力またはトルク) を送信するために使用されます。 特性値には、Flags フィールド (オプション フィールドの存在を示すため) が含まれ、Flags フィールドの内容に応じて、Crank Revolution Data フィールド (Cumulative Crank Revolutions フィールドと Last Crank Event Time フィールドを含む)、および 最初のクランク測定角度フィールド。 Cycling Power Vector には、Instantaneous Magnitude Array フィールドも含まれています。
サーバーは、サイクリストが生成する力関連データ (またはトルク関連データ) と、サイクリストが 1 分間にクランクを回す回数を表すケイデンス関連データを測定します。 Instantaneous Magnitude Array フィールドの Instantaneous Magnitude 値はクランクの回転に関連しており、ケイデンスは時間とともに変化するため、クランク回転ごとの Instantaneous Magnitude 値の量も変化します。 サーバーが新しいクランク回転の開始を検出すると、最初のクランク測定角度が表示されます。 サイクリストが毎分 90 回転のケイデンスでペダルを回転させ、サーバーのサンプリング レートが 25 ヘルツの場合、クランク 1 回転あたり 16 または 17 の瞬時マグニチュード値が存在するはずです。
3.5.1 特徴的な動作
サイクリング パワー ベクトル特性がクライアント特性構成記述子を介して通知用に構成され、力関連の測定値 (またはトルク関連の測定値) が利用可能な場合、この特性は通知されるものとします。 サーバーは、接続中に定期的にこの特性を通知する必要があり、クライアントによって構成することはできません。
一般的なアプリケーションでは、サイクリング パワー ベクトル特性は、送信データのサンプリング レートに応じて、100 または 300 ミリ秒ごとに約 1 回通知されます。 送信間隔は、通常、サーバーがデータをサンプリングするサンプリング レートに関連しています。 このセクションで参照されるサンプリング レートは、必ずしもサーバーが生の信号をサンプリングするサンプリング レートではありませんが、サイクリング パワー ベクトル特性に存在する瞬時振幅値がサンプリングされるサンプリング レートを表します。これらのデータは通常、ダウン サンプリングされるためです。 生信号から。
Cycling Power Vector データの送信に使用されるサンプリング レートの値は、セクション 3.4.2.14 で説明されている手順を使用して要求できます。
クライアントが通知を開始するためにクライアント特性構成記述子に 0x0001 を書き込むと、サーバーは通知の前に新しい接続パラメーターを要求する場合があります (たとえば、1 のボリューム 3 パート C セクション 9.3.9 で説明されている GAP 接続パラメーター更新手順を使用して)。 現在の接続パラメータが通知の送信を許可しない場合に送信されます (たとえば、サーバーがより速い接続間隔を必要とする場合)。 クライアントがサーバーによって定義された期間内に接続パラメーターを変更しない場合 (たとえば、現在の接続間隔が 1 秒に設定されている場合は 7 秒以上)、サーバーは書き込み要求に対して ATT エラー応答を返します。 アプリケーション エラー コード 0x80 (不適切な接続パラメータ) に設定されたエラー コード。 それ以外の場合、サーバーは書き込み応答で応答し、サイクリング パワー ベクトル特性の通知の送信を開始します。
クライアントが通知を停止するためにクライアント特性構成記述子に 0x0000 を書き込む場合、サーバーはクライアントに要求を送信して、クライアントが通知を開始する前と同じ値に接続パラメーターを設定する必要があります (たとえば、GAP 接続パラメーター更新を使用)。 1 のボリューム 3 パート C セクション 9.3.9 で説明されている手順)。
分散型パワー センサー システムの追加の推奨事項については、セクション 3.7 を参照してください (たとえば、左右のパワーの寄与を測定する各ペダルに 1 台のサーバー)。
Cycling Power Vector 特性には時間依存のデータが含まれているため、セクション 3.6 で定義されている時間依存のデータとデータ ストレージの要件が適用されます。
3.5.1.1 フラグ フィールド
Flags フィールドは、Cycling Power Vector 特性に含まれるものとします。
フラグ フィールドの将来の使用のために予約済み (RFU) ビットは 0 に設定されます。
Flags フィールドのビット、それらの機能、および Cycling Power Feature 特性のビットとの関係を表 3.7 に示します。
table:3.7 Bit Definitions for the Cycling Power Vector Characteristic
*Flags Bit Name* *参照* *0の場合* *0以外* *CyclingPowerFeature特性ビット(3.1参照)*
Crank Revolution Data Present (bit 0) 3.5.1.2 未対応 対応 bit 3
First Crank Measurement Angle Present (bit 1) 3.5.1.3 未対応 対応 bit 5
Instantaneous Force Magnitude Array Present (bit 2) 3.5.1.4 未対応 対応 bit 16
Instantaneous Torque Magnitude Array Present (bit 3) 3.5.1.5 未対応 対応 bit 16
Instantaneous Measurement Direction (bits 4) 3.5.1.4 方向不明 *1 bit 17
Instantaneous Measurement Direction (bits 5) 3.5.1.5 方向不明 *1 bit 17
*1Bluetooth SIG Assigned Numbers 参照
上記の表の各フラグ ビットは、Cycling Power Feature 特性の対応するサポート ビットが機能がサポートされていることを示す 1 に設定されている場合、接続中に変化する可能性があります。 ただし、対応するサポート ビットが 0 に設定されている場合、機能がサポートされていないため、対応するフラグ ビットも 0 に設定されます。 Cycling Power Feature 特性のサポート ビットと静的要件の詳細については、表 3.3 を参照してください。
3.5.1.2 クランク レボリューション データ フィールド ペア
クランクが回転する回数を表す Crank Revolution Data フィールド ペア (Cumulative Crank Revolutions フィールドと Last Crank Event Time フィールド) は、Last Crank Event Time と組み合わせて使用され、クライアントが次のことができるようにします。
1. サイクリストが惰性走行しているかどうかを判断します。
2. 瞬間ケイデンスと平均ケイデンスを計算し、
3. クランク回転データと最初のクランク測定角度の値に基づいて測定ベクトルを再構築します。
平均ケイデンスは、0 ケイデンス イベント (コースティングなど) を差し引かない限り正確ではありません。 さらに、リンクが失われた場合、累積クランク回転値を使用して、リンクが失われている間の平均ケイデンスを計算できます。 この値はロールオーバーを目的としており、構成可能ではありません。
「クランクイベント時間」とは、1/1024秒単位のフリーランニングカウントで、クランク回転センサーがクランク回転を検出した時間を表します。 送信の間に複数のクランク イベントが発生する可能性があるため、Last Crank Event Time 値のみが送信されます。
Last Crank Event Time の値は 64 秒ごとにロールオーバーします。
ユーザー エクスペリエンスを向上させるために、サーバーは、ユーザーがペダリングしていない場合 (丘を下るなど) に検出される余分なクランク回転を無視する必要があります。 .
3.5.1.3 最初のクランク測定角度フィールド
サーバーが Extreme Angles 機能 (表 3.7 を参照) をサポートしている場合、このフィールドはサポートされますが、すべてのパケットで必ずしも必要ではありません。
これは、測定開始時の最初のサンプルの角度を表し、クライアントが瞬時マグニチュード値およびサンプリング レートと組み合わせて使用し、力 (またはトルク) ベクトル配列を組み立てて、クランク全体の力をユーザーに示します。 回転。 1 つのパケット内に収まるよりも多くの回転の瞬時マグニチュード値がある場合、次のパケットには残りの値が含まれますが、最初のクランク測定角度フィールドは継続パケットには存在しません。
3.5.1.4 瞬時 パワー マグニチュード配列フィールド
Cycling Power Feature 特性の Sensor Measurement Context ビットが 0 (力ベース) に設定されている場合、このフィールドはサポートされますが、すべてのパケットで必ずしも必要ではありません (表 3.7 を参照)。 それ以外の場合、このフィールドはこの特性から除外されます。 このフィールドのサポートは、瞬時トルク マグニチュード アレイ フィールドのサポートを除外します。
Instantaneous Force Magnitude Array フィールドは可変長フィールドであり、Cycling Power Vector 特性に含めることができます。 このフィールドには、分解能 1 ニュートンのニュートンで表される 1 つ以上の瞬時マグニチュード値が含まれます。 これらの値は、センサーが測定する生データを表します。 これらのデータがサンプリングされるサンプリング レートは、セクション 3.4.2.14 で定義されている Request Sampling Rate 手順を使用して要求できます。
フラグ フィールドの瞬時測定方向ビットは、サーバーが測定する瞬時マグニチュード値の方向を記述します (たとえば、不明、接線成分、半径成分、または横成分)。
配列内の値の数は、センサーのサンプリング レートと通知間隔に関連しています。
LE トランスポートでは、23 オクテットの ATT_MTU に対して次の制限が存在します。
クランク回転データとファーストクランク計測角度が存在する場合に通知できる瞬時マグニチュード値は最大6個です。
Crank Revolution Dataがなく、First Crank Measurement Angleが存在する場合、通知できる瞬時振幅値は最大8個です。
Crank Revolution Dataあり、First Crank Measurement Angleなしの場合に通知できる瞬時振幅値は最大7個です。
クランク回転データとファーストクランク計測角度が存在しない場合に通知できる瞬時マグニチュード値は最大9個です。
最後の通知以降、1 つのサイクリング パワー ベクトル特性に収まる数よりも多くの瞬時マグニチュード値が測定された場合、セクション 3.5.1.3 で説明されているように、継続パケット内の次の利用可能なサイクリング パワー ベクターに瞬時マグニチュード値を含める必要があります。
サーバーは 1 つの測定コンテキスト (たとえば、力ベースまたはトルク ベース) のみをサポートするため、このフィールドのサポートは、瞬時トルクマグニチュード アレイ フィールドのサポートを除外します。
3.5.1.5 瞬時 トルク マグニチュード配列フィールド
Cycling Power Feature 特性の Sensor Measurement Context ビットが 1 (トルクベース) に設定されている場合、このフィールドはサポートされますが、すべてのパケットで必ずしも必要というわけではありません (表 3.7 を参照)。 それ以外の場合、このフィールドはこの特性から除外されます。 このフィールドのサポートは、瞬時トルク マグニチュード アレイ フィールドのサポートを除外します。
瞬時トルク マグニチュード アレイ フィールドは可変長フィールドであり、サイクリング パワー ベクトル特性に含めることができます。 このフィールドには、1/32 ニュートン メートルの分解能を持つニュートン メートルで表される 1 つまたは複数の瞬時マグニチュード値が含まれます。 これらの値は、センサーが測定する生データを表します。 これらのデータがサンプリングされるサンプリング レートは、セクション 3.4.2.14 で定義されている Request Sampling Rate 手順を使用して要求できます。
フラグ フィールドの瞬時測定方向ビットは、サーバーが測定する瞬時マグニチュード値の方向を記述します (たとえば、不明、接線成分、半径成分、または横成分)。
配列内の値の数は、センサーのサンプリング レートと通知間隔に関連しています。
LE トランスポートでは、23 オクテットの ATT_MTU に対して次の制限が存在します。
クランク回転データとファーストクランク計測角度が存在する場合に通知できる瞬時マグニチュード値は最大6個です。
Crank Revolution Dataがなく、First Crank Measurement Angleが存在する場合、通知できる瞬時振幅値は最大8個です。
Crank Revolution Dataあり、First Crank Measurement Angleなしの場合に通知できる瞬時振幅値は最大7個です。
クランク回転データとファーストクランク計測角度が存在しない場合に通知できる瞬時マグニチュード値は最大9個です。
最後の通知以降、1 つのサイクリング パワー ベクトル特性に収まる数よりも多くの瞬時マグニチュード値が測定された場合、セクション 3.5.1.3 で説明されているように、継続パケット内の次の利用可能なサイクリング パワー ベクターに瞬時マグニチュード値を含める必要があります。
サーバーは 1 つの測定コンテキスト (たとえば、力ベースまたはトルク ベース) のみをサポートするため、このフィールドのサポートは、瞬間的な力の大きさ配列フィールドのサポートを除外します。
3.6 時間依存データの要件
Cycling Power Measurement 特性と Cycling Power Vector 特性には、時間依存のデータが含まれており、時間依存の特性と見なされるため、次の要件が適用されます。
このサービスは、データの測定時間 (および経過時間) を識別するタイムスタンプ付きのデータを提供しないため、サイクリング パワー測定特性の値またはサイクリング パワー ベクトル特性の値は、いずれかの接続が失敗した場合に破棄されるものとします。 確立されないか、通知が正常に送信されない場合 (たとえば、リンクの損失が原因)。
3.7 分散型電源システムに使用されるサーバの要件
各サーバーのサイクリング パワー測定特性の瞬時パワー フィールドは、合計パワーの一部を表します (測定値など)。 クライアントは、これらの各値に基づいて総電力を計算できます。 Sensor Location 特性値は、Sensor が分散電源システムの一部であることを示すために使用してはなりません。 センサーは、サイクリング パワー機能特性を介して、分散システムの一部として構成されていることを示すものとします。
4 SDPの相互運用性
このサービスが BR/EDR を介して公開される場合、次の SDP レコードが必要です。
table:4.1 SDP Record
*Item* *Definition* *Type* *Value* *Status*
Service Class ID List M
Service Class #0 UUID «Cycling Power» M
Protocol Descriptor List M
Protocol #0 UUID L2CAP M
Parameter #0 for Protocol #0 PSM Uint16 PSM = ATT M
Protocol #1 UUID ATT M
Parameter #0 for Protocol #1 GATT Start Handle Uint16 GATT データベース内のこのサービスの最初のハンドル M
Parameter #1 for Protocol #1 GATT End Handle Uint16 GATT データベース内のこのサービスの最後のハンドル M
BrowseGroupList PublicBrowseRoot* M
* PublicBrowseRoot が存在する必要があります。 ただし、他の参照 UUID もリストに含まれる場合があります。
5 頭字語と略語
table:Abbreviation or Acronym
*Abbreviation or Acronym* *Meaning*
AMP Alternate MAC/PHY
BR/EDR Basic Rate / Enhanced Data Rate
GAP Generic Access Profile
GATT Generic Attribute Profile
LE Low Energy
RFU Reserved for Future Use
SDP Service Discovery Protocol
UUID Universally Unique Identifier
6 参考文献
Bluetooth Core Specification v4.0 with CSA2, CSA3 and CSA4 or later version of the Core
Specification.
Characteristic and Descriptor descriptions are accessible via the Bluetooth SIG Assigned
Numbers.
Supplement to the Bluetooth Core Specification, Version 2 or later