工程需要,需要带OAD功能和主从一体功能
我再CC2640R2F 官方on-chip OAD工程上改了 多角色 从机+发现者
但是APP角色初始化不通过,没有触发GAP_DEVICE_INIT_DONE_EVENT 事件。APP还是正常运行的,其他的定时任务都能正常执行。
build_config.opt做了如下更改 :
/* BLE Host Build Configurations */
/* -DHOST_CONFIG=PERIPHERAL_CFG */
/* -DHOST_CONFIG=CENTRAL_CFG */
/* -DHOST_CONFIG=BROADCASTER_CFG */
/* -DHOST_CONFIG=OBSERVER_CFG */
-DHOST_CONFIG=PERIPHERAL_CFG+OBSERVER_CFG/* -DHOST_CONFIG=CENTRAL_CFG+BROADCASTER_CFG */
/*-DHOST_CONFIG=PERIPHERAL_CFG+CENTRAL_CFG*/
multi.c中做了如下更改
static void gapRole_init(void)
{
// Register the current thread as an ICall dispatcher application
// so that the application can send and receive messages.
ICall_registerApp(&selfEntity, &syncEvent);
// Get link DB maximum number of connections
#ifndef STACK_LIBRARY
linkDBNumConns = linkDB_NumConns();
#endif /* STACK_LIBRARY */
// Setup timers as one-shot timers
Util_constructClock(&startAdvClock, gapRole_clockHandler,
0, 0, false, START_ADVERTISING_EVT);
Util_constructClock(&updateTimeoutClock, gapRole_clockHandler,
0, 0, false, CONN_PARAM_TIMEOUT_EVT);
// Initialize the Profile Advertising and Connection Parameters
gapRole_profileRole = GAP_PROFILE_PERIPHERAL | GAP_PROFILE_OBSERVER;
VOID memset(gapRole_IRK, 0, KEYLEN);
VOID memset(gapRole_SRK, 0, KEYLEN);
gapRole_signCounter = 0;
gapRole_AdvEventType = GAP_ADTYPE_ADV_IND;
gapRole_AdvDirectType = ADDRTYPE_PUBLIC;
gapRole_AdvChanMap = GAP_ADVCHAN_ALL;
gapRole_AdvFilterPolicy = GAP_FILTER_POLICY_ALL;
// Restore Items from NV
VOID osal_snv_read(BLE_NVID_IRK, KEYLEN, gapRole_IRK);
VOID osal_snv_read(BLE_NVID_CSRK, KEYLEN, gapRole_SRK);
VOID osal_snv_read(BLE_NVID_SIGNCOUNTER, sizeof(uint32_t),
&gapRole_signCounter);
}
另外,我又在官方的Multi_role 工程实验,同样做上面这些更改,下载到设备中可以正常工作。这个没有OAD功能,尝试了在这个基础上改OAD,步骤忒复杂了,最后也没有成功。
各位大侠,我上面问题出现在哪里了啊?问什么从机+发现者+OAD不能正常初始化呢?
Susan Yang:
建议您在Mutil_Roled的例子中添加oad功能,请参照下面的文档中的Add Off-chip OAD to an existing project。但是有可能出现内存的溢出的情况,建议增加堆栈大小。此外不建议在此工程上曾加oad功能。
qingqing huang:
回复 Susan Yang:
Susan Yang
建议您在Mutil_Roled的例子中添加oad功能,请参照下面的文档中的Add Off-chip OAD to an existing project。但是有可能出现内存的溢出的情况,建议增加堆栈大小。此外不建议在此工程上曾加oad功能。
bo wu:
回复 qingqing huang:
请教下 楼主 有没有在成功在PERIPHERAL 基础上加上OBSERVER,目前我碰到的问题和你一样。麻烦您看到的话 回复一下
qingqing huang:
回复 bo wu:
我最后是在oad on chip 上增加的OBSERVER,成功了的。