22
22
// raw block cache
23
23
// init cacheBlockNumber_to invalid SD block number
24
24
uint32_t SdVolume::cacheBlockNumber_ = 0XFFFFFFFF ;
25
- cache_t SdVolume::cacheBuffer_; // 512 byte cache for Sd2Card
25
+ cache_t * SdVolume::cacheBuffer_; // 512 byte cache for Sd2Card
26
26
Sd2Card* SdVolume::sdCard_; // pointer to SD card object
27
27
uint8_t SdVolume::cacheDirty_ = 0 ; // cacheFlush() will write block if true
28
28
uint32_t SdVolume::cacheMirrorBlock_ = 0 ; // mirror block for second FAT
@@ -98,12 +98,12 @@ uint8_t SdVolume::allocContiguous(uint32_t count, uint32_t* curCluster) {
98
98
// ------------------------------------------------------------------------------
99
99
uint8_t SdVolume::cacheFlush (void ) {
100
100
if (cacheDirty_) {
101
- if (!sdCard_->writeBlock (cacheBlockNumber_, cacheBuffer_. data )) {
101
+ if (!sdCard_->writeBlock (cacheBlockNumber_, cacheBuffer_-> data )) {
102
102
return false ;
103
103
}
104
104
// mirror FAT tables
105
105
if (cacheMirrorBlock_) {
106
- if (!sdCard_->writeBlock (cacheMirrorBlock_, cacheBuffer_. data )) {
106
+ if (!sdCard_->writeBlock (cacheMirrorBlock_, cacheBuffer_-> data )) {
107
107
return false ;
108
108
}
109
109
cacheMirrorBlock_ = 0 ;
@@ -116,7 +116,7 @@ uint8_t SdVolume::cacheFlush(void) {
116
116
uint8_t SdVolume::cacheRawBlock (uint32_t blockNumber, uint8_t action) {
117
117
if (cacheBlockNumber_ != blockNumber) {
118
118
if (!cacheFlush ()) return false ;
119
- if (!sdCard_->readBlock (blockNumber, cacheBuffer_. data )) return false ;
119
+ if (!sdCard_->readBlock (blockNumber, cacheBuffer_-> data )) return false ;
120
120
cacheBlockNumber_ = blockNumber;
121
121
}
122
122
cacheDirty_ |= action;
@@ -127,9 +127,9 @@ uint8_t SdVolume::cacheRawBlock(uint32_t blockNumber, uint8_t action) {
127
127
uint8_t SdVolume::cacheZeroBlock (uint32_t blockNumber) {
128
128
if (!cacheFlush ()) return false ;
129
129
130
- // loop take less flash than memset(cacheBuffer_. data, 0, 512);
130
+ // loop take less flash than memset(cacheBuffer_-> data, 0, 512);
131
131
for (uint16_t i = 0 ; i < 512 ; i++) {
132
- cacheBuffer_. data [i] = 0 ;
132
+ cacheBuffer_-> data [i] = 0 ;
133
133
}
134
134
cacheBlockNumber_ = blockNumber;
135
135
cacheSetDirty ();
@@ -156,9 +156,9 @@ uint8_t SdVolume::fatGet(uint32_t cluster, uint32_t* value) const {
156
156
if (!cacheRawBlock (lba, CACHE_FOR_READ)) return false ;
157
157
}
158
158
if (fatType_ == 16 ) {
159
- *value = cacheBuffer_. fat16 [cluster & 0XFF ];
159
+ *value = cacheBuffer_-> fat16 [cluster & 0XFF ];
160
160
} else {
161
- *value = cacheBuffer_. fat32 [cluster & 0X7F ] & FAT32MASK;
161
+ *value = cacheBuffer_-> fat32 [cluster & 0X7F ] & FAT32MASK;
162
162
}
163
163
return true ;
164
164
}
@@ -180,9 +180,9 @@ uint8_t SdVolume::fatPut(uint32_t cluster, uint32_t value) {
180
180
}
181
181
// store entry
182
182
if (fatType_ == 16 ) {
183
- cacheBuffer_. fat16 [cluster & 0XFF ] = value;
183
+ cacheBuffer_-> fat16 [cluster & 0XFF ] = value;
184
184
} else {
185
- cacheBuffer_. fat32 [cluster & 0X7F ] = value;
185
+ cacheBuffer_-> fat32 [cluster & 0X7F ] = value;
186
186
}
187
187
cacheSetDirty ();
188
188
@@ -232,7 +232,7 @@ uint8_t SdVolume::init(Sd2Card* dev, uint8_t part) {
232
232
if (part) {
233
233
if (part > 4 )return false ;
234
234
if (!cacheRawBlock (volumeStartBlock, CACHE_FOR_READ)) return false ;
235
- part_t * p = &cacheBuffer_. mbr .part [part-1 ];
235
+ part_t * p = &cacheBuffer_-> mbr .part [part-1 ];
236
236
if ((p->boot & 0X7F ) !=0 ||
237
237
p->totalSectors < 100 ||
238
238
p->firstSector == 0 ) {
@@ -242,7 +242,7 @@ uint8_t SdVolume::init(Sd2Card* dev, uint8_t part) {
242
242
volumeStartBlock = p->firstSector ;
243
243
}
244
244
if (!cacheRawBlock (volumeStartBlock, CACHE_FOR_READ)) return false ;
245
- bpb_t * bpb = &cacheBuffer_. fbs .bpb ;
245
+ bpb_t * bpb = &cacheBuffer_-> fbs .bpb ;
246
246
if (bpb->bytesPerSector != 512 ||
247
247
bpb->fatCount == 0 ||
248
248
bpb->reservedSectorCount == 0 ||
0 commit comments