CC245x 配对问题

hi,all:
    我使用HIDEmuKbd实例,android手机连接没有显示配对框,我把SimpleBLEPeripheral工程中的配对代码复制到HIDEmuKbd工程中,android手机出现自动配对的提示,但是提示的配对号码不是自己设置的,也不能自己输入pin码,但是相同的代码在SimpleBLEPeripheral工程中,android手机跳出弹框提示输入号码,我输入号码后点击确定,开始配对。
下面是HIDEmuKbd工程中修改的配对代码,请大家帮忙看看是什么问题。非常感谢。hidemukbd.c文件我放在了附件中。
{
uint32 passkey = 147258; // passkey "000000"
uint8 pairMode = GAPBOND_PAIRING_MODE_WAIT_FOR_REQ;
uint8 mitm = TRUE;
uint8 ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY;
uint8 bonding = TRUE;
GAPBondMgr_SetParameter( GAPBOND_DEFAULT_PASSCODE, sizeof ( uint32 ), &passkey );
GAPBondMgr_SetParameter( GAPBOND_PAIRING_MODE, sizeof ( uint8 ), &pairMode );
GAPBondMgr_SetParameter( GAPBOND_MITM_PROTECTION, sizeof ( uint8 ), &mitm );
GAPBondMgr_SetParameter( GAPBOND_IO_CAPABILITIES, sizeof ( uint8 ), &ioCap );
GAPBondMgr_SetParameter( GAPBOND_BONDING_ENABLED, sizeof ( uint8 ), &bonding );
}
hidemukbd.c
  • 榜眼 39565 points

    xiaolei cui,

    uint8 pairMode = GAPBOND_PAIRING_MODE_INITIATE;

    uint8 ioCap = GAPBOND_IO_CAP_KEYBOARD_ONLY;

    改成这样试试看。

  • 回复 Y:

    HI Y:

        谢谢您的回复。

        我按照您说的修改了pairMode 和 ioCap的值,但是结果和原来相同。修改后的代码如下。

        {
    uint32 passkey = 147258; // passkey "000000"
    uint8 pairMode = GAPBOND_PAIRING_MODE_INITIATE;
    uint8 mitm = TRUE;
    uint8 ioCap = GAPBOND_IO_CAP_KEYBOARD_ONLY;
    uint8 bonding = TRUE;
    GAPBondMgr_SetParameter( GAPBOND_DEFAULT_PASSCODE, sizeof ( uint32 ), &passkey );
    GAPBondMgr_SetParameter( GAPBOND_PAIRING_MODE, sizeof ( uint8 ), &pairMode );
    GAPBondMgr_SetParameter( GAPBOND_MITM_PROTECTION, sizeof ( uint8 ), &mitm );
    GAPBondMgr_SetParameter( GAPBOND_IO_CAPABILITIES, sizeof ( uint8 ), &ioCap );
    GAPBondMgr_SetParameter( GAPBOND_BONDING_ENABLED, sizeof ( uint8 ), &bonding );
    }

    希望能得到您的回复。

    谢谢。

  • 榜眼 39565 points

    回复 xiaolei cui:

    xiaolei cui 

    你把

    // Bond Manager Callbacks
    static const gapBondCBs_t hidDevBondCB =
    {
    hidDevPasscodeCB,
    hidDevPairStateCB
    };

    改成

    // Bond Manager Callbacks
    static const gapBondCBs_t hidDevBondCB =
    {
    NULL,
    hidDevPairStateCB
    };

    试试?

  • 回复 Y:

    HI Y:

        谢谢您的回复。

        使用您建议的代码,改成NULL,结果和原来相同。

        还是希望能得到您的帮助,我也会再仔细研究HID的代码,共同进步。

    Thanks!

  • 榜眼 39565 points

    回复 xiaolei cui:

    xiaolei cui,

    还有一点忘记告诉你了,不好意思,前面没看仔细,除了把那个函数改成NULL,你还需要把ioCap = GAPBOND_IO_CAP_KEYBOARD_ONLY; 改回你原来的GAPBOND_IO_CAP_DISPLAY_ONLY。

    这样的原因是因为通过这个,手机就知道你只能显示密码,这个显示的密码就是你预设的6位数(TI默认的HIDEmuKbd工程没加入LCD,实际上并不会显示密码),只要你手机上输入你预设的6位数密码,就能配对成功了。

  • 回复 Y:

    hi Y:

        谢谢您的回复。

        结果和上面帖子显示的一样,没有要求输入密码,而是自动生成的密码。

     

        我的代码如下,两种代码的结构都不行:

    // Bond Manager Callbacks
    static const gapBondCBs_t hidDevBondCB =
    {
    NULL,
    hidDevPairStateCB
    };

    {

    uint32 passkey = 123456; // passkey "000000"
        uint8 pairMode = GAPBOND_PAIRING_MODE_INITIATE;
        uint8 mitm = TRUE;
        uint8 ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY;
        uint8 bonding = TRUE;
        GAPBondMgr_SetParameter( GAPBOND_DEFAULT_PASSCODE, sizeof ( uint32 ), &passkey );
        GAPBondMgr_SetParameter( GAPBOND_PAIRING_MODE, sizeof ( uint8 ), &pairMode );
        GAPBondMgr_SetParameter( GAPBOND_MITM_PROTECTION, sizeof ( uint8 ), &mitm );
        GAPBondMgr_SetParameter( GAPBOND_IO_CAPABILITIES, sizeof ( uint8 ), &ioCap );
        GAPBondMgr_SetParameter( GAPBOND_BONDING_ENABLED, sizeof ( uint8 ), &bonding );

    }

    2.

    // Bond Manager Callbacks
    static const gapBondCBs_t hidDevBondCB =
    {
    NULL,
    hidDevPairStateCB
    };

    {

    uint32 passkey = 123456; // passkey "000000"
        uint8 pairMode =GAPBOND_PAIRING_MODE_WAIT_FOR_REQ ;
        uint8 mitm = TRUE;
        uint8 ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY;
        uint8 bonding = TRUE;
        GAPBondMgr_SetParameter( GAPBOND_DEFAULT_PASSCODE, sizeof ( uint32 ), &passkey );
        GAPBondMgr_SetParameter( GAPBOND_PAIRING_MODE, sizeof ( uint8 ), &pairMode );
        GAPBondMgr_SetParameter( GAPBOND_MITM_PROTECTION, sizeof ( uint8 ), &mitm );
        GAPBondMgr_SetParameter( GAPBOND_IO_CAPABILITIES, sizeof ( uint8 ), &ioCap );
        GAPBondMgr_SetParameter( GAPBOND_BONDING_ENABLED, sizeof ( uint8 ), &bonding );

    }

    再次感谢您的答复,谢谢。

  • 榜眼 39565 points

    回复 xiaolei cui:

    我亲自在iPhone上试了一下,是可以的,iPhone 会让我输入密码。

    你再确认一下吧。

  • 回复 Y:

    HI Y:

        的确像您说的,是android的问题,我在windows和iphone上都是好的。

    谢谢您