After that, I encountered another question, my phone can connect the QN902x device, but cannot get the ATT service and ATT characteristics. (if using NXP demo project, PROXR, i.e. My phone can get the ATT services and write/read ATT characteristics.)
Here is my ATT database setting, I defined a ATT service (UUID=0xccd0), 2 ATT characteristics(UUID=0xccd1/0xccd2).
#define LLF_MAIN_SVC 0xccd0
#define LLF_ATT_CHAR_REPORT 0xccd1
#define LLF_ATT_CHAR_COMMAND 0xccd2
const struct atts_desc llf_att_db[5] =
{
[0]={ATT_DECL_PRIMARY_SERVICE, PERM(RD, ENABLE), sizeof(LLF_MAIN_SVC), sizeof(LLF_MAIN_SVC), (uint8_t *)&llf_main_svc},
[1]={ATT_DECL_CHARACTERISTIC, PERM(RD, ENABLE), sizeof(llf_report_char), sizeof(llf_report_char), (uint8_t *)&llf_report_char},
[2]={LLF_ATT_CHAR_REPORT, PERM(RD, ENABLE), 10, 0, NULL},
[3]={ATT_DECL_CHARACTERISTIC, PERM(RD, ENABLE), sizeof(llf_command_char), sizeof(llf_command_char), (uint8_t *)&llf_command_char},
[4]={LLF_ATT_CHAR_COMMAND, PERM(WR, ENABLE), 8, 0, NULL},
};
const uint16_t llf_main_svc = LLF_MAIN_SVC;
const struct atts_char_desc llf_report_char = ATTS_CHAR(ATT_CHAR_PROP_RD, 0, LLF_ATT_CHAR_REPORT);
const struct atts_char_desc llf_command_char = ATTS_CHAR(ATT_CHAR_PROP_WR_NO_RESP, 0, LLF_ATT_CHAR_COMMAND);
Note: The ATT service(UUID=0xccd0) has broadcasted.