Hi,
I am working on an application that needs to use pairing/bonding. I am incorporating peer manager into the project. I have included in Makefile paths the following:
$(SDK_ROOT)/components/ble/peer_manager\
$(SDK_ROOT)/components/libraries/fstorage \
$(SDK_ROOT)/components/libraries/fds \
$(SDK_ROOT)/components/libraries/experimental_section_vars \
And the source files:
[sdk]/components/libraries/fds/fds.c
[sdk]/components/libraries/fstorage/fstorage.c
[sdk]/components/libraries/util/sdk_mapped_flags.c
[sdk]/components/ble/common/ble_conn_state.c
I have also included following headers in source file that calls peer manager functions:
#include "fstorage.h"
#include "fds.h"
#include "peer_manager.h"
#include "ble_conn_state.h"
I have initialised pm in the source file by calling all related functions. However I get a compile-time error saying:
Memory region Used Size Region Size %age Used
FLASH: 74528 B 98 KB 74.27%
..\medsens_periph_build/nrf51422_xxac_adv_setup_app.c.o: In function `ble_evt_dispatch':
C:\Users\shor_\Desktop\NXTSENS\embedded_software\medsens_periph/drivers/adv_setup_app.c:461: undefined reference to `pm_on_ble_evt'
..\medsens_periph_build/nrf51422_xxac_adv_setup_app.c.o: In function `peer_manager_event_handler':
RAM: 8380 B 24448 B 34.28%
C:\Users\shor_\Desktop\NXTSENS\embedded_software\medsens_periph/drivers/adv_setup_app.c:72: undefined reference to `pm_peer_rank_highest'
C:\Users\shor_\Desktop\NXTSENS\embedded_software\medsens_periph/drivers/adv_setup_app.c:84: undefined reference to `pm_conn_secure'
C:\Users\shor_\Desktop\NXTSENS\embedded_software\medsens_periph/drivers/adv_setup_app.c:101: undefined reference to `pm_conn_sec_config_reply'
C:\Users\shor_\Desktop\NXTSENS\embedded_software\medsens_periph/drivers/adv_setup_app.c:142: undefined reference to `pm_local_database_has_changed'
..\medsens_periph_build/nrf51422_xxac_adv_setup_app.c.o: In function `peer_manager_init':
C:\Users\shor_\Desktop\NXTSENS\embedded_software\medsens_periph/drivers/adv_setup_app.c:156: undefined reference to `pm_init'
C:\Users\shor_\Desktop\NXTSENS\embedded_software\medsens_periph/drivers/adv_setup_app.c:179: undefined reference to `pm_sec_params_set'
C:\Users\shor_\Desktop\NXTSENS\embedded_software\medsens_periph/drivers/adv_setup_app.c:181: undefined reference to `pm_register'
collect2.exe: error: ld returned 1 exit status
make: *** [..\medsens_periph_build/nrf51422_xxac.out] Error 1
../drivers_common/Makefile.common.mk:122: recipe for target '..\medsens_periph_build/nrf51422_xxac.out' failed
It seems that the problem is that I missed a definition or a flag. Can you please suggest where to look to solve this problem ? I have included: CFLAGS += -DPEER_MANAGER_ENABLED=1 in Makefile. However, the problem persisted.