| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*
- * Copyright (c) 2020, Armink, <armink.ztl@gmail.com>
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- /**
- * @file
- * @brief low level API and definition
- */
- #ifndef _FDB_LOW_LVL_H_
- #define _FDB_LOW_LVL_H_
- #include "fdb_cfg.h"
- #include "fdb_def.h"
- #if (FDB_WRITE_GRAN == 1)
- #define FDB_STATUS_TABLE_SIZE(status_number) \
- ((status_number * FDB_WRITE_GRAN + 7) / 8)
- #else
- #define FDB_STATUS_TABLE_SIZE(status_number) \
- (((status_number - 1) * FDB_WRITE_GRAN + 7) / 8)
- #endif
- /* the data is erased */
- #define FDB_BYTE_ERASED 0xFF
- /* the data is written */
- #define FDB_BYTE_WRITTEN 0x00
- /* Return the most contiguous size aligned at specified width. RT_ALIGN(13, 4)
- * would return 16.
- */
- /* align by write granularity */
- #define FDB_WG_ALIGN(size) (FDB_ALIGN(size, (FDB_WRITE_GRAN + 7) / 8))
- #define FDB_ALIGN align_by // fix ALIGN issue on 64bit platform
- /**
- * Return the down number of aligned at specified width. RT_ALIGN_DOWN(13, 4)
- * would return 12.
- */
- #define FDB_ALIGN_DOWN(size, align) ((size) & ~((align)-1))
- /* align down by write granularity */
- #define FDB_WG_ALIGN_DOWN(size) (FDB_ALIGN_DOWN(size, (FDB_WRITE_GRAN + 7) / 8))
- #define FDB_STORE_STATUS_TABLE_SIZE \
- FDB_STATUS_TABLE_SIZE(FDB_SECTOR_STORE_STATUS_NUM)
- #define FDB_DIRTY_STATUS_TABLE_SIZE \
- FDB_STATUS_TABLE_SIZE(FDB_SECTOR_DIRTY_STATUS_NUM)
- /* the data is unused */
- #if (FDB_BYTE_ERASED == 0xFF)
- #define FDB_DATA_UNUSED 0xFFFFFFFF
- #else
- #define FDB_DATA_UNUSED 0x00000000
- #endif
- fdb_err_t _fdb_kv_load(fdb_kvdb_t db);
- size_t _fdb_set_status(uint8_t status_table[],
- size_t status_num,
- size_t status_index);
- size_t _fdb_get_status(uint8_t status_table[], size_t status_num);
- uint32_t _fdb_continue_ff_addr(fdb_db_t db, uint32_t start, uint32_t end);
- fdb_err_t _fdb_init_ex(fdb_db_t db,
- const char* name,
- const char* part_name,
- fdb_db_type type,
- void* user_data);
- void _fdb_init_finish(fdb_db_t db, fdb_err_t result);
- void _fdb_deinit(fdb_db_t db);
- const char* _fdb_db_path(fdb_db_t db);
- fdb_err_t _fdb_write_status(fdb_db_t db,
- uint32_t addr,
- uint8_t status_table[],
- size_t status_num,
- size_t status_index,
- pika_bool sync);
- size_t _fdb_read_status(fdb_db_t db,
- uint32_t addr,
- uint8_t status_table[],
- size_t total_num);
- fdb_err_t _fdb_flash_read(fdb_db_t db, uint32_t addr, void* buf, size_t size);
- fdb_err_t _fdb_flash_erase(fdb_db_t db, uint32_t addr, size_t size);
- fdb_err_t _fdb_flash_write(fdb_db_t db,
- uint32_t addr,
- const void* buf,
- size_t size,
- pika_bool sync);
- #endif /* _FDB_LOW_LVL_H_ */
|