unleashed-firmware/firmware/targets/f6/furi-hal/furi-hal-flash.h
あく 89a6c09a7a
[FL-1906] Documentation: add Doxyfile, prepare sources for doxygen. (#741)
* Documentation: add Doxyfile, prepare sources for doxygen.

* Update ReadMe and remove obsolete CLA

* Add contribution guide

* Contributing: update text

* Correct spelling
2021-10-03 13:36:05 +03:00

92 lines
2 KiB
C

#pragma once
#include <stdbool.h>
#include <stdint.h>
#include <stddef.h>
/** Get flash base address
*
* @return pointer to flash base
*/
size_t furi_hal_flash_get_base();
/** Get flash read block size
*
* @return size in bytes
*/
size_t furi_hal_flash_get_read_block_size();
/** Get flash write block size
*
* @return size in bytes
*/
size_t furi_hal_flash_get_write_block_size();
/** Get flash page size
*
* @return size in bytes
*/
size_t furi_hal_flash_get_page_size();
/** Get expected flash cycles count
*
* @return count of erase-write operations
*/
size_t furi_hal_flash_get_cycles_count();
/** Get free flash start address
*
* @return pointer to free region start
*/
const void* furi_hal_flash_get_free_start_address();
/** Get free flash end address
*
* @return pointer to free region end
*/
const void* furi_hal_flash_get_free_end_address();
/** Get first free page start address
*
* @return first free page memory address
*/
size_t furi_hal_flash_get_free_page_start_address();
/** Get free page count
*
* @return free page count
*/
size_t furi_hal_flash_get_free_page_count();
/** Erase Flash
*
* Locking operation, uses HSEM to manage shared access.
*
* @param page page number
* @param count page count to erase
*
* @return true on success
*/
bool furi_hal_flash_erase(uint8_t page, uint8_t count);
/** Write double word (64 bits)
*
* Locking operation, uses HSEM to manage shared access.
*
* @param address destination address, must be double word aligned.
* @param data data to write
*
* @return true on success
*/
bool furi_hal_flash_write_dword(size_t address, uint64_t data);
/** Write double word (64 bits) from address
*
* Locking operation, uses HSEM to manage shared access.
*
* @param address destination address, must be block aligned
* @param source_address source address
*
* @return true on success
*/
bool furi_hal_flash_write_dword_from(size_t address, size_t source_address);