北欧の製品開発では、我々はホストが発生し、スレーブ間の結合、およびときパーティー(マスター/スレーブ)の情報が失わ接続失敗を結合した後に確立している、次のシナリオは次のとおりです。
シナリオ1:削除されたホスト側バインディング情報が、nRF52スレーブエンド依然として元のバインディング情報を保持し、nRF52スレーブは、元のバインディング情報を上書きし、再ペア可能にする新たなバインディング情報を必要とする、コードの必要性以下のように変更:
ケースPM_EVT_CONN_SEC_CONFIG_REQ:
{
NRF_LOG_INFO( "PM_EVT_CONN_SEC_CONFIG_REQ:peer_id =%dを、結合\ Rの\ nを修正するために受け入れます"、
p_evt-> peer_id);
//すでに結合したピアからのペアリング要求を受け入れます。
pm_conn_sec_config_t conn_sec_config = { 。allow_repairing = TRUE ;}
pm_conn_sec_config_reply(p_evt-> conn_handle、&conn_sec_config)。
}ブレーク;
シーン2:ホスト側は、元のバインディング情報を保持し、しかしnRF52バインディング情報の機械側端部から除去は、nRF52端が次のようにコードが変更され、パスワードより多くの経験障害で接続を維持する必要があります。
ケースPM_EVT_CONN_SEC_FAILED:
{
NRF_LOG_INFO( "PM_EVT_CONN_SEC_FAILED:peer_id =%dを、手順=%dを、誤差= 0X%04X \ Rを\ n"、
p_evt-> peer_id、
p_evt-> params.conn_sec_failed.procedure、
p_evt-> params.conn_sec_failed.error);
(p_evt-> params.conn_sec_failed.procedure == PM_LINK_SECURED_PROCEDURE_ENCRYPTION場合&&
p_evt-> params.conn_sec_failed.error == PM_CONN_SEC_ERROR_PIN_OR_KEY_MISSING)
{
//ローカルデバイス紛失債券情報、切断して再結合を待ちません。
NRF_LOG_INFO( "接着ます\ r \ nを修正するホストを待っています");
}
他
{
sprintf(m_message、 "セキュリティの手順が失敗し、切断\ rをする\ nを。");
dev_ctrl_send_msg(m_message、strlenを(m_message))。
(無効)sd_ble_gap_disconnect(p_evt-> conn_handle、BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION)。
}
}ブレーク;
ホストは、携帯電話またはタブレットである場合、オペレーティング・システムとの間の差に応じて異なるアプローチがあります。
iOS版:解決策は手動でのみホスト側を削除することによって、情報を結合、ありません。
アンドロイド:新しいバインディング手続きを行うことができ、古いバインディング情報を削除します。
ホスト側装置は、結合ペアを再確立し、生成した新たなバインディング情報を接続することを余儀なくさnRF52ある場合は、次のようにコードを変更します。
ケースPM_EVT_CONN_SEC_FAILED:
{
NRF_LOG_INFO( "PM_EVT_CONN_SEC_FAILED:peer_id =%dを、手順=%dを、誤差= 0X%04X \ Rを\ n"、
p_evt-> peer_id、
p_evt-> params.conn_sec_failed.procedure、
p_evt-> params.conn_sec_failed.error);
(p_evt-> params.conn_sec_failed.procedure == PM_LINK_SECURED_PROCEDURE_ENCRYPTION場合&&
p_evt-> params.conn_sec_failed.error == PM_CONN_SEC_ERROR_PIN_OR_KEY_MISSING)
{
//ピアデバイス紛失結合情報、再結合を行います
NRF_LOG_INFO( "ピアは、結合情報を失った再結合します\ r \ nを開始します。");
ERR_CODE = pm_conn_secure(p_evt-> conn_handle、真)。
(ERR_CODE!= NRF_SUCCESS)の場合
{
NRF_LOG_WARNINGは( "修正することはできません同期外れボンディングた:0x%08X \ r \ n" が、ERR_CODE)。
}
}
他
{
sprintf(m_message、 "接続に失敗し、切断\ Rを\ n");
dev_ctrl_send_msg(m_message、strlenを(m_message))。
(無効)sd_ble_gap_disconnect(p_evt-> conn_handle、BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION)。
}
}ブレーク;
次のように要約:
シーン |
iOS版 |
アンドロイド |
nRF52 |
コメント |
失われたバインディング情報をホスト |
ザ・ |
ザ・ |
ザ・ |
すなわち、中央側の結合情報が削除されます |
バインディング情報は、マシンから欠落しています |
バツ |
ザ・ |
ザ・ |
すなわち末梢側の結合情報が削除されます |