// Function for deleting all data beloning to a peer. // These operations will be sent to FDS one at a time. static void peer_data_delete() { ret_code_t ret; pm_peer_id_t peer_id; uint16_t file_id; fds_record_desc_t desc; fds_find_token_t ftok; memset(&ftok, 0x00, sizeof(fds_find_token_t)); peer_id = peer_id_get_next_deleted(PM_PEER_ID_INVALID); while ( (peer_id != PM_PEER_ID_INVALID) && (fds_record_find_in_file(peer_id_to_file_id(peer_id), &desc, &ftok) == FDS_ERR_NOT_FOUND)) { peer_id_free(peer_id); peer_id = peer_id_get_next_deleted(peer_id); } if (!m_peer_delete_ongoing && (peer_id != PM_PEER_ID_INVALID)) { m_peer_delete_ongoing = true; file_id = peer_id_to_file_id(peer_id); ret = fds_file_delete(file_id); if (ret == FDS_ERR_NO_SPACE_IN_QUEUES) { m_peer_delete_queued = true; } else if (ret != NRF_SUCCESS) { m_peer_delete_ongoing = false; pds_evt_t pds_evt; pds_evt.evt_id = PDS_EVT_ERROR_UNEXPECTED; pds_evt.peer_id = peer_id; pds_evt.data_id = PM_PEER_DATA_ID_INVALID; pds_evt.store_token = PM_STORE_TOKEN_INVALID; pds_evt.result = ret; pds_evt_send(&pds_evt); } } }
// Function for clearing all peer data of one peer. // These operations will be sent to FDS one at a time. static void peer_data_clear() { ret_code_t retval; uint16_t file_id; fds_record_desc_t desc; fds_find_token_t token = {0}; pm_peer_id_t peer_id = peer_id_get_next_deleted(PM_PEER_ID_INVALID); while ( (peer_id != PM_PEER_ID_INVALID) && (fds_record_find_in_file(peer_id_to_file_id(peer_id), &desc, &token) == FDS_ERR_NOT_FOUND)) { peer_id_free(peer_id); peer_id = peer_id_get_next_deleted(peer_id); } if (!m_pds.clearing && (peer_id != PM_PEER_ID_INVALID)) { file_id = peer_id_to_file_id(peer_id); retval = fds_file_delete(file_id); if (retval == FDS_SUCCESS) { m_pds.clearing = true; } else if (retval == FDS_ERR_NO_SPACE_IN_QUEUES) { m_pds.clear_queued = true; } else { pds_evt_t pds_evt; pds_evt.evt_id = PDS_EVT_ERROR_UNEXPECTED; pds_evt.peer_id = peer_id; pds_evt.data_id = PM_PEER_DATA_ID_INVALID; pds_evt.store_token = PM_STORE_TOKEN_INVALID; pds_evt.result = retval; pds_evt_send(&pds_evt); } } }