TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2540 配对密码问题

请各位指点一下,

在simpleBLEPeripheral.c里,有如下设置

uint32 passkey = 655355; // passkey "000000"   

uint8 pairMode = GAPBOND_PAIRING_MODE_WAIT_FOR_REQ ;    

 uint8 mitm =TRUE;    

 uint8 ioCap = GAPBOND_IO_CAP_KEYBOARD_DISPLAY  ;    

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 );

为什么我用LightBlue连设备的时候,还是不需要输入配对密码,直接就连上。是不是还要在什么地方作什么设置

Yue TANG:

配对绑定不影响连接的。 你处于等待配对请求状态(pairMode = GAPBOND_PAIRING_MODE_WAIT_FOR_REQ),lightblue不发起配对过程,自然不会主动配对。

 

huayuan wang:

回复 Yue TANG:

您好,TY,

   那请问您一下,我要怎么修改才能达到  输入密码才能使用设备提供的服务  的效果。我作了如下修改:

static gattAttribute_t simpleProfileAttrTbl[SERVAPP_NUM_ATTR_SUPPORTED] = {  

 // Simple Profile Service  

 {    

        { ATT_BT_UUID_SIZE, primaryServiceUUID }, /* type */    

         GATT_PERMIT_AUTHOR_READ,                         /* permissions */    

         0,                                        /* handle */    

         (uint8 *)&simpleProfileService            /* pValue */  

},

。。。。

}

红字部分改成了GATT_PERMIT_AUTHOR_READ或GATT_PERMIT_AUTHEN_READ都不行。。

shmily:

回复 Yue TANG:

在哪个函数下添加发起配对的代码,求大神简述下具体怎么实现?

Fred Wang:

回复 shmily:

配对是自己管理的,你可以设置密码和模式来实现简单的授权:

// Setup the GAP Bond Manager { uint32 passkey = 0; // passkey "000000" 配对密码,俗称PIN码,六位数字 uint8 pairMode = GAPBOND_PAIRING_MODE_INITIATE; //GAPBOND_PAIRING_MODE_NO_PAIRING;  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 ); }

user4047359:

回复 Fred Wang:

请问,如果我把CC2541上的绑定信息清除了,为什么我已经配对的手机再次连接不需要密码,,,,怎样实现才能实现,CC2541绑定信息清除 再次连接需要密码??求

jack wong:

回复 user4047359:

你好,请问这个问题有答案了吗? 就是cc2540这边擦除了绑定,ios上还是不需要输入密码,是否有了解决方案?

vey da:

回复 Fred Wang:

如果该了

GAPBOND_PAIRING_MODE_INITIATE; 为GAPBOND_PAIRING_MODE_NO_PAIRING;

else if ( gapBond_PairingMode == GAPBOND_PAIRING_MODE_NO_PAIRING )        {          // No Pairing – Send error          VOID GAP_TerminateAuth( pPkt->connectionHandle, SMP_PAIRING_FAILED_NOT_SUPPORTED );        }

直接就连接错误,还是无解,,,,,,

hu ai:

关于cc2541上面清除配对信息,但是ios设备上面连接的时候仍然可以连接上的问题我也碰到了。我是在修改配对密码时出现的,修改完配对密码之后就清除cc2541上面的配对信息。但是在iPhone上面仍然不用输入密码直接连上,并且我跟踪cc2541的流程来看的话密码管理的回调以及绑定过程的回调都没有跑,然后就直接连上了。而用iPod测试的时候密码管理的回调和绑定过程的回调都跑了,但是仍然走的是已经绑定的流程。

pz chuck:

蓝牙4.0的配对与蓝牙2.0是不同的

蓝牙2.1的配对是连接之前做的,而蓝牙4.0的配对是连接之后做的,所以无论你是否配对都是可以连接上的,要么你就自己做个密码,连接上就需要输入密码,不然就断开连接。

yihui qian:

static void ProcessPasscodeCB(uint8 *deviceAddr,uint16 connectionHandle,uint8 uiInputs,uint8 uiOutputs ){ uint32 passcode=123456; uint8 str[7];

//在这里可以设置存储,保存之前设定的密码,这样就可以动态修改配对密码了。-存于flash中 // Create random passcode //LL_Rand( ((uint8 *) &passcode), sizeof( uint32 )); passcode %= 1000000;

//在lcd上显示当前的密码,这样手机端,根据此密码连接。 // Display passcode to user if ( uiOutputs != 0 ) { HalLcdWriteString( "Passcode:", HAL_LCD_LINE_1 ); HalLcdWriteString( (char *) _ltoa(passcode, str, 10), HAL_LCD_LINE_2 ); } // Send passcode response GAPBondMgr_PasscodeRsp( connectionHandle, SUCCESS, passcode );}

请问怎么动态修改密码

赞(0)
未经允许不得转载:TI中文支持网 » CC2540 配对密码问题
分享到: 更多 (0)