请各位指点一下,
在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 );}
请问怎么动态修改密码