Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

私はアップルデバイスに接続し、IOSからANCSサービスを使用して通知を受信するための簡単なアプリケーションを作成しています。 接続して結合することはできますが、スタックイベントハンドラで未定義のイベントを受信しています。 詳しく説明すると、受信したイベントをswitchステートメントで管理し、"DEFAULT:"の場合は受信したイベントコードを出力します。 IOSデバイスに接続してボンディングすると、0x0111、0x010C、0x010Aのイベントコードが表示されます。 ソースファイルにこれらのイベントへの参照が見つかりません。 たとえば、ファイル BLE_Stack.h の CYBLE_EVT_GAP_AUTH_REQ に対応するイベント コード 0x0021を受け取ります。 しかし、私はこれらの新しいコードの参照を見つけることができません。 私のアプリケーションは、100 日間で 100 件のプロジェクトの例の 22 日目のプロジェクトとほぼ同じです。

アプリケーションはそのままでは正常に機能しているようですが、これらのイベントを無視するのではなく、適切に処理したいと思います。

誰かが私を正しい方向に向けるか、これらのイベントが何を指しているのかを説明できますか?

感謝

マルク。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-4/PSOC-4-ANCS-notification-consumer-receives-undefined-events/td-p/645563

0 件の賞賛
2 返答(返信)
Translation_Bot
Community Manager
Community Manager
Community Manager

これらのイベントはどこで見られましたか? Ancs_EventHandler()にありますか?

イベントを印刷するコードを共有してもらえますか?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-4/PSOC-4-ANCS-notification-consumer-receives-undefined-events/m-p/646111

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

イベントは、メイン スタック ハンドラー (main 関数の CyBle_Start(StackEventHandler) で定義) で発生します。 サンプルコードで処理されないすべてのイベントを処理するために、default: という名前の新しいスイッチケースを追加しました。 そのdefault:ケースでは、StackEventHandlerに引数として渡されるeventCodeパラメータをUARTに出力するだけです。 コード全体を見たい場合は、ワークスペースを含めました(ただし、これは単なる学習プロジェクトです)。

以下は、StackEventHandler.c から使用するコード スニペットです :

void StackEventHandler(uint32 eventCode, void * eventParam)
{
    CYBLE_GATTC_HANDLE_VALUE_NTF_PARAM_T * handleValueNotification;
    uint16_t advertizingIntervalMaxValue = 0;
    CYBLE_BLESS_CLK_CFG_PARAMS_T clockConfig;
    CYBLE_GAP_AUTH_INFO_T authInfo;
    CYBLE_GAP_SMP_KEY_DIST_T KEY;
    
    switch(eventCode)
    {
        case CYBLE_EVT_STACK_ON:
        break;
.
.
.
        case 266:   // undocumented event received after bonding with ANCS Notification Provider (iPad)
            printf("Unknown event after bonding: 266\r\n");
            //***DEBUG***
            // set flag to request connection parameter change in main loop (only once per connection)
            connectionUpdateRequest = 1;
            //***DEBUG***
        break;

        case 268:   // undocumented event received after bonding with ANCS Notification Provider (iPad)
            printf("Unknown event after bonding: 268\r\n");
        break;
            
        case 273:   // undocumented event received after bonding with ANCS Notification Provider (iPad)
            printf("Unknown event after bonding: 273\r\n");
        break;
            
        default: 
            printf("UNPROGRAMMED EVENT #%ld\r\n",eventCode);
        break;
    }
}

ターミナルアプリケーションに次の出力が表示されます。

CYBLE_STATE_ADVERTISING:
CYBLE_EVT_GATT_CONNECT_IND

Connected to a peer device.
Service changed indication. Redo service discovery.CYBLE_EVT_GATTC_HANDLE_VALUE_IND

Authentication complete. AUTHENTICATION_COMPLETED:
Security: Unauthenticated and Encryption
Bonding:yes
eKeySize: 0x10
err: 0x0
CYBLE_EVT_GAP_ENCRYPT_CHANGE

Encryption ON
Bonding complete. Negociated MTU size is 185
Unknown event after bonding: 273
Unknown event after bonding: 273
Unknown event after bonding: 273
Unknown event after bonding: 273
Unknown event after bonding: 273
Unknown event after bonding: 273
Unknown event after bonding: 273
Unknown event after bonding: 268
Unknown event after bonding: 268
Unknown event after bonding: 268
Unknown event after bonding: 268
Unknown event after bonding: 268
Unknown event after bonding: 268
Unknown event after bonding: 266
CYBLE_EVT_GATTC_LONG_PROCEDURE_END

 

StackEventHandler関数が受信する3つのイベント(273、268、266)を処理したいと思います。

これらのイベントが何であるかを知ることができるアイデアはありますか? それらは無視すべき内部スタックイベントですか、それともBluetooth接続を介してiPadから来ていますか?

感謝

マルク。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-4/PSOC-4-ANCS-notification-consumer-receives-undefined-events/m-p/646361

0 件の賞賛