mFrame
載入中...
搜尋中...
無符合項目
SectorDevice.h
1
7#ifndef MFRAME_1627DA37_C8B8_4F57_8873_E86DB3A5093D
8#define MFRAME_1627DA37_C8B8_4F57_8873_E86DB3A5093D
9
10/* ***************************************************************************************
11 * Include
12 */
13
14//----------------------------------------------------------------------------------------
15
16//----------------------------------------------------------------------------------------
17#include "./../Base.h"
18
19/* ***************************************************************************************
20 * Namespace
21 */
22namespace hal::storage {
23 struct SectorDevice;
24} // namespace hal::storage
25
26/* ***************************************************************************************
27 * Class/Interface/Struct/Enum
28 */
29
38 /* *************************************************************************************
39 * Class/Interface/Struct/Enum
40 */
41 enum struct Status : uint8;
42
43 /* *************************************************************************************
44 * Method
45 */
50 virtual uint32 pageSize(void) const abstract;
51
56 virtual uint32 pageCount(void) const abstract;
57
62 virtual uint32 sectorCount(void) const abstract;
63
70 virtual Status read(uint32 address, void* buffer) abstract;
71
80 virtual Status write(uint32 address, const void* buffer) abstract;
81
87 virtual Status erase(uint32 address) abstract;
88
89 /* *************************************************************************************
90 * Default Method
91 */
92
97 inline uint32 sectorSize(void) const {
98 return this->pageSize() * this->pageCount();
99 }
100
105 inline uint32 totalSize(void) const {
106 return this->sectorSize() * this->sectorCount();
107 }
108
116 inline Status readPage(uint32 page, void* buffer) {
117 return this->read(page * this->pageSize(), buffer);
118 }
119
127 inline Status writePage(uint32 page, const void* buffer) {
128 return this->write(page * this->pageSize(), buffer);
129 }
130
137 inline Status eraseSector(uint32 sector) {
138 return this->erase(sector * this->sectorSize());
139 }
140};
141
147 OK = 0x00,
148 ERROR = 0x01,
149 NOT_SUPPORTED = 0x02,
150 OUT_OF_BOUNDS = 0x03,
151 TIMEOUT = 0x04,
152 NOT_RAM_SOURCE = 0x05,
153 NOT_ALIGNED = 0x06
154};
155/* ***************************************************************************************
156 * End of file
157 */
158
159#endif /* MFRAME_1627DA37_C8B8_4F57_8873_E86DB3A5093D */
Definition SectorDevice.h:22
[Interface] 硬體抽象層基礎介面
Definition Base.h:38
頁式存儲裝置抽象介面,提供基於頁的存儲操作
Definition SectorDevice.h:37
virtual Status erase(uint32 address) override
擦除指定頁面
uint32 sectorSize(void) const
取得每個區塊的大小
Definition SectorDevice.h:97
virtual uint32 pageSize(void) const override
取得裝置的頁面大小
virtual Status read(uint32 address, void *buffer) override
從指定頁面讀取資料
virtual uint32 sectorCount(void) const override
取得裝置的總區塊數
Status eraseSector(uint32 sector)
擦除指定區塊
Definition SectorDevice.h:137
Status
頁式存儲裝置操作狀態列舉
Definition SectorDevice.h:146
Status writePage(uint32 page, const void *buffer)
向指定頁面寫入資料
Definition SectorDevice.h:127
Status readPage(uint32 page, void *buffer)
從指定頁面讀取資料
Definition SectorDevice.h:116
virtual Status write(uint32 address, const void *buffer) override
向指定頁面寫入資料
virtual uint32 pageCount(void) const override
取得裝置的總頁數
uint32 totalSize(void) const
取得裝置的總存儲容量
Definition SectorDevice.h:105