Stores data on the flash memory of stm32f4xx
Dependents: DISCO-F429ZI_LCDTS_demo_richard
Fork of storage_on_flash by
SOFBlock.cpp
00001 /* 00002 * @file SOFBlock.cpp 00003 * @author hillkim7@gmail.com 00004 * 00005 * @brief Simple storage implementation on internal MCU flash memory. 00006 * 00007 */ 00008 00009 #include "SOFBlock.h" 00010 #include <string.h> 00011 #include <stdlib.h> 00012 00013 00014 SOFBlock::SOFBlock() 00015 : hblock_(NULL) 00016 { 00017 } 00018 00019 SOFBlock::~SOFBlock() 00020 { 00021 close(); 00022 } 00023 00024 void SOFBlock::close() 00025 { 00026 if (hblock_ != NULL) { 00027 SOF_block_close(hblock_); 00028 hblock_ = NULL; 00029 } 00030 } 00031 00032 bool SOFBlock::format( uint8_t sector_index ) 00033 { 00034 return SOF_block_format(sector_index); 00035 } 00036 00037 bool SOFBlock::get_stat( uint8_t sector_index, SOF_Statics_t &statics ) 00038 { 00039 return SOF_block_get_statics(sector_index, &statics) == kSOF_ErrNone; 00040 } 00041 00042 SOFWriter::SOFWriter() 00043 { 00044 00045 } 00046 00047 SOFWriter::~SOFWriter() 00048 { 00049 00050 } 00051 00052 SOF_Error_t SOFWriter::open( uint8_t sector_index ) 00053 { 00054 if (is_open()) { 00055 return kSOF_ErrBusyBlock; 00056 } 00057 00058 SOF_Error_t err; 00059 00060 hblock_ = SOF_block_create_storage(sector_index, &err); 00061 00062 return err; 00063 } 00064 00065 bool SOFWriter::write_byte_data( uint8_t c ) 00066 { 00067 if (!is_open()) { 00068 return false; 00069 } 00070 00071 return SOF_block_putc(hblock_, c); 00072 } 00073 00074 size_t SOFWriter::write_data( const uint8_t *p, size_t p_size ) 00075 { 00076 if (!is_open()) { 00077 return false; 00078 } 00079 00080 return SOF_block_write(hblock_, p, p_size); 00081 } 00082 00083 size_t SOFWriter::get_free_size() 00084 { 00085 if (!is_open()) { 00086 return 0; 00087 } 00088 00089 return SOF_block_get_free_size(hblock_); 00090 } 00091 00092 00093 SOFReader::SOFReader() 00094 { 00095 00096 } 00097 00098 SOFReader::~SOFReader() 00099 { 00100 00101 } 00102 00103 SOF_Error_t SOFReader::open( uint8_t sector_index ) 00104 { 00105 if (is_open()) { 00106 return kSOF_ErrBusyBlock; 00107 } 00108 00109 SOF_Error_t err; 00110 00111 hblock_ = SOF_block_open_storage(sector_index, &err); 00112 00113 return err; 00114 } 00115 00116 uint8_t * SOFReader::get_physical_data_addr() 00117 { 00118 if (!is_open()) { 00119 return NULL; 00120 } 00121 00122 return SOF_block_base_addr(hblock_); 00123 } 00124 00125 size_t SOFReader::get_data_size() 00126 { 00127 if (!is_open()) { 00128 return 0; 00129 } 00130 00131 return SOF_block_storage_size(hblock_); 00132 } 00133 00134 bool SOFReader::read_byte_data( uint8_t *c ) 00135 { 00136 if (!is_open()) { 00137 return false; 00138 } 00139 00140 return SOF_block_getc(hblock_, c); 00141 } 00142 00143 size_t SOFReader::read_data( uint8_t *p, size_t p_size ) 00144 { 00145 if (!is_open()) { 00146 return 0; 00147 } 00148 00149 return SOF_block_read(hblock_, p, p_size); 00150 } 00151 00152 00153
Generated on Wed Jul 13 2022 22:53:56 by 1.7.2