/******************************************************************************* ** ** Function gatt_add_a_bonded_dev_for_srv_chg ** ** Description Add a bonded dev to the service changed client list ** ** Returns void ** *******************************************************************************/ void gatt_add_a_bonded_dev_for_srv_chg (BD_ADDR bda) { tGATTS_SRV_CHG_REQ req; tGATTS_SRV_CHG srv_chg_clt; memcpy(srv_chg_clt.bda, bda, BD_ADDR_LEN); srv_chg_clt.srv_changed = FALSE; if (gatt_add_srv_chg_clt(&srv_chg_clt) != NULL) { memcpy(req.srv_chg.bda, bda, BD_ADDR_LEN); req.srv_chg.srv_changed = FALSE; if (gatt_cb.cb_info.p_srv_chg_callback) (*gatt_cb.cb_info.p_srv_chg_callback)(GATTS_SRV_CHG_CMD_ADD_CLIENT, &req, NULL); } }
/******************************************************************************* ** ** Function gatt_init_srv_chg ** ** Description This function is used to initialize the service changed ** attribute value ** ** Returns void ** *******************************************************************************/ void gatt_init_srv_chg (void) { tGATTS_SRV_CHG_REQ req; tGATTS_SRV_CHG_RSP rsp; BOOLEAN status; UINT8 num_clients,i; tGATTS_SRV_CHG srv_chg_clt; GATT_TRACE_DEBUG("gatt_init_srv_chg"); if (gatt_cb.cb_info.p_srv_chg_callback) { status = (*gatt_cb.cb_info.p_srv_chg_callback)(GATTS_SRV_CHG_CMD_READ_NUM_CLENTS, NULL, &rsp); if (status && rsp.num_clients) { GATT_TRACE_DEBUG("gatt_init_srv_chg num_srv_chg_clt_clients=%d", rsp.num_clients); num_clients = rsp.num_clients; i = 1; /* use one based index */ while ((i <= num_clients) && status) { req.client_read_index = i; if ((status = (*gatt_cb.cb_info.p_srv_chg_callback)(GATTS_SRV_CHG_CMD_READ_CLENT, &req, &rsp)) == TRUE) { memcpy(&srv_chg_clt, &rsp.srv_chg ,sizeof(tGATTS_SRV_CHG)); if (gatt_add_srv_chg_clt(&srv_chg_clt) == NULL) { GATT_TRACE_ERROR("Unable to add a service change client"); status = FALSE; } } i++; } } } else { GATT_TRACE_DEBUG("gatt_init_srv_chg callback not registered yet"); } }