BLEマスタまたはスレーブバインディング情報の損失の問題

北欧の製品開発では、我々はホストが発生し、スレーブ間の結合、およびときパーティー(マスター/スレーブ)の情報が失わ接続失敗を結合した後に確立している、次のシナリオは次のとおりです。

シナリオ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

コメント

失われたバインディング情報をホスト

ザ・

ザ・

ザ・

すなわち、中央側の結合情報が削除されます

バインディング情報は、マシンから欠落しています

バツ

ザ・

ザ・

すなわち末梢側の結合情報が削除されます

おすすめ

転載: www.cnblogs.com/lim11/p/11132131.html