/*! @brief _fta_manage_check_exportable check data for exportable @param [out] fta_manager check data @param [in] limit_size data size @retval TRUE : data is exportable @retval FALSE: data is not exportable */ boolean _fta_manage_check_exportable(fta_manager_store_header *fta_manager, uint32 limit_size) { if(fta_manager == NULL) return FALSE; if(!(fta_manager->cmn.tag == FTA_TAG_MANAGER && fta_manager->cmn.size >= FTA_CALC_MANAGER_SIZE(fta_manager->count) && fta_manager->cmn.size <= limit_size && fta_manager->cmn.offset == FTA_MANAGER_STORE_HEADER_LEN && fta_manager->reclen == FTA_MANAGER_STORE_ITEM_LEN && fta_manager->count > 0)) { return FALSE; } if(fta_lib_check_parity16((uint16 *)fta_manager, fta_manager->cmn.size / 2, 0) != 0) { return FALSE; } if(!(fta_manager->cmn.enabled == FTA_STORE_ENABLED_TRUE && FTA_LIB_CHECKBIT(fta_manager->cmn.statbit, FTA_STORE_STATBIT_RECORDING))) { return FALSE; } FTA_LIB_CHANGEBIT_CLR(fta_manager->cmn.statbit, FTA_STORE_STATBIT_RECORDING); fta_manager->parity = fta_lib_check_parity16( (uint16 *)fta_manager, fta_manager->cmn.size / 2, fta_manager->parity); return TRUE; }
/*! @brief fta_stop FTA stop function @param none @retval none */ void fta_stop(fta_stop_reason_enum reason) { if(fta_manager == NULL) return; FTA_ENTER_LOCK(); if(fta_lock_keeper.manager_status == FTA_MANAGER_STATUS_ENABLED) { fta_lock_keeper.manager_status = FTA_MANAGER_STATUS_STOP; /* - - - - - - - - */ switch(reason) { case FTA_STOP_REASON_NORMAL: FTA_LIB_CHANGEBIT_CLR(fta_manager->cmn.statbit, FTA_STORE_STATBIT_RECORDING); fta_manager->cmn.enabled = FTA_STORE_ENABLED_FALSE; fta_manager->parity = fta_lib_check_parity16((uint16 *)fta_manager, fta_manager->cmn.size / 2, fta_manager->parity); break; case FTA_STOP_REASON_ABNORMAL: break; case FTA_STOP_REASON_INTENTIONAL: FTA_LIB_CHANGEBIT_SET(fta_manager->cmn.statbit, FTA_STORE_STATBIT_INTENTIONAL); fta_manager->parity = fta_lib_check_parity16((uint16 *)fta_manager, fta_manager->cmn.size / 2, fta_manager->parity); } /* - - - - - - - - */ FTA_MEMORY_FLUSH(); } FTA_LEAVE_LOCK(); _fta_manage_terminate_store_items(fta_manager); fta_reference = fta_reference_null; return; }
/*! @brief _fta_var_stop_common stop for variable area @param [in] store_item item for manage @retval none */ void _fta_var_stop_common(fta_manager_store_item *store_item) { fta_var_store_header *var_header = (fta_var_store_header *)(store_item->addr); FTA_LIB_CHANGEBIT_CLR(var_header->cmn.statbit, FTA_STORE_STATBIT_RECORDING); return; }
/*! @brief fta_terminate FTA terminate function @param none @retval none */ void fta_terminate(void) { if(fta_manager == NULL) return; FTA_ENTER_LOCK(); fta_lock_keeper.manager_status = FTA_MANAGER_STATUS_STOP; FTA_LIB_CHANGEBIT_CLR(fta_manager->cmn.statbit, FTA_STORE_STATBIT_RECORDING); fta_manager->cmn.enabled = FTA_STORE_ENABLED_FALSE; fta_manager->parity = fta_lib_check_parity16((uint16 *)fta_manager, fta_manager->cmn.size / 2, fta_manager->parity); FTA_MEMORY_FLUSH(); FTA_LEAVE_LOCK(); _fta_manage_terminate_store_items(fta_manager); fta_reference = fta_reference_null; return; }