CC2640R2F 主机参数从机设备, 设置扫描时间为8s, 如果8s未找到设备, 最多重复扫描4次(即总共扫描时间为32s), 从机的广播时间为2s, 主机和从机的距离为0.5米左右, 但是搜索不到从机设备, 这个能是什么问题?
手机连接从机设备都能连接成功.
Viki Shi:
从机广播间隔多少?其他主机设备能搜索到吗?
WK C:
回复 Viki Shi:
从机广播时间是2s, 就只有一个主机, 手机连接正常
WK C:
回复 Viki Shi:
主机需要设置什么参数吗?
Viki Shi:
回复 WK C:
“手机连接正常”是说手机可以正常搜索到从机并连接吗? 你用的是simple peripheral的例程吗?
WK C:
回复 Viki Shi:
simple peripheral和simple Center都是修改过的, 手机是可以搜索到从机并连接
Viki Shi:
回复 WK C:
那我大概知道原因了,你把DEFAULT_DEV_DISC_BY_SVC_UUID改为false试试
By default, the simple_central application is configured to filter and connect to peripheral devices with the TI Simple Profile UUID. To modify this behavior, set DEFAULT_DEV_DISC_BY_SVC_UUID to FALSE in simple_central.
WK C:
回复 Viki Shi:
DEFAULT_DEV_DISC_BY_SVC_UUID我是修改成TRUE了,这个是为了连接指定名称的设备,但是从机发的广播数据和主机接收到的数据不一致.
static uint8_t scanRspData[] =
{// complete name0x11,// length of this dataGAP_ADTYPE_LOCAL_NAME_COMPLETE,'K','O','N','M','E','D','5','3','3','_','D','E','V','I','C','E',
// connection interval range0x05,// length of this dataGAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE,LO_UINT16(DEFAULT_DESIRED_MIN_CONN_INTERVAL),// 100msHI_UINT16(DEFAULT_DESIRED_MIN_CONN_INTERVAL),LO_UINT16(DEFAULT_DESIRED_MAX_CONN_INTERVAL),// 1sHI_UINT16(DEFAULT_DESIRED_MAX_CONN_INTERVAL),
// Tx power level0x02,// length of this dataGAP_ADTYPE_POWER_LEVEL,1// 0dBm
};
// General discoverable mode: advertise indefinitely
#define DEFAULT_DISCOVERABLE_MODEGAP_ADTYPE_FLAGS_GENERAL
// Advertisement data (max size = 31 bytes, though this is
// best kept short to conserve power while advertising)
static uint8_t advertData[] =
{// Flags: this field sets the device to use general discoverable// mode (advertises indefinitely) instead of general// discoverable mode (advertise for 30 seconds at a time)0x12,// length of this dataGAP_ADTYPE_FLAGS,DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,'K','O','N','M','E','D','5','3','3','_','D',//设备MAC地址的倒数6位'E',//设备MAC地址的倒数5位'V',//设备MAC地址的倒数4位'I',//设备MAC地址的倒数3位'C',//设备MAC地址的倒数2位'E',//设备MAC地址的倒数1位// service UUID, to notify central devices what services are included// in this peripheral0x03,// length of this dataGAP_ADTYPE_16BIT_MORE,// some of the UUID's, but not allLO_UINT16(SIMPLEPROFILE_SERV_UUID),HI_UINT16(SIMPLEPROFILE_SERV_UUID)
};我将从机的广播数据设置成这样, 在static bool SimpleCentral_findSvcUuid(uint16_t uuid, uint8_t *pData,uint8_t dataLen)中的
pData的数据是什么?
我在主机设备中搜索包含"KONMED533"的广播数据, 搜到从机设备的概率很小.
如果需要搜索指定名称的设备, 有什么方法实现吗?
WK C:
回复 Viki Shi:
simple Center中 #define DEFAULT_SCAN_DURATION8000 这个宏定义, 这个值是什么作用? 值越大越好还是值越小越好?
Viki Shi:
回复 WK C:
#define DEFAULT_SCAN_DURATION 定义扫描时间,时间越长,扫描到设备的概率越高,缺点是功耗也高
WK C:
回复 Viki Shi:
我测试将DEFAULT_SCAN_DURATION 这个宏定义的值调成1s,设备扫描次数为16次, 这个更加容易扫描到从机设备,设置时间为8s, 扫描8次, 这个扫描设备几率更小, 这是为什么?