2222// raw block cache
2323// init cacheBlockNumber_to invalid SD block number
2424uint32_t SdVolume::cacheBlockNumber_ = 0XFFFFFFFF ;
25- cache_t SdVolume::cacheBuffer_; // 512 byte cache for Sd2Card
25+ cache_t * SdVolume::cacheBuffer_; // 512 byte cache for Sd2Card
2626Sd2Card* SdVolume::sdCard_; // pointer to SD card object
2727uint8_t SdVolume::cacheDirty_ = 0 ; // cacheFlush() will write block if true
2828uint32_t SdVolume::cacheMirrorBlock_ = 0 ; // mirror block for second FAT
@@ -98,12 +98,12 @@ uint8_t SdVolume::allocContiguous(uint32_t count, uint32_t* curCluster) {
9898// ------------------------------------------------------------------------------
9999uint8_t SdVolume::cacheFlush (void ) {
100100 if (cacheDirty_) {
101- if (!sdCard_->writeBlock (cacheBlockNumber_, cacheBuffer_. data )) {
101+ if (!sdCard_->writeBlock (cacheBlockNumber_, cacheBuffer_-> data )) {
102102 return false ;
103103 }
104104 // mirror FAT tables
105105 if (cacheMirrorBlock_) {
106- if (!sdCard_->writeBlock (cacheMirrorBlock_, cacheBuffer_. data )) {
106+ if (!sdCard_->writeBlock (cacheMirrorBlock_, cacheBuffer_-> data )) {
107107 return false ;
108108 }
109109 cacheMirrorBlock_ = 0 ;
@@ -116,7 +116,7 @@ uint8_t SdVolume::cacheFlush(void) {
116116uint8_t SdVolume::cacheRawBlock (uint32_t blockNumber, uint8_t action) {
117117 if (cacheBlockNumber_ != blockNumber) {
118118 if (!cacheFlush ()) return false ;
119- if (!sdCard_->readBlock (blockNumber, cacheBuffer_. data )) return false ;
119+ if (!sdCard_->readBlock (blockNumber, cacheBuffer_-> data )) return false ;
120120 cacheBlockNumber_ = blockNumber;
121121 }
122122 cacheDirty_ |= action;
@@ -127,9 +127,9 @@ uint8_t SdVolume::cacheRawBlock(uint32_t blockNumber, uint8_t action) {
127127uint8_t SdVolume::cacheZeroBlock (uint32_t blockNumber) {
128128 if (!cacheFlush ()) return false ;
129129
130- // loop take less flash than memset(cacheBuffer_. data, 0, 512);
130+ // loop take less flash than memset(cacheBuffer_-> data, 0, 512);
131131 for (uint16_t i = 0 ; i < 512 ; i++) {
132- cacheBuffer_. data [i] = 0 ;
132+ cacheBuffer_-> data [i] = 0 ;
133133 }
134134 cacheBlockNumber_ = blockNumber;
135135 cacheSetDirty ();
@@ -156,9 +156,9 @@ uint8_t SdVolume::fatGet(uint32_t cluster, uint32_t* value) const {
156156 if (!cacheRawBlock (lba, CACHE_FOR_READ)) return false ;
157157 }
158158 if (fatType_ == 16 ) {
159- *value = cacheBuffer_. fat16 [cluster & 0XFF ];
159+ *value = cacheBuffer_-> fat16 [cluster & 0XFF ];
160160 } else {
161- *value = cacheBuffer_. fat32 [cluster & 0X7F ] & FAT32MASK;
161+ *value = cacheBuffer_-> fat32 [cluster & 0X7F ] & FAT32MASK;
162162 }
163163 return true ;
164164}
@@ -180,9 +180,9 @@ uint8_t SdVolume::fatPut(uint32_t cluster, uint32_t value) {
180180 }
181181 // store entry
182182 if (fatType_ == 16 ) {
183- cacheBuffer_. fat16 [cluster & 0XFF ] = value;
183+ cacheBuffer_-> fat16 [cluster & 0XFF ] = value;
184184 } else {
185- cacheBuffer_. fat32 [cluster & 0X7F ] = value;
185+ cacheBuffer_-> fat32 [cluster & 0X7F ] = value;
186186 }
187187 cacheSetDirty ();
188188
@@ -232,7 +232,7 @@ uint8_t SdVolume::init(Sd2Card* dev, uint8_t part) {
232232 if (part) {
233233 if (part > 4 )return false ;
234234 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 ];
236236 if ((p->boot & 0X7F ) !=0 ||
237237 p->totalSectors < 100 ||
238238 p->firstSector == 0 ) {
@@ -242,7 +242,7 @@ uint8_t SdVolume::init(Sd2Card* dev, uint8_t part) {
242242 volumeStartBlock = p->firstSector ;
243243 }
244244 if (!cacheRawBlock (volumeStartBlock, CACHE_FOR_READ)) return false ;
245- bpb_t * bpb = &cacheBuffer_. fbs .bpb ;
245+ bpb_t * bpb = &cacheBuffer_-> fbs .bpb ;
246246 if (bpb->bytesPerSector != 512 ||
247247 bpb->fatCount == 0 ||
248248 bpb->reservedSectorCount == 0 ||
0 commit comments