I am getting killed by the fact I cannot restore the CCCDs on a bonded reconnect and need to rely on the client doing it every connection - a violation of the standard.
I am using the ble_pc_driver.
So out of desperation I am asking what is the difference between doing the set operation with the following flag options?
sd_ble_gatts_sys_attr_set(m_adapter, p_ble_evt->evt.gap_evt.conn_handle, saveDataBuffer,
saveDataLength, BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS | BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS);
sd_ble_gatts_sys_attr_set(m_adapter, p_ble_evt->evt.gap_evt.conn_handle, saveDataBuffer,
saveDataLength, BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS);
sd_ble_gatts_sys_attr_set(m_adapter, p_ble_evt->evt.gap_evt.conn_handle, saveDataBuffer,
saveDataLength, BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS);
sd_ble_gatts_sys_attr_set(m_adapter, p_ble_evt->evt.gap_evt.conn_handle, saveDataBuffer,
saveDataLength, 0);
The limited documentation on this method does not really explain what these different options will do.
The 'aveDataBuffer' has the results of the 'get' analog of this call obtained during the disconnect event of the previous connection. The contents of saveDataBuffer look valid.
SO far, no matter what I do, I cannot indicate/notify characteristics without having the client 'enable' the CCCDs every connection.
Anybody know?
Anybody ever get this to work?